From 21c57a27815f4ff872c85811647f94cbd255b9f0 Mon Sep 17 00:00:00 2001 From: Amy <milkdrop2000@protonmail.com> Date: Fri, 13 May 2022 01:43:55 +0100 Subject: [PATCH] Added araknoid --- arkanoid/CMakeLists.txt | 51 + arkanoid/balls.c | 161 + arkanoid/balls.h | 45 + arkanoid/build/CMakeCache.txt | 367 + .../CMakeFiles/3.16.3/CMakeASMCompiler.cmake | 18 + .../CMakeFiles/3.16.3/CMakeCCompiler.cmake | 76 + .../3.16.3/CMakeDetermineCompilerABI_C.bin | Bin 0 -> 16552 bytes .../build/CMakeFiles/3.16.3/CMakeSystem.cmake | 15 + .../3.16.3/CompilerIdC/CMakeCCompilerId.c | 671 + .../build/CMakeFiles/3.16.3/CompilerIdC/a.out | Bin 0 -> 16712 bytes .../CMakeDirectoryInformation.cmake | 16 + arkanoid/build/CMakeFiles/CMakeOutput.log | 232 + arkanoid/build/CMakeFiles/Makefile.cmake | 48 + arkanoid/build/CMakeFiles/Makefile2 | 106 + .../build/CMakeFiles/TargetDirectories.txt | 3 + arkanoid/build/CMakeFiles/cmake.check_cache | 1 + .../CMakeFiles/main.elf.dir/ASM.includecache | 8 + .../CMakeFiles/main.elf.dir/C.includecache | 234 + .../CMakeFiles/main.elf.dir/DependInfo.cmake | 107 + .../build/CMakeFiles/main.elf.dir/balls.c.o | Bin 0 -> 3724 bytes .../build/CMakeFiles/main.elf.dir/build.make | 1021 ++ .../CMakeFiles/main.elf.dir/cmake_clean.cmake | 73 + .../CMakeFiles/main.elf.dir/depend.internal | 1756 ++ .../build/CMakeFiles/main.elf.dir/depend.make | 1756 ++ .../build/CMakeFiles/main.elf.dir/flags.make | 17 + .../build/CMakeFiles/main.elf.dir/fonts.c.o | Bin 0 -> 26864 bytes .../build/CMakeFiles/main.elf.dir/link.txt | 1 + .../build/CMakeFiles/main.elf.dir/main.c.o | Bin 0 -> 4440 bytes .../main.elf.dir/pico/boot2/boot2_w25q080.S.o | Bin 0 -> 1272 bytes .../CMakeFiles/main.elf.dir/pico/bootrom.c.o | Bin 0 -> 984 bytes .../main.elf.dir/pico/critical_section.c.o | Bin 0 -> 1168 bytes .../CMakeFiles/main.elf.dir/pico/crt0.S.o | Bin 0 -> 8400 bytes .../CMakeFiles/main.elf.dir/pico/datetime.c.o | Bin 0 -> 1688 bytes .../main.elf.dir/pico/hardware/adc.c.o | Bin 0 -> 856 bytes .../main.elf.dir/pico/hardware/claim.c.o | Bin 0 -> 1856 bytes .../main.elf.dir/pico/hardware/clocks.c.o | Bin 0 -> 3804 bytes .../main.elf.dir/pico/hardware/dma.c.o | Bin 0 -> 2540 bytes .../main.elf.dir/pico/hardware/exception.c.o | Bin 0 -> 1892 bytes .../main.elf.dir/pico/hardware/flash.c.o | Bin 0 -> 3804 bytes .../main.elf.dir/pico/hardware/gpio.c.o | Bin 0 -> 3436 bytes .../main.elf.dir/pico/hardware/i2c.c.o | Bin 0 -> 3360 bytes .../main.elf.dir/pico/hardware/interp.c.o | Bin 0 -> 1712 bytes .../main.elf.dir/pico/hardware/irq.c.o | Bin 0 -> 5308 bytes .../pico/hardware/irq_handler_chain.S.o | Bin 0 -> 936 bytes .../main.elf.dir/pico/hardware/pio.c.o | Bin 0 -> 4872 bytes .../main.elf.dir/pico/hardware/pll.c.o | Bin 0 -> 1764 bytes .../main.elf.dir/pico/hardware/rtc.c.o | Bin 0 -> 2776 bytes .../main.elf.dir/pico/hardware/spi.c.o | Bin 0 -> 2864 bytes .../main.elf.dir/pico/hardware/sync.c.o | Bin 0 -> 2272 bytes .../main.elf.dir/pico/hardware/timer.c.o | Bin 0 -> 3688 bytes .../main.elf.dir/pico/hardware/uart.c.o | Bin 0 -> 1636 bytes .../main.elf.dir/pico/hardware/vreg.c.o | Bin 0 -> 836 bytes .../main.elf.dir/pico/hardware/watchdog.c.o | Bin 0 -> 1724 bytes .../main.elf.dir/pico/hardware/xosc.c.o | Bin 0 -> 1024 bytes .../main.elf.dir/pico/lock_core.c.o | Bin 0 -> 824 bytes .../main.elf.dir/pico/multicore.c.o | Bin 0 -> 7624 bytes .../CMakeFiles/main.elf.dir/pico/mutex.c.o | Bin 0 -> 6000 bytes .../CMakeFiles/main.elf.dir/pico/pheap.c.o | Bin 0 -> 3956 bytes .../main.elf.dir/pico/pico4ml/screen.c.o | Bin 0 -> 3256 bytes .../pico/pico_bootsel_via_double_reset.c.o | Bin 0 -> 1824 bytes .../main.elf.dir/pico/pico_malloc.c.o | Bin 0 -> 1352 bytes .../CMakeFiles/main.elf.dir/pico/platform.c.o | Bin 0 -> 1436 bytes .../CMakeFiles/main.elf.dir/pico/queue.c.o | Bin 0 -> 2432 bytes .../main.elf.dir/pico/reset_interface.c.o | Bin 0 -> 1804 bytes .../CMakeFiles/main.elf.dir/pico/runtime.c.o | Bin 0 -> 3452 bytes .../CMakeFiles/main.elf.dir/pico/sem.c.o | Bin 0 -> 3436 bytes .../CMakeFiles/main.elf.dir/pico/stdio.c.o | Bin 0 -> 4492 bytes .../main.elf.dir/pico/stdio_semihosting.c.o | Bin 0 -> 1656 bytes .../main.elf.dir/pico/stdio_uart.c.o | Bin 0 -> 3592 bytes .../main.elf.dir/pico/stdio_usb.c.o | Bin 0 -> 3584 bytes .../pico/stdio_usb_descriptors.c.o | Bin 0 -> 1844 bytes .../CMakeFiles/main.elf.dir/pico/stdlib.c.o | Bin 0 -> 2216 bytes .../CMakeFiles/main.elf.dir/pico/time.c.o | Bin 0 -> 9580 bytes .../main.elf.dir/pico/timeout_helper.c.o | Bin 0 -> 1856 bytes .../pico/tinyusb/cdc/cdc_device.c.o | Bin 0 -> 4932 bytes .../pico/tinyusb/cdc/cdc_host.c.o | Bin 0 -> 748 bytes .../pico/tinyusb/cdc/cdc_rndis_host.c.o | Bin 0 -> 752 bytes .../main.elf.dir/pico/tinyusb/dcd_rp2040.c.o | Bin 0 -> 5088 bytes .../main.elf.dir/pico/tinyusb/hcd_rp2040.c.o | Bin 0 -> 748 bytes .../main.elf.dir/pico/tinyusb/host/hub.c.o | Bin 0 -> 740 bytes .../main.elf.dir/pico/tinyusb/host/usbh.c.o | Bin 0 -> 744 bytes .../pico/tinyusb/host/usbh_control.c.o | Bin 0 -> 752 bytes .../main.elf.dir/pico/tinyusb/rp2040_usb.c.o | Bin 0 -> 2684 bytes .../main.elf.dir/pico/tinyusb/tusb.c.o | Bin 0 -> 1340 bytes .../main.elf.dir/pico/tinyusb/tusb_fifo.c.o | Bin 0 -> 3752 bytes .../main.elf.dir/pico/tinyusb/usbd.c.o | Bin 0 -> 10044 bytes .../pico/tinyusb/usbd_control.c.o | Bin 0 -> 2236 bytes .../main.elf.dir/pico/unique_id.c.o | Bin 0 -> 1824 bytes .../CMakeFiles/main.elf.dir/progress.make | 66 + .../build/CMakeFiles/main.elf.dir/utils.c.o | Bin 0 -> 1188 bytes arkanoid/build/CMakeFiles/progress.marks | 1 + arkanoid/build/Makefile | 2008 +++ arkanoid/build/cmake_install.cmake | 49 + arkanoid/compile.sh | 3 + arkanoid/elf2uf2 | Bin 0 -> 94024 bytes arkanoid/fonts.c | 1615 ++ arkanoid/fonts.h | 10 + arkanoid/install.sh | 19 + arkanoid/levels.h | 91 + arkanoid/main.c | 161 + arkanoid/main.elf | Bin 0 -> 903020 bytes arkanoid/main.uf2 | Bin 0 -> 265728 bytes arkanoid/pico/binary_info.h | 31 + arkanoid/pico/bit_ops.h | 44 + arkanoid/pico/boot2/boot2_w25q080.S | 295 + arkanoid/pico/boot2/copied_boot2.S.ignore | 22 + arkanoid/pico/boot2/helpers/asm_helper.S | 32 + arkanoid/pico/boot2/helpers/exit_from_boot2.S | 28 + arkanoid/pico/boot2/helpers/read_flash_sreg.S | 30 + arkanoid/pico/boot2/helpers/wait_ssi_ready.S | 26 + arkanoid/pico/bootrom.c | 36 + arkanoid/pico/bootrom.h | 162 + arkanoid/pico/code.h | 141 + arkanoid/pico/critical_section.c | 27 + arkanoid/pico/critical_section.h | 88 + arkanoid/pico/crt0.S | 338 + arkanoid/pico/datetime.c | 41 + arkanoid/pico/datetime.h | 34 + arkanoid/pico/defs.h | 43 + arkanoid/pico/divider.h | 322 + arkanoid/pico/doc.h | 4 + arkanoid/pico/driver.h | 24 + arkanoid/pico/hardware/adc.c | 23 + arkanoid/pico/hardware/adc.h | 257 + arkanoid/pico/hardware/address_mapped.h | 165 + arkanoid/pico/hardware/claim.c | 56 + arkanoid/pico/hardware/claim.h | 109 + arkanoid/pico/hardware/clocks.c | 390 + arkanoid/pico/hardware/clocks.h | 194 + arkanoid/pico/hardware/divider.h | 403 + arkanoid/pico/hardware/dma.c | 94 + arkanoid/pico/hardware/dma.h | 795 + arkanoid/pico/hardware/exception.c | 65 + arkanoid/pico/hardware/exception.h | 106 + arkanoid/pico/hardware/flash.c | 176 + arkanoid/pico/hardware/flash.h | 113 + arkanoid/pico/hardware/gpio.c | 228 + arkanoid/pico/hardware/gpio.h | 656 + arkanoid/pico/hardware/i2c.c | 337 + arkanoid/pico/hardware/i2c.h | 332 + arkanoid/pico/hardware/interp.c | 68 + arkanoid/pico/hardware/interp.h | 458 + arkanoid/pico/hardware/irq.c | 413 + arkanoid/pico/hardware/irq.h | 287 + arkanoid/pico/hardware/irq_handler_chain.S | 70 + arkanoid/pico/hardware/pio.c | 256 + arkanoid/pico/hardware/pio.h | 1311 ++ arkanoid/pico/hardware/pio_instructions.h | 484 + arkanoid/pico/hardware/platform_defs.h | 45 + arkanoid/pico/hardware/pll.c | 77 + arkanoid/pico/hardware/pll.h | 59 + arkanoid/pico/hardware/pwm.h | 559 + arkanoid/pico/hardware/regs/adc.h | 314 + arkanoid/pico/hardware/regs/addressmap.h | 74 + arkanoid/pico/hardware/regs/busctrl.h | 324 + arkanoid/pico/hardware/regs/clocks.h | 2409 +++ arkanoid/pico/hardware/regs/dma.h | 5313 ++++++ arkanoid/pico/hardware/regs/dreq.h | 50 + arkanoid/pico/hardware/regs/i2c.h | 2713 +++ arkanoid/pico/hardware/regs/intctrl.h | 63 + arkanoid/pico/hardware/regs/io_bank0.h | 14937 ++++++++++++++++ arkanoid/pico/hardware/regs/io_qspi.h | 2931 +++ arkanoid/pico/hardware/regs/m0plus.h | 1149 ++ arkanoid/pico/hardware/regs/pads_bank0.h | 2300 +++ arkanoid/pico/hardware/regs/pads_qspi.h | 454 + arkanoid/pico/hardware/regs/pio.h | 2764 +++ arkanoid/pico/hardware/regs/pll.h | 135 + arkanoid/pico/hardware/regs/psm.h | 584 + arkanoid/pico/hardware/regs/pwm.h | 1505 ++ arkanoid/pico/hardware/regs/resets.h | 637 + arkanoid/pico/hardware/regs/rosc.h | 312 + arkanoid/pico/hardware/regs/rtc.h | 398 + arkanoid/pico/hardware/regs/sio.h | 1656 ++ arkanoid/pico/hardware/regs/spi.h | 521 + arkanoid/pico/hardware/regs/ssi.h | 809 + arkanoid/pico/hardware/regs/syscfg.h | 257 + arkanoid/pico/hardware/regs/sysinfo.h | 77 + arkanoid/pico/hardware/regs/tbman.h | 38 + arkanoid/pico/hardware/regs/timer.h | 332 + arkanoid/pico/hardware/regs/uart.h | 1148 ++ arkanoid/pico/hardware/regs/usb.h | 3603 ++++ .../pico/hardware/regs/usb_device_dpram.h | 6807 +++++++ .../pico/hardware/regs/vreg_and_chip_reset.h | 151 + arkanoid/pico/hardware/regs/watchdog.h | 226 + arkanoid/pico/hardware/regs/xip.h | 187 + arkanoid/pico/hardware/regs/xosc.h | 160 + arkanoid/pico/hardware/resets.h | 99 + arkanoid/pico/hardware/rtc.c | 191 + arkanoid/pico/hardware/rtc.h | 91 + arkanoid/pico/hardware/spi.c | 212 + arkanoid/pico/hardware/spi.h | 358 + arkanoid/pico/hardware/structs/adc.h | 91 + arkanoid/pico/hardware/structs/bus_ctrl.h | 77 + arkanoid/pico/hardware/structs/clocks.h | 326 + arkanoid/pico/hardware/structs/dma.h | 203 + arkanoid/pico/hardware/structs/i2c.h | 333 + arkanoid/pico/hardware/structs/interp.h | 82 + arkanoid/pico/hardware/structs/iobank0.h | 216 + arkanoid/pico/hardware/structs/ioqspi.h | 174 + arkanoid/pico/hardware/structs/mpu.h | 61 + arkanoid/pico/hardware/structs/pads_qspi.h | 47 + arkanoid/pico/hardware/structs/padsbank0.h | 47 + arkanoid/pico/hardware/structs/pio.h | 284 + arkanoid/pico/hardware/structs/pll.h | 56 + arkanoid/pico/hardware/structs/psm.h | 111 + arkanoid/pico/hardware/structs/pwm.h | 126 + arkanoid/pico/hardware/structs/resets.h | 116 + arkanoid/pico/hardware/structs/rosc.h | 86 + arkanoid/pico/hardware/structs/rtc.h | 114 + arkanoid/pico/hardware/structs/scb.h | 69 + arkanoid/pico/hardware/structs/sio.h | 176 + arkanoid/pico/hardware/structs/spi.h | 100 + arkanoid/pico/hardware/structs/ssi.h | 210 + arkanoid/pico/hardware/structs/syscfg.h | 77 + arkanoid/pico/hardware/structs/systick.h | 52 + arkanoid/pico/hardware/structs/timer.h | 107 + arkanoid/pico/hardware/structs/uart.h | 177 + arkanoid/pico/hardware/structs/usb.h | 578 + .../hardware/structs/vreg_and_chip_reset.h | 49 + arkanoid/pico/hardware/structs/watchdog.h | 62 + arkanoid/pico/hardware/structs/xip_ctrl.h | 72 + arkanoid/pico/hardware/structs/xosc.h | 60 + arkanoid/pico/hardware/sync.c | 64 + arkanoid/pico/hardware/sync.h | 403 + arkanoid/pico/hardware/timer.c | 230 + arkanoid/pico/hardware/timer.h | 198 + arkanoid/pico/hardware/uart.c | 116 + arkanoid/pico/hardware/uart.h | 453 + arkanoid/pico/hardware/vreg.c | 12 + arkanoid/pico/hardware/vreg.h | 55 + arkanoid/pico/hardware/watchdog.c | 106 + arkanoid/pico/hardware/watchdog.h | 120 + arkanoid/pico/hardware/xosc.c | 55 + arkanoid/pico/hardware/xosc.h | 59 + arkanoid/pico/junk/assert.h | 51 + arkanoid/pico/junk/config.h | 131 + arkanoid/pico/junk/error.h | 25 + arkanoid/pico/junk/types.h | 94 + arkanoid/pico/junk/version.h | 19 + arkanoid/pico/lock_core.c | 13 + arkanoid/pico/lock_core.h | 197 + arkanoid/pico/malloc.h | 38 + arkanoid/pico/memmap_default.ld | 252 + arkanoid/pico/multicore.c | 269 + arkanoid/pico/multicore.h | 310 + arkanoid/pico/mutex.c | 184 + arkanoid/pico/mutex.h | 297 + arkanoid/pico/pheap.c | 134 + arkanoid/pico/pheap.h | 291 + arkanoid/pico/pico.h | 25 + arkanoid/pico/pico4ml/screen.c | 270 + arkanoid/pico/pico4ml/screen.h | 136 + arkanoid/pico/pico_bootsel_via_double_reset.c | 85 + arkanoid/pico/pico_malloc.c | 73 + arkanoid/pico/platform.c | 39 + arkanoid/pico/platform.h | 411 + arkanoid/pico/queue.c | 119 + arkanoid/pico/queue.h | 227 + arkanoid/pico/reset_interface.c | 112 + arkanoid/pico/reset_interface.h | 13 + arkanoid/pico/runtime.c | 289 + arkanoid/pico/runtime.h | 26 + arkanoid/pico/sem.c | 79 + arkanoid/pico/sem.h | 128 + arkanoid/pico/sf_table.h | 50 + arkanoid/pico/stdio.c | 346 + arkanoid/pico/stdio.h | 120 + arkanoid/pico/stdio_semihosting.c | 51 + arkanoid/pico/stdio_semihosting.h | 42 + arkanoid/pico/stdio_uart.c | 99 + arkanoid/pico/stdio_uart.h | 70 + arkanoid/pico/stdio_usb.c | 135 + arkanoid/pico/stdio_usb.h | 127 + arkanoid/pico/stdio_usb_descriptors.c | 151 + arkanoid/pico/stdlib.c | 104 + arkanoid/pico/stdlib.h | 140 + arkanoid/pico/structure.h | 151 + arkanoid/pico/sync.h | 19 + arkanoid/pico/time.c | 413 + arkanoid/pico/time.h | 716 + arkanoid/pico/timeout_helper.c | 30 + arkanoid/pico/timeout_helper.h | 30 + arkanoid/pico/tinyusb/cdc/cdc.h | 409 + arkanoid/pico/tinyusb/cdc/cdc_device.c | 484 + arkanoid/pico/tinyusb/cdc/cdc_device.h | 260 + arkanoid/pico/tinyusb/cdc/cdc_host.c | 249 + arkanoid/pico/tinyusb/cdc/cdc_host.h | 134 + arkanoid/pico/tinyusb/cdc/cdc_rndis.h | 301 + arkanoid/pico/tinyusb/cdc/cdc_rndis_host.c | 279 + arkanoid/pico/tinyusb/cdc/cdc_rndis_host.h | 63 + arkanoid/pico/tinyusb/dcd.h | 190 + arkanoid/pico/tinyusb/dcd_attr.h | 167 + arkanoid/pico/tinyusb/dcd_rp2040.c | 494 + arkanoid/pico/tinyusb/hcd_rp2040.c | 563 + arkanoid/pico/tinyusb/host/hcd.h | 179 + arkanoid/pico/tinyusb/host/hcd_attr.h | 105 + arkanoid/pico/tinyusb/host/hub.c | 388 + arkanoid/pico/tinyusb/host/hub.h | 196 + arkanoid/pico/tinyusb/host/usbh.c | 1195 ++ arkanoid/pico/tinyusb/host/usbh.h | 99 + arkanoid/pico/tinyusb/host/usbh_classdriver.h | 83 + arkanoid/pico/tinyusb/host/usbh_control.c | 138 + arkanoid/pico/tinyusb/osal.h | 111 + arkanoid/pico/tinyusb/osal_freertos.h | 172 + arkanoid/pico/tinyusb/osal_mynewt.h | 174 + arkanoid/pico/tinyusb/osal_none.h | 204 + arkanoid/pico/tinyusb/osal_pico.h | 187 + arkanoid/pico/tinyusb/osal_rtthread.h | 130 + arkanoid/pico/tinyusb/rp2040_usb.c | 323 + arkanoid/pico/tinyusb/rp2040_usb.h | 96 + arkanoid/pico/tinyusb/tusb.c | 246 + arkanoid/pico/tinyusb/tusb.h | 140 + arkanoid/pico/tinyusb/tusb_common.h | 434 + arkanoid/pico/tinyusb/tusb_compiler.h | 218 + arkanoid/pico/tinyusb/tusb_config.h | 40 + arkanoid/pico/tinyusb/tusb_error.h | 75 + arkanoid/pico/tinyusb/tusb_fifo.c | 1000 ++ arkanoid/pico/tinyusb/tusb_fifo.h | 151 + arkanoid/pico/tinyusb/tusb_option.h | 358 + arkanoid/pico/tinyusb/tusb_timeout.h | 80 + arkanoid/pico/tinyusb/tusb_types.h | 549 + arkanoid/pico/tinyusb/tusb_verify.h | 181 + arkanoid/pico/tinyusb/usbd.c | 1416 ++ arkanoid/pico/tinyusb/usbd.h | 851 + arkanoid/pico/tinyusb/usbd_control.c | 233 + arkanoid/pico/tinyusb/usbd_pvt.h | 115 + arkanoid/pico/unique_id.c | 39 + arkanoid/pico/unique_id.h | 81 + arkanoid/pico/usb_reset_interface.h | 28 + arkanoid/pico_mountpoint/main.uf2 | Bin 0 -> 217600 bytes arkanoid/utils.c | 23 + arkanoid/utils.h | 14 + simple-setup.zip | Bin 0 -> 1839031 bytes simple-setup/O1_working.elf | Bin 789452 -> 0 bytes simple-setup/O2_not_working.elf | Bin 797916 -> 0 bytes simple-setup/O2_working_with_gunoi.elf | Bin 797976 -> 0 bytes simple-setup/main.c | 14 +- 337 files changed, 104442 insertions(+), 7 deletions(-) create mode 100644 arkanoid/CMakeLists.txt create mode 100644 arkanoid/balls.c create mode 100644 arkanoid/balls.h create mode 100644 arkanoid/build/CMakeCache.txt create mode 100644 arkanoid/build/CMakeFiles/3.16.3/CMakeASMCompiler.cmake create mode 100644 arkanoid/build/CMakeFiles/3.16.3/CMakeCCompiler.cmake create mode 100755 arkanoid/build/CMakeFiles/3.16.3/CMakeDetermineCompilerABI_C.bin create mode 100644 arkanoid/build/CMakeFiles/3.16.3/CMakeSystem.cmake create mode 100644 arkanoid/build/CMakeFiles/3.16.3/CompilerIdC/CMakeCCompilerId.c create mode 100755 arkanoid/build/CMakeFiles/3.16.3/CompilerIdC/a.out create mode 100644 arkanoid/build/CMakeFiles/CMakeDirectoryInformation.cmake create mode 100644 arkanoid/build/CMakeFiles/CMakeOutput.log create mode 100644 arkanoid/build/CMakeFiles/Makefile.cmake create mode 100644 arkanoid/build/CMakeFiles/Makefile2 create mode 100644 arkanoid/build/CMakeFiles/TargetDirectories.txt create mode 100644 arkanoid/build/CMakeFiles/cmake.check_cache create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/ASM.includecache create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/C.includecache create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/DependInfo.cmake create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/balls.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/build.make create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/cmake_clean.cmake create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/depend.internal create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/depend.make create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/flags.make create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/fonts.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/link.txt create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/main.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/bootrom.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/critical_section.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/crt0.S.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/datetime.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/adc.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/claim.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/dma.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/exception.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/flash.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/interp.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/irq.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/pio.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/pll.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/spi.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/sync.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/timer.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/uart.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/lock_core.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/multicore.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/mutex.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/pheap.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/pico_malloc.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/platform.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/queue.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/reset_interface.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/runtime.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/sem.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/stdio.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/stdio_uart.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/stdio_usb.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/stdlib.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/time.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/timeout_helper.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/pico/unique_id.c.o create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/progress.make create mode 100644 arkanoid/build/CMakeFiles/main.elf.dir/utils.c.o create mode 100644 arkanoid/build/CMakeFiles/progress.marks create mode 100644 arkanoid/build/Makefile create mode 100644 arkanoid/build/cmake_install.cmake create mode 100755 arkanoid/compile.sh create mode 100755 arkanoid/elf2uf2 create mode 100755 arkanoid/fonts.c create mode 100755 arkanoid/fonts.h create mode 100755 arkanoid/install.sh create mode 100644 arkanoid/levels.h create mode 100644 arkanoid/main.c create mode 100755 arkanoid/main.elf create mode 100644 arkanoid/main.uf2 create mode 100644 arkanoid/pico/binary_info.h create mode 100644 arkanoid/pico/bit_ops.h create mode 100644 arkanoid/pico/boot2/boot2_w25q080.S create mode 100644 arkanoid/pico/boot2/copied_boot2.S.ignore create mode 100644 arkanoid/pico/boot2/helpers/asm_helper.S create mode 100644 arkanoid/pico/boot2/helpers/exit_from_boot2.S create mode 100644 arkanoid/pico/boot2/helpers/read_flash_sreg.S create mode 100644 arkanoid/pico/boot2/helpers/wait_ssi_ready.S create mode 100644 arkanoid/pico/bootrom.c create mode 100644 arkanoid/pico/bootrom.h create mode 100644 arkanoid/pico/code.h create mode 100644 arkanoid/pico/critical_section.c create mode 100644 arkanoid/pico/critical_section.h create mode 100644 arkanoid/pico/crt0.S create mode 100644 arkanoid/pico/datetime.c create mode 100644 arkanoid/pico/datetime.h create mode 100644 arkanoid/pico/defs.h create mode 100644 arkanoid/pico/divider.h create mode 100644 arkanoid/pico/doc.h create mode 100644 arkanoid/pico/driver.h create mode 100644 arkanoid/pico/hardware/adc.c create mode 100644 arkanoid/pico/hardware/adc.h create mode 100644 arkanoid/pico/hardware/address_mapped.h create mode 100644 arkanoid/pico/hardware/claim.c create mode 100644 arkanoid/pico/hardware/claim.h create mode 100644 arkanoid/pico/hardware/clocks.c create mode 100644 arkanoid/pico/hardware/clocks.h create mode 100644 arkanoid/pico/hardware/divider.h create mode 100644 arkanoid/pico/hardware/dma.c create mode 100644 arkanoid/pico/hardware/dma.h create mode 100644 arkanoid/pico/hardware/exception.c create mode 100644 arkanoid/pico/hardware/exception.h create mode 100644 arkanoid/pico/hardware/flash.c create mode 100644 arkanoid/pico/hardware/flash.h create mode 100644 arkanoid/pico/hardware/gpio.c create mode 100644 arkanoid/pico/hardware/gpio.h create mode 100644 arkanoid/pico/hardware/i2c.c create mode 100644 arkanoid/pico/hardware/i2c.h create mode 100644 arkanoid/pico/hardware/interp.c create mode 100644 arkanoid/pico/hardware/interp.h create mode 100644 arkanoid/pico/hardware/irq.c create mode 100644 arkanoid/pico/hardware/irq.h create mode 100644 arkanoid/pico/hardware/irq_handler_chain.S create mode 100644 arkanoid/pico/hardware/pio.c create mode 100644 arkanoid/pico/hardware/pio.h create mode 100644 arkanoid/pico/hardware/pio_instructions.h create mode 100644 arkanoid/pico/hardware/platform_defs.h create mode 100644 arkanoid/pico/hardware/pll.c create mode 100644 arkanoid/pico/hardware/pll.h create mode 100644 arkanoid/pico/hardware/pwm.h create mode 100644 arkanoid/pico/hardware/regs/adc.h create mode 100644 arkanoid/pico/hardware/regs/addressmap.h create mode 100644 arkanoid/pico/hardware/regs/busctrl.h create mode 100644 arkanoid/pico/hardware/regs/clocks.h create mode 100644 arkanoid/pico/hardware/regs/dma.h create mode 100644 arkanoid/pico/hardware/regs/dreq.h create mode 100644 arkanoid/pico/hardware/regs/i2c.h create mode 100644 arkanoid/pico/hardware/regs/intctrl.h create mode 100644 arkanoid/pico/hardware/regs/io_bank0.h create mode 100644 arkanoid/pico/hardware/regs/io_qspi.h create mode 100644 arkanoid/pico/hardware/regs/m0plus.h create mode 100644 arkanoid/pico/hardware/regs/pads_bank0.h create mode 100644 arkanoid/pico/hardware/regs/pads_qspi.h create mode 100644 arkanoid/pico/hardware/regs/pio.h create mode 100644 arkanoid/pico/hardware/regs/pll.h create mode 100644 arkanoid/pico/hardware/regs/psm.h create mode 100644 arkanoid/pico/hardware/regs/pwm.h create mode 100644 arkanoid/pico/hardware/regs/resets.h create mode 100644 arkanoid/pico/hardware/regs/rosc.h create mode 100644 arkanoid/pico/hardware/regs/rtc.h create mode 100644 arkanoid/pico/hardware/regs/sio.h create mode 100644 arkanoid/pico/hardware/regs/spi.h create mode 100644 arkanoid/pico/hardware/regs/ssi.h create mode 100644 arkanoid/pico/hardware/regs/syscfg.h create mode 100644 arkanoid/pico/hardware/regs/sysinfo.h create mode 100644 arkanoid/pico/hardware/regs/tbman.h create mode 100644 arkanoid/pico/hardware/regs/timer.h create mode 100644 arkanoid/pico/hardware/regs/uart.h create mode 100644 arkanoid/pico/hardware/regs/usb.h create mode 100644 arkanoid/pico/hardware/regs/usb_device_dpram.h create mode 100644 arkanoid/pico/hardware/regs/vreg_and_chip_reset.h create mode 100644 arkanoid/pico/hardware/regs/watchdog.h create mode 100644 arkanoid/pico/hardware/regs/xip.h create mode 100644 arkanoid/pico/hardware/regs/xosc.h create mode 100644 arkanoid/pico/hardware/resets.h create mode 100644 arkanoid/pico/hardware/rtc.c create mode 100644 arkanoid/pico/hardware/rtc.h create mode 100644 arkanoid/pico/hardware/spi.c create mode 100644 arkanoid/pico/hardware/spi.h create mode 100644 arkanoid/pico/hardware/structs/adc.h create mode 100644 arkanoid/pico/hardware/structs/bus_ctrl.h create mode 100644 arkanoid/pico/hardware/structs/clocks.h create mode 100644 arkanoid/pico/hardware/structs/dma.h create mode 100644 arkanoid/pico/hardware/structs/i2c.h create mode 100644 arkanoid/pico/hardware/structs/interp.h create mode 100644 arkanoid/pico/hardware/structs/iobank0.h create mode 100644 arkanoid/pico/hardware/structs/ioqspi.h create mode 100644 arkanoid/pico/hardware/structs/mpu.h create mode 100644 arkanoid/pico/hardware/structs/pads_qspi.h create mode 100644 arkanoid/pico/hardware/structs/padsbank0.h create mode 100644 arkanoid/pico/hardware/structs/pio.h create mode 100644 arkanoid/pico/hardware/structs/pll.h create mode 100644 arkanoid/pico/hardware/structs/psm.h create mode 100644 arkanoid/pico/hardware/structs/pwm.h create mode 100644 arkanoid/pico/hardware/structs/resets.h create mode 100644 arkanoid/pico/hardware/structs/rosc.h create mode 100644 arkanoid/pico/hardware/structs/rtc.h create mode 100644 arkanoid/pico/hardware/structs/scb.h create mode 100644 arkanoid/pico/hardware/structs/sio.h create mode 100644 arkanoid/pico/hardware/structs/spi.h create mode 100644 arkanoid/pico/hardware/structs/ssi.h create mode 100644 arkanoid/pico/hardware/structs/syscfg.h create mode 100644 arkanoid/pico/hardware/structs/systick.h create mode 100644 arkanoid/pico/hardware/structs/timer.h create mode 100644 arkanoid/pico/hardware/structs/uart.h create mode 100644 arkanoid/pico/hardware/structs/usb.h create mode 100644 arkanoid/pico/hardware/structs/vreg_and_chip_reset.h create mode 100644 arkanoid/pico/hardware/structs/watchdog.h create mode 100644 arkanoid/pico/hardware/structs/xip_ctrl.h create mode 100644 arkanoid/pico/hardware/structs/xosc.h create mode 100644 arkanoid/pico/hardware/sync.c create mode 100644 arkanoid/pico/hardware/sync.h create mode 100644 arkanoid/pico/hardware/timer.c create mode 100644 arkanoid/pico/hardware/timer.h create mode 100644 arkanoid/pico/hardware/uart.c create mode 100644 arkanoid/pico/hardware/uart.h create mode 100644 arkanoid/pico/hardware/vreg.c create mode 100644 arkanoid/pico/hardware/vreg.h create mode 100644 arkanoid/pico/hardware/watchdog.c create mode 100644 arkanoid/pico/hardware/watchdog.h create mode 100644 arkanoid/pico/hardware/xosc.c create mode 100644 arkanoid/pico/hardware/xosc.h create mode 100644 arkanoid/pico/junk/assert.h create mode 100644 arkanoid/pico/junk/config.h create mode 100644 arkanoid/pico/junk/error.h create mode 100644 arkanoid/pico/junk/types.h create mode 100644 arkanoid/pico/junk/version.h create mode 100644 arkanoid/pico/lock_core.c create mode 100644 arkanoid/pico/lock_core.h create mode 100644 arkanoid/pico/malloc.h create mode 100644 arkanoid/pico/memmap_default.ld create mode 100644 arkanoid/pico/multicore.c create mode 100644 arkanoid/pico/multicore.h create mode 100644 arkanoid/pico/mutex.c create mode 100644 arkanoid/pico/mutex.h create mode 100644 arkanoid/pico/pheap.c create mode 100644 arkanoid/pico/pheap.h create mode 100644 arkanoid/pico/pico.h create mode 100644 arkanoid/pico/pico4ml/screen.c create mode 100644 arkanoid/pico/pico4ml/screen.h create mode 100644 arkanoid/pico/pico_bootsel_via_double_reset.c create mode 100644 arkanoid/pico/pico_malloc.c create mode 100644 arkanoid/pico/platform.c create mode 100644 arkanoid/pico/platform.h create mode 100644 arkanoid/pico/queue.c create mode 100644 arkanoid/pico/queue.h create mode 100644 arkanoid/pico/reset_interface.c create mode 100644 arkanoid/pico/reset_interface.h create mode 100644 arkanoid/pico/runtime.c create mode 100644 arkanoid/pico/runtime.h create mode 100644 arkanoid/pico/sem.c create mode 100644 arkanoid/pico/sem.h create mode 100644 arkanoid/pico/sf_table.h create mode 100644 arkanoid/pico/stdio.c create mode 100644 arkanoid/pico/stdio.h create mode 100644 arkanoid/pico/stdio_semihosting.c create mode 100644 arkanoid/pico/stdio_semihosting.h create mode 100644 arkanoid/pico/stdio_uart.c create mode 100644 arkanoid/pico/stdio_uart.h create mode 100644 arkanoid/pico/stdio_usb.c create mode 100644 arkanoid/pico/stdio_usb.h create mode 100644 arkanoid/pico/stdio_usb_descriptors.c create mode 100644 arkanoid/pico/stdlib.c create mode 100644 arkanoid/pico/stdlib.h create mode 100644 arkanoid/pico/structure.h create mode 100644 arkanoid/pico/sync.h create mode 100644 arkanoid/pico/time.c create mode 100644 arkanoid/pico/time.h create mode 100644 arkanoid/pico/timeout_helper.c create mode 100644 arkanoid/pico/timeout_helper.h create mode 100644 arkanoid/pico/tinyusb/cdc/cdc.h create mode 100644 arkanoid/pico/tinyusb/cdc/cdc_device.c create mode 100644 arkanoid/pico/tinyusb/cdc/cdc_device.h create mode 100644 arkanoid/pico/tinyusb/cdc/cdc_host.c create mode 100644 arkanoid/pico/tinyusb/cdc/cdc_host.h create mode 100644 arkanoid/pico/tinyusb/cdc/cdc_rndis.h create mode 100644 arkanoid/pico/tinyusb/cdc/cdc_rndis_host.c create mode 100644 arkanoid/pico/tinyusb/cdc/cdc_rndis_host.h create mode 100644 arkanoid/pico/tinyusb/dcd.h create mode 100644 arkanoid/pico/tinyusb/dcd_attr.h create mode 100644 arkanoid/pico/tinyusb/dcd_rp2040.c create mode 100644 arkanoid/pico/tinyusb/hcd_rp2040.c create mode 100644 arkanoid/pico/tinyusb/host/hcd.h create mode 100644 arkanoid/pico/tinyusb/host/hcd_attr.h create mode 100644 arkanoid/pico/tinyusb/host/hub.c create mode 100644 arkanoid/pico/tinyusb/host/hub.h create mode 100644 arkanoid/pico/tinyusb/host/usbh.c create mode 100644 arkanoid/pico/tinyusb/host/usbh.h create mode 100644 arkanoid/pico/tinyusb/host/usbh_classdriver.h create mode 100644 arkanoid/pico/tinyusb/host/usbh_control.c create mode 100644 arkanoid/pico/tinyusb/osal.h create mode 100644 arkanoid/pico/tinyusb/osal_freertos.h create mode 100644 arkanoid/pico/tinyusb/osal_mynewt.h create mode 100644 arkanoid/pico/tinyusb/osal_none.h create mode 100644 arkanoid/pico/tinyusb/osal_pico.h create mode 100644 arkanoid/pico/tinyusb/osal_rtthread.h create mode 100644 arkanoid/pico/tinyusb/rp2040_usb.c create mode 100644 arkanoid/pico/tinyusb/rp2040_usb.h create mode 100644 arkanoid/pico/tinyusb/tusb.c create mode 100644 arkanoid/pico/tinyusb/tusb.h create mode 100644 arkanoid/pico/tinyusb/tusb_common.h create mode 100644 arkanoid/pico/tinyusb/tusb_compiler.h create mode 100644 arkanoid/pico/tinyusb/tusb_config.h create mode 100644 arkanoid/pico/tinyusb/tusb_error.h create mode 100644 arkanoid/pico/tinyusb/tusb_fifo.c create mode 100644 arkanoid/pico/tinyusb/tusb_fifo.h create mode 100644 arkanoid/pico/tinyusb/tusb_option.h create mode 100644 arkanoid/pico/tinyusb/tusb_timeout.h create mode 100644 arkanoid/pico/tinyusb/tusb_types.h create mode 100644 arkanoid/pico/tinyusb/tusb_verify.h create mode 100644 arkanoid/pico/tinyusb/usbd.c create mode 100644 arkanoid/pico/tinyusb/usbd.h create mode 100644 arkanoid/pico/tinyusb/usbd_control.c create mode 100644 arkanoid/pico/tinyusb/usbd_pvt.h create mode 100644 arkanoid/pico/unique_id.c create mode 100644 arkanoid/pico/unique_id.h create mode 100644 arkanoid/pico/usb_reset_interface.h create mode 100644 arkanoid/pico_mountpoint/main.uf2 create mode 100644 arkanoid/utils.c create mode 100644 arkanoid/utils.h create mode 100644 simple-setup.zip delete mode 100755 simple-setup/O1_working.elf delete mode 100755 simple-setup/O2_not_working.elf delete mode 100755 simple-setup/O2_working_with_gunoi.elf diff --git a/arkanoid/CMakeLists.txt b/arkanoid/CMakeLists.txt new file mode 100644 index 0000000..0219088 --- /dev/null +++ b/arkanoid/CMakeLists.txt @@ -0,0 +1,51 @@ +cmake_minimum_required (VERSION 3.10) + +project (test C ASM) + +set(CMAKE_C_COMPILER arm-none-eabi-gcc) +set(CMAKE_ASM_COMPILER arm-none-eabi-gcc) +# -O2 bricks the screen! +set(CMAKE_C_FLAGS "-O1 -mcpu=cortex-m0plus --specs=nosys.specs -Wl,--wrap,malloc -Wl,--wrap,calloc -Wl,--wrap,free -Wl,--wrap,vprintf -Wl,--wrap,vscanf") +set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -x assembler-with-cpp") + +file (GLOB srcs + ${CMAKE_CURRENT_SOURCE_DIR}/*.c + ${CMAKE_CURRENT_SOURCE_DIR}/pico/*.c + ${CMAKE_CURRENT_SOURCE_DIR}/pico/*.S + + ${CMAKE_CURRENT_SOURCE_DIR}/pico/boot2/*.S + + ${CMAKE_CURRENT_SOURCE_DIR}/pico/tinyusb/*.c + ${CMAKE_CURRENT_SOURCE_DIR}/pico/tinyusb/cdc/*.c + ${CMAKE_CURRENT_SOURCE_DIR}/pico/tinyusb/host/*.c + + ${CMAKE_CURRENT_SOURCE_DIR}/pico/hardware/*.c + ${CMAKE_CURRENT_SOURCE_DIR}/pico/hardware/*.S + ${CMAKE_CURRENT_SOURCE_DIR}/pico/hardware/regs/*.c + ${CMAKE_CURRENT_SOURCE_DIR}/pico/hardware/structs/*.c + + ${CMAKE_CURRENT_SOURCE_DIR}/pico/pico4ml/*.c +) + +#TUSB_OPT_DEVICE_ENABLED + +add_compile_definitions ( + PICO_ON_DEVICE=1 + CFG_TUSB_RHPORT0_MODE=OPT_OS_PICO + CFG_TUSB_MCU=OPT_MCU_RP2040 + LIB_PICO_STDIO_USB +) + +add_executable (main.elf ${srcs}) +target_link_libraries (main.elf m) + +target_link_options (main.elf PUBLIC -T ${CMAKE_CURRENT_SOURCE_DIR}/pico/memmap_default.ld) + +add_custom_command ( + COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/elf2uf2 ${CMAKE_CURRENT_SOURCE_DIR}/main.elf main.uf2 + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + TARGET main.elf + COMMENT "Converting main.elf to flashable main.uf2..." +) + +set_target_properties (main.elf PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/arkanoid/balls.c b/arkanoid/balls.c new file mode 100644 index 0000000..ebbdffb --- /dev/null +++ b/arkanoid/balls.c @@ -0,0 +1,161 @@ +#include <math.h> +#include <stdlib.h> +#include "pico/pico4ml/screen.h" +#include <stdio.h> + +#include "balls.h" +#include "utils.h" + +// http://rosettacode.org/wiki/Bitmap/Bresenham%27s_line_algorithm#C +void drawCoordLine(int x0, int y0, int x1, int y1, int col) { + + int dx = abs(x1-x0), sx = x0<x1 ? 1 : -1; + int dy = abs(y1-y0), sy = y0<y1 ? 1 : -1; + int err = (dx>dy ? dx : -dy)/2, e2; + + for(;;){ + ST7735_FillRectangle(x0, y0, 3, 3, col); + + if (x0==x1 && y0==y1) break; + e2 = err; + if (e2 >-dx) { err -= dy; x0 += sx; } + if (e2 < dy) { err += dx; y0 += sy; } + } +} + +void paddlePhysicsStep(Paddle *paddle) { + bool moved = false; + float old_x = paddle->pos.x; + + if (gpio_get(20) == 0) { + paddle->pos.x -= paddle->moveSpeed; + moved = true; + } + + if (gpio_get(21) == 0) { + paddle->pos.x += paddle->moveSpeed; + moved = true; + } + + if (moved) { + if (paddle->pos.x < paddle->length / 2) { + paddle->pos.x = paddle->length / 2; + } + + if (paddle->pos.x > 79 - paddle->length / 2) { + paddle->pos.x = 79 - paddle->length / 2; + } + + ST7735_FillRectangle(old_x - paddle->length / 2, paddle->pos.y, paddle->length, 3, ST7735_BLACK); + drawPaddle(paddle); + } +} + +void resetBallTrail(int x, int y, Ball *ball) { + for (int i=1; i<25; i++) { + drawCoordLine(ball->prevCoords[i].x, ball->prevCoords[i].y, ball->prevCoords[i-1].x, ball->prevCoords[i-1].y, ST7735_BLACK); + } + + for (int i=0; i<25; i++) { + ball->prevCoords[i].x = x; + ball->prevCoords[i].y = y; + } +} + +void resetBall(Ball *ball) { + ball->pos.x = 43; + ball->pos.y = 120; + resetBallTrail(43, 120, ball); + ball->speedY = ball->speed; + ball->speedX = 0; +} + +// Update ball movement based on speed and do looping/bouncing +int16_t ballPhysicsStep(Ball *ball, Paddle *paddle, uint16_t *blocks) { + int16_t hit_result = BALL_HIT_NOTHING; + + ball->pos.x += ball->speedX; + ball->pos.y += ball->speedY; + + ball->speedX *= ball->friction; + ball->speedY *= ball->friction; + + if (ball->pos.y <= 0) { + ball->pos.y = 0; + ball->speedY *= -1; + } else if (ball->pos.y >= 200) { + resetBall(ball); + hit_result = BALL_DIED; + } + + if (ball->pos.x <= 0) { + ball->pos.x = 0; + ball->speedX *= -1; + } else if (ball->pos.x >= 79) { + ball->pos.x = 79; + ball->speedX *= -1; + } + + int paddle_halflen = paddle->length / 2; + + //printf("ball: Y:%f X:%f, spd:%f | paddle: Y:%f X:%f %f\n", ball->pos.y, ball->pos.x, ball->speed, paddle->pos.y, paddle->pos.x - paddle_halflen, paddle->pos.x + paddle_halflen); + + + if (ball->pos.y >= paddle->pos.y - 2 && ball->pos.y <= paddle->pos.y + 4 + && ball->pos.x >= paddle->pos.x - paddle_halflen && ball->pos.x <= paddle->pos.x + paddle_halflen) { + float angle = (((float) (ball->pos.x - paddle->pos.x) / paddle_halflen) * 45) * M_PI / 180; + //printf("ang %f %f\n", ((float) (ball->pos.x - paddle->pos.x) / paddle_halflen) * 45, angle); + + ball->speedY = -cos(angle) * ball->speed; + ball->speedX = sin(angle) * ball->speed; + hit_result = BALL_HIT_PADDLE; + } + + if (ball->pos.y <= 80) { + int block_y = ball->pos.y / 4; + int block_x = ball->pos.x / 10; + hit_result = block_y * 8 + block_x; + + if (blocks[hit_result]) { + blocks[hit_result] = 0; + ball->speedY *= -1; + } else { + hit_result = BALL_HIT_NOTHING; + } + } + + return hit_result; +} + +void drawPaddle(Paddle *paddle) { + // Paddle has a center pos and a length. Extend half length in each direction + int left_x = paddle->pos.x - paddle->length / 2; + + ST7735_FillRectangle(left_x, paddle->pos.y, paddle->length, 3, paddle->borderColor); + ST7735_FillRectangle(left_x + 1, paddle->pos.y + 1, paddle->length - 2, 1, paddle->color); +} + +// Render ball position and update coordinate history +void drawBallTrail(Ball *ball) { + for (int i=24; i>=0; i--) { + Coordinate coordT = ball->prevCoords[i]; + Coordinate coordO = ball->prevCoords[i-1]; + uint16_t color = (i == 0) ? ball->headCol : change_color(ball->tailCol, (1 - ((float) i / 24))); + + if (coordT.y >= 150 && coordO.y <= 10) { // looping to the left (0), appearing on the right (159) + //drawCoordLine(coordO.x, coordO.y, coordT.x, 0, color); + //drawCoordLine(coordO.x, 159, coordT.x, coordT.y, color); + } else if (coordT.y <= 10 && coordO.y >= 150) { // lopoing to the right (159), appearing on the left (0) + //drawCoordLine(coordO.x, coordO.y, coordT.x, 159, color); + //drawCoordLine(coordO.x, 0, coordT.x, coordT.y, color); + } else { + drawCoordLine(ball->prevCoords[i].x, ball->prevCoords[i].y, ball->prevCoords[i-1].x, ball->prevCoords[i-1].y, color); + } + } + + for (int i=24; i>0; i--) { + ball->prevCoords[i] = ball->prevCoords[i-1]; + } + + ball->prevCoords[0] = ball->pos; +} diff --git a/arkanoid/balls.h b/arkanoid/balls.h new file mode 100644 index 0000000..199ee1c --- /dev/null +++ b/arkanoid/balls.h @@ -0,0 +1,45 @@ +#ifndef BALLS_H +#define BALLS_H +#include <math.h> +#include <stdlib.h> +#include "pico/stdlib.h" +#include "pico/pico4ml/screen.h" + +typedef struct { + float x; + float y; +} Coordinate; + +typedef struct { + Coordinate pos; + Coordinate prevCoords[25]; + + float speedX; + float speedY; + + float friction; + + int headCol; + int tailCol; + float speed; +} Ball; + +typedef struct { + Coordinate pos; + + int length; + float moveSpeed; + + uint16_t color; + uint16_t borderColor; +} Paddle; + +void drawCoordLine(int x0, int y0, int x1, int y1, int col); +void paddlePhysicsStep(Paddle *paddle); +void resetBallTrail(int x, int y, Ball *ball); +int16_t ballPhysicsStep(Ball *ball, Paddle *paddle, uint16_t *blocks); +void drawPaddle(Paddle *paddle); +void drawBallTrail(Ball *ball); +void resetBall(Ball *ball); + +#endif \ No newline at end of file diff --git a/arkanoid/build/CMakeCache.txt b/arkanoid/build/CMakeCache.txt new file mode 100644 index 0000000..4774fbd --- /dev/null +++ b/arkanoid/build/CMakeCache.txt @@ -0,0 +1,367 @@ +# This is the CMakeCache file. +# For build in directory: /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build +# It was generated by CMake: /usr/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line + +//Path to a program. +CMAKE_AR:FILEPATH=/usr/bin/ar + +//ASM compiler +CMAKE_ASM_COMPILER:FILEPATH=/usr/bin/cc + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_ASM_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_ASM_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib + +//Flags used by the ASM compiler during all build types. +CMAKE_ASM_FLAGS:STRING= + +//Flags used by the ASM compiler during DEBUG builds. +CMAKE_ASM_FLAGS_DEBUG:STRING=-g + +//Flags used by the ASM compiler during MINSIZEREL builds. +CMAKE_ASM_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the ASM compiler during RELEASE builds. +CMAKE_ASM_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the ASM compiler during RELWITHDEBINFO builds. +CMAKE_ASM_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING= + +//Enable/Disable color output during build. +CMAKE_COLOR_MAKEFILE:BOOL=ON + +//C compiler +CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc + +//A wrapper around 'ar' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_C_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar-9 + +//A wrapper around 'ranlib' adding the appropriate '--plugin' option +// for the GCC compiler +CMAKE_C_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib-9 + +//Flags used by the C compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the C compiler during DEBUG builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the C compiler during RELEASE builds. +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=OFF + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Path to a program. +CMAKE_LINKER:FILEPATH=/usr/bin/ld + +//Path to a program. +CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/make + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=test + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=/usr/bin/readelf + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/usr/bin/strip + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Value Computed by CMake +test_BINARY_DIR:STATIC=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build + +//Value Computed by CMake +test_SOURCE_DIR:STATIC=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1 + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_ASM_COMPILER +CMAKE_ASM_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_ASM_COMPILER_AR +CMAKE_ASM_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_ASM_COMPILER_RANLIB +CMAKE_ASM_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +CMAKE_ASM_COMPILER_WORKS:INTERNAL=1 +//ADVANCED property for variable: CMAKE_ASM_FLAGS +CMAKE_ASM_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_ASM_FLAGS_DEBUG +CMAKE_ASM_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_ASM_FLAGS_MINSIZEREL +CMAKE_ASM_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_ASM_FLAGS_RELEASE +CMAKE_ASM_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_ASM_FLAGS_RELWITHDEBINFO +CMAKE_ASM_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=16 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=3 +//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE +CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/usr/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/usr/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/usr/bin/ctest +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_AR +CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB +CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Unix Makefiles +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1 +//Install .so files without execute permission. +CMAKE_INSTALL_SO_NO_EXE:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MAKE_PROGRAM +CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/usr/share/cmake-3.16 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 + diff --git a/arkanoid/build/CMakeFiles/3.16.3/CMakeASMCompiler.cmake b/arkanoid/build/CMakeFiles/3.16.3/CMakeASMCompiler.cmake new file mode 100644 index 0000000..85c1d72 --- /dev/null +++ b/arkanoid/build/CMakeFiles/3.16.3/CMakeASMCompiler.cmake @@ -0,0 +1,18 @@ +set(CMAKE_ASM_COMPILER "/usr/bin/cc") +set(CMAKE_ASM_COMPILER_ARG1 "") +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_ASM_COMPILER_AR "/usr/bin/gcc-ar") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_ASM_COMPILER_RANLIB "/usr/bin/gcc-ranlib") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_ASM_COMPILER_LOADED 1) +set(CMAKE_ASM_COMPILER_ID "GNU") +set(CMAKE_ASM_COMPILER_VERSION "") +set(CMAKE_ASM_COMPILER_ENV_VAR "ASM") + + +set(CMAKE_ASM_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_ASM_LINKER_PREFERENCE 0) + + diff --git a/arkanoid/build/CMakeFiles/3.16.3/CMakeCCompiler.cmake b/arkanoid/build/CMakeFiles/3.16.3/CMakeCCompiler.cmake new file mode 100644 index 0000000..c5ece7b --- /dev/null +++ b/arkanoid/build/CMakeFiles/3.16.3/CMakeCCompiler.cmake @@ -0,0 +1,76 @@ +set(CMAKE_C_COMPILER "/usr/bin/cc") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "GNU") +set(CMAKE_C_COMPILER_VERSION "9.4.0") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") + +set(CMAKE_C_PLATFORM_ID "Linux") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "") +set(CMAKE_C_SIMULATE_VERSION "") + + + +set(CMAKE_AR "/usr/bin/ar") +set(CMAKE_C_COMPILER_AR "/usr/bin/gcc-ar-9") +set(CMAKE_RANLIB "/usr/bin/ranlib") +set(CMAKE_C_COMPILER_RANLIB "/usr/bin/gcc-ranlib-9") +set(CMAKE_LINKER "/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCC 1) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) +set(CMAKE_COMPILER_IS_MINGW ) +set(CMAKE_COMPILER_IS_CYGWIN ) +if(CMAKE_COMPILER_IS_CYGWIN) + set(CYGWIN 1) + set(UNIX 1) +endif() + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +if(CMAKE_COMPILER_IS_MINGW) + set(MINGW 1) +endif() +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "ELF") +set(CMAKE_C_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "x86_64-linux-gnu") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "gcc;gcc_s;c;gcc;gcc_s") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/arkanoid/build/CMakeFiles/3.16.3/CMakeDetermineCompilerABI_C.bin b/arkanoid/build/CMakeFiles/3.16.3/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000000000000000000000000000000000000..249b0ff65c23949b1f16486dfdb06e4e46074b65 GIT binary patch literal 16552 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 YKVg1{iGk>F&<14&1_mB94QN~j03GH!SO5S3 literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/3.16.3/CMakeSystem.cmake b/arkanoid/build/CMakeFiles/3.16.3/CMakeSystem.cmake new file mode 100644 index 0000000..14a03a4 --- /dev/null +++ b/arkanoid/build/CMakeFiles/3.16.3/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Linux-5.4.0-110-generic") +set(CMAKE_HOST_SYSTEM_NAME "Linux") +set(CMAKE_HOST_SYSTEM_VERSION "5.4.0-110-generic") +set(CMAKE_HOST_SYSTEM_PROCESSOR "x86_64") + + + +set(CMAKE_SYSTEM "Linux-5.4.0-110-generic") +set(CMAKE_SYSTEM_NAME "Linux") +set(CMAKE_SYSTEM_VERSION "5.4.0-110-generic") +set(CMAKE_SYSTEM_PROCESSOR "x86_64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/arkanoid/build/CMakeFiles/3.16.3/CompilerIdC/CMakeCCompilerId.c b/arkanoid/build/CMakeFiles/3.16.3/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..d884b50 --- /dev/null +++ b/arkanoid/build/CMakeFiles/3.16.3/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,671 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version) +# define COMPILER_ID "Fujitsu" + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__) +# define COMPILER_ID "ADSP" +#if defined(__VISUALDSPVERSION__) + /* __VISUALDSPVERSION__ = 0xVVRRPP00 */ +# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24) +# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8 & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXE) || defined(__CRAYXC) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number components. */ +#ifdef COMPILER_VERSION_MAJOR +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + + +#if !defined(__STDC__) +# if (defined(_MSC_VER) && !defined(__clang__)) \ + || (defined(__ibmxl__) || defined(__IBMC__)) +# define C_DIALECT "90" +# else +# define C_DIALECT +# endif +#elif __STDC_VERSION__ >= 201000L +# define C_DIALECT "11" +#elif __STDC_VERSION__ >= 199901L +# define C_DIALECT "99" +#else +# define C_DIALECT "90" +#endif +const char* info_language_dialect_default = + "INFO" ":" "dialect_default[" C_DIALECT "]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXE) || defined(__CRAYXC) + require += info_cray[argc]; +#endif + require += info_language_dialect_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/arkanoid/build/CMakeFiles/3.16.3/CompilerIdC/a.out b/arkanoid/build/CMakeFiles/3.16.3/CompilerIdC/a.out new file mode 100755 index 0000000000000000000000000000000000000000..e82fab493fdf7ab5d55eaa479346af6ef1f959e7 GIT binary patch literal 16712 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 literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/CMakeDirectoryInformation.cmake b/arkanoid/build/CMakeFiles/CMakeDirectoryInformation.cmake new file mode 100644 index 0000000..d57bee1 --- /dev/null +++ b/arkanoid/build/CMakeFiles/CMakeDirectoryInformation.cmake @@ -0,0 +1,16 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Relative path conversion top directories. +set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1") +set(CMAKE_RELATIVE_PATH_TOP_BINARY "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build") + +# Force unix paths in dependencies. +set(CMAKE_FORCE_UNIX_PATHS 1) + + +# The C and CXX include file regular expressions for this directory. +set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$") +set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$") +set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN}) +set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN}) diff --git a/arkanoid/build/CMakeFiles/CMakeOutput.log b/arkanoid/build/CMakeFiles/CMakeOutput.log new file mode 100644 index 0000000..c892df4 --- /dev/null +++ b/arkanoid/build/CMakeFiles/CMakeOutput.log @@ -0,0 +1,232 @@ +The system is: Linux - 5.4.0-110-generic - x86_64 +Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. +Compiler: /usr/bin/cc +Build flags: +Id flags: + +The output was: +0 + + +Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.out" + +The C compiler identification is GNU, found in "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/3.16.3/CompilerIdC/a.out" + +Checking whether the ASM compiler is GNU using "--version" matched "(GNU assembler)|(GCC)|(Free Software Foundation)": +cc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 +Copyright (C) 2019 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +Determining if the C compiler works passed with the following output: +Change Dir: /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/make cmTC_1711c/fast && /usr/bin/make -f CMakeFiles/cmTC_1711c.dir/build.make CMakeFiles/cmTC_1711c.dir/build +make[1]: Entering directory '/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_1711c.dir/testCCompiler.c.o +/usr/bin/cc -o CMakeFiles/cmTC_1711c.dir/testCCompiler.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/CMakeTmp/testCCompiler.c +Linking C executable cmTC_1711c +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_1711c.dir/link.txt --verbose=1 +/usr/bin/cc CMakeFiles/cmTC_1711c.dir/testCCompiler.c.o -o cmTC_1711c +make[1]: Leaving directory '/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/CMakeTmp' + + + +Detecting C compiler ABI info compiled with the following output: +Change Dir: /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/CMakeTmp + +Run Build Command(s):/usr/bin/make cmTC_adcee/fast && /usr/bin/make -f CMakeFiles/cmTC_adcee.dir/build.make CMakeFiles/cmTC_adcee.dir/build +make[1]: Entering directory '/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/CMakeTmp' +Building C object CMakeFiles/cmTC_adcee.dir/CMakeCCompilerABI.c.o +/usr/bin/cc -v -o CMakeFiles/cmTC_adcee.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c +Using built-in specs. +COLLECT_GCC=/usr/bin/cc +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_adcee.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/cc1 -quiet -v -imultiarch x86_64-linux-gnu /usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c -quiet -dumpbase CMakeCCompilerABI.c -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_adcee.dir/CMakeCCompilerABI.c.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cccmmYjn.s +GNU C17 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed" +ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include" +#include "..." search starts here: +#include <...> search starts here: + /usr/lib/gcc/x86_64-linux-gnu/9/include + /usr/local/include + /usr/include/x86_64-linux-gnu + /usr/include +End of search list. +GNU C17 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu) + compiled by GNU C version 9.4.0, GMP version 6.2.0, MPFR version 4.0.2, MPC version 1.1.0, isl version isl-0.22.1-GMP + +GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 +Compiler executable checksum: c0c95c0b4209efec1c1892d5ff24030b +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_adcee.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' + as -v --64 -o CMakeFiles/cmTC_adcee.dir/CMakeCCompilerABI.c.o /tmp/cccmmYjn.s +GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34 +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_adcee.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64' +Linking C executable cmTC_adcee +/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_adcee.dir/link.txt --verbose=1 +/usr/bin/cc -v CMakeFiles/cmTC_adcee.dir/CMakeCCompilerABI.c.o -o cmTC_adcee +Using built-in specs. +COLLECT_GCC=/usr/bin/cc +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none:hsa +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr,hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) +COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/ +LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/ +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_adcee' '-mtune=generic' '-march=x86-64' + /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccxCkDWO.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_adcee /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_adcee.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o +COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_adcee' '-mtune=generic' '-march=x86-64' +make[1]: Leaving directory '/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/CMakeTmp' + + + +Parsed C implicit include dir info from above output: rv=done + found start of include info + found start of implicit include info + add: [/usr/lib/gcc/x86_64-linux-gnu/9/include] + add: [/usr/local/include] + add: [/usr/include/x86_64-linux-gnu] + add: [/usr/include] + end of search list found + collapse include dir [/usr/lib/gcc/x86_64-linux-gnu/9/include] ==> [/usr/lib/gcc/x86_64-linux-gnu/9/include] + collapse include dir [/usr/local/include] ==> [/usr/local/include] + collapse include dir [/usr/include/x86_64-linux-gnu] ==> [/usr/include/x86_64-linux-gnu] + collapse include dir [/usr/include] ==> [/usr/include] + implicit include dirs: [/usr/lib/gcc/x86_64-linux-gnu/9/include;/usr/local/include;/usr/include/x86_64-linux-gnu;/usr/include] + + +Parsed C implicit link information from above output: + link line regex: [^( *|.*[/\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\]+-)?ld|collect2)[^/\]*( |$)] + ignore line: [Change Dir: /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/CMakeTmp] + ignore line: [] + ignore line: [Run Build Command(s):/usr/bin/make cmTC_adcee/fast && /usr/bin/make -f CMakeFiles/cmTC_adcee.dir/build.make CMakeFiles/cmTC_adcee.dir/build] + ignore line: [make[1]: Entering directory '/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/CMakeTmp'] + ignore line: [Building C object CMakeFiles/cmTC_adcee.dir/CMakeCCompilerABI.c.o] + ignore line: [/usr/bin/cc -v -o CMakeFiles/cmTC_adcee.dir/CMakeCCompilerABI.c.o -c /usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/cc] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_adcee.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64'] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/cc1 -quiet -v -imultiarch x86_64-linux-gnu /usr/share/cmake-3.16/Modules/CMakeCCompilerABI.c -quiet -dumpbase CMakeCCompilerABI.c -mtune=generic -march=x86-64 -auxbase-strip CMakeFiles/cmTC_adcee.dir/CMakeCCompilerABI.c.o -version -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/cccmmYjn.s] + ignore line: [GNU C17 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed"] + ignore line: [ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/9/../../../../x86_64-linux-gnu/include"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /usr/lib/gcc/x86_64-linux-gnu/9/include] + ignore line: [ /usr/local/include] + ignore line: [ /usr/include/x86_64-linux-gnu] + ignore line: [ /usr/include] + ignore line: [End of search list.] + ignore line: [GNU C17 (Ubuntu 9.4.0-1ubuntu1~20.04.1) version 9.4.0 (x86_64-linux-gnu)] + ignore line: [ compiled by GNU C version 9.4.0 GMP version 6.2.0 MPFR version 4.0.2 MPC version 1.1.0 isl version isl-0.22.1-GMP] + ignore line: [] + ignore line: [GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072] + ignore line: [Compiler executable checksum: c0c95c0b4209efec1c1892d5ff24030b] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_adcee.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64'] + ignore line: [ as -v --64 -o CMakeFiles/cmTC_adcee.dir/CMakeCCompilerABI.c.o /tmp/cccmmYjn.s] + ignore line: [GNU assembler version 2.34 (x86_64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.34] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'CMakeFiles/cmTC_adcee.dir/CMakeCCompilerABI.c.o' '-c' '-mtune=generic' '-march=x86-64'] + ignore line: [Linking C executable cmTC_adcee] + ignore line: [/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_adcee.dir/link.txt --verbose=1] + ignore line: [/usr/bin/cc -v CMakeFiles/cmTC_adcee.dir/CMakeCCompilerABI.c.o -o cmTC_adcee ] + ignore line: [Using built-in specs.] + ignore line: [COLLECT_GCC=/usr/bin/cc] + ignore line: [COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] + ignore line: [OFFLOAD_TARGET_NAMES=nvptx-none:hsa] + ignore line: [OFFLOAD_TARGET_DEFAULT=1] + ignore line: [Target: x86_64-linux-gnu] + ignore line: [Configured with: ../src/configure -v --with-pkgversion='Ubuntu 9.4.0-1ubuntu1~20.04.1' --with-bugurl=file:///usr/share/doc/gcc-9/README.Bugs --enable-languages=c ada c++ go brig d fortran objc obj-c++ gm2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-9 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32 m64 mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none=/build/gcc-9-Av3uEd/gcc-9-9.4.0/debian/tmp-nvptx/usr hsa --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu] + ignore line: [Thread model: posix] + ignore line: [gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) ] + ignore line: [COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/] + ignore line: [LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/9/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/9/../../../:/lib/:/usr/lib/] + ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_adcee' '-mtune=generic' '-march=x86-64'] + link line: [ /usr/lib/gcc/x86_64-linux-gnu/9/collect2 -plugin /usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so -plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper -plugin-opt=-fresolution=/tmp/ccxCkDWO.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr -m elf_x86_64 --hash-style=gnu --as-needed -dynamic-linker /lib64/ld-linux-x86-64.so.2 -pie -z now -z relro -o cmTC_adcee /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/9/../../.. CMakeFiles/cmTC_adcee.dir/CMakeCCompilerABI.c.o -lgcc --push-state --as-needed -lgcc_s --pop-state -lc -lgcc --push-state --as-needed -lgcc_s --pop-state /usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] + arg [/usr/lib/gcc/x86_64-linux-gnu/9/collect2] ==> ignore + arg [-plugin] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/liblto_plugin.so] ==> ignore + arg [-plugin-opt=/usr/lib/gcc/x86_64-linux-gnu/9/lto-wrapper] ==> ignore + arg [-plugin-opt=-fresolution=/tmp/ccxCkDWO.res] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [-plugin-opt=-pass-through=-lc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc] ==> ignore + arg [-plugin-opt=-pass-through=-lgcc_s] ==> ignore + arg [--build-id] ==> ignore + arg [--eh-frame-hdr] ==> ignore + arg [-m] ==> ignore + arg [elf_x86_64] ==> ignore + arg [--hash-style=gnu] ==> ignore + arg [--as-needed] ==> ignore + arg [-dynamic-linker] ==> ignore + arg [/lib64/ld-linux-x86-64.so.2] ==> ignore + arg [-pie] ==> ignore + arg [-znow] ==> ignore + arg [-zrelro] ==> ignore + arg [-o] ==> ignore + arg [cmTC_adcee] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crti.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtbeginS.o] ==> ignore + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] + arg [-L/lib/x86_64-linux-gnu] ==> dir [/lib/x86_64-linux-gnu] + arg [-L/lib/../lib] ==> dir [/lib/../lib] + arg [-L/usr/lib/x86_64-linux-gnu] ==> dir [/usr/lib/x86_64-linux-gnu] + arg [-L/usr/lib/../lib] ==> dir [/usr/lib/../lib] + arg [-L/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] + arg [CMakeFiles/cmTC_adcee.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lgcc] ==> lib [gcc] + arg [--push-state] ==> ignore + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--pop-state] ==> ignore + arg [-lc] ==> lib [c] + arg [-lgcc] ==> lib [gcc] + arg [--push-state] ==> ignore + arg [--as-needed] ==> ignore + arg [-lgcc_s] ==> lib [gcc_s] + arg [--pop-state] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/crtendS.o] ==> ignore + arg [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/crtn.o] ==> ignore + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9] ==> [/usr/lib/gcc/x86_64-linux-gnu/9] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../../../lib] ==> [/usr/lib] + collapse library dir [/lib/x86_64-linux-gnu] ==> [/lib/x86_64-linux-gnu] + collapse library dir [/lib/../lib] ==> [/lib] + collapse library dir [/usr/lib/x86_64-linux-gnu] ==> [/usr/lib/x86_64-linux-gnu] + collapse library dir [/usr/lib/../lib] ==> [/usr/lib] + collapse library dir [/usr/lib/gcc/x86_64-linux-gnu/9/../../..] ==> [/usr/lib] + implicit libs: [gcc;gcc_s;c;gcc;gcc_s] + implicit dirs: [/usr/lib/gcc/x86_64-linux-gnu/9;/usr/lib/x86_64-linux-gnu;/usr/lib;/lib/x86_64-linux-gnu;/lib] + implicit fwks: [] + + diff --git a/arkanoid/build/CMakeFiles/Makefile.cmake b/arkanoid/build/CMakeFiles/Makefile.cmake new file mode 100644 index 0000000..8d17e83 --- /dev/null +++ b/arkanoid/build/CMakeFiles/Makefile.cmake @@ -0,0 +1,48 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# The generator used is: +set(CMAKE_DEPENDS_GENERATOR "Unix Makefiles") + +# The top level Makefile was generated from the following files: +set(CMAKE_MAKEFILE_DEPENDS + "CMakeCache.txt" + "../CMakeLists.txt" + "CMakeFiles/3.16.3/CMakeASMCompiler.cmake" + "CMakeFiles/3.16.3/CMakeCCompiler.cmake" + "CMakeFiles/3.16.3/CMakeSystem.cmake" + "/usr/share/cmake-3.16/Modules/CMakeASMInformation.cmake" + "/usr/share/cmake-3.16/Modules/CMakeCInformation.cmake" + "/usr/share/cmake-3.16/Modules/CMakeCheckCompilerFlagCommonPatterns.cmake" + "/usr/share/cmake-3.16/Modules/CMakeCommonLanguageInclude.cmake" + "/usr/share/cmake-3.16/Modules/CMakeGenericSystem.cmake" + "/usr/share/cmake-3.16/Modules/CMakeInitializeConfigs.cmake" + "/usr/share/cmake-3.16/Modules/CMakeLanguageInformation.cmake" + "/usr/share/cmake-3.16/Modules/CMakeSystemSpecificInformation.cmake" + "/usr/share/cmake-3.16/Modules/CMakeSystemSpecificInitialize.cmake" + "/usr/share/cmake-3.16/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + "/usr/share/cmake-3.16/Modules/Compiler/GNU-ASM.cmake" + "/usr/share/cmake-3.16/Modules/Compiler/GNU-C.cmake" + "/usr/share/cmake-3.16/Modules/Compiler/GNU.cmake" + "/usr/share/cmake-3.16/Modules/Internal/CMakeCheckCompilerFlag.cmake" + "/usr/share/cmake-3.16/Modules/Platform/Linux-GNU-C.cmake" + "/usr/share/cmake-3.16/Modules/Platform/Linux-GNU.cmake" + "/usr/share/cmake-3.16/Modules/Platform/Linux.cmake" + "/usr/share/cmake-3.16/Modules/Platform/UnixPaths.cmake" + ) + +# The corresponding makefile is: +set(CMAKE_MAKEFILE_OUTPUTS + "Makefile" + "CMakeFiles/cmake.check_cache" + ) + +# Byproducts of CMake generate step: +set(CMAKE_MAKEFILE_PRODUCTS + "CMakeFiles/CMakeDirectoryInformation.cmake" + ) + +# Dependency information for all targets: +set(CMAKE_DEPEND_INFO_FILES + "CMakeFiles/main.elf.dir/DependInfo.cmake" + ) diff --git a/arkanoid/build/CMakeFiles/Makefile2 b/arkanoid/build/CMakeFiles/Makefile2 new file mode 100644 index 0000000..4a2a691 --- /dev/null +++ b/arkanoid/build/CMakeFiles/Makefile2 @@ -0,0 +1,106 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/amy/projects/uni/comp-sys-ii/arkanoid/task1 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build + +#============================================================================= +# Directory level rules for the build root directory + +# The main recursive "all" target. +all: CMakeFiles/main.elf.dir/all + +.PHONY : all + +# The main recursive "preinstall" target. +preinstall: + +.PHONY : preinstall + +# The main recursive "clean" target. +clean: CMakeFiles/main.elf.dir/clean + +.PHONY : clean + +#============================================================================= +# Target rules for target CMakeFiles/main.elf.dir + +# All Build rule for target. +CMakeFiles/main.elf.dir/all: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/depend + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/build + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65 "Built target main.elf" +.PHONY : CMakeFiles/main.elf.dir/all + +# Build rule for subdir invocation for target. +CMakeFiles/main.elf.dir/rule: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles 65 + $(MAKE) -f CMakeFiles/Makefile2 CMakeFiles/main.elf.dir/all + $(CMAKE_COMMAND) -E cmake_progress_start /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles 0 +.PHONY : CMakeFiles/main.elf.dir/rule + +# Convenience name for target. +main.elf: CMakeFiles/main.elf.dir/rule + +.PHONY : main.elf + +# clean rule for target. +CMakeFiles/main.elf.dir/clean: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/clean +.PHONY : CMakeFiles/main.elf.dir/clean + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/arkanoid/build/CMakeFiles/TargetDirectories.txt b/arkanoid/build/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..dc1cc72 --- /dev/null +++ b/arkanoid/build/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/edit_cache.dir +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/rebuild_cache.dir +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir diff --git a/arkanoid/build/CMakeFiles/cmake.check_cache b/arkanoid/build/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/arkanoid/build/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/ASM.includecache b/arkanoid/build/CMakeFiles/main.elf.dir/ASM.includecache new file mode 100644 index 0000000..8e54ca9 --- /dev/null +++ b/arkanoid/build/CMakeFiles/main.elf.dir/ASM.includecache @@ -0,0 +1,8 @@ +#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/C.includecache b/arkanoid/build/CMakeFiles/main.elf.dir/C.includecache new file mode 100644 index 0000000..ff04874 --- /dev/null +++ b/arkanoid/build/CMakeFiles/main.elf.dir/C.includecache @@ -0,0 +1,234 @@ +#IncludeRegexLine: ^[ ]*[#%][ ]*(include|import)[ ]*[<"]([^">]+)([">]) + +#IncludeRegexScan: ^.*$ + +#IncludeRegexComplain: ^$ + +#IncludeRegexTransform: + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/balls.h +math.h +- +stdlib.h +- +pico/stdlib.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdlib.h +pico/pico4ml/screen.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico4ml/screen.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/fonts.h +stdint.h +- + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/levels.h +stdint.h +- + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/main.c +pico/stdlib.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdlib.h +pico/pico4ml/screen.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico4ml/screen.h +math.h +- +stdio.h +- +pico/time.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h +balls.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/balls.h +fonts.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/fonts.h +utils.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/utils.h +levels.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/levels.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h +../pico.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h +regs/addressmap.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/gpio.h +../pico.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h +structs/sio.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/sio.h +structs/padsbank0.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/padsbank0.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h +../platform_defs.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/dreq.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/pads_bank0.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/spi.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/uart.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/spi.h +../pico.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h +../time.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h +structs/spi.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/spi.h +regs/dreq.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/dreq.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/interp.h +../address_mapped.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h +../regs/sio.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/padsbank0.h +../address_mapped.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h +../regs/pads_bank0.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/pads_bank0.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/sio.h +../address_mapped.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h +../regs/sio.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h +interp.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/interp.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/spi.h +../address_mapped.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h +../regs/spi.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/spi.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h +../address_mapped.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h +../regs/timer.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/uart.h +../address_mapped.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h +../regs/uart.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/uart.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h +../pico.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h +structs/timer.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/uart.h +../pico.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h +structs/uart.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/uart.h +regs/dreq.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/dreq.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h +stdbool.h +- +cassert +- +assert.h +- + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h +assert.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h +stdint.h +- +stdbool.h +- +stddef.h +- + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h +junk/types.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h +junk/version.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h +junk/config.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h +platform.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +junk/error.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico4ml/screen.h +stdbool.h +- +../stdlib.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdlib.h +../hardware/spi.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/spi.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +hardware/platform_defs.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h +sys/cdefs.h +- +junk/types.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_semihosting.h +stdio.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_uart.h +stdio.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio.h +hardware/uart.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/uart.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h +stdio.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdlib.h +pico.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h +stdio.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio.h +time.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h +hardware/gpio.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/gpio.h +hardware/uart.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/uart.h +stdio_uart.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_uart.h +stdio_usb.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h +stdio_semihosting.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_semihosting.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h +pico.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h +hardware/timer.h +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + +/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/utils.h +stdint.h +- + diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/DependInfo.cmake b/arkanoid/build/CMakeFiles/main.elf.dir/DependInfo.cmake new file mode 100644 index 0000000..4aad111 --- /dev/null +++ b/arkanoid/build/CMakeFiles/main.elf.dir/DependInfo.cmake @@ -0,0 +1,107 @@ +# The set of languages for which implicit dependencies are needed: +set(CMAKE_DEPENDS_LANGUAGES + "ASM" + "C" + ) +# The set of files for implicit dependencies of each language: +set(CMAKE_DEPENDS_CHECK_ASM + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/boot2/boot2_w25q080.S" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/crt0.S" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/crt0.S.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/irq_handler_chain.S" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o" + ) +set(CMAKE_ASM_COMPILER_ID "GNU") + +# Preprocessor definitions for this target. +set(CMAKE_TARGET_DEFINITIONS_ASM + "CFG_TUSB_MCU=OPT_MCU_RP2040" + "CFG_TUSB_RHPORT0_MODE=OPT_OS_PICO" + "LIB_PICO_STDIO_USB" + "PICO_ON_DEVICE=1" + ) + +# The include file search paths: +set(CMAKE_ASM_TARGET_INCLUDE_PATH + ) +set(CMAKE_DEPENDS_CHECK_C + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/balls.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/balls.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/fonts.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/fonts.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/main.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/main.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/bootrom.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/bootrom.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/critical_section.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/datetime.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/datetime.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/adc.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/adc.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/claim.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/claim.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/clocks.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/dma.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/dma.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/exception.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/exception.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/flash.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/flash.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/gpio.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/i2c.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/interp.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/interp.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/irq.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/irq.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/pio.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/pio.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/pll.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/pll.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/rtc.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/spi.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/spi.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/sync.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/timer.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/uart.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/uart.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/vreg.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/watchdog.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/xosc.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/lock_core.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/multicore.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/multicore.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/mutex.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pheap.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/pheap.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico4ml/screen.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico_bootsel_via_double_reset.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico_malloc.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/pico_malloc.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/platform.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/queue.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/queue.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/reset_interface.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/reset_interface.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/runtime.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/runtime.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/sem.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/stdio.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_semihosting.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_uart.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/stdio_uart.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/stdio_usb.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb_descriptors.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdlib.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/stdlib.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/time.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/timeout_helper.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/timeout_helper.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_device.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_host.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_rndis_host.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/dcd_rp2040.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/hcd_rp2040.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hub.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh_control.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/rp2040_usb.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_fifo.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd_control.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/unique_id.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/pico/unique_id.c.o" + "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/utils.c" "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/utils.c.o" + ) +set(CMAKE_C_COMPILER_ID "GNU") + +# Preprocessor definitions for this target. +set(CMAKE_TARGET_DEFINITIONS_C + "CFG_TUSB_MCU=OPT_MCU_RP2040" + "CFG_TUSB_RHPORT0_MODE=OPT_OS_PICO" + "LIB_PICO_STDIO_USB" + "PICO_ON_DEVICE=1" + ) + +# The include file search paths: +set(CMAKE_C_TARGET_INCLUDE_PATH + ) + +# Targets to which this target links. +set(CMAKE_TARGET_LINKED_INFO_FILES + ) + +# Fortran module output directory. +set(CMAKE_Fortran_TARGET_MODULE_DIR "") diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/balls.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/balls.c.o new file mode 100644 index 0000000000000000000000000000000000000000..513ba83a8830f0760fd15d4a3de35b5f914217f5 GIT binary patch literal 3724 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 literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/build.make b/arkanoid/build/CMakeFiles/main.elf.dir/build.make new file mode 100644 index 0000000..7e4dba8 --- /dev/null +++ b/arkanoid/build/CMakeFiles/main.elf.dir/build.make @@ -0,0 +1,1021 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Delete rule output on recipe failure. +.DELETE_ON_ERROR: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/amy/projects/uni/comp-sys-ii/arkanoid/task1 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build + +# Include any dependencies generated for this target. +include CMakeFiles/main.elf.dir/depend.make + +# Include the progress variables for this target. +include CMakeFiles/main.elf.dir/progress.make + +# Include the compile flags for this target's objects. +include CMakeFiles/main.elf.dir/flags.make + +CMakeFiles/main.elf.dir/balls.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/balls.c.o: ../balls.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object CMakeFiles/main.elf.dir/balls.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/balls.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/balls.c + +CMakeFiles/main.elf.dir/balls.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/balls.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/balls.c > CMakeFiles/main.elf.dir/balls.c.i + +CMakeFiles/main.elf.dir/balls.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/balls.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/balls.c -o CMakeFiles/main.elf.dir/balls.c.s + +CMakeFiles/main.elf.dir/fonts.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/fonts.c.o: ../fonts.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object CMakeFiles/main.elf.dir/fonts.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/fonts.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/fonts.c + +CMakeFiles/main.elf.dir/fonts.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/fonts.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/fonts.c > CMakeFiles/main.elf.dir/fonts.c.i + +CMakeFiles/main.elf.dir/fonts.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/fonts.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/fonts.c -o CMakeFiles/main.elf.dir/fonts.c.s + +CMakeFiles/main.elf.dir/main.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/main.c.o: ../main.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building C object CMakeFiles/main.elf.dir/main.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/main.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/main.c + +CMakeFiles/main.elf.dir/main.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/main.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/main.c > CMakeFiles/main.elf.dir/main.c.i + +CMakeFiles/main.elf.dir/main.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/main.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/main.c -o CMakeFiles/main.elf.dir/main.c.s + +CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o: ../pico/boot2/boot2_w25q080.S + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building ASM object CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o" + arm-none-eabi-gcc $(ASM_DEFINES) $(ASM_INCLUDES) $(ASM_FLAGS) -o CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/boot2/boot2_w25q080.S + +CMakeFiles/main.elf.dir/pico/bootrom.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/bootrom.c.o: ../pico/bootrom.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Building C object CMakeFiles/main.elf.dir/pico/bootrom.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/bootrom.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/bootrom.c + +CMakeFiles/main.elf.dir/pico/bootrom.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/bootrom.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/bootrom.c > CMakeFiles/main.elf.dir/pico/bootrom.c.i + +CMakeFiles/main.elf.dir/pico/bootrom.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/bootrom.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/bootrom.c -o CMakeFiles/main.elf.dir/pico/bootrom.c.s + +CMakeFiles/main.elf.dir/pico/critical_section.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/critical_section.c.o: ../pico/critical_section.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_6) "Building C object CMakeFiles/main.elf.dir/pico/critical_section.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/critical_section.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.c + +CMakeFiles/main.elf.dir/pico/critical_section.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/critical_section.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.c > CMakeFiles/main.elf.dir/pico/critical_section.c.i + +CMakeFiles/main.elf.dir/pico/critical_section.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/critical_section.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.c -o CMakeFiles/main.elf.dir/pico/critical_section.c.s + +CMakeFiles/main.elf.dir/pico/crt0.S.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/crt0.S.o: ../pico/crt0.S + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_7) "Building ASM object CMakeFiles/main.elf.dir/pico/crt0.S.o" + arm-none-eabi-gcc $(ASM_DEFINES) $(ASM_INCLUDES) $(ASM_FLAGS) -o CMakeFiles/main.elf.dir/pico/crt0.S.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/crt0.S + +CMakeFiles/main.elf.dir/pico/datetime.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/datetime.c.o: ../pico/datetime.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_8) "Building C object CMakeFiles/main.elf.dir/pico/datetime.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/datetime.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/datetime.c + +CMakeFiles/main.elf.dir/pico/datetime.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/datetime.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/datetime.c > CMakeFiles/main.elf.dir/pico/datetime.c.i + +CMakeFiles/main.elf.dir/pico/datetime.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/datetime.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/datetime.c -o CMakeFiles/main.elf.dir/pico/datetime.c.s + +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/hardware/adc.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Building C object CMakeFiles/main.elf.dir/pico/hardware/adc.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/adc.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/adc.c + +CMakeFiles/main.elf.dir/pico/hardware/adc.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/hardware/adc.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/adc.c > CMakeFiles/main.elf.dir/pico/hardware/adc.c.i + +CMakeFiles/main.elf.dir/pico/hardware/adc.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/hardware/adc.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/adc.c -o CMakeFiles/main.elf.dir/pico/hardware/adc.c.s + +CMakeFiles/main.elf.dir/pico/hardware/claim.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/claim.c.o: ../pico/hardware/claim.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_10) "Building C object CMakeFiles/main.elf.dir/pico/hardware/claim.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/claim.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/claim.c + +CMakeFiles/main.elf.dir/pico/hardware/claim.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/hardware/claim.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/claim.c > CMakeFiles/main.elf.dir/pico/hardware/claim.c.i + +CMakeFiles/main.elf.dir/pico/hardware/claim.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/hardware/claim.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/claim.c -o CMakeFiles/main.elf.dir/pico/hardware/claim.c.s + +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/clocks.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_11) "Building C object CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/clocks.c + +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/hardware/clocks.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/clocks.c > CMakeFiles/main.elf.dir/pico/hardware/clocks.c.i + +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/hardware/clocks.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/clocks.c -o CMakeFiles/main.elf.dir/pico/hardware/clocks.c.s + +CMakeFiles/main.elf.dir/pico/hardware/dma.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/dma.c.o: ../pico/hardware/dma.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_12) "Building C object CMakeFiles/main.elf.dir/pico/hardware/dma.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/dma.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/dma.c + +CMakeFiles/main.elf.dir/pico/hardware/dma.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/hardware/dma.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/dma.c > CMakeFiles/main.elf.dir/pico/hardware/dma.c.i + +CMakeFiles/main.elf.dir/pico/hardware/dma.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/hardware/dma.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/dma.c -o CMakeFiles/main.elf.dir/pico/hardware/dma.c.s + +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/hardware/exception.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_13) "Building C object CMakeFiles/main.elf.dir/pico/hardware/exception.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/exception.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/exception.c + +CMakeFiles/main.elf.dir/pico/hardware/exception.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/hardware/exception.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/exception.c > CMakeFiles/main.elf.dir/pico/hardware/exception.c.i + +CMakeFiles/main.elf.dir/pico/hardware/exception.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/hardware/exception.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/exception.c -o CMakeFiles/main.elf.dir/pico/hardware/exception.c.s + +CMakeFiles/main.elf.dir/pico/hardware/flash.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/flash.c.o: ../pico/hardware/flash.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_14) "Building C object CMakeFiles/main.elf.dir/pico/hardware/flash.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/flash.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/flash.c + +CMakeFiles/main.elf.dir/pico/hardware/flash.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/hardware/flash.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/flash.c > CMakeFiles/main.elf.dir/pico/hardware/flash.c.i + +CMakeFiles/main.elf.dir/pico/hardware/flash.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/hardware/flash.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/flash.c -o CMakeFiles/main.elf.dir/pico/hardware/flash.c.s + +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/hardware/gpio.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_15) "Building C object CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/gpio.c + +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/hardware/gpio.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/gpio.c > CMakeFiles/main.elf.dir/pico/hardware/gpio.c.i + +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/hardware/gpio.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/gpio.c -o CMakeFiles/main.elf.dir/pico/hardware/gpio.c.s + +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/hardware/i2c.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_16) "Building C object CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/i2c.c + +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/hardware/i2c.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/i2c.c > CMakeFiles/main.elf.dir/pico/hardware/i2c.c.i + +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/hardware/i2c.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/i2c.c -o CMakeFiles/main.elf.dir/pico/hardware/i2c.c.s + +CMakeFiles/main.elf.dir/pico/hardware/interp.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/interp.c.o: ../pico/hardware/interp.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_17) "Building C object CMakeFiles/main.elf.dir/pico/hardware/interp.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/interp.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/interp.c + +CMakeFiles/main.elf.dir/pico/hardware/interp.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/hardware/interp.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/interp.c > CMakeFiles/main.elf.dir/pico/hardware/interp.c.i + +CMakeFiles/main.elf.dir/pico/hardware/interp.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/hardware/interp.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/interp.c -o CMakeFiles/main.elf.dir/pico/hardware/interp.c.s + +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/hardware/irq.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_18) "Building C object CMakeFiles/main.elf.dir/pico/hardware/irq.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/irq.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/irq.c + +CMakeFiles/main.elf.dir/pico/hardware/irq.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/hardware/irq.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/irq.c > CMakeFiles/main.elf.dir/pico/hardware/irq.c.i + +CMakeFiles/main.elf.dir/pico/hardware/irq.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/hardware/irq.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/irq.c -o CMakeFiles/main.elf.dir/pico/hardware/irq.c.s + +CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o: ../pico/hardware/irq_handler_chain.S + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_19) "Building ASM object CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o" + arm-none-eabi-gcc $(ASM_DEFINES) $(ASM_INCLUDES) $(ASM_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/irq_handler_chain.S + +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/hardware/pio.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_20) "Building C object CMakeFiles/main.elf.dir/pico/hardware/pio.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/pio.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/pio.c + +CMakeFiles/main.elf.dir/pico/hardware/pio.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/hardware/pio.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/pio.c > CMakeFiles/main.elf.dir/pico/hardware/pio.c.i + +CMakeFiles/main.elf.dir/pico/hardware/pio.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/hardware/pio.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/pio.c -o CMakeFiles/main.elf.dir/pico/hardware/pio.c.s + +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/hardware/pll.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_21) "Building C object CMakeFiles/main.elf.dir/pico/hardware/pll.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/pll.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/pll.c + +CMakeFiles/main.elf.dir/pico/hardware/pll.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/hardware/pll.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/pll.c > CMakeFiles/main.elf.dir/pico/hardware/pll.c.i + +CMakeFiles/main.elf.dir/pico/hardware/pll.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/hardware/pll.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/pll.c -o CMakeFiles/main.elf.dir/pico/hardware/pll.c.s + +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/hardware/rtc.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_22) "Building C object CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/rtc.c + +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/hardware/rtc.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/rtc.c > CMakeFiles/main.elf.dir/pico/hardware/rtc.c.i + +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/hardware/rtc.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/rtc.c -o CMakeFiles/main.elf.dir/pico/hardware/rtc.c.s + +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/hardware/spi.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_23) "Building C object CMakeFiles/main.elf.dir/pico/hardware/spi.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/spi.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/spi.c + +CMakeFiles/main.elf.dir/pico/hardware/spi.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/hardware/spi.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/spi.c > CMakeFiles/main.elf.dir/pico/hardware/spi.c.i + +CMakeFiles/main.elf.dir/pico/hardware/spi.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/hardware/spi.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/spi.c -o CMakeFiles/main.elf.dir/pico/hardware/spi.c.s + +CMakeFiles/main.elf.dir/pico/hardware/sync.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/sync.c.o: ../pico/hardware/sync.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_24) "Building C object CMakeFiles/main.elf.dir/pico/hardware/sync.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/sync.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.c + +CMakeFiles/main.elf.dir/pico/hardware/sync.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/hardware/sync.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.c > CMakeFiles/main.elf.dir/pico/hardware/sync.c.i + +CMakeFiles/main.elf.dir/pico/hardware/sync.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/hardware/sync.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.c -o CMakeFiles/main.elf.dir/pico/hardware/sync.c.s + +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/hardware/timer.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_25) "Building C object CMakeFiles/main.elf.dir/pico/hardware/timer.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/timer.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.c + +CMakeFiles/main.elf.dir/pico/hardware/timer.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/hardware/timer.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.c > CMakeFiles/main.elf.dir/pico/hardware/timer.c.i + +CMakeFiles/main.elf.dir/pico/hardware/timer.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/hardware/timer.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.c -o CMakeFiles/main.elf.dir/pico/hardware/timer.c.s + +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/hardware/uart.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_26) "Building C object CMakeFiles/main.elf.dir/pico/hardware/uart.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/uart.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/uart.c + +CMakeFiles/main.elf.dir/pico/hardware/uart.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/hardware/uart.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/uart.c > CMakeFiles/main.elf.dir/pico/hardware/uart.c.i + +CMakeFiles/main.elf.dir/pico/hardware/uart.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/hardware/uart.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/uart.c -o CMakeFiles/main.elf.dir/pico/hardware/uart.c.s + +CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o: ../pico/hardware/vreg.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_27) "Building C object CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/vreg.c + +CMakeFiles/main.elf.dir/pico/hardware/vreg.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/hardware/vreg.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/vreg.c > CMakeFiles/main.elf.dir/pico/hardware/vreg.c.i + +CMakeFiles/main.elf.dir/pico/hardware/vreg.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/hardware/vreg.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/vreg.c -o CMakeFiles/main.elf.dir/pico/hardware/vreg.c.s + +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o: ../pico/hardware/watchdog.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_28) "Building C object CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/watchdog.c + +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/watchdog.c > CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.i + +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/watchdog.c -o CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.s + +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o: ../pico/hardware/xosc.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_29) "Building C object CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/xosc.c + +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/hardware/xosc.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/xosc.c > CMakeFiles/main.elf.dir/pico/hardware/xosc.c.i + +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/hardware/xosc.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/xosc.c -o CMakeFiles/main.elf.dir/pico/hardware/xosc.c.s + +CMakeFiles/main.elf.dir/pico/lock_core.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/lock_core.c.o: ../pico/lock_core.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_30) "Building C object CMakeFiles/main.elf.dir/pico/lock_core.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/lock_core.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.c + +CMakeFiles/main.elf.dir/pico/lock_core.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/lock_core.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.c > CMakeFiles/main.elf.dir/pico/lock_core.c.i + +CMakeFiles/main.elf.dir/pico/lock_core.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/lock_core.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.c -o CMakeFiles/main.elf.dir/pico/lock_core.c.s + +CMakeFiles/main.elf.dir/pico/multicore.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/multicore.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_31) "Building C object CMakeFiles/main.elf.dir/pico/multicore.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/multicore.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/multicore.c + +CMakeFiles/main.elf.dir/pico/multicore.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/multicore.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/multicore.c > CMakeFiles/main.elf.dir/pico/multicore.c.i + +CMakeFiles/main.elf.dir/pico/multicore.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/multicore.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/multicore.c -o CMakeFiles/main.elf.dir/pico/multicore.c.s + +CMakeFiles/main.elf.dir/pico/mutex.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/mutex.c.o: ../pico/mutex.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_32) "Building C object CMakeFiles/main.elf.dir/pico/mutex.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/mutex.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.c + +CMakeFiles/main.elf.dir/pico/mutex.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/mutex.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.c > CMakeFiles/main.elf.dir/pico/mutex.c.i + +CMakeFiles/main.elf.dir/pico/mutex.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/mutex.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.c -o CMakeFiles/main.elf.dir/pico/mutex.c.s + +CMakeFiles/main.elf.dir/pico/pheap.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/pheap.c.o: ../pico/pheap.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_33) "Building C object CMakeFiles/main.elf.dir/pico/pheap.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/pheap.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pheap.c + +CMakeFiles/main.elf.dir/pico/pheap.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/pheap.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pheap.c > CMakeFiles/main.elf.dir/pico/pheap.c.i + +CMakeFiles/main.elf.dir/pico/pheap.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/pheap.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pheap.c -o CMakeFiles/main.elf.dir/pico/pheap.c.s + +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/pico4ml/screen.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_34) "Building C object CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico4ml/screen.c + +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico4ml/screen.c > CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.i + +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico4ml/screen.c -o CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.s + +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/pico_bootsel_via_double_reset.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_35) "Building C object CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico_bootsel_via_double_reset.c + +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico_bootsel_via_double_reset.c > CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.i + +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico_bootsel_via_double_reset.c -o CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.s + +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/pico_malloc.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_36) "Building C object CMakeFiles/main.elf.dir/pico/pico_malloc.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/pico_malloc.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico_malloc.c + +CMakeFiles/main.elf.dir/pico/pico_malloc.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/pico_malloc.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico_malloc.c > CMakeFiles/main.elf.dir/pico/pico_malloc.c.i + +CMakeFiles/main.elf.dir/pico/pico_malloc.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/pico_malloc.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico_malloc.c -o CMakeFiles/main.elf.dir/pico/pico_malloc.c.s + +CMakeFiles/main.elf.dir/pico/platform.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/platform.c.o: ../pico/platform.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_37) "Building C object CMakeFiles/main.elf.dir/pico/platform.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/platform.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.c + +CMakeFiles/main.elf.dir/pico/platform.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/platform.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.c > CMakeFiles/main.elf.dir/pico/platform.c.i + +CMakeFiles/main.elf.dir/pico/platform.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/platform.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.c -o CMakeFiles/main.elf.dir/pico/platform.c.s + +CMakeFiles/main.elf.dir/pico/queue.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/queue.c.o: ../pico/queue.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_38) "Building C object CMakeFiles/main.elf.dir/pico/queue.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/queue.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/queue.c + +CMakeFiles/main.elf.dir/pico/queue.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/queue.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/queue.c > CMakeFiles/main.elf.dir/pico/queue.c.i + +CMakeFiles/main.elf.dir/pico/queue.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/queue.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/queue.c -o CMakeFiles/main.elf.dir/pico/queue.c.s + +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/reset_interface.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_39) "Building C object CMakeFiles/main.elf.dir/pico/reset_interface.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/reset_interface.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/reset_interface.c + +CMakeFiles/main.elf.dir/pico/reset_interface.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/reset_interface.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/reset_interface.c > CMakeFiles/main.elf.dir/pico/reset_interface.c.i + +CMakeFiles/main.elf.dir/pico/reset_interface.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/reset_interface.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/reset_interface.c -o CMakeFiles/main.elf.dir/pico/reset_interface.c.s + +CMakeFiles/main.elf.dir/pico/runtime.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/runtime.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_40) "Building C object CMakeFiles/main.elf.dir/pico/runtime.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/runtime.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/runtime.c + +CMakeFiles/main.elf.dir/pico/runtime.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/runtime.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/runtime.c > CMakeFiles/main.elf.dir/pico/runtime.c.i + +CMakeFiles/main.elf.dir/pico/runtime.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/runtime.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/runtime.c -o CMakeFiles/main.elf.dir/pico/runtime.c.s + +CMakeFiles/main.elf.dir/pico/sem.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/sem.c.o: ../pico/sem.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_41) "Building C object CMakeFiles/main.elf.dir/pico/sem.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/sem.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.c + +CMakeFiles/main.elf.dir/pico/sem.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/sem.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.c > CMakeFiles/main.elf.dir/pico/sem.c.i + +CMakeFiles/main.elf.dir/pico/sem.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/sem.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.c -o CMakeFiles/main.elf.dir/pico/sem.c.s + +CMakeFiles/main.elf.dir/pico/stdio.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/stdio.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_42) "Building C object CMakeFiles/main.elf.dir/pico/stdio.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/stdio.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio.c + +CMakeFiles/main.elf.dir/pico/stdio.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/stdio.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio.c > CMakeFiles/main.elf.dir/pico/stdio.c.i + +CMakeFiles/main.elf.dir/pico/stdio.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/stdio.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio.c -o CMakeFiles/main.elf.dir/pico/stdio.c.s + +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o: ../pico/stdio_semihosting.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_43) "Building C object CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_semihosting.c + +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_semihosting.c > CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.i + +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_semihosting.c -o CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.s + +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/stdio_uart.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_44) "Building C object CMakeFiles/main.elf.dir/pico/stdio_uart.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/stdio_uart.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_uart.c + +CMakeFiles/main.elf.dir/pico/stdio_uart.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/stdio_uart.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_uart.c > CMakeFiles/main.elf.dir/pico/stdio_uart.c.i + +CMakeFiles/main.elf.dir/pico/stdio_uart.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/stdio_uart.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_uart.c -o CMakeFiles/main.elf.dir/pico/stdio_uart.c.s + +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/stdio_usb.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_45) "Building C object CMakeFiles/main.elf.dir/pico/stdio_usb.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/stdio_usb.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.c + +CMakeFiles/main.elf.dir/pico/stdio_usb.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/stdio_usb.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.c > CMakeFiles/main.elf.dir/pico/stdio_usb.c.i + +CMakeFiles/main.elf.dir/pico/stdio_usb.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/stdio_usb.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.c -o CMakeFiles/main.elf.dir/pico/stdio_usb.c.s + +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/stdio_usb_descriptors.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_46) "Building C object CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb_descriptors.c + +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb_descriptors.c > CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.i + +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb_descriptors.c -o CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.s + +CMakeFiles/main.elf.dir/pico/stdlib.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/stdlib.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_47) "Building C object CMakeFiles/main.elf.dir/pico/stdlib.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/stdlib.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdlib.c + +CMakeFiles/main.elf.dir/pico/stdlib.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/stdlib.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdlib.c > CMakeFiles/main.elf.dir/pico/stdlib.c.i + +CMakeFiles/main.elf.dir/pico/stdlib.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/stdlib.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdlib.c -o CMakeFiles/main.elf.dir/pico/stdlib.c.s + +CMakeFiles/main.elf.dir/pico/time.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/time.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_48) "Building C object CMakeFiles/main.elf.dir/pico/time.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/time.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.c + +CMakeFiles/main.elf.dir/pico/time.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/time.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.c > CMakeFiles/main.elf.dir/pico/time.c.i + +CMakeFiles/main.elf.dir/pico/time.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/time.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.c -o CMakeFiles/main.elf.dir/pico/time.c.s + +CMakeFiles/main.elf.dir/pico/timeout_helper.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/timeout_helper.c.o: ../pico/timeout_helper.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_49) "Building C object CMakeFiles/main.elf.dir/pico/timeout_helper.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/timeout_helper.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/timeout_helper.c + +CMakeFiles/main.elf.dir/pico/timeout_helper.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/timeout_helper.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/timeout_helper.c > CMakeFiles/main.elf.dir/pico/timeout_helper.c.i + +CMakeFiles/main.elf.dir/pico/timeout_helper.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/timeout_helper.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/timeout_helper.c -o CMakeFiles/main.elf.dir/pico/timeout_helper.c.s + +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/cdc/cdc_device.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_50) "Building C object CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_device.c + +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_device.c > CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.i + +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_device.c -o CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.s + +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/cdc/cdc_host.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_51) "Building C object CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_host.c + +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_host.c > CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.i + +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_host.c -o CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.s + +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/cdc/cdc_rndis_host.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_52) "Building C object CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_rndis_host.c + +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_rndis_host.c > CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.i + +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_rndis_host.c -o CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.s + +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/tinyusb/dcd_rp2040.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_53) "Building C object CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/dcd_rp2040.c + +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/dcd_rp2040.c > CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.i + +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/dcd_rp2040.c -o CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.s + +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/tinyusb/hcd_rp2040.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_54) "Building C object CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/hcd_rp2040.c + +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/hcd_rp2040.c > CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.i + +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/hcd_rp2040.c -o CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.s + +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/host/hub.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_55) "Building C object CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hub.c + +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hub.c > CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.i + +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hub.c -o CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.s + +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/host/usbh.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_56) "Building C object CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh.c + +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh.c > CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.i + +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh.c -o CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.s + +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/host/usbh_control.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_57) "Building C object CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh_control.c + +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh_control.c > CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.i + +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh_control.c -o CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.s + +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/tinyusb/rp2040_usb.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_58) "Building C object CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/rp2040_usb.c + +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/rp2040_usb.c > CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.i + +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/rp2040_usb.c -o CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.s + +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/tusb.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_59) "Building C object CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb.c + +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb.c > CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.i + +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb.c -o CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.s + +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/tinyusb/tusb_fifo.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_60) "Building C object CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_fifo.c + +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_fifo.c > CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.i + +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_fifo.c -o CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.s + +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/usbd.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_61) "Building C object CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd.c + +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd.c > CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.i + +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd.c -o CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.s + +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/usbd_control.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_62) "Building C object CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd_control.c + +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd_control.c > CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.i + +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd_control.c -o CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.s + +CMakeFiles/main.elf.dir/pico/unique_id.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/pico/unique_id.c.o: ../pico/unique_id.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_63) "Building C object CMakeFiles/main.elf.dir/pico/unique_id.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/pico/unique_id.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/unique_id.c + +CMakeFiles/main.elf.dir/pico/unique_id.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/pico/unique_id.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/unique_id.c > CMakeFiles/main.elf.dir/pico/unique_id.c.i + +CMakeFiles/main.elf.dir/pico/unique_id.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/pico/unique_id.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/unique_id.c -o CMakeFiles/main.elf.dir/pico/unique_id.c.s + +CMakeFiles/main.elf.dir/utils.c.o: CMakeFiles/main.elf.dir/flags.make +CMakeFiles/main.elf.dir/utils.c.o: ../utils.c + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_64) "Building C object CMakeFiles/main.elf.dir/utils.c.o" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles/main.elf.dir/utils.c.o -c /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/utils.c + +CMakeFiles/main.elf.dir/utils.c.i: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/main.elf.dir/utils.c.i" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/utils.c > CMakeFiles/main.elf.dir/utils.c.i + +CMakeFiles/main.elf.dir/utils.c.s: cmake_force + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/main.elf.dir/utils.c.s" + arm-none-eabi-gcc $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/utils.c -o CMakeFiles/main.elf.dir/utils.c.s + +# Object files for target main.elf +main_elf_OBJECTS = \ +"CMakeFiles/main.elf.dir/balls.c.o" \ +"CMakeFiles/main.elf.dir/fonts.c.o" \ +"CMakeFiles/main.elf.dir/main.c.o" \ +"CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o" \ +"CMakeFiles/main.elf.dir/pico/bootrom.c.o" \ +"CMakeFiles/main.elf.dir/pico/critical_section.c.o" \ +"CMakeFiles/main.elf.dir/pico/crt0.S.o" \ +"CMakeFiles/main.elf.dir/pico/datetime.c.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/adc.c.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/claim.c.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/dma.c.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/exception.c.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/flash.c.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/interp.c.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/irq.c.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/pio.c.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/pll.c.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/spi.c.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/sync.c.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/timer.c.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/uart.c.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o" \ +"CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o" \ +"CMakeFiles/main.elf.dir/pico/lock_core.c.o" \ +"CMakeFiles/main.elf.dir/pico/multicore.c.o" \ +"CMakeFiles/main.elf.dir/pico/mutex.c.o" \ +"CMakeFiles/main.elf.dir/pico/pheap.c.o" \ +"CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o" \ +"CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o" \ +"CMakeFiles/main.elf.dir/pico/pico_malloc.c.o" \ +"CMakeFiles/main.elf.dir/pico/platform.c.o" \ +"CMakeFiles/main.elf.dir/pico/queue.c.o" \ +"CMakeFiles/main.elf.dir/pico/reset_interface.c.o" \ +"CMakeFiles/main.elf.dir/pico/runtime.c.o" \ +"CMakeFiles/main.elf.dir/pico/sem.c.o" \ +"CMakeFiles/main.elf.dir/pico/stdio.c.o" \ +"CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o" \ +"CMakeFiles/main.elf.dir/pico/stdio_uart.c.o" \ +"CMakeFiles/main.elf.dir/pico/stdio_usb.c.o" \ +"CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o" \ +"CMakeFiles/main.elf.dir/pico/stdlib.c.o" \ +"CMakeFiles/main.elf.dir/pico/time.c.o" \ +"CMakeFiles/main.elf.dir/pico/timeout_helper.c.o" \ +"CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o" \ +"CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o" \ +"CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o" \ +"CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o" \ +"CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o" \ +"CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o" \ +"CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o" \ +"CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o" \ +"CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o" \ +"CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o" \ +"CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o" \ +"CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o" \ +"CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o" \ +"CMakeFiles/main.elf.dir/pico/unique_id.c.o" \ +"CMakeFiles/main.elf.dir/utils.c.o" + +# External object files for target main.elf +main_elf_EXTERNAL_OBJECTS = + +../main.elf: CMakeFiles/main.elf.dir/balls.c.o +../main.elf: CMakeFiles/main.elf.dir/fonts.c.o +../main.elf: CMakeFiles/main.elf.dir/main.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o +../main.elf: CMakeFiles/main.elf.dir/pico/bootrom.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/critical_section.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/crt0.S.o +../main.elf: CMakeFiles/main.elf.dir/pico/datetime.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/adc.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/claim.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/dma.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/exception.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/flash.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/interp.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/irq.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/pio.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/pll.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/spi.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/sync.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/timer.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/uart.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/lock_core.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/multicore.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/mutex.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/pheap.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/pico_malloc.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/platform.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/queue.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/reset_interface.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/runtime.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/sem.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/stdio.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/stdio_uart.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/stdio_usb.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/stdlib.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/time.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/timeout_helper.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o +../main.elf: CMakeFiles/main.elf.dir/pico/unique_id.c.o +../main.elf: CMakeFiles/main.elf.dir/utils.c.o +../main.elf: CMakeFiles/main.elf.dir/build.make +../main.elf: CMakeFiles/main.elf.dir/link.txt + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_65) "Linking C executable ../main.elf" + $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/main.elf.dir/link.txt --verbose=$(VERBOSE) + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold "Converting main.elf to flashable main.uf2..." + cd /home/amy/projects/uni/comp-sys-ii/arkanoid/task1 && /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/elf2uf2 /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/main.elf main.uf2 + +# Rule to build all files generated by this target. +CMakeFiles/main.elf.dir/build: ../main.elf + +.PHONY : CMakeFiles/main.elf.dir/build + +CMakeFiles/main.elf.dir/clean: + $(CMAKE_COMMAND) -P CMakeFiles/main.elf.dir/cmake_clean.cmake +.PHONY : CMakeFiles/main.elf.dir/clean + +CMakeFiles/main.elf.dir/depend: + cd /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /home/amy/projects/uni/comp-sys-ii/arkanoid/task1 /home/amy/projects/uni/comp-sys-ii/arkanoid/task1 /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/main.elf.dir/DependInfo.cmake --color=$(COLOR) +.PHONY : CMakeFiles/main.elf.dir/depend + diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/cmake_clean.cmake b/arkanoid/build/CMakeFiles/main.elf.dir/cmake_clean.cmake new file mode 100644 index 0000000..8ef4fd6 --- /dev/null +++ b/arkanoid/build/CMakeFiles/main.elf.dir/cmake_clean.cmake @@ -0,0 +1,73 @@ +file(REMOVE_RECURSE + "../main.elf" + "../main.elf.pdb" + "CMakeFiles/main.elf.dir/balls.c.o" + "CMakeFiles/main.elf.dir/fonts.c.o" + "CMakeFiles/main.elf.dir/main.c.o" + "CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o" + "CMakeFiles/main.elf.dir/pico/bootrom.c.o" + "CMakeFiles/main.elf.dir/pico/critical_section.c.o" + "CMakeFiles/main.elf.dir/pico/crt0.S.o" + "CMakeFiles/main.elf.dir/pico/datetime.c.o" + "CMakeFiles/main.elf.dir/pico/hardware/adc.c.o" + "CMakeFiles/main.elf.dir/pico/hardware/claim.c.o" + "CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o" + "CMakeFiles/main.elf.dir/pico/hardware/dma.c.o" + "CMakeFiles/main.elf.dir/pico/hardware/exception.c.o" + "CMakeFiles/main.elf.dir/pico/hardware/flash.c.o" + "CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o" + "CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o" + "CMakeFiles/main.elf.dir/pico/hardware/interp.c.o" + "CMakeFiles/main.elf.dir/pico/hardware/irq.c.o" + "CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o" + "CMakeFiles/main.elf.dir/pico/hardware/pio.c.o" + "CMakeFiles/main.elf.dir/pico/hardware/pll.c.o" + "CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o" + "CMakeFiles/main.elf.dir/pico/hardware/spi.c.o" + "CMakeFiles/main.elf.dir/pico/hardware/sync.c.o" + "CMakeFiles/main.elf.dir/pico/hardware/timer.c.o" + "CMakeFiles/main.elf.dir/pico/hardware/uart.c.o" + "CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o" + "CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o" + "CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o" + "CMakeFiles/main.elf.dir/pico/lock_core.c.o" + "CMakeFiles/main.elf.dir/pico/multicore.c.o" + "CMakeFiles/main.elf.dir/pico/mutex.c.o" + "CMakeFiles/main.elf.dir/pico/pheap.c.o" + "CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o" + "CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o" + "CMakeFiles/main.elf.dir/pico/pico_malloc.c.o" + "CMakeFiles/main.elf.dir/pico/platform.c.o" + "CMakeFiles/main.elf.dir/pico/queue.c.o" + "CMakeFiles/main.elf.dir/pico/reset_interface.c.o" + "CMakeFiles/main.elf.dir/pico/runtime.c.o" + "CMakeFiles/main.elf.dir/pico/sem.c.o" + "CMakeFiles/main.elf.dir/pico/stdio.c.o" + "CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o" + "CMakeFiles/main.elf.dir/pico/stdio_uart.c.o" + "CMakeFiles/main.elf.dir/pico/stdio_usb.c.o" + "CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o" + "CMakeFiles/main.elf.dir/pico/stdlib.c.o" + "CMakeFiles/main.elf.dir/pico/time.c.o" + "CMakeFiles/main.elf.dir/pico/timeout_helper.c.o" + "CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o" + "CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o" + "CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o" + "CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o" + "CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o" + "CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o" + "CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o" + "CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o" + "CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o" + "CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o" + "CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o" + "CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o" + "CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o" + "CMakeFiles/main.elf.dir/pico/unique_id.c.o" + "CMakeFiles/main.elf.dir/utils.c.o" +) + +# Per-language clean rules from dependency scanning. +foreach(lang ASM C) + include(CMakeFiles/main.elf.dir/cmake_clean_${lang}.cmake OPTIONAL) +endforeach() diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/depend.internal b/arkanoid/build/CMakeFiles/main.elf.dir/depend.internal new file mode 100644 index 0000000..d7695de --- /dev/null +++ b/arkanoid/build/CMakeFiles/main.elf.dir/depend.internal @@ -0,0 +1,1756 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/boot2/boot2_w25q080.S + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/boot2/helpers/asm_helper.S + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/boot2/helpers/exit_from_boot2.S + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/boot2/helpers/read_flash_sreg.S + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/boot2/helpers/wait_ssi_ready.S + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/m0plus.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/pads_qspi.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/ssi.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/crt0.S.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/crt0.S + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/m0plus.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/irq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/irq_handler_chain.S + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/intctrl.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/m0plus.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/balls.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/balls.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/balls.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/gpio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/dreq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/pads_bank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/spi.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/spi.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/interp.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/padsbank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/spi.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico4ml/screen.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_semihosting.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdlib.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/utils.h +CMakeFiles/main.elf.dir/fonts.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/fonts.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/fonts.h +CMakeFiles/main.elf.dir/main.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/balls.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/fonts.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/levels.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/main.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/gpio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/dreq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/pads_bank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/spi.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/spi.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/interp.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/padsbank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/spi.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico4ml/screen.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_semihosting.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdlib.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/utils.h +CMakeFiles/main.elf.dir/pico/bootrom.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/bootrom.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/bootrom.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/critical_section.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h +CMakeFiles/main.elf.dir/pico/datetime.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/datetime.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/datetime.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/adc.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/adc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/gpio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/adc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/pads_bank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/adc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/interp.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/padsbank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/claim.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/claim.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/claim.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/clocks.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/gpio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/irq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/pll.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/intctrl.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/m0plus.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/pads_bank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/pll.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/watchdog.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/xosc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/interp.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/padsbank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/pll.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/watchdog.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/xosc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/watchdog.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/xosc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/dma.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/claim.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/dma.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/dma.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/dma.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/dreq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/dma.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/exception.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/exception.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/m0plus.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/scb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h +CMakeFiles/main.elf.dir/pico/hardware/flash.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/bootrom.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/flash.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/flash.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/io_qspi.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/ssi.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/ioqspi.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/ssi.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/binary_info.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/code.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/gpio.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/gpio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/irq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/intctrl.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/io_bank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/m0plus.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/pads_bank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/interp.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/iobank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/padsbank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/structure.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/i2c.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/i2c.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/dreq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/i2c.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/i2c.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/timeout_helper.h +CMakeFiles/main.elf.dir/pico/hardware/interp.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/claim.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/interp.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/interp.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/interp.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/irq.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/irq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/intctrl.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/m0plus.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/scb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/claim.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/gpio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/pio.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/pio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/pio_instructions.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/dreq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/pads_bank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/pio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/interp.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/padsbank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/pio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/pll.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/pll.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/pll.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/pll.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/irq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/intctrl.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/m0plus.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/rtc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/rtc.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/rtc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/rtc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/dreq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/spi.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/spi.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/spi.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/spi.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h +CMakeFiles/main.elf.dir/pico/hardware/sync.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/claim.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/claim.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/irq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/intctrl.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/m0plus.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/dreq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/uart.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/vreg_and_chip_reset.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/vreg_and_chip_reset.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/vreg.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/vreg.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/psm.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/watchdog.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/psm.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/watchdog.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/watchdog.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/watchdog.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/xosc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/xosc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/xosc.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/xosc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/lock_core.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h +CMakeFiles/main.elf.dir/pico/multicore.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/claim.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/irq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/intctrl.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/m0plus.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/psm.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/interp.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/scb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/multicore.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/multicore.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/runtime.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h +CMakeFiles/main.elf.dir/pico/mutex.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h +CMakeFiles/main.elf.dir/pico/pheap.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pheap.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pheap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/gpio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/dreq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/pads_bank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/spi.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/spi.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/interp.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/padsbank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/spi.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico4ml/screen.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico4ml/screen.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_semihosting.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdlib.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/binary_info.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/bootrom.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/code.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico_bootsel_via_double_reset.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/structure.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/malloc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico_malloc.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h +CMakeFiles/main.elf.dir/pico/platform.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sysinfo.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/tbman.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h +CMakeFiles/main.elf.dir/pico/queue.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/queue.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/queue.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/bootrom.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/watchdog.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/watchdog.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/watchdog.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/reset_interface.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/reset_interface.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_device.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_host.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd_attr.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_freertos.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_mynewt.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_none.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_rtthread.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_common.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_compiler.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_fifo.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_option.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_timeout.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_verify.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd_pvt.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/usb_reset_interface.h +CMakeFiles/main.elf.dir/pico/runtime.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/bootrom.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/irq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/intctrl.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/m0plus.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/pads_bank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/mpu.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/padsbank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/scb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/runtime.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h +CMakeFiles/main.elf.dir/pico/sem.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h +CMakeFiles/main.elf.dir/pico/stdio.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/driver.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/dreq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_semihosting.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/binary_info.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/code.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/driver.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_semihosting.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_semihosting.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/structure.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/binary_info.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/code.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/driver.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/gpio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/dreq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/pads_bank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/interp.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/padsbank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_uart.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/structure.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/binary_info.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/code.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/driver.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/irq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/intctrl.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/m0plus.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/structure.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_device.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_host.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd_attr.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_freertos.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_mynewt.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_none.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_rtthread.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_common.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_compiler.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_fifo.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_option.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_timeout.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_verify.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/reset_interface.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb_descriptors.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_device.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_host.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd_attr.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_freertos.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_mynewt.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_none.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_rtthread.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_common.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_compiler.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_fifo.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_option.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_timeout.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_verify.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/unique_id.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/usb_reset_interface.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/binary_info.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/code.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/gpio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/pll.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/dreq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/pads_bank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/pll.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/clocks.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/interp.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/padsbank0.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/pll.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_semihosting.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_uart.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdlib.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdlib.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/structure.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h +CMakeFiles/main.elf.dir/pico/time.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pheap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h +CMakeFiles/main.elf.dir/pico/timeout_helper.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/timeout_helper.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/timeout_helper.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_device.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_device.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_freertos.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_mynewt.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_none.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_rtthread.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_common.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_compiler.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_fifo.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_option.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_timeout.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_verify.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd_pvt.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_host.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_host.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd_attr.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh_classdriver.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_freertos.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_mynewt.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_none.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_rtthread.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_common.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_compiler.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_fifo.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_option.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_timeout.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_verify.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_host.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_rndis.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_rndis_host.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_rndis_host.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd_attr.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_freertos.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_mynewt.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_none.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_rtthread.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_common.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_compiler.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_fifo.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_option.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_timeout.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_verify.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/irq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/intctrl.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/m0plus.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/dcd.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/dcd_attr.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/dcd_rp2040.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_freertos.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_mynewt.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_none.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_rtthread.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/rp2040_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_common.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_compiler.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_fifo.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_option.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_timeout.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_verify.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/irq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/intctrl.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/m0plus.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/hcd_rp2040.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_freertos.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_mynewt.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_none.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_rtthread.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/rp2040_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_common.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_compiler.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_fifo.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_option.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_timeout.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_verify.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd_attr.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hub.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hub.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh_classdriver.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_freertos.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_mynewt.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_none.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_rtthread.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_common.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_compiler.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_fifo.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_option.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_timeout.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_verify.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_device.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_host.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd_attr.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hub.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh_classdriver.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_freertos.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_mynewt.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_none.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_rtthread.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_common.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_compiler.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_fifo.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_option.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_timeout.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_verify.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_device.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_host.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd_attr.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh_classdriver.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh_control.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_freertos.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_mynewt.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_none.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_rtthread.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_common.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_compiler.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_fifo.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_option.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_timeout.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_verify.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/irq.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/intctrl.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/m0plus.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/resets.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/rp2040_usb.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/rp2040_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_common.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_compiler.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_option.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_timeout.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_verify.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_device.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_host.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd_attr.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_freertos.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_mynewt.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_none.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_rtthread.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_common.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_compiler.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_fifo.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_option.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_timeout.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_verify.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd_pvt.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_freertos.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_mynewt.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_none.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_rtthread.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_common.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_compiler.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_fifo.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_fifo.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_option.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_timeout.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_verify.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_device.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_host.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/dcd.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/dcd_attr.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd_attr.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_freertos.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_mynewt.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_none.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_rtthread.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_common.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_compiler.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_fifo.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_option.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_timeout.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_verify.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd_pvt.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/critical_section.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/address_mapped.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/addressmap.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/sio.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/regs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/structs/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/sync.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/timer.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/lock_core.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/mutex.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/sem.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/stdio_usb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/time.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_device.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/cdc/cdc_host.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/dcd.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/dcd_attr.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/hcd_attr.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/host/usbh.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_freertos.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_mynewt.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_none.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/osal_rtthread.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_common.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_compiler.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_fifo.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_option.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_timeout.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/tusb_verify.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd_control.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/tinyusb/usbd_pvt.h +CMakeFiles/main.elf.dir/pico/unique_id.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/flash.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/hardware/platform_defs.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/assert.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/config.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/error.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/types.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/junk/version.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/pico.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/platform.h + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/unique_id.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/unique_id.h +CMakeFiles/main.elf.dir/utils.c.o + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/utils.c + /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/utils.h diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/depend.make b/arkanoid/build/CMakeFiles/main.elf.dir/depend.make new file mode 100644 index 0000000..572d79c --- /dev/null +++ b/arkanoid/build/CMakeFiles/main.elf.dir/depend.make @@ -0,0 +1,1756 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o: ../pico/boot2/boot2_w25q080.S +CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o: ../pico/boot2/helpers/asm_helper.S +CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o: ../pico/boot2/helpers/exit_from_boot2.S +CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o: ../pico/boot2/helpers/read_flash_sreg.S +CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o: ../pico/boot2/helpers/wait_ssi_ready.S +CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o: ../pico/hardware/regs/m0plus.h +CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o: ../pico/hardware/regs/pads_qspi.h +CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o: ../pico/hardware/regs/ssi.h +CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/crt0.S.o: ../pico/crt0.S +CMakeFiles/main.elf.dir/pico/crt0.S.o: ../pico/defs.h +CMakeFiles/main.elf.dir/pico/crt0.S.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/crt0.S.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/crt0.S.o: ../pico/hardware/regs/m0plus.h +CMakeFiles/main.elf.dir/pico/crt0.S.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/crt0.S.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/crt0.S.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/crt0.S.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/crt0.S.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/crt0.S.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/crt0.S.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/crt0.S.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o: ../pico/hardware/irq.h +CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o: ../pico/hardware/irq_handler_chain.S +CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o: ../pico/hardware/regs/intctrl.h +CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o: ../pico/hardware/regs/m0plus.h +CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/balls.c.o: ../balls.c +CMakeFiles/main.elf.dir/balls.c.o: ../balls.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/hardware/gpio.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/hardware/regs/dreq.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/hardware/regs/pads_bank0.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/hardware/regs/spi.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/hardware/regs/uart.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/hardware/spi.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/hardware/structs/interp.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/hardware/structs/padsbank0.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/hardware/structs/sio.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/hardware/structs/spi.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/hardware/structs/uart.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/hardware/uart.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/pico4ml/screen.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/stdio_semihosting.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/stdio_uart.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/stdlib.h +CMakeFiles/main.elf.dir/balls.c.o: ../pico/time.h +CMakeFiles/main.elf.dir/balls.c.o: ../utils.h + +CMakeFiles/main.elf.dir/fonts.c.o: ../fonts.c +CMakeFiles/main.elf.dir/fonts.c.o: ../fonts.h + +CMakeFiles/main.elf.dir/main.c.o: ../balls.h +CMakeFiles/main.elf.dir/main.c.o: ../fonts.h +CMakeFiles/main.elf.dir/main.c.o: ../levels.h +CMakeFiles/main.elf.dir/main.c.o: ../main.c +CMakeFiles/main.elf.dir/main.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/hardware/gpio.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/hardware/regs/dreq.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/hardware/regs/pads_bank0.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/hardware/regs/spi.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/hardware/regs/uart.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/hardware/spi.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/hardware/structs/interp.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/hardware/structs/padsbank0.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/hardware/structs/sio.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/hardware/structs/spi.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/hardware/structs/uart.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/hardware/uart.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/pico4ml/screen.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/stdio_semihosting.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/stdio_uart.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/stdlib.h +CMakeFiles/main.elf.dir/main.c.o: ../pico/time.h +CMakeFiles/main.elf.dir/main.c.o: ../utils.h + +CMakeFiles/main.elf.dir/pico/bootrom.c.o: ../pico/bootrom.c +CMakeFiles/main.elf.dir/pico/bootrom.c.o: ../pico/bootrom.h +CMakeFiles/main.elf.dir/pico/bootrom.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/bootrom.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/bootrom.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/bootrom.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/bootrom.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/bootrom.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/bootrom.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/bootrom.c.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/critical_section.c.o: ../pico/critical_section.c +CMakeFiles/main.elf.dir/pico/critical_section.c.o: ../pico/critical_section.h +CMakeFiles/main.elf.dir/pico/critical_section.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/critical_section.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/critical_section.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/critical_section.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/critical_section.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/critical_section.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/critical_section.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/critical_section.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/critical_section.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/critical_section.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/critical_section.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/critical_section.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/critical_section.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/critical_section.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/critical_section.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/critical_section.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/critical_section.c.o: ../pico/time.h + +CMakeFiles/main.elf.dir/pico/datetime.c.o: ../pico/datetime.c +CMakeFiles/main.elf.dir/pico/datetime.c.o: ../pico/datetime.h +CMakeFiles/main.elf.dir/pico/datetime.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/datetime.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/datetime.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/datetime.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/datetime.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/datetime.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/datetime.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/datetime.c.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/hardware/adc.c +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/hardware/adc.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/hardware/gpio.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/hardware/regs/adc.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/hardware/regs/pads_bank0.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/hardware/regs/resets.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/hardware/resets.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/hardware/structs/adc.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/hardware/structs/interp.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/hardware/structs/padsbank0.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/hardware/structs/resets.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/hardware/structs/sio.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/adc.c.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/hardware/claim.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/claim.c.o: ../pico/hardware/claim.c +CMakeFiles/main.elf.dir/pico/hardware/claim.c.o: ../pico/hardware/claim.h +CMakeFiles/main.elf.dir/pico/hardware/claim.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/claim.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/claim.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/hardware/claim.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/hardware/claim.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/hardware/claim.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/claim.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/claim.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/claim.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/claim.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/claim.c.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/clocks.c +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/gpio.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/irq.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/pll.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/regs/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/regs/intctrl.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/regs/m0plus.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/regs/pads_bank0.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/regs/pll.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/regs/watchdog.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/regs/xosc.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/structs/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/structs/interp.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/structs/padsbank0.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/structs/pll.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/structs/sio.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/structs/watchdog.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/structs/xosc.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/watchdog.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/hardware/xosc.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/hardware/dma.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/dma.c.o: ../pico/hardware/claim.h +CMakeFiles/main.elf.dir/pico/hardware/dma.c.o: ../pico/hardware/dma.c +CMakeFiles/main.elf.dir/pico/hardware/dma.c.o: ../pico/hardware/dma.h +CMakeFiles/main.elf.dir/pico/hardware/dma.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/dma.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/dma.c.o: ../pico/hardware/regs/dma.h +CMakeFiles/main.elf.dir/pico/hardware/dma.c.o: ../pico/hardware/regs/dreq.h +CMakeFiles/main.elf.dir/pico/hardware/dma.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/hardware/dma.c.o: ../pico/hardware/structs/dma.h +CMakeFiles/main.elf.dir/pico/hardware/dma.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/hardware/dma.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/dma.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/dma.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/dma.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/dma.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/dma.c.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/hardware/exception.c +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/hardware/exception.h +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/hardware/regs/m0plus.h +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/hardware/structs/scb.h +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/exception.c.o: ../pico/time.h + +CMakeFiles/main.elf.dir/pico/hardware/flash.c.o: ../pico/bootrom.h +CMakeFiles/main.elf.dir/pico/hardware/flash.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/flash.c.o: ../pico/hardware/flash.c +CMakeFiles/main.elf.dir/pico/hardware/flash.c.o: ../pico/hardware/flash.h +CMakeFiles/main.elf.dir/pico/hardware/flash.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/flash.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/flash.c.o: ../pico/hardware/regs/io_qspi.h +CMakeFiles/main.elf.dir/pico/hardware/flash.c.o: ../pico/hardware/regs/ssi.h +CMakeFiles/main.elf.dir/pico/hardware/flash.c.o: ../pico/hardware/structs/ioqspi.h +CMakeFiles/main.elf.dir/pico/hardware/flash.c.o: ../pico/hardware/structs/ssi.h +CMakeFiles/main.elf.dir/pico/hardware/flash.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/hardware/flash.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/flash.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/flash.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/flash.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/flash.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/flash.c.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/binary_info.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/code.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/defs.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/hardware/gpio.c +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/hardware/gpio.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/hardware/irq.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/hardware/regs/intctrl.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/hardware/regs/io_bank0.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/hardware/regs/m0plus.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/hardware/regs/pads_bank0.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/hardware/structs/interp.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/hardware/structs/iobank0.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/hardware/structs/padsbank0.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/hardware/structs/sio.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o: ../pico/structure.h + +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/hardware/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/hardware/i2c.c +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/hardware/i2c.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/hardware/regs/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/hardware/regs/dreq.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/hardware/regs/i2c.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/hardware/regs/resets.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/hardware/resets.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/hardware/structs/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/hardware/structs/i2c.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/hardware/structs/resets.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/time.h +CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o: ../pico/timeout_helper.h + +CMakeFiles/main.elf.dir/pico/hardware/interp.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/interp.c.o: ../pico/hardware/claim.h +CMakeFiles/main.elf.dir/pico/hardware/interp.c.o: ../pico/hardware/interp.c +CMakeFiles/main.elf.dir/pico/hardware/interp.c.o: ../pico/hardware/interp.h +CMakeFiles/main.elf.dir/pico/hardware/interp.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/interp.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/interp.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/hardware/interp.c.o: ../pico/hardware/structs/interp.h +CMakeFiles/main.elf.dir/pico/hardware/interp.c.o: ../pico/hardware/structs/sio.h +CMakeFiles/main.elf.dir/pico/hardware/interp.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/hardware/interp.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/hardware/interp.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/interp.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/interp.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/interp.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/interp.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/interp.c.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/hardware/irq.c +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/hardware/irq.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/hardware/regs/intctrl.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/hardware/regs/m0plus.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/hardware/structs/scb.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/irq.c.o: ../pico/time.h + +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/hardware/claim.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/hardware/gpio.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/hardware/pio.c +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/hardware/pio.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/hardware/pio_instructions.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/hardware/regs/dreq.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/hardware/regs/pads_bank0.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/hardware/regs/pio.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/hardware/structs/interp.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/hardware/structs/padsbank0.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/hardware/structs/pio.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/hardware/structs/sio.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/pio.c.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/hardware/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/hardware/pll.c +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/hardware/pll.h +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/hardware/regs/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/hardware/regs/pll.h +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/hardware/regs/resets.h +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/hardware/resets.h +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/hardware/structs/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/hardware/structs/pll.h +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/hardware/structs/resets.h +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/pll.c.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/hardware/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/hardware/irq.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/hardware/regs/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/hardware/regs/intctrl.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/hardware/regs/m0plus.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/hardware/regs/resets.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/hardware/regs/rtc.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/hardware/resets.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/hardware/rtc.c +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/hardware/rtc.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/hardware/structs/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/hardware/structs/resets.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/hardware/structs/rtc.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/hardware/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/hardware/regs/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/hardware/regs/dreq.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/hardware/regs/resets.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/hardware/regs/spi.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/hardware/resets.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/hardware/spi.c +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/hardware/spi.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/hardware/structs/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/hardware/structs/resets.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/hardware/structs/spi.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/hardware/spi.c.o: ../pico/time.h + +CMakeFiles/main.elf.dir/pico/hardware/sync.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/sync.c.o: ../pico/hardware/claim.h +CMakeFiles/main.elf.dir/pico/hardware/sync.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/sync.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/sync.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/hardware/sync.c.o: ../pico/hardware/sync.c +CMakeFiles/main.elf.dir/pico/hardware/sync.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/hardware/sync.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/hardware/sync.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/sync.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/sync.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/sync.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/sync.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/sync.c.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/hardware/claim.h +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/hardware/irq.h +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/hardware/regs/intctrl.h +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/hardware/regs/m0plus.h +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/hardware/timer.c +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/timer.c.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/hardware/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/hardware/regs/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/hardware/regs/dreq.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/hardware/regs/resets.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/hardware/regs/uart.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/hardware/resets.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/hardware/structs/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/hardware/structs/resets.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/hardware/structs/uart.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/hardware/uart.c +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/hardware/uart.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/uart.c.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o: ../pico/hardware/regs/vreg_and_chip_reset.h +CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o: ../pico/hardware/structs/vreg_and_chip_reset.h +CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o: ../pico/hardware/vreg.c +CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o: ../pico/hardware/vreg.h +CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o: ../pico/hardware/regs/psm.h +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o: ../pico/hardware/regs/watchdog.h +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o: ../pico/hardware/structs/psm.h +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o: ../pico/hardware/structs/watchdog.h +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o: ../pico/hardware/watchdog.c +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o: ../pico/hardware/watchdog.h +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o: ../pico/hardware/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o: ../pico/hardware/regs/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o: ../pico/hardware/regs/xosc.h +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o: ../pico/hardware/structs/clocks.h +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o: ../pico/hardware/structs/xosc.h +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o: ../pico/hardware/xosc.c +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o: ../pico/hardware/xosc.h +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/lock_core.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/lock_core.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/lock_core.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/lock_core.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/lock_core.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/lock_core.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/lock_core.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/lock_core.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/lock_core.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/lock_core.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/lock_core.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/lock_core.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/lock_core.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/lock_core.c.o: ../pico/lock_core.c +CMakeFiles/main.elf.dir/pico/lock_core.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/lock_core.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/lock_core.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/lock_core.c.o: ../pico/time.h + +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/critical_section.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/hardware/claim.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/hardware/irq.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/hardware/regs/intctrl.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/hardware/regs/m0plus.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/hardware/regs/psm.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/hardware/structs/interp.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/hardware/structs/scb.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/hardware/structs/sio.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/multicore.c +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/multicore.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/runtime.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/sem.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/sync.h +CMakeFiles/main.elf.dir/pico/multicore.c.o: ../pico/time.h + +CMakeFiles/main.elf.dir/pico/mutex.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/mutex.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/mutex.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/mutex.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/mutex.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/mutex.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/mutex.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/mutex.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/mutex.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/mutex.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/mutex.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/mutex.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/mutex.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/mutex.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/mutex.c.o: ../pico/mutex.c +CMakeFiles/main.elf.dir/pico/mutex.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/mutex.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/mutex.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/mutex.c.o: ../pico/time.h + +CMakeFiles/main.elf.dir/pico/pheap.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/pheap.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/pheap.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/pheap.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/pheap.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/pheap.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/pheap.c.o: ../pico/pheap.c +CMakeFiles/main.elf.dir/pico/pheap.c.o: ../pico/pheap.h +CMakeFiles/main.elf.dir/pico/pheap.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/pheap.c.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/hardware/gpio.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/hardware/regs/dreq.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/hardware/regs/pads_bank0.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/hardware/regs/spi.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/hardware/regs/uart.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/hardware/spi.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/hardware/structs/interp.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/hardware/structs/padsbank0.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/hardware/structs/sio.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/hardware/structs/spi.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/hardware/structs/uart.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/hardware/uart.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/pico4ml/screen.c +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/pico4ml/screen.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/stdio.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/stdio_semihosting.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/stdio_uart.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/stdlib.h +CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o: ../pico/time.h + +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/binary_info.h +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/bootrom.h +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/code.h +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/defs.h +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/pico_bootsel_via_double_reset.c +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/structure.h +CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o: ../pico/time.h + +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/malloc.h +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/pico_malloc.c +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/pico_malloc.c.o: ../pico/time.h + +CMakeFiles/main.elf.dir/pico/platform.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/platform.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/platform.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/platform.c.o: ../pico/hardware/regs/sysinfo.h +CMakeFiles/main.elf.dir/pico/platform.c.o: ../pico/hardware/regs/tbman.h +CMakeFiles/main.elf.dir/pico/platform.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/platform.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/platform.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/platform.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/platform.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/platform.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/platform.c.o: ../pico/platform.c +CMakeFiles/main.elf.dir/pico/platform.c.o: ../pico/platform.h + +CMakeFiles/main.elf.dir/pico/queue.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/queue.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/queue.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/queue.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/queue.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/queue.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/queue.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/queue.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/queue.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/queue.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/queue.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/queue.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/queue.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/queue.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/queue.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/queue.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/queue.c.o: ../pico/queue.c +CMakeFiles/main.elf.dir/pico/queue.c.o: ../pico/queue.h +CMakeFiles/main.elf.dir/pico/queue.c.o: ../pico/time.h + +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/bootrom.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/critical_section.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/hardware/regs/watchdog.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/hardware/structs/watchdog.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/hardware/watchdog.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/reset_interface.c +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/reset_interface.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/sem.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/time.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/cdc/cdc.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/cdc/cdc_device.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/cdc/cdc_host.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/host/hcd.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/host/hcd_attr.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/host/usbh.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/osal.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/osal_freertos.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/osal_mynewt.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/osal_none.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/osal_pico.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/osal_rtthread.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/tusb.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/tusb_common.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/tusb_compiler.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/tusb_config.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/tusb_error.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/tusb_fifo.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/tusb_option.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/tusb_timeout.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/tusb_types.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/tusb_verify.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/usbd.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/tinyusb/usbd_pvt.h +CMakeFiles/main.elf.dir/pico/reset_interface.c.o: ../pico/usb_reset_interface.h + +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/bootrom.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/clocks.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/irq.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/regs/clocks.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/regs/intctrl.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/regs/m0plus.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/regs/pads_bank0.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/regs/resets.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/resets.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/structs/clocks.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/structs/mpu.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/structs/padsbank0.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/structs/resets.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/structs/scb.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/runtime.c +CMakeFiles/main.elf.dir/pico/runtime.c.o: ../pico/time.h + +CMakeFiles/main.elf.dir/pico/sem.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/sem.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/sem.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/sem.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/sem.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/sem.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/sem.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/sem.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/sem.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/sem.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/sem.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/sem.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/sem.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/sem.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/sem.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/sem.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/sem.c.o: ../pico/sem.c +CMakeFiles/main.elf.dir/pico/sem.c.o: ../pico/sem.h +CMakeFiles/main.elf.dir/pico/sem.c.o: ../pico/time.h + +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/driver.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/hardware/regs/dreq.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/hardware/regs/uart.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/hardware/structs/uart.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/hardware/uart.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/stdio.c +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/stdio_semihosting.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/stdio_uart.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/pico/stdio.c.o: ../pico/time.h + +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o: ../pico/binary_info.h +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o: ../pico/code.h +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o: ../pico/defs.h +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o: ../pico/driver.h +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o: ../pico/stdio.h +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o: ../pico/stdio_semihosting.c +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o: ../pico/stdio_semihosting.h +CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o: ../pico/structure.h + +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/binary_info.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/code.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/defs.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/driver.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/hardware/gpio.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/hardware/regs/dreq.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/hardware/regs/pads_bank0.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/hardware/regs/uart.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/hardware/structs/interp.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/hardware/structs/padsbank0.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/hardware/structs/sio.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/hardware/structs/uart.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/hardware/uart.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/stdio.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/stdio_uart.c +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/stdio_uart.h +CMakeFiles/main.elf.dir/pico/stdio_uart.c.o: ../pico/structure.h + +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/binary_info.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/code.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/critical_section.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/defs.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/driver.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/hardware/irq.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/hardware/regs/intctrl.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/hardware/regs/m0plus.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/sem.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/stdio.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/stdio_usb.c +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/structure.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/time.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/cdc/cdc.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/cdc/cdc_device.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/cdc/cdc_host.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/host/hcd.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/host/hcd_attr.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/host/usbh.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/osal.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/osal_freertos.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/osal_mynewt.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/osal_none.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/osal_pico.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/osal_rtthread.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/tusb.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/tusb_common.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/tusb_compiler.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/tusb_config.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/tusb_error.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/tusb_fifo.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/tusb_option.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/tusb_timeout.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/tusb_types.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/tusb_verify.h +CMakeFiles/main.elf.dir/pico/stdio_usb.c.o: ../pico/tinyusb/usbd.h + +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/critical_section.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/reset_interface.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/sem.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/stdio_usb_descriptors.c +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/time.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/cdc/cdc.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/cdc/cdc_device.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/cdc/cdc_host.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/host/hcd.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/host/hcd_attr.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/host/usbh.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/osal.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/osal_freertos.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/osal_mynewt.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/osal_none.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/osal_pico.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/osal_rtthread.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/tusb.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/tusb_common.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/tusb_compiler.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/tusb_config.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/tusb_error.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/tusb_fifo.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/tusb_option.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/tusb_timeout.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/tusb_types.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/tusb_verify.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/tinyusb/usbd.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/unique_id.h +CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o: ../pico/usb_reset_interface.h + +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/binary_info.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/code.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/defs.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/clocks.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/gpio.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/pll.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/regs/clocks.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/regs/dreq.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/regs/pads_bank0.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/regs/pll.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/regs/uart.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/structs/clocks.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/structs/interp.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/structs/padsbank0.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/structs/pll.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/structs/sio.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/structs/uart.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/hardware/uart.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/stdio.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/stdio_semihosting.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/stdio_uart.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/stdlib.c +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/stdlib.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/structure.h +CMakeFiles/main.elf.dir/pico/stdlib.c.o: ../pico/time.h + +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/critical_section.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/pheap.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/sem.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/sync.h +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/time.c +CMakeFiles/main.elf.dir/pico/time.c.o: ../pico/time.h + +CMakeFiles/main.elf.dir/pico/timeout_helper.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/timeout_helper.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/timeout_helper.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/timeout_helper.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/timeout_helper.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/timeout_helper.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/timeout_helper.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/timeout_helper.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/timeout_helper.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/timeout_helper.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/timeout_helper.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/timeout_helper.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/timeout_helper.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/timeout_helper.c.o: ../pico/time.h +CMakeFiles/main.elf.dir/pico/timeout_helper.c.o: ../pico/timeout_helper.c +CMakeFiles/main.elf.dir/pico/timeout_helper.c.o: ../pico/timeout_helper.h + +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/critical_section.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/sem.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/time.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/cdc/cdc.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/cdc/cdc_device.c +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/cdc/cdc_device.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/osal.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/osal_freertos.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/osal_mynewt.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/osal_none.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/osal_pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/osal_rtthread.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/tusb_common.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/tusb_compiler.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/tusb_config.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/tusb_error.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/tusb_fifo.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/tusb_option.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/tusb_timeout.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/tusb_types.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/tusb_verify.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/usbd.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o: ../pico/tinyusb/usbd_pvt.h + +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/critical_section.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/sem.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/time.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/cdc/cdc.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/cdc/cdc_host.c +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/cdc/cdc_host.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/host/hcd.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/host/hcd_attr.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/host/usbh.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/host/usbh_classdriver.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/osal.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/osal_freertos.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/osal_mynewt.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/osal_none.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/osal_pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/osal_rtthread.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/tusb_common.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/tusb_compiler.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/tusb_config.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/tusb_error.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/tusb_fifo.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/tusb_option.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/tusb_timeout.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/tusb_types.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o: ../pico/tinyusb/tusb_verify.h + +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/critical_section.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/sem.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/time.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/cdc/cdc.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/cdc/cdc_host.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/cdc/cdc_rndis.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/cdc/cdc_rndis_host.c +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/cdc/cdc_rndis_host.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/host/hcd.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/host/hcd_attr.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/host/usbh.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/osal.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/osal_freertos.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/osal_mynewt.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/osal_none.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/osal_pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/osal_rtthread.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/tusb_common.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/tusb_compiler.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/tusb_config.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/tusb_error.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/tusb_fifo.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/tusb_option.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/tusb_timeout.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/tusb_types.h +CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o: ../pico/tinyusb/tusb_verify.h + +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/critical_section.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/hardware/irq.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/hardware/regs/intctrl.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/hardware/regs/m0plus.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/hardware/regs/resets.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/hardware/regs/usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/hardware/resets.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/hardware/structs/resets.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/hardware/structs/usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/sem.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/time.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/tinyusb/dcd.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/tinyusb/dcd_attr.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/tinyusb/dcd_rp2040.c +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/tinyusb/osal.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/tinyusb/osal_freertos.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/tinyusb/osal_mynewt.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/tinyusb/osal_none.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/tinyusb/osal_pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/tinyusb/osal_rtthread.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/tinyusb/rp2040_usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/tinyusb/tusb_common.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/tinyusb/tusb_compiler.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/tinyusb/tusb_config.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/tinyusb/tusb_error.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/tinyusb/tusb_fifo.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/tinyusb/tusb_option.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/tinyusb/tusb_timeout.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/tinyusb/tusb_types.h +CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o: ../pico/tinyusb/tusb_verify.h + +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/critical_section.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/hardware/irq.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/hardware/regs/intctrl.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/hardware/regs/m0plus.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/hardware/regs/resets.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/hardware/regs/usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/hardware/resets.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/hardware/structs/resets.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/hardware/structs/usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/sem.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/time.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/tinyusb/hcd_rp2040.c +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/tinyusb/osal.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/tinyusb/osal_freertos.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/tinyusb/osal_mynewt.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/tinyusb/osal_none.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/tinyusb/osal_pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/tinyusb/osal_rtthread.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/tinyusb/rp2040_usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/tinyusb/tusb_common.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/tinyusb/tusb_compiler.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/tinyusb/tusb_config.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/tinyusb/tusb_error.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/tinyusb/tusb_fifo.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/tinyusb/tusb_option.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/tinyusb/tusb_timeout.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/tinyusb/tusb_types.h +CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o: ../pico/tinyusb/tusb_verify.h + +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/critical_section.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/sem.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/time.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/host/hcd.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/host/hcd_attr.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/host/hub.c +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/host/hub.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/host/usbh.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/host/usbh_classdriver.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/osal.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/osal_freertos.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/osal_mynewt.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/osal_none.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/osal_pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/osal_rtthread.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/tusb_common.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/tusb_compiler.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/tusb_config.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/tusb_error.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/tusb_fifo.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/tusb_option.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/tusb_timeout.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/tusb_types.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o: ../pico/tinyusb/tusb_verify.h + +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/critical_section.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/sem.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/time.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/cdc/cdc.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/cdc/cdc_device.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/cdc/cdc_host.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/host/hcd.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/host/hcd_attr.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/host/hub.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/host/usbh.c +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/host/usbh.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/host/usbh_classdriver.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/osal.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/osal_freertos.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/osal_mynewt.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/osal_none.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/osal_pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/osal_rtthread.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/tusb.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/tusb_common.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/tusb_compiler.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/tusb_config.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/tusb_error.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/tusb_fifo.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/tusb_option.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/tusb_timeout.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/tusb_types.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/tusb_verify.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o: ../pico/tinyusb/usbd.h + +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/critical_section.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/sem.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/time.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/cdc/cdc.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/cdc/cdc_device.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/cdc/cdc_host.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/host/hcd.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/host/hcd_attr.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/host/usbh.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/host/usbh_classdriver.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/host/usbh_control.c +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/osal.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/osal_freertos.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/osal_mynewt.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/osal_none.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/osal_pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/osal_rtthread.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/tusb.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/tusb_common.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/tusb_compiler.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/tusb_config.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/tusb_error.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/tusb_fifo.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/tusb_option.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/tusb_timeout.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/tusb_types.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/tusb_verify.h +CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o: ../pico/tinyusb/usbd.h + +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/hardware/irq.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/hardware/regs/intctrl.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/hardware/regs/m0plus.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/hardware/regs/resets.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/hardware/regs/usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/hardware/resets.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/hardware/structs/resets.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/hardware/structs/usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/tinyusb/rp2040_usb.c +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/tinyusb/rp2040_usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/tinyusb/tusb_common.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/tinyusb/tusb_compiler.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/tinyusb/tusb_config.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/tinyusb/tusb_error.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/tinyusb/tusb_option.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/tinyusb/tusb_timeout.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/tinyusb/tusb_types.h +CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o: ../pico/tinyusb/tusb_verify.h + +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/critical_section.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/sem.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/time.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/cdc/cdc.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/cdc/cdc_device.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/cdc/cdc_host.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/host/hcd.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/host/hcd_attr.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/host/usbh.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/osal.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/osal_freertos.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/osal_mynewt.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/osal_none.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/osal_pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/osal_rtthread.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/tusb.c +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/tusb.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/tusb_common.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/tusb_compiler.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/tusb_config.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/tusb_error.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/tusb_fifo.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/tusb_option.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/tusb_timeout.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/tusb_types.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/tusb_verify.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/usbd.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o: ../pico/tinyusb/usbd_pvt.h + +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/critical_section.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/sem.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/time.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/tinyusb/osal.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/tinyusb/osal_freertos.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/tinyusb/osal_mynewt.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/tinyusb/osal_none.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/tinyusb/osal_pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/tinyusb/osal_rtthread.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/tinyusb/tusb_common.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/tinyusb/tusb_compiler.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/tinyusb/tusb_config.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/tinyusb/tusb_error.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/tinyusb/tusb_fifo.c +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/tinyusb/tusb_fifo.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/tinyusb/tusb_option.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/tinyusb/tusb_timeout.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/tinyusb/tusb_types.h +CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o: ../pico/tinyusb/tusb_verify.h + +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/critical_section.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/sem.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/time.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/cdc/cdc.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/cdc/cdc_device.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/cdc/cdc_host.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/dcd.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/dcd_attr.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/host/hcd.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/host/hcd_attr.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/host/usbh.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/osal.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/osal_freertos.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/osal_mynewt.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/osal_none.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/osal_pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/osal_rtthread.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/tusb.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/tusb_common.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/tusb_compiler.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/tusb_config.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/tusb_error.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/tusb_fifo.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/tusb_option.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/tusb_timeout.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/tusb_types.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/tusb_verify.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/usbd.c +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/usbd.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o: ../pico/tinyusb/usbd_pvt.h + +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/critical_section.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/hardware/address_mapped.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/hardware/regs/addressmap.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/hardware/regs/sio.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/hardware/regs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/hardware/structs/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/hardware/sync.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/hardware/timer.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/lock_core.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/mutex.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/sem.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/stdio_usb.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/time.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/cdc/cdc.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/cdc/cdc_device.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/cdc/cdc_host.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/dcd.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/dcd_attr.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/host/hcd.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/host/hcd_attr.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/host/usbh.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/osal.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/osal_freertos.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/osal_mynewt.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/osal_none.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/osal_pico.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/osal_rtthread.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/tusb.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/tusb_common.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/tusb_compiler.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/tusb_config.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/tusb_error.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/tusb_fifo.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/tusb_option.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/tusb_timeout.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/tusb_types.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/tusb_verify.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/usbd.h +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/usbd_control.c +CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o: ../pico/tinyusb/usbd_pvt.h + +CMakeFiles/main.elf.dir/pico/unique_id.c.o: ../pico/hardware/flash.h +CMakeFiles/main.elf.dir/pico/unique_id.c.o: ../pico/hardware/platform_defs.h +CMakeFiles/main.elf.dir/pico/unique_id.c.o: ../pico/junk/assert.h +CMakeFiles/main.elf.dir/pico/unique_id.c.o: ../pico/junk/config.h +CMakeFiles/main.elf.dir/pico/unique_id.c.o: ../pico/junk/error.h +CMakeFiles/main.elf.dir/pico/unique_id.c.o: ../pico/junk/types.h +CMakeFiles/main.elf.dir/pico/unique_id.c.o: ../pico/junk/version.h +CMakeFiles/main.elf.dir/pico/unique_id.c.o: ../pico/pico.h +CMakeFiles/main.elf.dir/pico/unique_id.c.o: ../pico/platform.h +CMakeFiles/main.elf.dir/pico/unique_id.c.o: ../pico/unique_id.c +CMakeFiles/main.elf.dir/pico/unique_id.c.o: ../pico/unique_id.h + +CMakeFiles/main.elf.dir/utils.c.o: ../utils.c +CMakeFiles/main.elf.dir/utils.c.o: ../utils.h + diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/flags.make b/arkanoid/build/CMakeFiles/main.elf.dir/flags.make new file mode 100644 index 0000000..6cf5ad7 --- /dev/null +++ b/arkanoid/build/CMakeFiles/main.elf.dir/flags.make @@ -0,0 +1,17 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# compile ASM with arm-none-eabi-gcc +# compile C with arm-none-eabi-gcc +ASM_FLAGS = -O1 -mcpu=cortex-m0plus --specs=nosys.specs -Wl,--wrap,malloc -Wl,--wrap,calloc -Wl,--wrap,free -Wl,--wrap,vprintf -Wl,--wrap,vscanf -x assembler-with-cpp + +ASM_DEFINES = -DCFG_TUSB_MCU=OPT_MCU_RP2040 -DCFG_TUSB_RHPORT0_MODE=OPT_OS_PICO -DLIB_PICO_STDIO_USB -DPICO_ON_DEVICE=1 + +ASM_INCLUDES = + +C_FLAGS = -O1 -mcpu=cortex-m0plus --specs=nosys.specs -Wl,--wrap,malloc -Wl,--wrap,calloc -Wl,--wrap,free -Wl,--wrap,vprintf -Wl,--wrap,vscanf + +C_DEFINES = -DCFG_TUSB_MCU=OPT_MCU_RP2040 -DCFG_TUSB_RHPORT0_MODE=OPT_OS_PICO -DLIB_PICO_STDIO_USB -DPICO_ON_DEVICE=1 + +C_INCLUDES = + diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/fonts.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/fonts.c.o new file mode 100644 index 0000000000000000000000000000000000000000..1680f5de2b749a6f5066c87560cd762fcc3409b0 GIT binary patch literal 26864 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 ZgUkUj1tIo=m|!fN&cNUcW<dy;Isg`|`xpQK literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/link.txt b/arkanoid/build/CMakeFiles/main.elf.dir/link.txt new file mode 100644 index 0000000..47ee7bb --- /dev/null +++ b/arkanoid/build/CMakeFiles/main.elf.dir/link.txt @@ -0,0 +1 @@ +arm-none-eabi-gcc -O1 -mcpu=cortex-m0plus --specs=nosys.specs -Wl,--wrap,malloc -Wl,--wrap,calloc -Wl,--wrap,free -Wl,--wrap,vprintf -Wl,--wrap,vscanf -T /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/pico/memmap_default.ld CMakeFiles/main.elf.dir/balls.c.o CMakeFiles/main.elf.dir/fonts.c.o CMakeFiles/main.elf.dir/main.c.o CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o CMakeFiles/main.elf.dir/pico/bootrom.c.o CMakeFiles/main.elf.dir/pico/critical_section.c.o CMakeFiles/main.elf.dir/pico/crt0.S.o CMakeFiles/main.elf.dir/pico/datetime.c.o CMakeFiles/main.elf.dir/pico/hardware/adc.c.o CMakeFiles/main.elf.dir/pico/hardware/claim.c.o CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o CMakeFiles/main.elf.dir/pico/hardware/dma.c.o CMakeFiles/main.elf.dir/pico/hardware/exception.c.o CMakeFiles/main.elf.dir/pico/hardware/flash.c.o CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o CMakeFiles/main.elf.dir/pico/hardware/interp.c.o CMakeFiles/main.elf.dir/pico/hardware/irq.c.o CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o CMakeFiles/main.elf.dir/pico/hardware/pio.c.o CMakeFiles/main.elf.dir/pico/hardware/pll.c.o CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o CMakeFiles/main.elf.dir/pico/hardware/spi.c.o CMakeFiles/main.elf.dir/pico/hardware/sync.c.o CMakeFiles/main.elf.dir/pico/hardware/timer.c.o CMakeFiles/main.elf.dir/pico/hardware/uart.c.o CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o CMakeFiles/main.elf.dir/pico/lock_core.c.o CMakeFiles/main.elf.dir/pico/multicore.c.o CMakeFiles/main.elf.dir/pico/mutex.c.o CMakeFiles/main.elf.dir/pico/pheap.c.o CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o CMakeFiles/main.elf.dir/pico/pico_malloc.c.o CMakeFiles/main.elf.dir/pico/platform.c.o CMakeFiles/main.elf.dir/pico/queue.c.o CMakeFiles/main.elf.dir/pico/reset_interface.c.o CMakeFiles/main.elf.dir/pico/runtime.c.o CMakeFiles/main.elf.dir/pico/sem.c.o CMakeFiles/main.elf.dir/pico/stdio.c.o CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o CMakeFiles/main.elf.dir/pico/stdio_uart.c.o CMakeFiles/main.elf.dir/pico/stdio_usb.c.o CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o CMakeFiles/main.elf.dir/pico/stdlib.c.o CMakeFiles/main.elf.dir/pico/time.c.o CMakeFiles/main.elf.dir/pico/timeout_helper.c.o CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o CMakeFiles/main.elf.dir/pico/unique_id.c.o CMakeFiles/main.elf.dir/utils.c.o -o ../main.elf -lm diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/main.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/main.c.o new file mode 100644 index 0000000000000000000000000000000000000000..efb3a6fa24af02ace242608f5a977603ba613140 GIT binary patch literal 4440 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 literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o new file mode 100644 index 0000000000000000000000000000000000000000..925e18e6a536734f56afb3e4ce666b137d408b8b GIT binary patch literal 1272 zcmb<-^>JflWMqH=Mg|QA1do9sgBdKtY67M-7`PZX85p)2c`GVJB+STQQtWV^k#HkH zA~7OS&znJUW&)F9WFn*D2c?+-+MbdLjEXZ8Ocnlr|M#CsX@Zl;1vW*=G=>i*KP2-Q zK`aG{G^sR(4>~_2^FWXltddcY!|CTmkXh26k_ilokqJ_s(jJUpvtBDorY!*J{2=rL zq(aP71S-S0he3nk0)xAdhp;C{0`rN6&m0{b?#x?fX0a$RI{m)DsKDs-<0A83rmYfb z5^4XxfBG+xCy~drmw|!Ffq{WRf`NgZfq^-mK~af;;R^$UgpvZo0tQ9~0gkr}55QiB z5+$4bsvH#=7#I>$6O%F-7{wVF7+9V2i%L=}bbSr98Q6H(eL0Z>5ULNEVnzvJ1_ovZ zCS+*_W(G*0!vvWbSkQE^Ft9K%FsQ*4Ft9KPF)%QsAn`RA7#LO|@y!_+7&4IfP7DkT zT}b=@1_p*HNc>m^28KCE{CoxmhBHWfIFkY7el~_81_rnrg&0^E>KPaq_Cghb`29%w z1wgJ>DPbrm%1<v!%#ANDN=+|jD9+9-05jvE;<=f5=?vwGnI-YX#hLL%sfj6-3@N3# zxs_lxLvnszT4s7_Q7TB9Avq&8IXk{6wWPEtkD)9zxg@_RJ~OW*KRzudu{eW4C50ir zxFj(>)hIqGKfi<lWEw;YY$ZcZW=U#MVoouG0RsaAmjDAp6qIJrE3V8fNlaqUD=sO5 z&>1jRNoqw2gI-EvNg{(@QgJbZUQud}9>{nj20h0hU%kYVlA_F{(vs9-Xh0A_NkhYt z4XPHB@1Pt826##VB|%U!gQXO7bs#yAE_DV51`co>fp`oIxYU9C4bp>RFGv8Q4HRQw zmJS00s03gDWg3ux05b!F00TJpfYpG~CCENddShl_C;+JeVG~9M1|<*!ieW~BXynu% z!N|a%zzA_OKLZ2UOpy7UNPYkrQNhH(FayMZVvso?rXZR+1!e{YcaQ`W!_)x)N))tC literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/bootrom.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/bootrom.c.o new file mode 100644 index 0000000000000000000000000000000000000000..40c9a260fbe6e014c41d2148bde1045b867d9643 GIT binary patch literal 984 zcmb<-^>JflWMqH=Mg|QA1doBig9$9dY67M-7`PZX83eX6GKeTkbg&ppcg%1X*bCx| zDNA%PLHPw+88rDXurPEoxJfXoDrEfs{_j8I5ofs>jt)+&4qKeQUesVH*vqK;`#FQV zv$K_ghM}pIrLK{Ip`~u2iLOCuQfXdEsiCHVrJj+Vp#n(U(7?!4L8B-&CpED+RZ}6_ zG00axu_#y9Qa7n6F)ukop(wR1vp6$9Pr=CC+|<%Cmcdb*fq@}0H8ClZfl-lxfq~U5 zSl5?<jfdTrlTnC8gi(}HoLPcVl2M9L4%xe4Um^>zFns(E7K9SaD51l^z|6o5m4Q&q z3@i-X5GIsFHVven6)Fy)m>Jj@_!t<#rV21HFbFX)GRQG7FbFa*Fu?eF3=9k)KWIVa z8ItnzON#Py^^zG>N*IdrbK}!W^OECp^7FGx3&8x8#F9j0K1jY8Cct38z`(%8!N9<v zS6rD}l9<GxS6osAp)+8tqSPF{lGKV420f5j40=h$#SD7M`MJ5Nc_j>bjzPY9i6tdP znMtK3sl^bV5J$>G{mKSa4oX*EP&SByBsT^IX$A%cP6h@B2aq5G1H%_a1_qFm*`fMb z7$AIAC?6IJbx`#%3KsgH<N(r7NF69_Kzcwl$PAEqQ6L5sgXBQik^vN#3<XeOh8qkF z3_36l)J-5RNG;4yAU+Et1H%TW+d=LD`2!TsAiu)g22!_$k%7S;#DHRuIUpt|T_CIb O!^ptk36g+fm^uIjPjy!S literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/critical_section.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/critical_section.c.o new file mode 100644 index 0000000000000000000000000000000000000000..42071fbdd569ba04470d67a25b0cfd8b8164796f GIT binary patch literal 1168 zcmb<-^>JflWMqH=Mg|QA1doA%ff+2rY67M-7`PZX8JNB2xFx!DGB76W{~X_6;O@Y{ zU?Q-Ug@IAw|M!3Y85tB9K(xSKkQj3YtJf5_WS1ENATdVeXeZ?afxQRZ82<m)XK;6R zwo=eAG_|tSH8L=?)Gaj8H7HFg%_}K2)Ksw4Gtx6u0ErtK7?~<)6s6{*CKjh^DnvU5 z`RXSY<?34MCKV;-C1)rUrIuwDXXfWA7@3=!T3W_3IBGL6FeIiXCS@`(Dl#xIu$l$y z`ZBQbu={c{3bBYViZY5bOE5|@N-@fzcoytQ6#ug@eEbg)g^<iBvY_CB1Q0|P#Ajg; zfpNezBZD{t1A_pV4I&u9@(48$c^8lr7^6CfnSm873L}^q*chZ37{IOonIXi$$Y967 zz#z)N05%uI4}mF$+MCV5z@W*%z@WguzyOkOMw4eqF3K#)Ois*+FHTJ^$;{8wOJ-0h zVNglIkciLB%Pfg6&n(G^&&f~Dj?XL2#jb{-xF9nRq9!>fF*7&5G_SNc6^nr>sURbf zl$Yj#HGrH5@+TKB1A`I+0|OT~1A`fe=4W7F&?~OYElEsb&?_z}g3uW-R#9q>UP)?2 z34>lrVo4%{UQ%%}gI;oeZf<H`34@+vkgr~1Nl8&=QfWzQF~|;Lu{<=)*`OLg`N0Fq z22m^^f`NfSnt_3VlYxQ30m`4l#K0iIz`(!`)elm~!N9<v3gyF6PYqN(jDn>CP(lW& zC#22*Y95FNnE^5{3dDe7ka-|%3CYq0P+^8^3=9l9Fb>oV5ErDD3B-V67LWiV0|Uq{ x+zbp1Ab)_;G{~<ow}F(hFflMp1u>u)qz%LrgxCvWg7Fq61_n<s3qruu0RXAUoB99% literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/crt0.S.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/crt0.S.o new file mode 100644 index 0000000000000000000000000000000000000000..423282c3e30c395bfcd800bc8acb54280697d1ea GIT binary patch literal 8400 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 IOv2Ow064H-%>V!Z literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/datetime.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/datetime.c.o new file mode 100644 index 0000000000000000000000000000000000000000..33800eea468ad8f9489069368e53c5fc68b41996 GIT binary patch literal 1688 zcmb<-^>JflWMqH=Mg|QA1doAX0t;A%)dWmwFz_<)FcfTU+raP3qI@}QHbZnIgW8mM z)+y{NBH=7k*i=NqnWwO-h=emuVNwwZXS7+upd<MtlX1$Wil9vllbF5!fB*NNZ9~Cc zuyG6w464NnswoO!(n{69C<RO?sHTAAgG=*L5-S-PeDfi6NNH*@NFY2lB@e=4U<k=5 zEdmQNFfh0kWrCy`f)h(hi@+=f2Cu}t(!`=l2Dj9tA~1u2fx$PiC^>_Hfx)q$C^HAl zuVnBl%}WK@=~bFj38EcK(@Tp>7#M<63rbRRlTwQq7#RGMOY%W1zx*<o5Q9r<GMp{L zz`&rwz`&rxz`y_sF9!w&1|J3nh7bk@h6Dx%29TX43=9l43=9k{3=9k%3=9kt7#J94 zFfcGIU|?Wa!@$6>g@J+L0LTIE&dyc}8iuA;mbyj;hL*a8Cb|ZtNu_xurG}acmU>2d zh6*5YLjxmI1&yNAoYchPR856w#~@$*#G+hXOWmZR#JuDTg`(85%;L=aJOv|jb5l#p zSO!OJ1_p-2)WoDr21Z2&1_oBMU|nAZHXe3gPDUXX5k^r)ab^idNk%C~Ipl-@auWjs zO4?vy`1l_x45pY-WEmKk8JNN1FoKx@l9&*DRt6pz2TZdv@Pla>!3dUjfpIa+X9LT_ zr5V^5grFQyTre`QF(@!FFo4(wV7IeDWg!$Z0|$fwC7BsG86fH)@g~H;$N-8%s5FBB zh>?<5l3J3Po2r-0ppwF%Qo`Wk7~&e@>FXNr;vXK2;Q9Ldg?I!rz?8?A<i{766fqR% z6%=LWm85};vSDCg;1Xb90QrxJlYzm5fq{XE6(j?pL7@fWgIo!sL16`=LGA$2B2e`b zP#WY<kT}TCAR3ewL9_-`9+WOYe2^bOG$@UNXbY%3$UPuF$j=}e>@HR$cj*;Z=9VNT zG3XVS6hY_=7^^5XN3SHcqJ%*&C9x!tK`*Jem_e^7AH)HvHq<j=&;zM~2r=j-=jZ08 z=9Mt$IR^RaC6<&FWhRxDq!vRwPXs9sj!y;#Sd4=F0?KPJt)Q?2v85Rp7&sXi;PF_) z%)kH&FD|HlkUCKKszUj&6x#sOjD%rX0hD<_>Ita>g)vBv5!4Kjc_*Q45CyUqB<~Eh zmkA^YDlZrzX%EVU=NNl5e@tP9lp7#_fWiP|9>`tZQ1d|cgUp!0$iNT<Vn8v-P7nr_ zNz4ok1yEszPmGXq3&sbj0kJ_e%xxgP0uuv+03!nfHv<DWuY&9arAJU0!@>ll&VZSL g!4t%QVvso?rXT~TTmZ2kScipy0bJNaxbPef0CY3M@Bjb+ literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/adc.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/adc.c.o new file mode 100644 index 0000000000000000000000000000000000000000..c94ebec624a4490c2189c8abbc3d2b7c50cc4535 GIT binary patch literal 856 zcmb<-^>JflWMqH=Mg|QA1doB?1BAnB0#=~Gz{$YDz^KgWC7b}po{UP}83GJ5oPS?r z_hwX*N|0puZ^WG;?DXeCfjh$k1_y=@3=RwjK$yjW!QI)}N<qWW)XGxV$iUE2x6nk_ zpfss8ucXvaQ^8WtNY79KByMP6WU8Q1l$w*8Se&Y<5bYS`tDjhut81y7RFs&PoS{&Z zT9#RynV+X%WNvP1X&KAlsLjB@keHg7l*z!T$iTqBY8I^P%fQCN?#sz2#3I5d$|%k( z!6?Zn#V7~y57;*_0$GTK;p2apIEZFO2@M7YW(FpZFdQ>8Ff*{jc_0QO0~Z4Wg9eBR z#>l3F^s|6PVFWV+D+4bB1K1V|1_lNp5GyeySudGErG!Bxg&{E|IX*KlvxI>`uedU| zBr%CWuehWLLTA8OC8-r940<VvC5a4rNyWtsddc~@xv6<240?`1zIurzB}JJ@r6sAw zFk1=J(oi?CL6w5yALKqLmjUJrP-ugE$PAUpfzmJvBnM)vGcYi4Fo66I;xRDbQl|s8 z*8rjntS$=522mjMK-d&wRsl#1gpV;WFo5)e*dPp21EY~+><a?}!vY2daGY^6Fo69b qz`(!&V#E9Z(l>>Xfk6z!fMS?=f)IP5q6`eH7#SE`;XFt@g17)5xmR}p literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/claim.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/claim.c.o new file mode 100644 index 0000000000000000000000000000000000000000..bd3d0639d016b738428acb06a03dac844fd770f3 GIT binary patch literal 1856 zcmb<-^>JflWMqH=Mg|QA1do9sffX#nY67M-7<d@C8Qy;uXeipo>?NGRp#A5<{?GCK z1@1bG3}6<MH-nN?Lc?c)4v5%kjzcl*%90L@3LOpt4$g8j91m<NaR0HDm4SyrjN$+H zfBzqIyq9<t!>*|4z^L5qAne3)QP|nK03`EcuOfp1Sj~s6=iC^!Hf>;IV4NtzAP*L6 zaogjheB&|42Z@g{?8?dxj7qZ{xSaSduq)4WV^n1{S?(lq`4PtkiH$MdZpsc?3?SLh z7rC673KHBvrZebp-d12>+Q71BqT7eP5HUuT6eq^n4BDSAaLfRyDFC|@#Cpu}4(v)E z2S(+^AXi?P<!l6YWx-x1Z)PtYLuL<<I&d&CFfb@EFfe44$7dGDC+8$)=BB1-BxRNq z>nJ2;mc(b~rKDD9GBD_8<maa9C+1e_7Zl}Zr6!jY>zC$b>L=&t7U&jN7VBna>L(Uu zC+6j6rs$U>7H1pk7i1>q>t`eurIaTYrRsxC)=LK217^l2=cFbUF)+A0J6kDe7@AsH z>KYjsTIv>>=o*wJmFAU{8fq$7>KW-7DuBcd4U9|`G>TGlQWJ|)H5H;AgM9T9i*j`> zb(4w`^O7?Zic-rmi!<}{6pYNxO)V{B863447#I>$6O%F-7!?^97+B4Mb$uDwc-Vb8 z8HHFx7)2SynI#w{8KoHIkkb$>OpwJ`7(V`oiGyfnlvKySz|6o55{6@D1{MZRI1j{N zWZ+?7U=RT@!I%*&F9BwQ2#CA}hzZ6Jc^xntL?F8cWFII+g2Z7M!k2+7gEPPim>Jl> z_JcWKf{lS6Of!IKMg}%04?;0ButOM7l9_>nL6(65>}!ylg%}taK%pxM^%ID1&A`B* z%fP@O#=yV;;(IbMFgP<XFc?7jF;KHWlmG(*LlOf6LoovbLj_d6mVtrcH3I{K9hBb# zQV7K$^$g%tqnFH}Qo^8;!Vn*yR+^U_AFpR(Vq}O&R5|&{*$7@~9*mDj+6dYFqWHw( z;?$xNhJwVrOr(@qnpaw!ni8K@l%E@4l$e*EiqHc|wDC}lU^g%@FnBRAFmMSmFr<KJ zVFrdg5G}^Q&;+7|7#I$LXkiA1Yf$<bh!$gD_yD4X7#O%185p>P85kr$v?K!qC?1)( z7#I{785o#&85mSRG#3K{gI;lEZb@PigI;k-5rocwv5Hc2^h#1IN*MG~5=#;p^pc8; z8T5+sK^%~3Lp>81mq9N%KQ}iuuY^I*G00ahv81FZGpV#B6%-rL04G4nL(>8*)qu)d z4WuN;0@W|gzyMC?4p9CK76yh4s2E5&NF4_Q1A{8mJXkJ@0ZBsjfG8Ljl;%L{38@36 zIglPBkY)x329S9md!bwgki8&zd#JrkP>Caqko*AUg4Kc8?of3gb3y#ej0_A>AO;kJ z%mU#622kE)D1Ztx=rS=dAo4II|A6E`YGHPQ_%Tcj3=2SU4^I0GV0%Gn9#n?F{0dU{ ghnaz47Kj1GAag)WL5RH|CIquGFeE@&U=pSd0N3$2NdN!< literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o new file mode 100644 index 0000000000000000000000000000000000000000..b549f4f13a2a972ed6a2b218694daa76cbd2e762 GIT binary patch literal 3804 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 NVPF9DUBDb9bpYs;=!*aV literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/dma.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/dma.c.o new file mode 100644 index 0000000000000000000000000000000000000000..8ba32b93ca2683da7e4261b339e42a5563a20de4 GIT binary patch literal 2540 zcmb<-^>JflWMqH=Mg|QA1doBigaa(YY67M-7`Pd@7zDO5GB9~Dd;I_Y@4vv_18!g` z1_p+Ltt@if7Z_9-)mR^BFo0wkO;b3SE~q*Ey729J!CsI)MyM{Zo~_Lr7#Uc+876Zp zGblmKW8T29R|PD|0JaBNJxD*32eTKG0my8Dy&z>S3=nlp9xzd;d%$M1da!ykOlDSQ zP=d&UOozy);L!JB>piz{H$OL5w+CDMHyq69=A7lmuRO;s*e%IT*kPvIY5o~*-TaIS z%nq~NeEC@&`1sfy&NJ=jJH?gkCgs38sfUZjA;68<iTMJfg16fYhekI>1!e|r2d>H9 z9Lx@!leyVv^UrZ(W=L|I?7%UZo0HjreX=*Fgag|IZ#UM-EK_)AGf!rk&Nz)>YP6e^ z8!I@p_&3<>ncz0lZIRn*w-0*{xHT{^Fu3?SDkNtl=H;d4D5$0=WELwV<`ktSrc^2< z=Okw4rh@$Em#=`NtXLtjC{-b`EHN`DF)1e%YDP(BZfX$@6QKIRO3-y{s2W&QXeuN@ zG#5dratM`FT3iV-vZSaGL?xHxgQ%kPVz5(-(u=D={LH*^2nDttB9@U^01`{hQ&3G| zU~qSKwo=eAG_|tSH8L=?)Gaj8H7HFg%_}K2)Ksw4Gtx6u0ErtK7?~<)6s6{*CKjh^ zDnvU5`RXSY<?34MCKV;-C1)rUrIuwDXXfWA7@3=!T3W_3IBGL6FeIiXCS@`(Dl#xI zu$l$y`ZBQbu={c{3bBYViZY5bOE5|@N-@eI=LJxD17Tz_7KV@iL1Hk>jFNj87?>HD zVNzh4nSljN!w6;uRt9z$2TZdvaDizU!3dTYfN>cZ!SWJFe2{)nK7a^8<UJr91_lO* z{sbgG$ovc>K1hEF5+5XAfy4*NcOdaW@)MBwAo&GIe31MSBtA&~01_W0e*%dQlD~n( z2g%<-;)CQH;DHYD4_umog+Um~VFLS>g@KoWfdRq>`5ryI*`TT+6f*-mgA7<70|O{b zg%}ta^dM4T5)|%^3=9mC3=9kk3=9k)`2Yq621`)+0p)}88dxz@teAm;!4pY+4@?p& zznp=AArs05nYRy3{tN>HLnQ;kJ)p3d$iToL0=4fQ0|UcS1_lODISJCw%E-WQ5=mZ) zk%8eZ0|UbfsCrF!*fB7G{KJrvo2Zw}ppwF%Qo;}q&ff8`QX?fdF&<j3K*Sg_${~#S z{G#~8;^Nez5|DnVSZ-o*HiQc)i{eZ3z$PJdCFi6j7D1GN3a0qdywc*-6qp?dbx`rN zqWs+WqQt!PREQp^v6;mX3sX}-I*@oE_agZKtO>%0xdfyF>?WAiU}+?UNTwAOW#*N{ zgLRY?<uHJ`X$+t$kV_sCc1*00cwk~-U{GUVVBnHtV6X$xN(>C3JO~nx0P$5A7(jUr zq#l$$K;n5IaWw`8P+kM^n?QVd1_n^x0`WoV1f+fjNL-150hFge;@d!c6$S=S9s==? zfYLWB1H%Q7xEcckDDQy8a~K&IxO5m8KzRjZ4uf8CWo}7g5`$iGNfCt3fU$~FbM#75 zD@qvjQW8rN8T68hiy8Ea@<AMsYC}B}2EF9`+}zZ>5(YiTAYZ-2l9Hm#q|%a9Q0hiX zuy~mA(0m2UaiBIt3sPEy<xFV?1_n+B1_lSHSt{%d3_BPYz~K&34pIk-168Pbuo86# zND`_CM8UYA(jBB8SsjcGQU@v<K(qnWJR=Z?fq?;J-eV{mM1kxDnQ0GI2T~6bpUuR; z5CvjDF-Q#vgUVcH28IHtFvC|S1_m7%2Wke03sMVn1BkD}%)oGg2@(c!3=H5J0+dfd oVS?=LFRTm<1|ZEKO-SYmGJxtCs2~Fa!yR@822dJ=iNLe~0M_iMf&c&j literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/exception.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/exception.c.o new file mode 100644 index 0000000000000000000000000000000000000000..162f10d210a29677cd52aa1314cd6d39f7eed82a GIT binary patch literal 1892 zcmb<-^>JflWMqH=Mg|QA1doBCg%vErY67M-7<d@C8JN6hX9yTHFdT>|aA$bS@StET z3j;61`_BSxMce*=|M!1|6YB*o?-@=!mq8@wB~FlflO+sK1NMK8?{E7o&{43L)tk-B zP?608q#kTEh<MBJ07QYX3j+g#z*b)GnNIwddAw&j@mzZUS)jRS8<*E4u-%Pdvzk8( zbO`Ka^J4c_FtUQ0cEAm!AB>^qO<-VP0GXGOn3s~1TBKlWtB_n;RFs-mqEJ(#kXn(P zT2PXipBJB59G{$@TacNP8efu`n;M^znwD6aQ=$P?tO+txKO;XkRX;JeQoo=mKPxr4 zq*%W+FH;|+Pq(<TST{3MKd~q~F)u$eMZYAmINMOaATv2%KO?ayr981HRUdAfUNQrm zjnn4*qRjNnyu_S%sM9r(^c1I-#HUsy=ad#_mZicJAjub{7MJ7~A!Hcbot>=|Gz?9x zEOm_x3@vpFO>_-PlS=bSN)0s?EcJ}^3>84)h6YBa3K~VJIjM=oshSGWjzPZqiAA}( zmbytriFwHx3Pq`9nZ=p;c?w46=BAdGu?&vd3=9m3sfkIM42+5l3=FJh!MeT-Y&`6~ zoQy&&B8;Mp;>;3^l8jP}a>z*w6r3n&jfLUkf3P5wU`CN;U|?oohRQ%FW(H8YgRmha zBZB|~0|O6)!@z){pA{?*mu6sP;02{KxBx_d01_W0pMk^&nZE#u4`(uf+{cDyJ{yBD zRDlB6HEax^@By)<pnRw_m||vN2h%WunSp~rAFPf6Y_1RkBZChE1A`y~149G@0|SVk z15*t3M->{sAC13=fq@~Dfq?<!N05F*g3(K6P$^+hNnwbOPb<w!j*r(fF|#y6;h7^; z$ET;3#Fv#MCgmVf7$QAmPn+@aiN(dKMI~VK8RB92D?YQhs5rj3B(bOjT`)B-1<6YE z6fMKRz`!NU01gu_QHY<I#26St7#J9s#2FZ3Kr}l8Ljs8AWnf4F(d-Nivq1Vp85ltE z2vWZUBreXtum(i)GB9ia(d-NiTc9+9UU6k^Nn#R%UU5kggwBAmic)j*N>VFI81zyS zOA;CMl8TEN^osI99FS^5Jrfw0K`%K!H#aq}gh9_S$X741q@*Y_sk9`u7%7JEGv%Ra zfeoq*R3`6$vOyFJh+tq~kY-?D;ACK6aDejnurM%y(lAI2lmS8NI2afhRH5d<a@8BC zdKd*#3u1$^H%L7pbp}xLj6j+g7#Kk29f7hz6v$qXnf6e1Odvr928Ioc3=CFKHi!bL z1JUkKbs%#={8x+&3{fBk6obqHVNhCTW?(3Q3NyGcF)--BI8ZY{T##CrogjVz69dBp zMg|5h1_p3G1=$PA-=J`U`4yy&frWu#510WVK<0p0pnQm|PK6bc)<AL~3{wXHE@?w4 literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/flash.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/flash.c.o new file mode 100644 index 0000000000000000000000000000000000000000..e3cfc8facfce71a389fcbbabb3278a35cf9551eb GIT binary patch literal 3804 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 K!38FXWG?_>=fGe9 literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o new file mode 100644 index 0000000000000000000000000000000000000000..5852b1da341bdb0ea277f21d71e9e9635665c3e2 GIT binary patch literal 3436 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 literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o new file mode 100644 index 0000000000000000000000000000000000000000..0536c98f758f474ffaa2b85f32edec64cd985818 GIT binary patch literal 3360 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 E0PisV9RL6T literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/interp.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/interp.c.o new file mode 100644 index 0000000000000000000000000000000000000000..1405470e35457f2c3a6774f2a3c0dc187021aa1f GIT binary patch literal 1712 zcmb<-^>JflWMqH=Mg|QA1doB?2Mbt+)dWmwFmN+)F$ipB^Pc0D;Nt8Q;po7?=*;ZJ z;_?6czyAVz54bt}|E~{L%D})-u$7g8hv76k)0M^SELRHlGAM#n{dmr(sKEeYeSI#l zl@-+_40F&`FhNzo>>+Fia|U;UbB1?9b4GW<;f&J>%$eMYhqJsBnX|hS3*5Ogm=nA+ zoD;e;niEcE98TcQWKQ(XJe<^>$(&r^e!$HqF)vjivsfW9rzkZsrBWd|CowZOHHCq} z-PzenLBr70%2L<Jz|c~+&_vguG^sSNq|{JT!BWpi&rks*ZfIa+s-RJnnv<GXoT{l1 z?HJ^%pIDTuYpI)5l$e*Cp-_}smRX#cpQm7CZf<I68Oz|P&A`Brn3|ZB$-t<{z`($2 z7Od;bz{bPw%gHFjBEl%jD9$XwD9I?rD2E(T&_G8PVqy6BA1Vx{m{DSufq|KU87vMX zm>D3Ejo`B~aKSiWnw5bUOv4C9u)GY6%fJYh*FfTf^rs;4LHcu$_#pWfBtA&K2Z>(` zWrO_1$iM=&4=TjKfZ<*?gcJkFf9wnb3=CjjgWM#<z{sG4qyi*o%D}*&$-n>>2g&;| zFfe!{@e|P0=QA)c<T5ZYC@?TEfYi64$xmTmVCY5Czm|c4VLbx_gB(=-P6h^svq*e~ z%)FA+q5{2S29*>Bl@cg79-PeLa}x7X88XVDy!@j0#Ny)AA}osHa}$fRVR}pRu<1_D zNlh$*DFGQApIHnsI5h=i2NDnBq<Ca=P%J1;EK7x%RFqm=l3$d{Ai}`Fz$FX`7baE) z1{DSd1|}8;1}l)b5Cek?l#T(>Vhju!Q29C#UxI<51InKV;)^mctbo!Cdc~EwC5cH4 zdc`G05IO_KDoV}KD@m;=VbDuSEJ<Y0ODZmA&@0LZaX_jK^-LJ_lJj$OQ}ap~^c;hH z^%6@;iZYW*OHzxGVhul29-4k&DGO8%zCqFg%Q4an3=EtM3=9rXIS&>Fh6n}*1`eox zkU9`s70QR@JOxm~hUx)PFfOPN0I5e-2a`iqX8<+N2qXwfmy8Sy5>PgX0@(}FXAe~e zQV$ZhU}Rv30x_T%qy~gN!1;!u04mHdiIIUp2gZS#0pfzxGJzOSe1MUG0fa$eAOy{s np!@~m!~6hJ+Q7`fa00}DVvso?rXa*#5EG0SK*JBrL9!PBc-Rh- literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/irq.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/irq.c.o new file mode 100644 index 0000000000000000000000000000000000000000..374d8d0d7cbc2142f33555e8e92a99dba4e56b75 GIT binary patch literal 5308 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 If=QS<0BCN{4gdfE literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o new file mode 100644 index 0000000000000000000000000000000000000000..1e677504939b1dac1f8ae411e33ab03042aaafb6 GIT binary patch literal 936 zcmb<-^>JflWMqH=Mg|QA1doBife9?bY67M-7&sX?z$^w7RS-oG31$cdCjWy;hOHhM zjD~$~4DJPPoED6p9qtT!K@yIN3=9m3sfkIM42<Fo3=FK!`9&qE6}r9#+6-(w?7p1H z4gqOE!^|jdU|?WoKz0X+&w{3ciGc-V58RxO|3w)X7!2TiCa`)JBtD$U05Xr2K>|rY zfPo3D7p5P?_hn#Uu!5=q@w1_95G4R2R8ko7QY%X0i*xcz;`2&#lTwQqR7w~!iwfg2 z67y1WQj6k~GZHiNzzT}7h^J*16+^URkt|Bh%`Z!hFG<YI0m~+)q<}f`CHe7bMX9Or zIhn;JAZLL5$i&0Iz@S%LnOl;W#GqGPQUswhV62kViV_CBqSPF{l*E!m2EC->Vg^0O zAYZ-2l9Hm#q|%bqVvtcpVQB_PieZDQhNLGbhk*eebE;5vuv7$6=YdcLjz16=lyo>5 z7#JKt90mr4AB+s(lnF8)lnOxc3`(im3=nacc{Nb=FbbB$Kyk>-z)%1a2dPtnaiDGj zaY5=q=7ZQEynum$;Q|8#13Lo)1IRrfdqMFGV#DkNsViV)U}yy~pcrHhh$#q8S0EM? MGa>v05`n1$0MQ&{K>z>% literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/pio.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/pio.c.o new file mode 100644 index 0000000000000000000000000000000000000000..bc8966ce5f78afd923c2824d4a09fa3fc13520a1 GIT binary patch literal 4872 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 aB#j_*K;od`D`a&i1Q-|+KoU?4QwIQ4Z#aDb literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/pll.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/pll.c.o new file mode 100644 index 0000000000000000000000000000000000000000..fd364967f58023107a389bc92a54c52ed68e25c6 GIT binary patch literal 1764 zcmb<-^>JflWMqH=Mg|QA1doA%g%vErY67M-7<d@C89r=1=f<#=g@KP@qMJMekHY`& z|NgTwI5SF1&15_&b&`QoqLb0X4J69MAYe5^IhtXXlf{i{IW}$U8*H-~t=Y8AZ?Mgt z?__n^+f9mdm6Oe7dlt6YvdsF<${7sW*0+_tA4vo|ML7mJH7G|jN;%ANOLCF-mP!C) z&)y7ShSko$FRCRhNKleJpgfyV*jZ6YDnTiOLF>=0=LsB2QVA@3Cc1stE9x!gC8j9m z0dk3`x3HI_qA-{(>@DCWuP6X!3wrZ<DJk-T*-9Dq%EAtto%UT^oFUCB&D-p>^Wx)- z?avt;{_baZz~I2}fx&^{0D}WKC>R(RWEdD2QWzK*HZU+SoM2#J&{cL$C~!aEmX?%~ zS*BoTt6*rRpr)n(;o8_L7#kTd=x5~Trs^l=R_YfN<!7ZPmlW%l=4I+9=jRsa7FQPQ zW@hRq7G)>q<!7eomn0Tv8|oKiCg<yCBo?KVCl;mZ7v$vVB{MKEXcXiZm&B)JmKlOA z0@;HQv9VP!*8~Z{RT*KZGExAm0{I1|5iA7b7&0&vrKZK_W>kR`YLq4C$EOvg7Aoi~ z7@BD^FcjqE#AoJZmM}25J3Ct`Xc(GWS?U@Y7+UHUn&=voCY9!ulp1O(Sn3(+87hFp z4GoM;6*P)cb5awFQ#BQ$9fN%J6N_?nEp?NM67!NX6pB*IGK(|w^AwEC%}p&WV;LN^ z85kH6QxlUi85k8A7#LX1f^~fv*m&4|IT?jmL>NUG#hE1-B^jj{<&aY>$VUvQX_(>T ze~2iAWJZx?U|?oohDbn3W(F203qmn7urjbim{5|HfeXrlP>f*t4-gIm$aavt1l(D0 z23Q3%0~=U9m;)x*7<j=n0|O^mHye}(p_tKBGc#~7NJFH+qyPg0gC<xX0|UrTAqGYU zBd`pF0Lg<Att2A@1IT2MJSYP7k{MJ|7*t9a;^Wgw^OED^^-N3*EEwYB!GRuMnwgSW z22ux!==k`=;^Nez60lmZa7rp91%S-w;%8t`V_;wa(V+amCCI?A2gDbI<P8x23X~5D zekN811{OvJ1|}{B1`ZI-%D}(_r3Ik02$W{fE3V8fNlaqUD=sO5&>1jRQEHA}Noqw2 zgI-EvNg{(@QgJbZUQs@X15$0MX9D9g=q2ap=BDPAFz7i3`RXN>loVwqm6oIyLjs8i zQXU${pfCg}2bGBmNKp$*HK4cw#Um)pLF!ys7#I>5U~$U;PF)-f3=FDJ^I)kj1j#Ir zJ{T924?yY(sWX6@2a9`<d5=K`K{3dEAT#Zu>X@M77EBPgLAhY}f!OX)bs%#=d`Bh* zhA0pNia}<9Z~y}+4>1%#g&AfuF)--BI8ZY{T##Crogn@RCI$urMh0+R;%9(_3n(pt k!VczFkh&kt3=G~N1{8zL0Wk$3_JWvTyaXD~U=EVK0DoW>s{jB1 literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o new file mode 100644 index 0000000000000000000000000000000000000000..31b21d9e3e1dd15c1078b90517426bd70727fcfa GIT binary patch literal 2776 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 W2gC%GAIR!va4;|=fFz(8rVap}XaiyZ literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/spi.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/spi.c.o new file mode 100644 index 0000000000000000000000000000000000000000..74c6d31d0b2f6fe29cf3157214e8b3cb5d4d932f GIT binary patch literal 2864 zcmb<-^>JflWMqH=Mg|QA1doAX0|!`!)dWmwFbFX4Gcd^>P@c^w<;<ign83uKVkGR$ ztR$7d?mfpX!Nu7r!qLHrfu%utHWP@?<Smg<;C{f3!Qsz-h6fA|AGTg|^LKM|JFvBB zL!%on1DnGC@BjWcxV`7iV_MC-iit_F$&Epw#f{P6zX9`uNs`r$jZPdFco>)r8MIk1 zCcA#U807l-Cc^_B1~n!#=?3+B2FB@(_J#}&ZXk13I5FQalV;Taa*=Vmx0_6&R0iWr zZ#ikEV2A%oLQKLA4GIp7UTy-;%n6Ck5FJb#WcEyOo9VX5?Ze)Jtt<?p-iIZkoPr&r zoupYBlqNAvaZ7d)^b$@0V~?f`S%#_3zb`5<fNWFBU{?-yIIkq-(4ZX6sO&72pv0hJ z)Bp|}W<|jS784m~CS~P>g1rd;GkjohU^u|wP_UIXlO+S<dqoybK1Rb#XONj7wI8+~ zb7R=b#vmc5aY2?rhJi(Sh8vUh95<c^3_9``zGpbQSv#>^*qk9;z-Ys0q|Bi0EOLQC z_rrzn8Od(ePTUu?890m=JF(yNmf@_}n80W&$-toV`og2<AoBimmOT@oeie}8y1>iO zC&8rnI78Cu&jsy@#R-h2>zuw{e4G)@&T^GSX>rEm3@NAI7X=_HVB(4(aY?7&7a5h6 zlM432+}q(MA*TX$@f<fMMUZ=Cpsqr7uOQUDmQI{d*RtMpcH5l5Xv?7U?!wdOAo3B^ zr7+V8hDHOU4HKTw=$7H^z#kgi7kC-M82TjP;nA@;fr*yk0e3Me;lbeU>};i=VQ6Y) zscU3lXsKIhqH9o^RGL>(YN)ATsb{2Tr~nc-G%zw%&?rjHNlh$H)l`Uf4D!`aEXvij z)J-Z%%uCKtC`v8MEY8f&Q!p|&H?_2kWpLDHU|>j0O-#yUU{qvaU|=;1*7apz<6-yZ zWE5f%VH9N)XO>`;WRzl*LoOn~B?Gbm3&Y3%U_mIsj8dX7FfcPPLuDWoGXo0)JA?@( z85y`37#JXB4oHX*EN=s1f-zJcZYf0G1&I$<1|^soSi$<CT#(NYOa_p9*wEzJ(B#?C z<WXJA%)o&r4=FTZhA=a5qRDf@q`)*Y0~eY+$oF6=Fu}~g4W?lPGXoC;F9QQOR6$`P z#K6cP0h454U=UznU{GUVV6bIiV3@<ezyOjrN0WD9U|_h(z`&3LmG@;}U~pw*V330H z<DllJfcdNpWl+8kn9s)03FU*-2{EuU%!cwI>Nyy;L-~GS^_&c6pnQmWE(V6;f=s<+ z29**9l@t&=J|#6XFSCRpJ|3I^<4ZGBGRwdc#i=FnNr|N?MTsS;49Pk9$=UJgsU`6l zRbW}Lrs9H3uozq!NT9qZvm`aXC^a!9J_)2NGcO&i10s$hghP>`8Cbia85RT31wlq2 zi-G*jCC$Jvje&uIOOk=%1e9iBWMJTuVqowA(b5bI5g=NUfq_A<xH7jSF^NI1xTFX| zXTVrRsX2NjsTCy*dMSw|i41y4#l;MIC7HRY@ySJ*C7H>IIeNG}j8hrh|5#Lj{DSZ@ z76srS#1cAqloGNJIqdY3^K)}k^GX=>9D{uI5=%;oGLuS6Qj3w2FhQm~G`+!cGN>#` zfR_&p3@lI+q!}0(K)KNY%8y`YU@%}{fafoeI#6y_g_;K|xuzhQ1=0%Rf{IX(dP3?z zc7XK2+y^obly^X8fiM$@U|?VfhuRBM_k)pv0h9-!(hM+lm1yc*m>3v9c@16NEHrhC zm>3wa*?SaC9UC(P11L?SoA(k;T?jLFdwCck<rT=^ATu^GGcZJf7*Grf3lJ7%1eM1O z1yErI9u@`$9T*2{7l;c|3-ddOZ^6RA;K0Pdz{kJ<E(<~N1}X<ZaSMwJkh%&s28IV9 a1{8zL0Wk%^^#F(k!5!=j45~0mBzplE<VMZ_ literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/sync.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/sync.c.o new file mode 100644 index 0000000000000000000000000000000000000000..96e609caa0331010d9eacd4066810c6df09b3263 GIT binary patch literal 2272 zcmb<-^>JflWMqH=Mg|QA1doA%fgLQvY67M-7<d@C8Cbj-6j{9Xe~#~GIy~9w*Tn+& z18xkA3>O+087>HHmDk|7!R|fBEy1OM0i=dOnK?mVFS9p`m!u+#$N%sD{yQ)*K#XHx zV31*8U|{o>sBo6Ky-8e~=?1fxZ~@Z;CT{^HsRFRM3=9kcTNxRcyqLjy1@<0rO98uu zfuUe4iyZd_231Bi)(094Ad?wQQ#hC|s5$+*@a=iQUXVUk@52(aA?{F;N<f$acf;1^ z4U8ZkO_o=dP=d%aZ(!Kl0<{BV1|!sFkdOca14B-Ja&~-PX|95ef?ud_d~krLU%ZdM zvv)891A~4>er~FMVs52=K~a8IYH~@jeraB&esX?pfo^eSv2JFjeqvE}VqSh`ihfCA zakim;L1uEkenw(ZN_k>Ys(x{0Ub0>?14D2@W**2M1=SRV%wmPaoTAjkluCu<oW#uB z)D#8=zkG#asFGrZ#G+J%#InT9oW!J@R0al+L_A1yd}dx|2?K+>v$K_ghM}pIrLK{I zp`~u2iLOCuQfXdEsiCHVrJj+Vp#n(U(7?!4L8B-&CpED+RZ}6_G00axu_#y9Qa7n6 zF)ukop(wR1vp6$9Pr=CC+|<%Cmcdb*fq@}0H8ClZfl-lxfq~U5Sl5?<jfdTrlTnC8 zgi(}HoLPcVl2M9L4kb;20+N9NC7rP_eEbg;22;!^vJ4E&49sA07{ScI!oUIJfN4es zZUzPh5ilD>pxVgHzzUWJ$v`kGSU)KJLHH2;4iFC5bs+NtkoX|;bCCET`2r+9NWKAy z50dXd;)CRmAn`%+XOQ?H`6ozxko+4YK1lut5+BZF0EG`5n*Z1s_@D~-!M<T*@Q3n2 zA;ZYPjHaH2;V)F41*{%KLIuF)Lka?z2r~l*IPZeY0)?Rv10#bj0|SFB10-{U_%<-b zpghdLz~IHez!1p5z@WguzyOj@Wnf?^WME*BfbvVx)PusV6G{DC1_p+e3=9k^Q1$E4 z)bC?pU^t7U{wkXM2L=X)w@|l$>}Lfz9;ybEuNk13Po;!GC50hAKCLt_IX+&`#Kgb^ zk*A8|i&BeIOArE(Oco!XSX`W1R07t-ke6Cf5?@?Wlv$9P5|7A^d8N5X`oMXaA)`DV z%!tn~f*OIYBtAE>I2%c@G!Lu+p))xrHL(au0a!Y|G_SNcH3gvx!jDfY%Fm52O3X`7 zMbeR33~>ZRJra)r6o*{$3=A#|3=B-{3=AG1T9kpo2Sl?oFo5y{6Eg!t1p@;Eml6X5 zDE))ffyz%N76yiCAaO+ohCLu!m4V>|NFNIW!yOP`oq++A-a+bLK*c|S#5EZhK<ON$ zpFyv<GPfi#i9xTpqzFQ1z*t48IeI0j6(tOMDTyVC40=h$#SD5y`5+ERwV|E~jLV>x zoS&PUnpeW0=NROxmsnC#l$lgol3EOneZrJHI8QJzutAlADzHCLHi&}d7HI|s22KVB z23R?wzy=8ukQgYrfz*NWwJOv+SgB^fh*}<k)Pl?fm9QZ7Fm)!33=AMMKyn}qV;ext zGXe>M@*pDv!+a<kM1j<S%(RE9V*&{>Ffd$UWMBZ54^S@LY<H+Skhvha$BYaNQ6L5s zgUkY9Q2EHrzyL1>ZJ8Jtbf9WL6i5w>hS>??=P)raEMQ__;DVMJAoqdtASj$*eg&!H gVP#+th8Y5N6G&VTTqc275WIkmfgu6H1d}i=09jIFuK)l5 literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/timer.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/timer.c.o new file mode 100644 index 0000000000000000000000000000000000000000..ed72b89accd127196bc511367d3618783947e840 GIT binary patch literal 3688 zcmb<-^>JflWMqH=Mg|QA1doBCg9j|bY67M-7<d@C8GdYi|CzPfUP;(Nf<eII{bzx; zqHU6%Tp0{ne=h9*9N*8V$ji{`Am$aCEaoLrq0VsJfkDaAiT8q_S9n$<gP>QCL{P?b zCxOd+p3MxWC89FdIP(;M^l^AIC`u-@eHQ3o&|<hS!TrbH*$ix6Q{0kWq%x!u7?j>T zKj5ap$Z&zdfz<)zoD24>4gy;l8JIkny;KbTfB*MiU@u4<gdyTE(F1O{#F)J!vu0#* zF+^r{IsLj=;0`jI!#g@_rW5l`Hm~5UnNELh%yeSA$m~5UtI3J!QdHJNr=J%f>I$~9 zFz_;f>}6u$W>8?zWN46xbnJFwzrlF1$%*9#gC^5$kZi$TW^ZOMdqrjs5buDS3dk`G z3=AMo2yA80V86}gJu^#+VRBZqRI}6X%L02D6hSI~JwM<Ea*x1PF7Fvm>^GblrKM&w zNJtz2+bOX3m(nB#24#p^kovFB54g=fqQC%h7azm>&jPJQ+hn|iGZ?fX@xq`ddqDxL zSHip5iTi>i1BAz@2&I)5I|z9RCoEwQ@|KZIO9aIUk2iyoR6^@#fsTT`Jl=~KW=Sw8 z1|~8ZE_9Hp=yH}SVD*IPWq_LT1QtgO3=9?tka+sA^`2X}o1fc(txX$P7{nN485kym z+{-wv*NN$d-^Dg3pPTPL3v?H4(?D{qnzvNNBsWI&<qlTPmo`mwlPXa13Qty)?PTZ+ zSjZ49!7wv2K{(6WN$8?*4ugWV6FWHViG$tS{aK(x`GL5XgtvszK}B(JxPxr$brQb8 zbdhm(vlIV~i>~|^_`Kzl;*;eSSR5FY7d!BI2`6xP2f0ZV$XVQY&Y*DZIitdr=Zp$W z8)WuOberY2*zLn!aQXwqA2bb4U|?X_!oa}L@QC4oz}EMl1zL)>aUuDFQMuWH-Ag!$ z-IJ?gmNOSPoil;m*z#GRLjYnP)GUw0qLlK)qEv;%oW!DB1=SRV#GInk#FR>f<ebFJ z+|(2X28Pn&_~OjG<ka}2{QMFH8(RfWzYsH%cwff|1_u3%{M=Oi#N0~#f};Ga)Z~(4 z{nETl{p9@I0^Q=uV%^M4{luc|#Jv2>6#bIK;%r0xg3RQ6{S2tJ`g(f$S*3Z|`X!YG zsl|F33?-SlsYUS_<+^s6c_qaPY6^y>3N|(n*Tv_R=7NHOQaizR=p{3h7NjJWq{gFo z4`e>faq-|Vi7!qqi7!bkN>43eU~qSKwo=eAG_|tSH8L=?)Gaj8H7HFg%_}K2)Ksw4 zGtx6u0ErtK7?~<)6s6{*CKjh^DnvU5`RXSY<?34MCKV;-C1)rUrIuwDXXfWA7@3=! zT3W_3IBGL6FeIiXCS@`(Dl#xIu$l$y`ZBQbu={c{3bBYViZY5bOE5|@N-@eI7nLCA zqLiI13?Ki41)&5piYx;IGXpbJ20}42urP2!m{5|D0aW~gEa_ojU|?ckWKd^dV5ou0 zGGLg;3YLdUGq8fq1L=i`LG;goa2P=PLG~>{;)BcwrDuo`BUt|q2nVblB!2>l57K`I zi4T&$gTx2PKS1Jx<XJ!-0*gV+=Ro3v<Q<UsApJf_e2{z&5+5XAfW!yM&q3mY<QE|E zLGlVrV9UY&0m&O6@j>!`koX{Z33xO?!p{eZ4>JiwGc&NEg+CjE7D$4Dfk6~(8ykZK z0|SEu0|SE;ln=5Gs)T`ofrSBFQGw+^vBSa;2Nq>u5CDs@Fk~<=Fo-Z9_%|3B7(n$2 z$cu~&EC{0*K<SGejnBbQ!N9=K3w47K10$FXQv|YO0RscWQm7pu`Ry=CsGY|c7#MaU z$s^(x;-+^D3=C(H<bN_SFg#>nV9;P-U;vrN$;iL}!Y)w07|7vJJ3#iUFfuUsGD7?W zQg4DL@5so&P{_!@U;x$c$H>62kdc7_R1SmGXQ8QYMB~p!<F7{J?_*?OFl1t2cmXy4 z1|tK5Br~M02AK~j6!nrBR7x1o%BIYs!uX8Dyp){OA_kQdhWPlj(!AvOcs&zCOJgLS zsi`Hzkoe@poSdY@<m}@3g4Dc}%)E34NYNIbk;wol?%*oW?E+T_3>oF|U`Bj?QG8-? zacU8Un@aP*3J@xjb5awF&`rxMhM1F@0#b;?1C`F8GTF?8A*r;uGQK=9vn0MWuOu@E znP1Eh549fbWfZA+V<V6(s4$Js$t^|Jms^bP4p8Y1^D+Y{IMY*0;>$`BlX6nwAqx@) zsY|U$&M7U<EW;v`2hxxNHlQdqHy=p}T8x3rfdo0aOOg}wl2daS7#LbW<t_^Y!!!m4 z1}+^222k0_#KOP;$|p=53=C^P;(Cxa07(1*h;P8a04gIvd_G171};Me1|1M>#K2$$ zqD>eWKxG_AzY8M+1Cs&+g9nJ_U|>iA$s02;G=XSS28IbB+Kho=3WzplU;w30E=vZ6 zGa$Yd1H%;%ZOy<Sz{J47Wy8QA0ivxL7*v=T7?{`?7<5213j>1-NZgQtVH1cpVPMz> zq7A`?1Ov#O9Lx}R@PKFz1_l8r9Ri|3#fn~WWo}7g5`$iGNfCt3fU$~FbM#75D@qvj zQW8rN8T68hiy8Ea@<AMsYC}B}7?(jWIX^cyHLrw0&oRhXFR`SgC^M<FB()e?0uZL; z!Q~(W0~=H+s9zERFONYbC`3Y<fdO21f!f$05e04r22ec%D$hY#9^@qs1_lOIsCh6W zdSDEYCa4^U32G96)Wf7f>Oguyav%&c4@85?C6M_>APxfq14!K;C>un9)Pdyfp=QIX znhq8Q2ACe0IuPv+RR=N`#NWljzz_vuKrzTH5DtJuWdT%}L4=ioK?lZxngQa1)WYlp z@f}zh7(OsFFmN$2Fo66Bav!K1289#MuOM{>oD2-_K$<}uB=ZCz_CiG&7&Leo7!u$- JP#p&0003k_=y(7C literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/uart.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/uart.c.o new file mode 100644 index 0000000000000000000000000000000000000000..3a018033da182cc5856fd00990ea680732a99533 GIT binary patch literal 1636 zcmb<-^>JflWMqH=Mg|QA1doB?3JX|<)dWmwFmN$&GO&5iaZ7M<c8YLxaB5J#%`D*n z;xl<mBow$aH2m4m@PNUgU@Hp)F9Vyx|L_0)A7IdA0MW-d8C4ndxGwN|&vRnEQLilF zz-VB~;KsrDfI*GZH#KQll8#A(LIWd<GlQ~n0z_{E!%D_ZNs#V>z5o6*F#P||z)-N2 zm4OFpHiL%o1u5^>5>ZaUj?qpHN|%_09j3S?yNG!SCxEeMSB3<`1n1uu1!1ZfguEIQ zJsD;ODKcn)-SsjnLD}0OPf^lAhe5}rK`Dq)$yqRg%Ue6SL3uW#va^7aR06Z|>Xd@L z2i#!(WB9<}z;J-U0Te8Z%nS_Pax)!0oxUp1bY?XCZ^(iOAqFPzgF(=6VPIe|*vjrb zH%mZChM_rA%8B*D;;d-tZl@nN859^EFe(`AWpH41U~qSKwo=eAG_|tSH8L=?)Gaj8 zH7HFg%_}K2)Ksw4Gtx6u0ErtK7?~<)6s6{*CKjh^DnvU5`RXSY<?34MCKV;-C1)rU zrIuwDXXfWA7@3=!T3W_3IBGL6FeIiXCS@`(Dl#xIu$l$y`ZBQbu={c{3bBYViZY5b zOE5|@N-@eICjyWs85mH~1q;K+|4?Bt#f&1$z`)GF3>JqG%nU3H954=;W@O-IU|^5| zvq1zSSY8Fh1Y?MN1(*#YAo2|$CKyBH|A5&b0wOO0cQ-`d1c?u_-v)^fvOfli4>ARY znHgANOfb#Nz{bD_4FixHg%}taq`)!|LV$sRL4$#TL6w1lA%=m00VHn)kphz-d3Oc| zhDHVkhAB|_Kn4Z|Q1$|0L55HNGZ+{cL>VFGfb@g>YRkyL0JD#wG_j~eFPTB5gh3?* z%!yA)&CJUzVTg|hM{0a&W=dumM5Z{kBt9vzG^Hr9B$XjKCqFqmK0UQ0KBEdE4b}!S zFFrXVu_(SIKRzcjFEu_bH5F<yNPkIDVqS4hVo7Rza#2niRAX^`QEFmJVp2|Oe0gR` zMrK}oX)yzX4g&)Nmk0v`sGQ&uVqgII1;j4`i3>3>bbx3P28J^rT9|=>hmnDSNsNKP z0!lOJ6<6k#BqlNF6_*r2=nNREC^bi~B(<W1K`$k-B#}WcskoRyFF8LqH#M(>LC-PB zS1+-oq$o3~v?R3{9N0t>^3eEXgQ^F)JprB`AaMhdl4f9F;ACKcWOfDy1`iepn;ohj z6n~(!1&Vu+c38@v0^)!SfMOUIlnFuV38^!Hnh&BuMu5zV0x_T%WF81xGJx_MLjhEn z;T<C+K45&18W0;qGl3XTEW^aWFoBT)obLpoX%Uo8L4Jj~4Wx7pGXukH5Ce)q=75+W SJ;>@hSQr>QK@w05QwIR#3j&e= literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o new file mode 100644 index 0000000000000000000000000000000000000000..fdf29ec10eae3f736971b0a774ea295dfc5bdda0 GIT binary patch literal 836 zcmb<-^>JflWMqH=Mg|QA1doB?4ur#M0#=~Gz{$YDz~U{P!N3^d@IhI^fyrAUp}_rs z8-oLz1496t1B1J>vz3B|p{bRnu91PErEZ~#u0d&1X<kXGp{9bRo{^rR0!ZA@z{pfV zqbM~eHL*BVQz6<h$X7qHC|B1~H>oHwFF8Y@D77rJI5R&_!N}a))Y3AR!BLxmfgv$9 zF)5RQQIUaxfz>Qn*O!5fhuxQxQHVu^QIt`fS%OiLQHoIx;%2amVFa=e3&Y3%FmVvg zjN)Sk24)5(kT4uGGcYr7z<D4BBLg=B1A_>N3C75#gY>h2MPURp11kd`0|VF=83qOh zArPyqC^cO#nL(w5K_!I&#ECCXEr~D7&nZbvPi0`xE3V8fNlaqUD=sO5&>1jRNoqw2 zgI-EvNg{(@QgJbZUUGhJZfaf$gPvoMuU=wFNl|7}X-R4^%zA>fG}LWuP?ey#2DuZ; zWq|nx6zU+KGD9T-pfrpE$${AF3=H7#BBV|SYOeuE69WSS$h;^h8$^N317TAJP?$0l zfW$y}6$1kUNH2&D!XPy;8ad`}FfcGIU|?WiXJBC9WMBaMLjcN#xecVRf{}qi9>joR Yn0bN_d!eEX4AU7I7+m2zNPL300Ll(gHUIzs literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o new file mode 100644 index 0000000000000000000000000000000000000000..f666f5119279b979da41a07e474a55e87645ce46 GIT binary patch literal 1724 zcmb<-^>JflWMqH=Mg|QA1doA1hZQWtY67M-7`PZX85)#lGcY?ddR<N`aA#;>bzt(A z%3$)2N+@tY;09I(7L&+eU~=FBi#4!12y7MiZcw_!DwQDSE#@Vaz@W)>LDc(!(j^wD z1O^Sxi$dNFN<wT>2?Be0p`xFkJ2Og4&1R60U|?)ej%JzR#BqtsTO#5A_kaJ{p=LdQ z&g#wPC6(~yIl~542Mz^Bhd=)r85kC@I)L2q|NnmmfvwEm%wD$=LAnI?9&iJ>SJ7~L zmcUkK1_1^huLhMTtRe{v+PoJSm4ux+y*PcYBy#%1IEW+#CQVLaP=x4X_GVDJmH7Sn z0XL96ATur>VBer?|HGfjdq#${+ziJ9n;>Dq<~=)uL4iS=?E;JUjZ7BrIc^Cq&Q1}I zuyDA4&SNTryR);Ef`*}~m8GtcfuW^tp^2_RX;NukNvWZxf~B63o}mIr+|a<tR6(OC zH77N(I8{?2+A+viKd~rR*HSmBC^0WNL!l_OEVDQ>KTpBP+}zaCGM2$nn}LBLF*PwM zlYvo@fq{Y5ELhi<fsKdVmy=P5MTAk5QJh(VQIb)LQ4TqhL4n1<fD-R43?KhPg~1dv ziYx;IGXpbN97ZrRurTnzIAEHQfuDf^NsJN9768kE2#CB4hzZ6Jc@;1lL_p*XKuj=( z$V1X0NB|-~1;hkni2NEb8$>|l_kfsS43R$qW`hWb{2ve#j3M$o@Nj|1OCa$<{*yuC zgZyWK#s?b(CRiARz%&B`3pi{+BvgO_6n>D51ruRrU}KO4t7BjQg^>^gBZDCW1A`y~ z1A_<y0|SWf$iTp$%7Bm$VPIe|Wnf^afXat5FfgoTU|^7d@>3ZY7>+V9FnB=ur3?%V zyo?C_Jq!#CvWyH2pfCrS&rqINlAMu}pRSk8pi;u1lERRapO_L~mY7qT3YUv7E=epZ zi7&}a&PIrp7NjJWAgM`DEs0OgFU>1qh=-XOpPHALl!K(EC^acRzXV}Ma$;$5YDzr1 zFhpBCsw@KoDBUozFfi0HFfedQF)%D)U|<08w}ALE3=D6eG=pAoWo}7g5`$iGNfCt3 zfU$~FbM#75D@qvjQW8rN8T68hiy8Ei^K)}k^GX=>9D{uI5=%;oGLuS6Qj1~nL<}tt zjYl@9Vo;iOfTt5kdH_jDGcYi4GB7ZJ3o8Z&h8-*n3>pj!4D3+-pcKOajdPH8SdJ?J zaX<z@F^mh!{2=wn>Of{dm4VYChz-h9AUz-�Qxd1!6!kNDhQ8!ReHt04mIIj*)>u z2gZTA5yS<lWdbpv_zx(JF)=WJ+#<;U@h>P%gZv6}8%QY+3j@O{5Ce)q=75->G>@$A O0Sg0zCrAQ{Vd?;_1^d1L literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o new file mode 100644 index 0000000000000000000000000000000000000000..2292fd4898508fa6061c44712023b679202c7d98 GIT binary patch literal 1024 zcmb<-^>JflWMqH=Mg|QA1doAX1`}9@)dWmwFmN((FtB;AQW9d6O3+ujmB8Z7>Lr!H z<Q1I3p#A4ofjff(lLJEnlLNzsUkt3C+!?H1QVy)%!p__YTnu0}w;^i&^E3QscyN({ z*_*{{R)Q2n4yr#fH$R!d-PzenLBr70%2L<Jz|c~+&_vguG^sSNq|{JT!BWpi&rks* zZfIa+s-RJnnv<GXoT{l1?HJ^%pIDTuYpI)5l$e*Cp-_}smRX#cpQm7CZf<I68Oz|P z&A`Brn3|ZB$-t<{z`($27Od;bz{bPw%gHFjBEl%jD9$XwD9I?rD2E&nVE;3qgbfSB z$Nx}aFvW}_%fP_Q00}&>Bm;=g%)kNTfN4esZUzPh8890}FoNYZKuj=($UA`9AOa%q z17d<PL_P-01`((ZW@cak3BoZm11kd`1H=y?JA@b*86+4O7&I9e7*rS-7(jeg1_lOS z1_rP=h|f@wU!1I$%%D=jpppXS#AoJZmOxl3nZ=1oIjK-ieo<~>UI_z(UU6k^Nn#R% zUU5kggwBAmN>VFI81zySOA;CMl8TEN^pf*)b5rw581x*2eDxAbN{TX*N=s6U;Z7#V zkcRq)4XP59PE(+45CsbXP)vhDhZ!Wuz`!sAO2a6S9Eh#XzyOW|Lh5v&_8NdRLCuST zvOyHcJP<Yo$2&s-NDPEOF)%QI^n%zR3{nH5kyDETNP>}pft`VYftP^+9FqbJ3=EtQ j^FUg_Sb>Rw!3fNP5Fl+JmLQtCASMO|SC9l0!_)x)bv<wL literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/lock_core.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/lock_core.c.o new file mode 100644 index 0000000000000000000000000000000000000000..ecee4e3cae25ae4168eaa034e1dd381170dd73f1 GIT binary patch literal 824 zcmb<-^>JflWMqH=Mg|QA1doB?0))eA0#=~Gz{$YDz~nv0EzzZufia=L-GPC@gu&g} z*-Amf(A3IO*T}%oQn%1V*Pt}1G_R!8P*cHD&q&Wu0VHl{U}UPGQIwjKnpm8wsSxcL z<g1@pl&fp0n^csTmz<$clv<WqoSC1eU}SD?YH1nE;Hb^Oz>t`ln3T!DsK~&;z-kt( z>&w8#!|uz;D8wSdD9R|#EWs$rD8(oTaVOZ7FalYKh2i6Wm^g@LM)4&B12Y2?NEnWp z8JHP(;XDw7kwJigfq@6a1Y=~=LHb$1qA-G)ft5j+fdOm_NS_dhm6M;G9iN<El&Y7^ zpi;u1lEMHM$;`_vVPMcJuFNe-Ok&V0E-8Z088B8!YDEcyUP@v~B7<I1aWR8la(-@Z zYF-J0o@0=&USdf}QD#zUNoq07aw2GHsN2|}YC-V}awn9_0P_tf)ImOFhDx|VX&42P z1F_W^7#KJhK;Z!5F)-j#rvtUu0HO@6E(*#9Q6Td`*c4(`0Z0sl=P@uafb@dcAPiCi zqmg6o3<Cqh0tN;Kb_NCpP6h_BKS2Hhv0;7y>C0hcV2}kdpcrPJAjDp%C<8+$BLjmg KoCk?d5ElRy2u(i# literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/multicore.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/multicore.c.o new file mode 100644 index 0000000000000000000000000000000000000000..a4e16fdb46a5ca7da035341483552eeea60b9aa8 GIT binary patch literal 7624 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 a34qK2i3>vP1u?;xMVf(OBA5jsVCn!>rNhqv literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/mutex.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/mutex.c.o new file mode 100644 index 0000000000000000000000000000000000000000..4f49c4220f5e5554e704a8b4fa0a651de1c49146 GIT binary patch literal 6000 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 BqgVg{ literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/pheap.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/pheap.c.o new file mode 100644 index 0000000000000000000000000000000000000000..7a703860ed0b504062868203373c593b68ab4a41 GIT binary patch literal 3956 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 F001O+MDYLs literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o new file mode 100644 index 0000000000000000000000000000000000000000..a337603fba4dbaa4797d7bee4f2d676a238eb3d7 GIT binary patch literal 3256 zcmb<-^>JflWMqH=Mg|QA1doA%fg3EtY67M-7`Pd@7?{1KG8mO7J6uo_Vw;>;;0~7B z+Pop#?WQb80h@Oek}RVVv&aAM|Nb*?VAu;*$H3wsu$7B})jKkSQMudUf+8oIcOoML z6Ihi1T+N5A$J`jUy2~(E#LB(h#GtKop<a#qfhB_k!~gI1|L<_&e*iL-(e~}8|GFX< zEGqtg-}isF%nY}h3UdZ^2Q{ac7gIL5yD{jzz2)r2Xf9FlU*p-uuLe(^v+SAR_F*r? z^rj7L3>|Kw4Dt+G3je>)`_H(BL0P##!Yr*|ae;*C(*hPn1&06MSNzvj`2W5Czq4C% z!E>nCy#G21|G&5XXW9TUj|C}2f)fke54eH+TCi2YQvvKR1s_Jm1sPx$D?R|z3YlP@ zsy2gC=46KpYG!Q3NeN&XZHA<b$qvOy3Q(RBm{*+m|GV>li0aLWtO_9A%9(Q=N)x$! zK(0*xufSkq@c(=Ae+32~ga6;-|ASN%>}8PN&cMLH;sA0F2p4Q^+Q7oV%OJ+!ufcd@ zz9!>MrVRyq|9=<#|6tS0P2MuMH#x~%+VuZ>-hX4REH~l8utFw9#ufj+tAfpY@f;Fz zEgM)Fco@VO<QceDOLxq0^VhJuF<;Z>MzchKHq+ezB_XM4n;uIp&}O>3K;2$?|EB-n zpZ<HX>ER}Cx!aPrH#x~ok_6dd^PhROlbaBiRDqLQRDmE;x(QBX&=<bIIE~kr=K+%v z^GXc{kZ%}mmTY3s`F4@fe*Y#0edY^{a~SmAU;O?YB*y}c36LMb{@vQVfnmY|<p3oH zMFwzafl}a)t?XdG%P{=^KIh+$O)obk%bk|Ey{Sm9Ndn}e&;Jw|3Y|R}*k=6yzUCju z+#h=dwz4q%|K9p9L9WG7fkDCG|MyO?jKJOxTkpAryZO1fx;@z1y@7QC55pw48Ezu0 zWjh$BimsOHV4C*-d*(l9H|YunZTAbtTr88dxtJ$E-o!SU)%f-%_Q?v$v)%L`u*}vj zV49s>z@+Hm_Wyg~zj&KHPQn+Q-J~jl-J~UFOZ+vKuGs7l<tF9y@&fa0?E*%)+US2T zo->-U=`mekP!aHd`kZw(tMTkjtdkj)=eRv^f!ND^A=^!&_K?h_P3*JTX8!-)^p8P} zbL~pEr{GZI-e9w5g4;~DMQ*FzKJ0Dz_y0dH0|Nsm0|NsWH0!f7Ffi~lHcS(2_`i{v zQAc+Zh}g`=sH4lMqq~KX{Q&bKrj~<@M-MS^F&t*<(mKM__3kJmp8|s!BZn0uD+99@ z3j+g#zcz@R4@!v-1ej#lh0KjKbv0GBEg2Y@1s)18%d)fS>1gWe>6zOzFfa)SH*je- zq%gQUJ6kDe7@AsH>KYjsTIv>>=o*wJmFAU{8fq$7>KW-7DuBcd4U9|`G>TGlQWJ|) zH5H;AgM9T9i*j`>b(4w`^O7?Zic-rmi!<}{6pYNxO)V{B863447#I>$6O%F-7!?^9 z7+B4Mb$uDwc-Vb88HHFx7)2SynI#w{8KoHIP|89`;zB7OSr|V4hYEu!W)xWl24)6k zusDohW?%t_EsW2=z{mg!bC5kE3=9lR42%rY3=9kca0QHD^&mNj5F>*e0|SF70|SE& zl6nh>Bm>AiP~5>YJOd+x5d#B*BLf423X=L5H1#P+d}js*hExUyhB&DDSOx}$!wd`z z0Z=~3eJUUagY`h%r-8%=$*)1;gWR(Ri4T&W!vxk0ckdD;K1lusJlNnG!5WwuSi#`~ z=70%ShEg!iz+eqFjg_H+fq}t>fdLw>tPI@@3=BRD3=E)HXT;DCw+L(sGXoo#h7rsR z><rUj9B90(MB{H_U|<ktWMB|uU|<kpU}QMNz`&r%$iOfK%0Gvu{yG}}B^v)T0|Uce zMg|5@9D>YaVPs(V%gDg60&1QlBLl-yCWL+3j0_CBnHU&Abu>u54I=}?dnN`3DX97Y zMg|5>W(I~UP<}Ea0|O5zFETJN2r@7;6fiO{a3Jw(pg|7Gvmp6)Mg|5D8-zjpNsN&6 z3F9*qCl{rr=IJFfsFW}ShnSlio5lyH=A<T<FsP)!1j36lOH!Tlb8{2(P{mvlOA=v< zTq{zOOX13VGK-PSD{)LoDM~Fa4$sU>$uDQf%*!l^PtHv#HbgLu5KLo+;)2Zha*(C* zNjdq+*_nCi48=LAsRi-5#W3qa^NJzPggV+YFS7)!4`et)dO>D>d~s??d|GK<a!F=> z9z+Bz2i4$Glvo~+S&^CpGtn(GCnqR1xg;?!Jtq}eFc=&}FcFYG&)mdxxDwC2vecpy z=lq=fBDm|oAr@Rx1ai4+fJ?luf3RnKfTte=h~w<zjbI1EnJ&(7W>9blm<@?5CT0c( z15mlHz`y`1D?t1(C?8Z7fcR}7z9ItyC~t%KdW;MVTq+C<79d)cfx!VvyMbsm28Jjo zodKm=K(rzQ!!i)9#K5qHk%0kZ&JGYQ!NBkhDqh0Gz`&)zz%T(sD={#D$^wwOO(4Do z1H%gttpw4_rNqE+jG2J}L^J3WSLT)^CNbz0mlQ$h3>d2@HAk-`wW5SUF9npI^pc8; z8T5+sA)Ms=+}zZ>5(YiTAYZ-2l9Hm#q|%bqVx(+GkSPx?TNvP_11PWEK`J^xc>!by zsO;iofaF~e{|P4p!wCjR{sLtykUCIaQ-zubGeUrcfdNs*L-HF)Kd8(CsfVdk0T}?2 zfMSrDASNhoL2Ott3Q|`Nl7M2EHc;Gy)PdB4q-L`)FhqeEPz;g-VNiX+%)n3p6=wL# z0;z9ce2^Lt8$`qG1o2f^85k6pA#Df+Xqf`4%RpfQ^8-ko3kL(kJdkD(2O1V2rXT~T T&IGX_cnuc=Lm-3+CSh6tAcMvi literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o new file mode 100644 index 0000000000000000000000000000000000000000..dc01e599dcf6e41f281ca81955aeff4a87805be9 GIT binary patch literal 1824 zcmb<-^>JflWMqH=Mg|QA1do9sfCVhWY67M-7=#!E83eWpdkcFBWz2FCz9{4^=oOSP z%Zcxzpf{h_q>NckoELe#8I+_F_&ol9|M#DnfkBZ$VTL=q51Y4g0=su|0=xI(1P%`d zMUX6mvT}mJ-g}K=A3(-y&Mw+pwJ-8=s1pN&11~d3h#@7vG$|)lp(wRDwM0SJPQl6F zKP1@Ihk=bDC?I&tmxW+O=!Cnovz3B|p{bRnu91PErEZ~#u0d&1X<kXGp{9bRo{^rR z0!ZA@z{pfVqbM~eHL*BVQz6<h$X7qHC|B1~H>oHwFF8Y@D77rJI5R&_!N}a))Y3AR z!BLxmfgv$9F)5RQQIUaxfz>Qn*O!5fhuxQxQHVu^QIt`fS%OiLQHoIxIS`@lLl$CT z`1l_x45pY-LY;wunE~Q|up|SB&%yw*5yod=U}R8X0Fev~84L^zObm<+RtyXb0dNJ# zwt@7sg5}}T46Fzy*nD<0d3H2;4m5cV23x2K9<Vz&pgai0%)o`Fo{Pa1BE<koQj82- zP#%P0X5c|n&ja@h#C#A5Q41oO8F)by95XZUF~q}p3=9Gc3=H{be1?L|<ox)g{QQ#Q z)SURT%*1#|>WT-aF1=(1l@bP!EKIm0u^>J<BQ-gjK_!JDK0YZk-q;jE7nBqkn=<4k zre`L{=j10RmSpDVF%;$J#;29$fkg7NOA8p1N{cJw%M&w8;!BGeG#D5dxWpM4+(5Jh z149TX&V(QiRAXac0EHeCG)S00UeznE%q>YwV$drtDT2@$Fji4&j$TP>MG1pmN@7VO zgI-c`F@qjRFf%W+BtEgID6x`3uP7fR3DRw-X9AIi2tn9MnR$stmGPN*Y598Dsi_5e zVE;k<rB|8<GAT1LC$lOwCB7&zR}amrddc~@xv6<240?`1zIurzB}JJ@r6sAw5dRQE z%7fDk0|OgWF{pe2rDG@;oJK%wX$A%cP6h@B2M~vWfgyvLfkA?Sfq@^YAC#6rVW$e^ z!*b0WsCpO$%MG9m3{p=>9mqX=;Culw0c0M?E(nhS>^>0R0L^_3%#gSQxet`XKx#nt zf!q&rgAvq#1q={>K)GP^K=Q#*e=tEMb}%q7fRY203swhW`=i<0fn+bpKA63rJOMHn z=HDX>5VwQO0AY|i5FL$X-UKA`K*<uM4rFc()O|4XPT+9gJg7QQ_<+p6!oa`~1!6!k z$W0);91_L_P+<l=Mg|5Q7zb(whzn8+3lk7OhLM3`0wW}!i$nbc%JZPK0&^Qk-5Vwb f29TRUY!C*S1EK{X_JWvTJcF5mVLO-wAz<nNBv#f< literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/pico_malloc.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/pico_malloc.c.o new file mode 100644 index 0000000000000000000000000000000000000000..064e971618386a6cf24a70683b8a5f7ca343f762 GIT binary patch literal 1352 zcmb<-^>JflWMqH=Mg|QA1doAX0y9{K)dWmwFmN+)F$ipBVfg?3-+u-TmJ2MB%-(aH z7;XscW%2-vfz>fE2yEpcLJdfVz+V5-5{3LUh1}HK{Gv(*26ty?D+LWhQ!7hdBLhQA z-9i&xgVLnZypmEwO$AFmBRxX}khr0Nk*R`4QEE<VVsWabLbPL$uYO`tuCAqSQc+@F za)v@tYFTD+W`3T6k-534rDZIGqc#HrLt<)TQYHhVA_D^ht68wFF9RD7yDulB5Q_+- zD5E&D1fwLQ6r&t+5P*GzEWpC>@jqA)N-(2@7y|<{10>L((hSTDEHEaRW@cbz;0Lo{ z1S^9Oj0vV0!SXU-Hi%#Z%d3ExU<{FW0JA{^MBW3$1Y=~^g51Lf7KIVa4D1Y|3=Cjb zgUl3SU}R8+Nir}n2rw`(7^3mb(fBS53=FCa3=A;+L1^*`3=9mO3=9k$3=9k)^K;PT z845C!^W$?9b8_;N^^zG>QW#W97~<p0ixLZ<q73ozMX8B7FkV4oUS={we0*?8Vsf@m zW^N{2c{11#m~uD|Y*boNYAQ?y%m&2-7e51o1Oo#DmjD9;D2$l|85k587#NsX85lG` z;=&9JHXvGnfdLf8AbF5~LGoT8aZupt6<6k#BqlNF6_*r2=nNREC^bi~B(<W1K`$k- zB#}WcskoRyuP7hH0jW0BGhxt6&d<$F%`0Kha}4s;ODriV%1kOPNi9YSCHzczX#Bxq z7L-2&khFmO3F1mKFfed3K>PvXe_&!@0HqU9yns>(NF9g`ic1h5mU3G_ijgo#4#Wjz zA&`1P>I|UnGXiO1U|;~5#|LGDD3HA%Gwq@3K<Yu_lNcBnqCgBN2B`sIkeitq7z&`m z3~v}17<6D9s2LzGNG%hH0mTxG3=9d3kT3w*53(1OzCmFE^8-j}1rq~91&9H~Aag)W WK?YF%0kI(1f|-FK0>T87Fm(XHU!NiX literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/platform.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/platform.c.o new file mode 100644 index 0000000000000000000000000000000000000000..69cbd86ae20f6aaca92a32f8944d62c1f49df6b9 GIT binary patch literal 1436 zcmb<-^>JflWMqH=Mg|QA1doAX4>MSX)dWmwFz_&NGcb8eWHhiJ;4g4L;Kp!(%|T#m zgYs=wi3}!2As%K{X<kmxZYSo8Oj_(08TbYEvU{_8DJimh{Qv&%Kf5=Jm$D)Yn0>%a zofB**m{4J0V8~!#V8~6(D@{vGE-5WaEmE+xRq%E63w3jJ4hao%4T=v6@B}H=&&bbB z)lbZ=)GsK?&q_@$Db_E|%hXTK&n?g`t}NEg%+yaT%1+G7&rH!TNi5Db)Gx?P&et!< zNi0drFUr+RW?*0_NGvJ=nIGU76cQg4U<5L^sKCg;#2`L7BeNjBEVZaOGe3`k!QI)} zN<qWW)XGxV$iUE2x6nk_pfss8ucXvaQ^8WtNY79KByMP6WU8Q1l$w*8Se&Y<5bYS` ztDjhut81y7RFs&PoS{&ZT9yeiQNhUE+|<%Cmcdb*fq@}0H8ClZfl-lxfq~U5Sl5?< zjfdTrlTnC8gi(}HoLPcVl2M9L4mm<V4rO3Ki6a(<kN=^<V2T+<mVtqp0TPK|Nd^#~ zg@Fgg0n>~O{0t08VyG4}Gq8f?!AijdD_E@nm<=Kz`aM8QFh<wUhNhp5K?tmlfk6c9 z7d9vlLNPP2Ll{t!nSp~r0j!RJ0c58T10#b00|SE~0|SE(0|Nty?*df|qCjdGkYZb< zgh3^RAwE8>G%q<mUeCnH(v+d7G%qhRFFig#FFvgxJ&^%h+{ec!78j=$m4G!eFff=g zFfeclF)%nmX^`Da><kP63=9lR+zbpMAex<lAp%M>=oMGymLw)I=oOa~LFfz^t0*-` zuOzjigh4MQu_Tc}FR8egL9Zwu!~v-`)H8u`8T69#b8}PkN*MGUgM9T8OG=6|lS)fc zi$Pu`3d=*o4i?Iwyc~n1lLg9_W?*0dWl0ApUx%3i9L^vyP>h1qaWF72s6x$yrK$-~ z^)L#g7Q_Z6aFBXJ>OgS`(gV(f3=9k)^D03GKrzT(ki0$AUM8qG4<jV~K)DPcbs)Ao zR2|4%5MP0jfguXSfMSqYAPkB(W(I}=s4znnBLjmDi~}_T#09B^*$LvWU}Ru0U}Rw6 vVt}MakiDQZ2MQ;cUqR|_FflL$ff!H>G6%#2rCVfmG0Y4M2_Ok5hN%Mpf8?`C literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/queue.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/queue.c.o new file mode 100644 index 0000000000000000000000000000000000000000..70b5185bc753559558431bcd72db1e4ca62e0910 GIT binary patch literal 2432 zcmb<-^>JflWMqH=Mg|QA1doAX0XtZR)dWmwFz_&NGyK@f!oZ-w_uzRaqxo&g=biJN z#4a*unO#uM*#9}cUm~IHvp|Q!e$|Zkp9R{AwrOWDX#cqYl2PqU?tCrv?CPWE>zyPo zFX{|+PR@vs{Qv#mf8|a_<Jp@Yb}}f<bP93|auRk>ZiJY|pd<x0&tX5K!jHY|-t1nI zitHX>Jz(1y6eYp(0u1k;gPq90z#zlG0Cpn>1A{v6gNL1rhS3rX+8{TYL)|D3)}ydr z5$Z;6xEoVDl{=%QpI?3a{Bh@8C&?QSS4M(enT+AeWE`&K@RC&Iz~RaRZiL;bOQJjZ zQQV0=<cN1u!B!RqUIsA+Nd{0j7szOW>4b!5jY}IDl$9Hk8w>UdY<0*0$qMWh*vg>v z|NGZ}FqYGQ7;7S!#i;cE`!ldCh-C~HYx*y+_kdewUP@|(f{m?0p{`wOPHJvyUP*j% zera9_0|SG8Mt*LpeqwH=enC-wR%&udv3_Y@rhamMZh>xbWwCB%rhZ~kc4A(BW{Q4E zVsW;ienDn(zJ6h8YH6xoG6Mt5yn>P<1_pO$XDbB_LsKhDT_XcSOWi^fU4zo3(!7#V zLrn!sJtI9s1(3L*fsv_#Mp0@`YGQG!rb4u1kgtAXQLe6~Zc<TVUUG&)QEFLcab|v= zf|0qosikEsgQGSB14CkJVp1jpqap(X1FKoEt}g={54$fXqY#S-qbQ>|vjn3gqZFeY za>jxt0%Rc;hL8WD!eELSB_}d4Ff%ZN#bE?90}G4^rkNR7892c#7{SWG17m_|Mh1Qc z2C%717#J9s7#P9oXMp8E1S42INDjmUsZ?TMU|7n)z_0>Iy#w6Q5cNJtd<zB!246-7 zhABwuuOP{T-17j553vVAGBdD&-2>r)NHzu^5XHa%b{8W98<Yp3m>D326NCo}9}b2n z7>9v@K>!pnX#9Kz28M@>3=Ap^3=BdHj0_!U@{`c`GeI%R#K6D>RX-n19u!vmNb;K) z7#Jjx_=g!77?hFtmlzlrbdmT^85kJMk@&wE7#JLp_zbYrtdhc@QUc+{C#IytXXcfp z7Ud=8K!u7@bMwnm(M1bVQ?n6b@$qS;dCBqddZs4EW(>Khxyc2U4Ds=a#l@*bC15$I zVVQZECGq8%B^mL>1(|s{`N`P~AR-<l&XAm#larqeRhd?lnhIr>6jg#8hQx!o2}uCt z94Hs$g(Q%nnR)3@A&ByLG*OTqgcyS#0|Nt>7z0BSh!$sH0Hs|fRtAPSp!6olz_0*B zvobJz0m+LoFlaC`FmQ=8Fo4o5NSzBK0|S#F1A_;M2I&LIi!m_l0ny?N44||MQg;I+ zFUY`f2Sl?nFuVfEOENHg0?|?o3>=_10#!76#g(}wiAfB4#U(`$Is?WkO3l$LNv$Yh z&`U`yNo3GVDlTTwE6N9PK&lP(Oki9Fz2y8{P}#?z=NROxmsnC#l$lgol3I+E+VC^w zq4^q?LqPSl4--NUtfY`;U|`^6U|?{7N^M|cV3+_E17%B)It~T~234qeuo9;M$t;jo zkXjH8D*Qm|38^!Hnr8&k#K6D+GA|m+22mh;L1x-R)xoU0!vx9uAT=NiQU{{lq3S^9 zg7`0(7*O&)$Se>JU;vd13<V%HAne4<z@P(SKru)ShzX)$c7pf?%nS?$pg3k=U=U+q u0GG6&@&puiFu#J-EnsC};0I|2aiDGjF$E#^f|y|Jz|O#s0A@i5m=*wOWA!`$ literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/reset_interface.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/reset_interface.c.o new file mode 100644 index 0000000000000000000000000000000000000000..ce991a81fe92428d7cd3891ebaa7fff5f7769393 GIT binary patch literal 1804 zcmb<-^>JflWMqH=Mg|QA1doA1hZQWtY67M-7<d@C84BE)ycv|F3JTm0xPgSdD;X62 zYx7?0u4K^Wym-2jQJeiDhZgJ2t_o&vsRB*|h6fA^Ftv;d1?~k~88p=|3RDJHN;3(2 za#k=qGbqe-Vz^MSH@JdPo8tn50+aTSiz!MBivPd=`_HKG>G_n3%N5d0GR~|Fw^^C4 zCUY^G&UIk(0Ld~l)GI1FXfVuhXH>ZN9O9l(Ck6&aW#$3~j{<j)`vkUfS9nzjF-bXh zS4gu+IiIeOW)pUvrgVv6vJ=AvfxXO7lNb~^7-qO1a0BTF>BEZMot>=|Gz?9xEOm_x z3@vpFO>_-PlS=bSN)0s?EcJ}^3>84)h6YBa3K~VJIjM=oshSGWjzPZqiAA}(mbytr ziFwHx3Pq`9nZ=p;c?w46=BAdGu?&vd3=9m3sfkIM42+5l3=FJh!MeT-Y&`6~oQy&& zB8;Mp;>;3^l8jP}a>x+`btJM73&Y3%P+>5|j1r>^49pD7U~w41%)r7R4C8=lMg}nk z2CyzB1_lNu21W)Y29Q1m20kcXpMima2doxEFoN|9fS6#+$Y8|4z#z!Lz@USq-U2KK zA|UE*Kuj=ZWUymkV6bIiU|@l&_hn#UaAaU$NP+S}_RRsS1rZSaOF&F8W@G@#uK}|` z1VnxVhzZ6J`3GP&h(Hc4kiS^L`av=f%nG&_#FhYu11m!@hy!MW!i5D*J;>Ei1>kUE zM{vM=4u)zZ5l}dFqw!}mFfc5IhN%(*Bf};J28N9c3=E)r2jVjnr52}_#AoJ}q!y(m zCa3BpGpLk61XJQO^D^OVusQ~n6qsCoL24e1U6Gbr6rY>~<0j|ll@#UY#KVN+!Fp5T zQ;IUnQi~WeOVZ-=N^=>?6HAgaQu5Q|i&B&F^Gg_t@^j<UO7oKAbMo`EOA8oEi<45~ z6AKEU`r^}5OF)*Cl%~WdrzFScWag#DC+DYR=B0y#p?+jyVPF8I2N0dbz`(#I&A`wB zqGcEuK=BL`2gN6o2m`|<s5mIdnAo6cgq?wb1C%znAnA~akAVRcu1vfP3=De3mANH} zNep_$B}EWA1I8*!&Cx4Kttes8OGzwAWY9}0E@sdJ2^Qr;1d{V}b5rw581x*2eDxAb zN{TX*N=s5<(GPM0K`akVCu~rapg4R2WrHYKYLRAOVBln6U~m8lGB7ZdK*Izi21=nI zbs#^gLd}EaS_zOOR1b)PaX|$LNIkMTm>jY?kb6Mlpu7zd2bl*-=O8u+gX{&-259bE z!@|Iz0Tp9~=2eh=Hc<D0)PwagGB8Ae7*Gtd3xr+4d4Zt-D$LNu2q_<6e2^Lt8$`q0 z2IB8vWMKHf$iTqGz`y_sGm!g0aSaM5m|sEaRxmR#oCGnT7-SBJ2`Yz>)m>p>U<d_C IKru`m09N(wW&i*H literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/runtime.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/runtime.c.o new file mode 100644 index 0000000000000000000000000000000000000000..45002573124855fd3651254504e437610905d41a GIT binary patch literal 3452 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 literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/sem.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/sem.c.o new file mode 100644 index 0000000000000000000000000000000000000000..b80bdedf6871fd7e42f8a8a6bd9ea40058ed7fb5 GIT binary patch literal 3436 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 literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/stdio.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/stdio.c.o new file mode 100644 index 0000000000000000000000000000000000000000..30826c905df977a8154d54964a91297dfdd84f89 GIT binary patch literal 4492 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 K5GI&}sRICs--bs3 literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o new file mode 100644 index 0000000000000000000000000000000000000000..3364336fe4d7305efe636111dd1a550c1f842e87 GIT binary patch literal 1656 zcmb<-^>JflWMqH=Mg|QA1doB?2QyfP)dWmwFbFX4Gcd|9E3DpE;9jtmL6iM13xlhK z0>l6BU;Z<ita18zv0$&jR%UPM3PwdHkN@BQ{TJ8^){2c_WMC*x&CSfnFD}W<OIIi^ zNy#rQVPIfm2nq<^@?{}hi@US4m4b$$sg<R!k%6J5ZlQ^;L1|KHUP-B;rh=uOk)ELf zNZioC$W%e2C^aWFu{c#zA=)v>S3j{RSJzTEsVFfoIYXf+wJftZGe1wk$lTo2(lVC8 zQJaB*Au%;EDU*Rwk%57M)ht-omw}Ck-ItS5h(&}^lu?{nf>DxDict<ZP@oP&7Gh!e z_#Y|^rkGJek%57k0TPg4Nd^#~l|dB70n>~O5)2GrT^tMy3``7+44MoK44e!MU~v%N zm4Si50IU{7AlnWykBtE&50ZgkHV6eJnHkv8<k=ZKpmIE5d(q|5-OGulpOYaJs-Fd{ zALLS~0N8)r2o9Lf!;s3rzyJzmkUxbO7#V7iR0uFIFieH=MHm<u1VQ0dT#}NRACHto z^pY7=N|4h`d_ieRG6ROX`25n6_~eYlqGAS>6o&Ztq|A5|b3GGdGgAnspri=GH^ZVg zGcU6QE?g3yQj}SiS`?p}mzb23ngW-ACtC&vEd~Y#E>TF_F!3`mfbt3xH29d<85qFv z$qDfs6DU~piYs$V5|bG8ic5+hbOwx7l$xVgl3G#1pa){5B$gyH=p_{wGw2oNgE$}^ zhI%FtS%?sXos^lESX3FGnU|KY2lg-6iwt_n`MJ5Nc_j>bjzPY9i6tdPnMtK3sl^b- z5JAd=;}(=BA&NnMvw$$cBq;7d3~6XubpUY~7#LibA?cPEsvo2d6b_&?4NAGt;9<yN zU|;~nH&hz~NF9i+ie_F6Gb9{A=7IEr)Pc;?XMl)<#6bEQKm-y7*#+W)+znzIfjA5d z3?OyFP&SAHnFo@0hq{*uB*?(PFol7E0hB+WT)6w3(cG7U<UV!=2CzDi`+}k7!Q8h1 zDu-^KKbm<tNalf(4#<5V^Rl7l!ODRp3=9lWFvFm7Ab*sA^Bh9~OzIy41A`8X162p& zg4DwN3gYW9GB6Y{GBEH#;{{|dC~tz?0P_P#-5e$chUFjz6obqGF$E#^f|y`j!py+X K0%k!7m^uJv4ZzX> literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/stdio_uart.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/stdio_uart.c.o new file mode 100644 index 0000000000000000000000000000000000000000..3127640967d4bde3b4696c32b593be7ade9776f1 GIT binary patch literal 3592 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 UGX!c5NF3yMWOXk<`3Q?T00XVsZ~y=R literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/stdio_usb.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/stdio_usb.c.o new file mode 100644 index 0000000000000000000000000000000000000000..581a3c836cf504520ca78ca71614a72b85d035c3 GIT binary patch literal 3584 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 literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o new file mode 100644 index 0000000000000000000000000000000000000000..19f4fdd1213c708c0bd4b61c863307fe386c5402 GIT binary patch literal 1844 zcmb<-^>JflWMqH=Mg|QA1doA1hZQWtY67M-7<d_Y7#KVX+(BGM4-ta`_XBPqw!l^v z25~P9<;yV)+PoJSbObMoc#C*NH83g*c`zDBGaOKw#31a<+#s-5fI(1E!{Gn-fB#=U zXVnq9v4nx!gGF*l9)~BBA%oK8O$%ZeG@e}GXkawHy@}C?$xvA9%f&m-85ABq2ie2P z0wNh0f)a}hl2VI`Dis1UK_UT}$@w7KDL=6&MZwv{nSp^JD784Xgn@xUh>?NmJrkot zmmU`b10y37Ga~~7CsPOmGb2MoEeAIP6B82y1IS=TCME_JRuu*XMphL@21XVYCMH%D zHU>s^)<$Ly1_4eMMg}G>1_lOpRwgC~5Y+^tI9Zq&82&RbLPCmxfkA+QfkA_TfkA?S zfk6f2D0gRPD+LWhQ!7hdBLhQA-9i&xgVLnZypmEwO$AFmBRxX}khr0Nk*R`4QEE<V zVsWabLbPL$uYO`tuCAqSQc+@Fa)v@tYFTD+W`3T6k-534rDZIGqc#HrLt<)TQYHhV zA_D^ht68wFF9RD7yDulB5Q_+-D5E&D1fwLQ6r&t+q=MYUz<?6ZEDRt2LxsT<Gm0z& z12Y3NSR6($Gq5m7!Z=`>kwJ!mfdLvlVADbJ9AG&R0g(rV4TuM_9V9OT;egeH^j9G9 z;Y<dQ{j6Z~5n}M*1`9DWu%XGbG01~u7#M`Wrn4~^FfcHH><fYN?HCvsGNAFq$iT+n z1C2L9usjQzc`OVuQ1d`>%ZTJtkT5d?!lw{ECqow490stA5CbDaGXnzyCj$d02Qh&7 ziy0UgL>U+u3P5R;fstVkNFx-3!>PC=B{M(1v^Xg~CAB!YD6^m>zo=L*nL(w5K_!Ku zv^XgRED@iQT9%odiX@PnmX5?LE-8ZWic^a+6LaE0e2{@4hMt+3i8(__Da0g*6;Siy zlatUTlJoP@GSf?o5=%1k^RUPlmlS2@rGq32GL!S;(^E_0OY<@dOH<>MK>0F0GX-R4 zW?nit^q6=dc?CqfFfcH1Nii^h;-86yfuVtcfdM3*1ERShVZ_AEzyQk6AbGGlZU%-L zs62ySab<2vViJR1aY+$`&VaFsQgif5QY%Ur^imQ_5*hT8ii;Wait<4mkZMCc69zqy z8i){sUUGhJZfaf$gPvoMuU=wFNl|7}X-R4^G-e1>pmYbyZfsDcpt7?C$_7!eJR;2i zNe>PnK?Vkf3KmGY0V-lZ`a$YIsY(@^j$k=(2UI<b0;vVDL4^TGJ+eAWkOUNi%mXn& z`2eKH2*hDvU;vq?1!aRMkUEe&s0;<sOdvr928JgLka&S|!Ep#;+oSno0g^vJVE{4@ z<SuWhKS1__^rbK|FhqeEPz<sQghBa}84~4SnSG253_4&IgaD}lu|PD;Z6N*|Mh1or zj0_Ci3=9n7(6R`Wk3e}27A7EdbC?+z?tmCj3^E7A1m$~VbthOD7*aqIPz+NC0L<~~ A8UO$Q literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/stdlib.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/stdlib.c.o new file mode 100644 index 0000000000000000000000000000000000000000..ee98f5efe04dc6daca19cb0fa359271f90a2daea GIT binary patch literal 2216 zcmb<-^>JflWMqH=Mg|QA1doAX0UKC`)dWmwFz_<)FbHgI+VKDTzyAyxj2D<T2<+wb zVVI)Kz^KHi$Z7x*XY&A&ATb6d21Pan5bxFV18xjCcbFI&m>fQAZQj7bz{?=U0FnWj z!o1<bUQvIB>DEZ5Fig{CP-0+I6abrM$dKu*09Mb!z~jv@nL&w3kp*lr#2!XPRtRsp zH3Jje)=SS}b}~qBXZW!7o?Ez^pPQ@OgRQL_8r&EsGEHKh3^C=GVkg-2Cbu?*FqdtN zM#}$<XS%6)&vvtUz-a62_C$(7SN?(`g8^984yP{{VQdD?cNg8=iWz51&t{k>`Hg{b zwp;?!Z21J{*|G_Y3alG!_Dpb_>9)viwcCfi)(q}$Gu#;UIWI8UGwA=hV8c-3Y|G&6 zw!=-H;lgu9<!GllZVz38-M&eAyD@09USRe9EWxfG?fUV?^XCi-H=ZAGYw#ChXn6Yb zzrfaqik?jD;ILs*WB~h}Ns$pkdrMac>^<Pd;K1wviZ%|0pnypr1_--5J6kDe7@AsH z>KYjsTIv>>=o*wJmFAU{8fq$7>KW-7DuBcd4U9|`G>TGlQWJ|)H5H;AgM9T9i*j`> zb(4w`^O7?Zic-rmi!<}{6pYNxO)V{B863447#I>$6O%F-7!?^97+B4Mb$uDwc-Vb8 z8HHFx7)2SynI#w{8KoHIkP{flO$-buX^w^A<A10ym|{keWnf@tU<QlB2xbNr1}+!} zOfxd@GB7Y$fY~5|5iAc53=o$ABEJUA1`!bX9UvwcL*#4V?u5v<An`%wuR!91wLuAH z23D~BP%bDe7zCgk4zOQYp*#r1%)o}Go{d2cBE`T0Ru9R9P$33p29PN*9w<CG8T7&G z7#Ki)6k=dxa7IXj?G8rcC!_K6(D*eB3=ED83=9<v3=AOi`q1R3qw!ZTFfi<7U|=`{ zRlf&K{v-nfLn|W#gAP>w4x0QkG(JOdNlH#;l3p@{N(qBX3PXH+Qf9oNfsvl6fw?J! zS5Q&}6)<BcPA!Qqt}KpE&dE>CjyJK$&8T81D$UEw%uA2Y&x=nhNKa&d$R+3JrDdj< z7Ns&2<mAMsq-N%2mN3M}gA;CiX=X}h8Jb}QIXPgZm<n_AQy7vnQj@chtj^A;f?AZG zS`wd81v0F(AU-8EEwMDGB)&AUsDuGT#Dk4XFUZV~2f011G%vX%Gd~X;-&|r03^EK1 z3|!(23`!tcf`P#RM2j;pc!6j!28JXMEzZDD0HUQC7^*<DBm+Yih!$sHm;t4iLFo%1 zT8@F?28fnqVE6~6xfmH3xMUa@dO)-S1H%*$t;oPI2THGDWME)|CSE2`qSq^~%q>Yw zV$drtDT2@$Fji4&j$TP>MG1pmN@7VOgI-c`F@s)FK7<33Ov=nlEUJvp%uCDH14k$% z3K{g0^K)}k^GX=>9D{uI5=%;oGLuS6Qj3w&1R<t8H2uSJ3aGx?0MDNc;BW<*A<e+R zz{vo~Cm{X=R%lp3^@H*oD0its`LL4a36fbLeK0Pl&;zL_qz)8+AU#YV%?u0-AoD=_ zpj^27Y|!j|!-#M@NG-^HAR1J*A^SsvjR9OLfXYEo7=YA)%nyZ{2eKce?*k(PLllSs z#UM9<a2x}u904aMu#6WIB(H)wP%}VmkXo1@K>P|O1_lKt1_o{h1_n_Eh+9F)1>`nZ jn1IyHU}0eR0b)Qg$Q%$;5MnQg3C0F&3=GI+5lkHbo*RA; literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/time.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/time.c.o new file mode 100644 index 0000000000000000000000000000000000000000..c8e70ec4e71cde063de9d2a6e0918d103196266b GIT binary patch literal 9580 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 literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/timeout_helper.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/timeout_helper.c.o new file mode 100644 index 0000000000000000000000000000000000000000..7e27f9d45ad79102d3121511cf2a396f82cf2362 GIT binary patch literal 1856 zcmb<-^>JflWMqH=Mg|QA1do9sffX#nY67M-7<d@C83eX6W;kWAdq-z6D9mzVzro_s zlEtXd<HU67f|Rq|3`c>z2izDOSRF2GWnloR6!VVGn&rfHL&T#YtHVj@5~IQ_C!veW zGM;Dr|Niek69cy#&+Tmz@s7Kl_--&>+~mZ4gF&D3wpv1Z0)xVZy&T>gUiOL{9w4=> z-mG5simYHZqr!*h5PQH*V_;yAVPIfjN^nkK@F;KxiGA35%#C4dgPRD0ECWb4$R^?2 zY7F`eAlr623EyD6xWP%_27^A|ZD%*Rg!qIx33n4XJXrQjaQm>A-J9LZUXdMa7mGKG zm%Snjn0>$vWHt<g>?|#gFV4(MPK{5>&o5E1u~qQ&3o$c^_jQb5V9?LV&rQ`&%&pWf zD9X=DO)e?cFU`x;PtMOR&@HYk*3Hb+Pb|t#%*)SA(Jx6X&NkF9$V|@H&nnH!)-S0n zNG;aOU??p}Ni0c?N3n*1!QI)}N<qWW)XGxV$iUE2x6nk_pfss8ucXvaQ^8WtNY79K zByMP6WU8Q1l$w*8Se&Y<5bYS`tDjhut81y7RFs&PoS{&ZT9#RynV+X%WNvP1X&KAl zsLjB@keHg7l*z!T$iTqBY8I^P%fQCN?#sz2#3I5d$|%k(!6?Zn#VCiIQXnCMEW*O@ z@jpZqLNcSIECvQ<24;u^lw@XLVGx3{ArvEnC<6mnmj)<q85kLK85kH;Ad*lSIER6m zffX!|5Mc$I2hs}>V`MO3U|`T>U|=XgGOq_B2{sR8{~RPf$i5{=e31MKBtA$U>_D&> zvhP9uV?%Qf8-qVs9Rt)~Y)~GAVrF26FrXwe0|!GalntT;7#J8bKny4b@yi$(80IoC zFz_%iFbFX)GE87#U|0!N2jVl7Wag&kmzKn5q~;W)7U?B3sFW}yXQU=)gVJnzPHH?% zL1{6AN(xk}Ahjqyvm~`Bu_QA;4_QTgd|GK<a(uj=iJ_%2*lbX;G&5m{k54QvPAw_{ z%QIx=WtL!=pI4HZ1ChaLJOhIl0|Nt>7y|>yUtHo03{4=uI0M*UOdJdhQ$X=1$iOfI zL~}4OfZ~RUje%hcNSzo1!#fZy&cN^sN`vBtiJO6eg^_^)q@M#s3o<b9fM^Z|1_r(2 z%G{E~BnG|Wk|GG50b>=V=IE8AR+KR4r6iUlGUz207c=M;<%2jN)rNW|FfM~$a(-@Z zYF-J0o@0=&USdf}QD#zUNop}PrU+B=;MB*!080^|@>T#TIk7;EkY-?D;ACK6aDehB zurM$bK*d1HLFz!>QiYla%V91cNvIwW1>=J9I!HYsb)b9$(qjbD%)r0^GA{wj22mh; zLGt!cdznCj3=9lQ7$IpL%4Gnl1F=B`G)O(jTo8XJBLhPehyleQIS>wD0OcdF7r`>Z zObiS<U>1Y`sR6M-G|WyA-+_sNVF4op0~Z4WgBSw?*j`Y60fimRuOM{~m>C$>ff!H> VG6%#IgxCvWLNF@>1G0Z%>Hz)cB}D)L literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o new file mode 100644 index 0000000000000000000000000000000000000000..722ad43bc01367214197ec1e5646798938bdd67e GIT binary patch literal 4932 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 F2LK+pBeVbj literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o new file mode 100644 index 0000000000000000000000000000000000000000..a823813a9ef99dfb6920ebde193691162f9d45e9 GIT binary patch literal 748 zcmb<-^>JflWMqH=Mg|QA1doBC1;Sx90V~j8;AG%nU~qSKwo=eAG_|tSH8L=?)Gaj8 zH7HFg%_}K2)Ksw4Gtx6u0ErtK7?~<)6s6{*CKjh^DnvU5`RXSY<?34MCKV;-C1)rU zrIuwDXXfWA7@3=!T3W_3I2tlAFeIiXCS@`(sxvS!usY`#m84ea`Wk36u<@|_axx0B zh%kyWiZe?vN-|0@%0XNQb{m917GPoc_#Yw)A(>Hp#=yYLzyy(ilFSUuP!@z@W?+FZ zpd>Q`D+5DvN^*QgesPIjG6RENab<2vViJR1aY+$`&VaE>QY%Ur^imQ_5*hT8ii;Wa zlJj$OQ}ap~^c;hH^%6@;iZYW*OHzxWMiWIzGcbUCzy?(fi4!P?fdTFtMW{NMZ_w4j z!Uz<?91NgvfS7?xoetDI1BfyPkh&-+8$^N317TB$Sp^_55bk4OU@!tPpcteE#01gE zA%B2@fdQn6oq>S?gh8P$z`(%32{8|(1&j?C85nrLEC>NI2gDLYQ)k1-z~Bm!fMS?B E05?KJkpKVy literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o new file mode 100644 index 0000000000000000000000000000000000000000..546139f708e35f8194bc8bc167f1faa5e405c87a GIT binary patch literal 752 zcmb<-^>JflWMqH=Mg|QA1doBC1Hxf70V~j8;AG%nU~qSKwo=eAG_|tSH8L=?)Gaj8 zH7HFg%_}K2)Ksw4Gtx6u0ErtK7?~<)6s6{*CKjh^DnvU5`RXSY<?34MCKV;-C1)rU zrIuwDXXfWA7@3=!T3W_3I2tlAFeIiXCS@`(sxvS!usY`#m84ea`Wk36u<@|_axx0B zh%kyWiZe?vN-|0@%0XNQb{m917GPoc_#Yw)A(>Hp#=yYLzyy(ilFSUuP!@z@W?+FZ zpd>Q`D+5DvN^*QrUP@+hd`5n8iC!`TgI;lEZb@PigI;k-5rocwu}V@aN*MG~5=#;p z^pc8;8T69#b8}PkN*MGUgM9T8OG=6|lS)fci=h?}K}j<(fPKLRRSSt1D2IUo?juF0 zI+%~p)xp9E6v`Y7ps;|LflHkZ)I0--G6s;kC@335fy@J8Q;1mwATbc`V_;w~0x_T% zqz1$U(a52HfPsMlq=}t@fdPa;Auqtdz`zMH52OW*4Hy|1gupBa0Wt@~5=2wy#K^$l K3X*_gm^uLTy+<Gb literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o new file mode 100644 index 0000000000000000000000000000000000000000..ce3f3ac50a90e1a95157b9c541b04710711a1a6c GIT binary patch literal 5088 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 literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o new file mode 100644 index 0000000000000000000000000000000000000000..8aaa49b00c89e7d46800796eb0a704cda98788e9 GIT binary patch literal 748 zcmb<-^>JflWMqH=Mg|QA1doBC1;Sx90V~j8;AG%nU~qSKwo=eAG_|tSH8L=?)Gaj8 zH7HFg%_}K2)Ksw4Gtx6u0ErtK7?~<)6s6{*CKjh^DnvU5`RXSY<?34MCKV;-C1)rU zrIuwDXXfWA7@3=!T3W_3I2tlAFeIiXCS@`(sxvS!usY`#m84ea`Wk36u<@|_axx0B zh%kyWiZe?vN-|0@%0XNQb{m917GPoc_#Yw)A(>Hp#=yYLzyy(ilFSUuP!@z@W?+FZ zpd>Q`D+5DDa!PzrfsuiUfnG8LgI;lEZb@PigI;k-5rocwu}V@aN*MG~5=#;p^pc8; z8T69#b8}PkN*MGUgM9T8OG=6|lS)fci=l=SK}j<(fPKIQRSSs|D2IUo?i)p@I+$<J z)xp9D6v7+~pm2bgflHkZ)I0--G6s;kC@335fy@J8Q;1mwATbc`V_;w~0x_T%qz1$U z(a0fxfPsMlq=}t@fdPa;p)SC{z`zMH52OW*4Hy|1_`oa(0Wt@~5=2vH$H>6o3X*_g Gm^uLKUPOcd literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o new file mode 100644 index 0000000000000000000000000000000000000000..61af87add02c0b106a23ef1666a420d91b14f019 GIT binary patch literal 740 zcmb<-^>JflWMqH=Mg|QA1doBC2Et)A0V~j8;AG%nU~qSKwo=eAG_|tSH8L=?)Gaj8 zH7HFg%_}K2)Ksw4Gtx6u0ErtK7?~<)6s6{*CKjh^DnvU5`RXSY<?34MCKV;-C1)rU zrIuwDXXfWA7@3=!T3W_3I2tlAFeIiXCS@`(sxvS!usY`#m84ea`Wk36u<@|_axx0B zh%kyWiZe?vN-|0@%0XNQb{m917GPoc_#Yw)A(>Hp#=yYLzyy(ilFSUuP!@z@W?+FZ zpd>Q`D+5DDX_8(t1A|_1Wo}7g5`$iGNfCt3fU!zaD@qvjQW8rN8T68hiy8Ei^K)}k z^GX=>9D{uI5=%;oGLuS6Qj4Lc5~idX7{D%PgDQo@1(d_U0QZF=R2|G0=;~l$0}5FV z29W<DX5dn%12xY8qKpBgE(*#9Q6Td`*c4(`0Z0sl`xqD)j6e)12B`rtK{RrRA7Ef$ y0BK@pU|;}YP-qJ<FfedJ%mZlwV*^HrJeUJ@6NoK{rp}y^fx#6d0mUHuKuiEMSweRJ literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o new file mode 100644 index 0000000000000000000000000000000000000000..2048a98288e511b1cd4788d78225c36f9b26d2e3 GIT binary patch literal 744 zcmb<-^>JflWMqH=Mg|QA1doBC0m5N50V~j8;AG%nU~qSKwo=eAG_|tSH8L=?)Gaj8 zH7HFg%_}K2)Ksw4Gtx6u0ErtK7?~<)6s6{*CKjh^DnvU5`RXSY<?34MCKV;-C1)rU zrIuwDXXfWA7@3=!T3W_3I2tlAFeIiXCS@`(sxvS!usY`#m84ea`Wk36u<@|_axx0B zh%kyWiZe?vN-|0@%0XNQb{m917GPoc_#Yw)A(>Hp#=yYLzyy(ilFSUuP!@z@W?+FZ zpd>Q`D+5DmaZ-j}G6RENab<2vViJR1aY+$`&VaE>QY%Ur^imQ_5*hT8ii;WalJj$O zQ}ap~^c;hH^%6@;iZYW*OHzxW#u7zIGcbT%&jwWui4Q1;fdTFlMW{NMPteuD!Uq(( z91Nf^fS7?xoetDI1BfyPkh&-+8$^N317TB$Sp^_55bk4OU@!tPpcteE#01gEp?-jY zfdQn6oq>S?gh3%Lz`(%32{8|(1&j?C89*ry%mxu4b3n8pnmP+c1_oD<1Qf&60RZ37 BLht|p literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o new file mode 100644 index 0000000000000000000000000000000000000000..db383e3d25c31ab0ed0dd11758566f962ca87274 GIT binary patch literal 752 zcmb<-^>JflWMqH=Mg|QA1doBC1Hxf70V~j8;AG%nU~qSKwo=eAG_|tSH8L=?)Gaj8 zH7HFg%_}K2)Ksw4Gtx6u0ErtK7?~<)6s6{*CKjh^DnvU5`RXSY<?34MCKV;-C1)rU zrIuwDXXfWA7@3=!T3W_3I2tlAFeIiXCS@`(sxvS!usY`#m84ea`Wk36u<@|_axx0B zh%kyWiZe?vN-|0@%0XNQb{m917GPoc_#Yw)A(>Hp#=yYLzyy(ilFSUuP!@z@W?+FZ zpd>Q`D+5DmaZ*Nna(-S(QGSkIG6RENab<2vViJR1aY+$`&VaE>QY%Ur^imQ_5*hT8 zii;WalJj$OQ}ap~^c;hH^%6@;iZYW*OHzxW#uG(JGcbUC!3I?gi5Dn`fdTF#MW{NM zkI>b@!U+`091NhafS7?xoetDI1BfyPkh&-+8$^N317TB$Sp^_55bk4OU@!tPpcteE z#01gEp?`pZfdQn6oq>S?gh3%Mz`(%32{8|(1&j?C85ls~U=GwxAhsZyItNAu23L>- J6oc#oF#+=yMrZ&4 literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o new file mode 100644 index 0000000000000000000000000000000000000000..68b1ee17f46de75afee3209074a2679ab27eefe1 GIT binary patch literal 2684 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 IM8UKG05Llh!2kdN literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o new file mode 100644 index 0000000000000000000000000000000000000000..5438f0df87451e1456d37d0f94e1b9a766a98b91 GIT binary patch literal 1340 zcmb<-^>JflWMqH=Mg|QA1doAX4KrAV)dWmwFmN$&G6-yCQ277--+zI<0$X7;bEQiq zyONTF5R;Vi;fmSpv-z2{`7bbQ%UobkVAN)~Ah4Io(%UK0QP6viTcXQECkMv^o4!0} z(qz5Bpx~f98O(q4oZEYjTartFQ-I@vO;4Xgba*;_P@c^o>EK|<pa9W#<M{!%{~&k$ z`~UyLRt7EM3k)jt>Z}iVD^etvZ1R*`<ivH;w}Mso+r_>LTLx2yT!wF)u9B-m-#!1Z z*I+9%gOA*kO$?gS7g#G86a*hgRyasBY>Jj>a$>(3S;4I-aDheh%f*`&44NM=GTJ=Z z^k0Ylf`&xHCdrCui3v_`FMoN?pkT0<!QI)}N<qWW)XGxV$iUE2x6nk_pfss8ucXva zQ^8WtNY79KByMP6WU8Q1l$w*8Se&Y<5bYS`tDjhut81y7RFs&PoS{&ZT9#RynV+X% zWNvP1X&KAlsLjB@keHg7l*z!T$iTqBY8I^P%fQCN?#sz2#3I5d$|%k(!6?Zn#VCgy zQQ-JtK#4mRhL8WD!eELSMV5hqnE@1tU@0)c%)r9H0cODnMh0#M28I?Gmw^#1--E=5 zGZ{eUu_ALBm>Jj@_!uB=;$mQ65Mp3tkU&x)z`(!&@*&6$ki8&zT{L+M1_lOU1_p*I zsD4id28Lb+1_lEtKbC=kVJ`y%g9nt)P*Pf)q?gQ~Qo^8;0_MbL=4F;Jl$55x7{y6o zRw_suA_!*2r=}E?#Fr)JWTqsRq%xG0LIjdB^HSndiZaVmi$G#2sm00h>8U00nRz9t zMQMr2sqrQGC5bulIjMOdr?W6HFmQ1*Fz|qAUIqpRz2eH;lEfqiz2cH02%Q0A6{Y6r zm84dbFzBTumLxLhB^4Jl=q2ap=BDPAFz7i3`RXN>loVwqm6oIygUlut%R|GQ4XOc@ zcUh3q3doHhDQN}<22KVB1_uy_fq@}_nSlWmC+txDAa$U4QHAnhsl@`xERa?h7nE>8 z>Ita>#T`fwhz98gnHL3OKru)Tge}2oilG21%rJ?Ofk6kxfw~FA1*v5MF`)PWBLjl~ zBLg_Cg3=wxA0U5${0eg$Na+P828LP?1ByZBfS7_1dqGSvPGDwW0Hr%H2gzOl=#JfN literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o new file mode 100644 index 0000000000000000000000000000000000000000..b4dcde6752e718a63529077667cd254300557efc GIT binary patch literal 3752 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 C=Simk literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o new file mode 100644 index 0000000000000000000000000000000000000000..a5e8f06f8fafc18e126905fc5ae29c7d3ff6297e GIT binary patch literal 10044 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 literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o new file mode 100644 index 0000000000000000000000000000000000000000..82aa9b76e253d5c3ffefa45325b18fa37dae6fbb GIT binary patch literal 2236 zcmb<-^>JflWMqH=Mg|QA1doA1haD`#Y67M-7`PZX849+tFo<|N7|-pz(WxoLEz`Nl zL6hO8gYvvh{9X>qmt*R+Ic~H%iCkb%<n}UVP+<7~{ontBy{%467aJ5Al)gR}WiVn` znWF&~Z&1`?c=Mb=kwNL@bC4B3wz4wtFmU_ZF*ulUC>em&FevX%`P{g<QMrOav0iDG zlc(cJMh0aDC5Q<>_JZ_%*m}&3VQbTd1~)ziaR$c8QocG24kjE*5Zl+MFepE6++6vk zQiVyzSxIKeCdS!woEUCO$xPfN;O$^Mt8r81=SpcNVQ2OW44RA=81#iMIJo`)-u0jB zfiaq`An||ynKrQOnc((eFN4BQu)77eGJA+9F(^71fP5<eb`ztwL~4Qi0XLBQ3bryb zu%ft$L3wq`<Hp5}1z@!WTUi-o7>vN-cboGhXSb8+1qKBM9l?uw-VE9-7X%p`3?cs2 z^p?(L(DuBb?&V;_q^Q9#!<|u~V6QS*XT3K24Pk}}ISd-s7nB$z!J#MX$;IGcbh%Sn za`vXnjU71*k{v0RI%YXBUa;3ux*-ZSjqQT4mxB=_*fa(W-U|X?)3Am1$>$7;5O*{{ zX-0+p&p{$z{_TFwsIc=ngTnUb5I=+b&EW3rY^9)KXliAtYh++(sat5GYfze0npaY4 zsHtG7XQXGS01`JeFfvupC`!#qO)O5;RETyA^3_i)%GI^hO)5&vOU_UzN-fJQ&dkqK zFfuncwX}?7aMWgCU`R|&Ov+?nRAgXaU^NTY^<`k=VfW=^6k-u!6lD}=mSB`*lwy=a zPS9XSF`%Sz7KV@ip~7H_8AX<Xfti6BEDj@>8CVzuU>q>b$RNxBF*AmNfq{vEkwJxl zfgu7c2O=23>OpcK9!MofegcF8)(J9i3KAbAF93HpM860UA0)4W#0TluK;nbs4UqUC zc@rc)NIn3G50Vc-;)CQ>m|zZq_y@*gU|?ZThjJXiu4iE|V_;wau|=SKs5F>jW?%)= zFoKzZjlmJdVPF7<O#m7{oPmKMmVtr6f`NfSh=GwIi-Cb*Dgy&U1C(FQz`!8N$iM)y z4<z4*rXQqMlaYae2daJt0|SF8BLjm1lz)+dfgzNUf#C*}{|re#NDXol0EG=hX>n3Y zd~$wXNl|`|UNVD92}68JVo73raY<r&YJ5dvatVV<3PU_ZSxHe&d{Su|LwqubRgsoj z1ks<GQcw~P=H{m6CKpsPl$62^1({S*T8ttDRthl^Vsm^^YH?}_LvCs=h(eJmPA!Q~ z&d)8#Ni9i@PfpCqNlHx4hFA-Ac05Q)QEFjnYH<mw1jwHF<Rpfa<dk@j8x5e2fg1>y z0ZHWKFfbS}FfedQGB9|6XemfqXJTPs$bs^^K(r(S11ODy#MgoNQsBe^)(1-4AaPLM z<dS1x0HtLRACzW6v=bu(1D6y711ODx_*Edj5(C335G}>P@B>6kGB7YPF)(l`Gca&L zX;7L4sn=j)U|>>WU|`TIuFNe-Ok&V0E-8Z088B8+YK~q>YDEcy9w;Um^pc8;8T69# zb8}PkN*MGUgM9T8OG=6|lS)fci;<ECL8d&!n+$AFm7uy)2cDNexd$R4&A`CG3C%Yk z5eqg3h7}A944^6(loeSR7#KJh7#LKc=D|v#1SGRS`ao(yG^juXsYg~90+N7Yka-{` zDDFUdKs1OCGA|0mfMSpw2wO6M%07kys4&AWCI$u_7zgSm5ErBt*-0;$7#JLwAa0jr tfcO`bhd_RXxecUGgO!1SAEX(?K{8JeVlPybf#Crg1A`}=2P!=w8~`g7k4OLj literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/pico/unique_id.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/pico/unique_id.c.o new file mode 100644 index 0000000000000000000000000000000000000000..80d2add11f1597695f6948b0bffa54fe096bdef3 GIT binary patch literal 1824 zcmb<-^>JflWMqH=Mg|QA1doB?0}EJ&)dWmwFz_+(G6-yC^7#M#-+zI<2i!oy0$Vwh z7(F2(ApVD~$J`jUGH7yN@R4KGRJ$PREnUH&#G=TrD(ugww!uyKfsnV5m%O47*p$W) zMx#Ye!WRUz1TF+~{El&S6LjEXD0C`x>}23})OL_$FgN7XetpNlSd!tza}fpxW#&+p zJrmqM>;>5c!yHgXPHLWloq_>_enx(7s(xZ_rG7zCepYI7NwI!uUZ#F>er|zoab>Y? zW~P2(QFdZperAe(Nn&xfp?*PTaz02+VQFf7W{O@i0|Q7TK0UQ0zBDfrB$||;Sd<c< znG#=IQk0pO&cNXA>};i=VQ6Y)scU3lXsKIhqH9o^RGL>(YN)ATsb{2Tr~nc-G%zw% z&?rjHNlh$H)l`Uf4D!`aEXvij)J-Z%%uCKtC`v8MEY8f&Q!p|&H?_2kWpLDHU|>j0 zO-#yUU{qvaU|=;1*7apz<6-yZWE5f%VH9N)XO>`;WRzl*LyjzH7$6I=Fns(E6$Vqx zD6z}Hz|6o57Kahc3@i-1Fb<ezWDsCr0P6zLObm<+It&a9JYYExfovPdJXWwgNCtvg z!RCSVLiiB<G7t{bWH^U`nSmWmKRZ~z0$d41e+LpD&SU`D&w-|&gFzpv0AvOu1G+p5 zgDq4Zl!h1?APF8S#K6qJ31fn3W(F<>FE9&2fczE5z`!8LzyJ;>AqGZ<a)=a|1j*Mi zFff2(v4Vkt0VF>UECV4x@(j@Q1x|G;B@FRJsU=03sb#6KgqN8TpPv_>l%HS1ppwE6 zAD>p5mmD9jXJTYw&Hz&jN|+33If=y?$VoOc1!pQ|$W6^nE~vyQ4@>3o@rlL7sYNAV zTfw2jB@T&yCKd(;F$M+(E=dLkP<(>;ps?YRW?%rt4~XBxz`(%7!@w{BL<=x5Oaal* z#G}T>z`&qaT$x*vn8cu0Tv7y~GhnQu)EvE%)QS=Yy_Cd~L<YU2;$j9pkYHwBW=VWv zQBh(ggI-ZSND`#mP|pO$Wzb8`&&^HED`C)c4D!`WEGa3<Oe!r&ErtX-5u`jcWrCat zQVuHrW`Gz_3`-@_3=9mM3=9koP;mnm1_loX1_o}Zevmp)x>AMmVY%%LR6UG><swkV z2dPI^2jaujfy@K3LGIxLr*{yKfdOP5Ob#RhVuP>&n)@nP7#Kk2f!xQ+zyOX<5Fg}z zkQ<CZni&`vE-)}KcthDB3S<^Y-XH1@CXgTl1A`1B0|O{uLAhY_K<sd+I*|P!z6~P- zLllSs#UQglI052^0;n*<G)4xL{0mY8k^|8&J3;&-j0_A17$NCU9O@5HUIN7hEbKt) gT9_Fa)_@pL3^E7A1m#y`bqy>G3~)z4-40R*0F~<YR{#J2 literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/progress.make b/arkanoid/build/CMakeFiles/main.elf.dir/progress.make new file mode 100644 index 0000000..a4259c6 --- /dev/null +++ b/arkanoid/build/CMakeFiles/main.elf.dir/progress.make @@ -0,0 +1,66 @@ +CMAKE_PROGRESS_1 = 1 +CMAKE_PROGRESS_2 = 2 +CMAKE_PROGRESS_3 = 3 +CMAKE_PROGRESS_4 = 4 +CMAKE_PROGRESS_5 = 5 +CMAKE_PROGRESS_6 = 6 +CMAKE_PROGRESS_7 = 7 +CMAKE_PROGRESS_8 = 8 +CMAKE_PROGRESS_9 = 9 +CMAKE_PROGRESS_10 = 10 +CMAKE_PROGRESS_11 = 11 +CMAKE_PROGRESS_12 = 12 +CMAKE_PROGRESS_13 = 13 +CMAKE_PROGRESS_14 = 14 +CMAKE_PROGRESS_15 = 15 +CMAKE_PROGRESS_16 = 16 +CMAKE_PROGRESS_17 = 17 +CMAKE_PROGRESS_18 = 18 +CMAKE_PROGRESS_19 = 19 +CMAKE_PROGRESS_20 = 20 +CMAKE_PROGRESS_21 = 21 +CMAKE_PROGRESS_22 = 22 +CMAKE_PROGRESS_23 = 23 +CMAKE_PROGRESS_24 = 24 +CMAKE_PROGRESS_25 = 25 +CMAKE_PROGRESS_26 = 26 +CMAKE_PROGRESS_27 = 27 +CMAKE_PROGRESS_28 = 28 +CMAKE_PROGRESS_29 = 29 +CMAKE_PROGRESS_30 = 30 +CMAKE_PROGRESS_31 = 31 +CMAKE_PROGRESS_32 = 32 +CMAKE_PROGRESS_33 = 33 +CMAKE_PROGRESS_34 = 34 +CMAKE_PROGRESS_35 = 35 +CMAKE_PROGRESS_36 = 36 +CMAKE_PROGRESS_37 = 37 +CMAKE_PROGRESS_38 = 38 +CMAKE_PROGRESS_39 = 39 +CMAKE_PROGRESS_40 = 40 +CMAKE_PROGRESS_41 = 41 +CMAKE_PROGRESS_42 = 42 +CMAKE_PROGRESS_43 = 43 +CMAKE_PROGRESS_44 = 44 +CMAKE_PROGRESS_45 = 45 +CMAKE_PROGRESS_46 = 46 +CMAKE_PROGRESS_47 = 47 +CMAKE_PROGRESS_48 = 48 +CMAKE_PROGRESS_49 = 49 +CMAKE_PROGRESS_50 = 50 +CMAKE_PROGRESS_51 = 51 +CMAKE_PROGRESS_52 = 52 +CMAKE_PROGRESS_53 = 53 +CMAKE_PROGRESS_54 = 54 +CMAKE_PROGRESS_55 = 55 +CMAKE_PROGRESS_56 = 56 +CMAKE_PROGRESS_57 = 57 +CMAKE_PROGRESS_58 = 58 +CMAKE_PROGRESS_59 = 59 +CMAKE_PROGRESS_60 = 60 +CMAKE_PROGRESS_61 = 61 +CMAKE_PROGRESS_62 = 62 +CMAKE_PROGRESS_63 = 63 +CMAKE_PROGRESS_64 = 64 +CMAKE_PROGRESS_65 = 65 + diff --git a/arkanoid/build/CMakeFiles/main.elf.dir/utils.c.o b/arkanoid/build/CMakeFiles/main.elf.dir/utils.c.o new file mode 100644 index 0000000000000000000000000000000000000000..19bf866931e37c58f245d4da469b2fb29cef0438 GIT binary patch literal 1188 zcmb<-^>JflWMqH=Mg|QA1doA1gc&TuY67M-7`PZX8BQ|%QNGO}>2QgI%lQDu0VV<G z0(XI}hc+>Co!rF0b70f|@BjV_?ESHog@IS*FvEWZ2?vmfrVNM#;p3YgaQsn57d^H~ zfs0*vhBHV7LhXS~Rt$y=Ah92N8Qh(ntrRp2O|2|-jSLJebqh^&4N8+r^GZq$H5DxN zjPwi@K;ni5My3iHMX5QdiN&d!3ek>1zWRwpxw@9RNkxfy$r%bosb!hPnfZANM&{<G zmX@&$j@k?i42h|UNtq0ciVO@4tY*Qwz6@+U?7p0gLM$STqKx9q5{#0JQjBuQfddW` z29)q(VfgqTDh#HWQDhkym>D1e3YKI5@mUx+VH_}xY5_9?D_9gpFf*_*@GwB^6k%Xs z5Mp3tkYr$B5CyX#e07*&1_lNJ1_lOWG`<5G-;aTT0i-7gYz89(LupB7PO)AxgGvcQ za(+&JQG7{$d{KH5gkx+3;u@MU#K(g}EI!jH4bD!>EzLo2j7l@B7?Lv*^U_n}!3Hrf zC@?TEaB(m&7=dUm1_lcd&CS4I1EP5t7(75U7Xt&xO<ddz3?Mgg@h~vNLB&%*G&ci7 z28iZiU?>9791IK$dc~EwC5cH4dc`G05IO_KDoV}KD@m;=VbDuSEJ<Y0ODZmA&`ZwG z%}vcKVbF67^3_W$DJjZKDlJJZMhY5&OnGQLut8OV@<;`g4WgJp1Oo$uGy?-Tj$z?m zz{J21!N9=44%N@Xz`y|Vf+~~`OCf8Z`e76-Wq=YZNIfBS22k@rG{_8)c~Kw+6obqI zVM}m2WGH|NGq5o-FzCQIP%}VWkXo3ZKztKM28IVvw}adR@&_orfzmU~Z6I|bObiUs cAO;kJ%mFb4A@+ipV0?m!fx#2Zf)Fru00QT*0RR91 literal 0 HcmV?d00001 diff --git a/arkanoid/build/CMakeFiles/progress.marks b/arkanoid/build/CMakeFiles/progress.marks new file mode 100644 index 0000000..1479e19 --- /dev/null +++ b/arkanoid/build/CMakeFiles/progress.marks @@ -0,0 +1 @@ +65 diff --git a/arkanoid/build/Makefile b/arkanoid/build/Makefile new file mode 100644 index 0000000..9524d36 --- /dev/null +++ b/arkanoid/build/Makefile @@ -0,0 +1,2008 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 3.16 + +# Default target executed when no arguments are given to make. +default_target: all + +.PHONY : default_target + +# Allow only one "make -f Makefile2" at a time, but pass parallelism. +.NOTPARALLEL: + + +#============================================================================= +# Special targets provided by cmake. + +# Disable implicit rules so canonical targets will work. +.SUFFIXES: + + +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = + +.SUFFIXES: .hpux_make_needs_suffix_list + + +# Suppress display of executed commands. +$(VERBOSE).SILENT: + + +# A target that is always out of date. +cmake_force: + +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/bin/cmake + +# The command to remove a file. +RM = /usr/bin/cmake -E remove -f + +# Escaping for special characters. +EQUALS = = + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /home/amy/projects/uni/comp-sys-ii/arkanoid/task1 + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..." + /usr/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache + +.PHONY : edit_cache/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + /usr/bin/cmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache + +.PHONY : rebuild_cache/fast + +# The main all target +all: cmake_check_build_system + $(CMAKE_COMMAND) -E cmake_progress_start /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles/progress.marks + $(MAKE) -f CMakeFiles/Makefile2 all + $(CMAKE_COMMAND) -E cmake_progress_start /home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + $(MAKE) -f CMakeFiles/Makefile2 clean +.PHONY : clean + +# The main clean target +clean/fast: clean + +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + $(MAKE) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall + +# Prepare targets for installation. +preinstall/fast: + $(MAKE) -f CMakeFiles/Makefile2 preinstall +.PHONY : preinstall/fast + +# clear depends +depend: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 +.PHONY : depend + +#============================================================================= +# Target rules for targets named main.elf + +# Build rule for target. +main.elf: cmake_check_build_system + $(MAKE) -f CMakeFiles/Makefile2 main.elf +.PHONY : main.elf + +# fast build rule for target. +main.elf/fast: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/build +.PHONY : main.elf/fast + +balls.o: balls.c.o + +.PHONY : balls.o + +# target to build an object file +balls.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/balls.c.o +.PHONY : balls.c.o + +balls.i: balls.c.i + +.PHONY : balls.i + +# target to preprocess a source file +balls.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/balls.c.i +.PHONY : balls.c.i + +balls.s: balls.c.s + +.PHONY : balls.s + +# target to generate assembly for a file +balls.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/balls.c.s +.PHONY : balls.c.s + +fonts.o: fonts.c.o + +.PHONY : fonts.o + +# target to build an object file +fonts.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/fonts.c.o +.PHONY : fonts.c.o + +fonts.i: fonts.c.i + +.PHONY : fonts.i + +# target to preprocess a source file +fonts.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/fonts.c.i +.PHONY : fonts.c.i + +fonts.s: fonts.c.s + +.PHONY : fonts.s + +# target to generate assembly for a file +fonts.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/fonts.c.s +.PHONY : fonts.c.s + +main.o: main.c.o + +.PHONY : main.o + +# target to build an object file +main.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/main.c.o +.PHONY : main.c.o + +main.i: main.c.i + +.PHONY : main.i + +# target to preprocess a source file +main.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/main.c.i +.PHONY : main.c.i + +main.s: main.c.s + +.PHONY : main.s + +# target to generate assembly for a file +main.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/main.c.s +.PHONY : main.c.s + +pico/boot2/boot2_w25q080.o: pico/boot2/boot2_w25q080.S.o + +.PHONY : pico/boot2/boot2_w25q080.o + +# target to build an object file +pico/boot2/boot2_w25q080.S.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/boot2/boot2_w25q080.S.o +.PHONY : pico/boot2/boot2_w25q080.S.o + +pico/bootrom.o: pico/bootrom.c.o + +.PHONY : pico/bootrom.o + +# target to build an object file +pico/bootrom.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/bootrom.c.o +.PHONY : pico/bootrom.c.o + +pico/bootrom.i: pico/bootrom.c.i + +.PHONY : pico/bootrom.i + +# target to preprocess a source file +pico/bootrom.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/bootrom.c.i +.PHONY : pico/bootrom.c.i + +pico/bootrom.s: pico/bootrom.c.s + +.PHONY : pico/bootrom.s + +# target to generate assembly for a file +pico/bootrom.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/bootrom.c.s +.PHONY : pico/bootrom.c.s + +pico/critical_section.o: pico/critical_section.c.o + +.PHONY : pico/critical_section.o + +# target to build an object file +pico/critical_section.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/critical_section.c.o +.PHONY : pico/critical_section.c.o + +pico/critical_section.i: pico/critical_section.c.i + +.PHONY : pico/critical_section.i + +# target to preprocess a source file +pico/critical_section.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/critical_section.c.i +.PHONY : pico/critical_section.c.i + +pico/critical_section.s: pico/critical_section.c.s + +.PHONY : pico/critical_section.s + +# target to generate assembly for a file +pico/critical_section.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/critical_section.c.s +.PHONY : pico/critical_section.c.s + +pico/crt0.o: pico/crt0.S.o + +.PHONY : pico/crt0.o + +# target to build an object file +pico/crt0.S.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/crt0.S.o +.PHONY : pico/crt0.S.o + +pico/datetime.o: pico/datetime.c.o + +.PHONY : pico/datetime.o + +# target to build an object file +pico/datetime.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/datetime.c.o +.PHONY : pico/datetime.c.o + +pico/datetime.i: pico/datetime.c.i + +.PHONY : pico/datetime.i + +# target to preprocess a source file +pico/datetime.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/datetime.c.i +.PHONY : pico/datetime.c.i + +pico/datetime.s: pico/datetime.c.s + +.PHONY : pico/datetime.s + +# target to generate assembly for a file +pico/datetime.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/datetime.c.s +.PHONY : pico/datetime.c.s + +pico/hardware/adc.o: pico/hardware/adc.c.o + +.PHONY : pico/hardware/adc.o + +# target to build an object file +pico/hardware/adc.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/adc.c.o +.PHONY : pico/hardware/adc.c.o + +pico/hardware/adc.i: pico/hardware/adc.c.i + +.PHONY : pico/hardware/adc.i + +# target to preprocess a source file +pico/hardware/adc.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/adc.c.i +.PHONY : pico/hardware/adc.c.i + +pico/hardware/adc.s: pico/hardware/adc.c.s + +.PHONY : pico/hardware/adc.s + +# target to generate assembly for a file +pico/hardware/adc.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/adc.c.s +.PHONY : pico/hardware/adc.c.s + +pico/hardware/claim.o: pico/hardware/claim.c.o + +.PHONY : pico/hardware/claim.o + +# target to build an object file +pico/hardware/claim.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/claim.c.o +.PHONY : pico/hardware/claim.c.o + +pico/hardware/claim.i: pico/hardware/claim.c.i + +.PHONY : pico/hardware/claim.i + +# target to preprocess a source file +pico/hardware/claim.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/claim.c.i +.PHONY : pico/hardware/claim.c.i + +pico/hardware/claim.s: pico/hardware/claim.c.s + +.PHONY : pico/hardware/claim.s + +# target to generate assembly for a file +pico/hardware/claim.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/claim.c.s +.PHONY : pico/hardware/claim.c.s + +pico/hardware/clocks.o: pico/hardware/clocks.c.o + +.PHONY : pico/hardware/clocks.o + +# target to build an object file +pico/hardware/clocks.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/clocks.c.o +.PHONY : pico/hardware/clocks.c.o + +pico/hardware/clocks.i: pico/hardware/clocks.c.i + +.PHONY : pico/hardware/clocks.i + +# target to preprocess a source file +pico/hardware/clocks.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/clocks.c.i +.PHONY : pico/hardware/clocks.c.i + +pico/hardware/clocks.s: pico/hardware/clocks.c.s + +.PHONY : pico/hardware/clocks.s + +# target to generate assembly for a file +pico/hardware/clocks.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/clocks.c.s +.PHONY : pico/hardware/clocks.c.s + +pico/hardware/dma.o: pico/hardware/dma.c.o + +.PHONY : pico/hardware/dma.o + +# target to build an object file +pico/hardware/dma.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/dma.c.o +.PHONY : pico/hardware/dma.c.o + +pico/hardware/dma.i: pico/hardware/dma.c.i + +.PHONY : pico/hardware/dma.i + +# target to preprocess a source file +pico/hardware/dma.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/dma.c.i +.PHONY : pico/hardware/dma.c.i + +pico/hardware/dma.s: pico/hardware/dma.c.s + +.PHONY : pico/hardware/dma.s + +# target to generate assembly for a file +pico/hardware/dma.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/dma.c.s +.PHONY : pico/hardware/dma.c.s + +pico/hardware/exception.o: pico/hardware/exception.c.o + +.PHONY : pico/hardware/exception.o + +# target to build an object file +pico/hardware/exception.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/exception.c.o +.PHONY : pico/hardware/exception.c.o + +pico/hardware/exception.i: pico/hardware/exception.c.i + +.PHONY : pico/hardware/exception.i + +# target to preprocess a source file +pico/hardware/exception.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/exception.c.i +.PHONY : pico/hardware/exception.c.i + +pico/hardware/exception.s: pico/hardware/exception.c.s + +.PHONY : pico/hardware/exception.s + +# target to generate assembly for a file +pico/hardware/exception.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/exception.c.s +.PHONY : pico/hardware/exception.c.s + +pico/hardware/flash.o: pico/hardware/flash.c.o + +.PHONY : pico/hardware/flash.o + +# target to build an object file +pico/hardware/flash.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/flash.c.o +.PHONY : pico/hardware/flash.c.o + +pico/hardware/flash.i: pico/hardware/flash.c.i + +.PHONY : pico/hardware/flash.i + +# target to preprocess a source file +pico/hardware/flash.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/flash.c.i +.PHONY : pico/hardware/flash.c.i + +pico/hardware/flash.s: pico/hardware/flash.c.s + +.PHONY : pico/hardware/flash.s + +# target to generate assembly for a file +pico/hardware/flash.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/flash.c.s +.PHONY : pico/hardware/flash.c.s + +pico/hardware/gpio.o: pico/hardware/gpio.c.o + +.PHONY : pico/hardware/gpio.o + +# target to build an object file +pico/hardware/gpio.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/gpio.c.o +.PHONY : pico/hardware/gpio.c.o + +pico/hardware/gpio.i: pico/hardware/gpio.c.i + +.PHONY : pico/hardware/gpio.i + +# target to preprocess a source file +pico/hardware/gpio.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/gpio.c.i +.PHONY : pico/hardware/gpio.c.i + +pico/hardware/gpio.s: pico/hardware/gpio.c.s + +.PHONY : pico/hardware/gpio.s + +# target to generate assembly for a file +pico/hardware/gpio.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/gpio.c.s +.PHONY : pico/hardware/gpio.c.s + +pico/hardware/i2c.o: pico/hardware/i2c.c.o + +.PHONY : pico/hardware/i2c.o + +# target to build an object file +pico/hardware/i2c.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/i2c.c.o +.PHONY : pico/hardware/i2c.c.o + +pico/hardware/i2c.i: pico/hardware/i2c.c.i + +.PHONY : pico/hardware/i2c.i + +# target to preprocess a source file +pico/hardware/i2c.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/i2c.c.i +.PHONY : pico/hardware/i2c.c.i + +pico/hardware/i2c.s: pico/hardware/i2c.c.s + +.PHONY : pico/hardware/i2c.s + +# target to generate assembly for a file +pico/hardware/i2c.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/i2c.c.s +.PHONY : pico/hardware/i2c.c.s + +pico/hardware/interp.o: pico/hardware/interp.c.o + +.PHONY : pico/hardware/interp.o + +# target to build an object file +pico/hardware/interp.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/interp.c.o +.PHONY : pico/hardware/interp.c.o + +pico/hardware/interp.i: pico/hardware/interp.c.i + +.PHONY : pico/hardware/interp.i + +# target to preprocess a source file +pico/hardware/interp.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/interp.c.i +.PHONY : pico/hardware/interp.c.i + +pico/hardware/interp.s: pico/hardware/interp.c.s + +.PHONY : pico/hardware/interp.s + +# target to generate assembly for a file +pico/hardware/interp.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/interp.c.s +.PHONY : pico/hardware/interp.c.s + +pico/hardware/irq.o: pico/hardware/irq.c.o + +.PHONY : pico/hardware/irq.o + +# target to build an object file +pico/hardware/irq.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/irq.c.o +.PHONY : pico/hardware/irq.c.o + +pico/hardware/irq.i: pico/hardware/irq.c.i + +.PHONY : pico/hardware/irq.i + +# target to preprocess a source file +pico/hardware/irq.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/irq.c.i +.PHONY : pico/hardware/irq.c.i + +pico/hardware/irq.s: pico/hardware/irq.c.s + +.PHONY : pico/hardware/irq.s + +# target to generate assembly for a file +pico/hardware/irq.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/irq.c.s +.PHONY : pico/hardware/irq.c.s + +pico/hardware/irq_handler_chain.o: pico/hardware/irq_handler_chain.S.o + +.PHONY : pico/hardware/irq_handler_chain.o + +# target to build an object file +pico/hardware/irq_handler_chain.S.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/irq_handler_chain.S.o +.PHONY : pico/hardware/irq_handler_chain.S.o + +pico/hardware/pio.o: pico/hardware/pio.c.o + +.PHONY : pico/hardware/pio.o + +# target to build an object file +pico/hardware/pio.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/pio.c.o +.PHONY : pico/hardware/pio.c.o + +pico/hardware/pio.i: pico/hardware/pio.c.i + +.PHONY : pico/hardware/pio.i + +# target to preprocess a source file +pico/hardware/pio.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/pio.c.i +.PHONY : pico/hardware/pio.c.i + +pico/hardware/pio.s: pico/hardware/pio.c.s + +.PHONY : pico/hardware/pio.s + +# target to generate assembly for a file +pico/hardware/pio.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/pio.c.s +.PHONY : pico/hardware/pio.c.s + +pico/hardware/pll.o: pico/hardware/pll.c.o + +.PHONY : pico/hardware/pll.o + +# target to build an object file +pico/hardware/pll.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/pll.c.o +.PHONY : pico/hardware/pll.c.o + +pico/hardware/pll.i: pico/hardware/pll.c.i + +.PHONY : pico/hardware/pll.i + +# target to preprocess a source file +pico/hardware/pll.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/pll.c.i +.PHONY : pico/hardware/pll.c.i + +pico/hardware/pll.s: pico/hardware/pll.c.s + +.PHONY : pico/hardware/pll.s + +# target to generate assembly for a file +pico/hardware/pll.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/pll.c.s +.PHONY : pico/hardware/pll.c.s + +pico/hardware/rtc.o: pico/hardware/rtc.c.o + +.PHONY : pico/hardware/rtc.o + +# target to build an object file +pico/hardware/rtc.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/rtc.c.o +.PHONY : pico/hardware/rtc.c.o + +pico/hardware/rtc.i: pico/hardware/rtc.c.i + +.PHONY : pico/hardware/rtc.i + +# target to preprocess a source file +pico/hardware/rtc.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/rtc.c.i +.PHONY : pico/hardware/rtc.c.i + +pico/hardware/rtc.s: pico/hardware/rtc.c.s + +.PHONY : pico/hardware/rtc.s + +# target to generate assembly for a file +pico/hardware/rtc.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/rtc.c.s +.PHONY : pico/hardware/rtc.c.s + +pico/hardware/spi.o: pico/hardware/spi.c.o + +.PHONY : pico/hardware/spi.o + +# target to build an object file +pico/hardware/spi.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/spi.c.o +.PHONY : pico/hardware/spi.c.o + +pico/hardware/spi.i: pico/hardware/spi.c.i + +.PHONY : pico/hardware/spi.i + +# target to preprocess a source file +pico/hardware/spi.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/spi.c.i +.PHONY : pico/hardware/spi.c.i + +pico/hardware/spi.s: pico/hardware/spi.c.s + +.PHONY : pico/hardware/spi.s + +# target to generate assembly for a file +pico/hardware/spi.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/spi.c.s +.PHONY : pico/hardware/spi.c.s + +pico/hardware/sync.o: pico/hardware/sync.c.o + +.PHONY : pico/hardware/sync.o + +# target to build an object file +pico/hardware/sync.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/sync.c.o +.PHONY : pico/hardware/sync.c.o + +pico/hardware/sync.i: pico/hardware/sync.c.i + +.PHONY : pico/hardware/sync.i + +# target to preprocess a source file +pico/hardware/sync.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/sync.c.i +.PHONY : pico/hardware/sync.c.i + +pico/hardware/sync.s: pico/hardware/sync.c.s + +.PHONY : pico/hardware/sync.s + +# target to generate assembly for a file +pico/hardware/sync.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/sync.c.s +.PHONY : pico/hardware/sync.c.s + +pico/hardware/timer.o: pico/hardware/timer.c.o + +.PHONY : pico/hardware/timer.o + +# target to build an object file +pico/hardware/timer.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/timer.c.o +.PHONY : pico/hardware/timer.c.o + +pico/hardware/timer.i: pico/hardware/timer.c.i + +.PHONY : pico/hardware/timer.i + +# target to preprocess a source file +pico/hardware/timer.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/timer.c.i +.PHONY : pico/hardware/timer.c.i + +pico/hardware/timer.s: pico/hardware/timer.c.s + +.PHONY : pico/hardware/timer.s + +# target to generate assembly for a file +pico/hardware/timer.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/timer.c.s +.PHONY : pico/hardware/timer.c.s + +pico/hardware/uart.o: pico/hardware/uart.c.o + +.PHONY : pico/hardware/uart.o + +# target to build an object file +pico/hardware/uart.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/uart.c.o +.PHONY : pico/hardware/uart.c.o + +pico/hardware/uart.i: pico/hardware/uart.c.i + +.PHONY : pico/hardware/uart.i + +# target to preprocess a source file +pico/hardware/uart.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/uart.c.i +.PHONY : pico/hardware/uart.c.i + +pico/hardware/uart.s: pico/hardware/uart.c.s + +.PHONY : pico/hardware/uart.s + +# target to generate assembly for a file +pico/hardware/uart.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/uart.c.s +.PHONY : pico/hardware/uart.c.s + +pico/hardware/vreg.o: pico/hardware/vreg.c.o + +.PHONY : pico/hardware/vreg.o + +# target to build an object file +pico/hardware/vreg.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/vreg.c.o +.PHONY : pico/hardware/vreg.c.o + +pico/hardware/vreg.i: pico/hardware/vreg.c.i + +.PHONY : pico/hardware/vreg.i + +# target to preprocess a source file +pico/hardware/vreg.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/vreg.c.i +.PHONY : pico/hardware/vreg.c.i + +pico/hardware/vreg.s: pico/hardware/vreg.c.s + +.PHONY : pico/hardware/vreg.s + +# target to generate assembly for a file +pico/hardware/vreg.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/vreg.c.s +.PHONY : pico/hardware/vreg.c.s + +pico/hardware/watchdog.o: pico/hardware/watchdog.c.o + +.PHONY : pico/hardware/watchdog.o + +# target to build an object file +pico/hardware/watchdog.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.o +.PHONY : pico/hardware/watchdog.c.o + +pico/hardware/watchdog.i: pico/hardware/watchdog.c.i + +.PHONY : pico/hardware/watchdog.i + +# target to preprocess a source file +pico/hardware/watchdog.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.i +.PHONY : pico/hardware/watchdog.c.i + +pico/hardware/watchdog.s: pico/hardware/watchdog.c.s + +.PHONY : pico/hardware/watchdog.s + +# target to generate assembly for a file +pico/hardware/watchdog.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/watchdog.c.s +.PHONY : pico/hardware/watchdog.c.s + +pico/hardware/xosc.o: pico/hardware/xosc.c.o + +.PHONY : pico/hardware/xosc.o + +# target to build an object file +pico/hardware/xosc.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/xosc.c.o +.PHONY : pico/hardware/xosc.c.o + +pico/hardware/xosc.i: pico/hardware/xosc.c.i + +.PHONY : pico/hardware/xosc.i + +# target to preprocess a source file +pico/hardware/xosc.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/xosc.c.i +.PHONY : pico/hardware/xosc.c.i + +pico/hardware/xosc.s: pico/hardware/xosc.c.s + +.PHONY : pico/hardware/xosc.s + +# target to generate assembly for a file +pico/hardware/xosc.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/hardware/xosc.c.s +.PHONY : pico/hardware/xosc.c.s + +pico/lock_core.o: pico/lock_core.c.o + +.PHONY : pico/lock_core.o + +# target to build an object file +pico/lock_core.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/lock_core.c.o +.PHONY : pico/lock_core.c.o + +pico/lock_core.i: pico/lock_core.c.i + +.PHONY : pico/lock_core.i + +# target to preprocess a source file +pico/lock_core.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/lock_core.c.i +.PHONY : pico/lock_core.c.i + +pico/lock_core.s: pico/lock_core.c.s + +.PHONY : pico/lock_core.s + +# target to generate assembly for a file +pico/lock_core.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/lock_core.c.s +.PHONY : pico/lock_core.c.s + +pico/multicore.o: pico/multicore.c.o + +.PHONY : pico/multicore.o + +# target to build an object file +pico/multicore.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/multicore.c.o +.PHONY : pico/multicore.c.o + +pico/multicore.i: pico/multicore.c.i + +.PHONY : pico/multicore.i + +# target to preprocess a source file +pico/multicore.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/multicore.c.i +.PHONY : pico/multicore.c.i + +pico/multicore.s: pico/multicore.c.s + +.PHONY : pico/multicore.s + +# target to generate assembly for a file +pico/multicore.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/multicore.c.s +.PHONY : pico/multicore.c.s + +pico/mutex.o: pico/mutex.c.o + +.PHONY : pico/mutex.o + +# target to build an object file +pico/mutex.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/mutex.c.o +.PHONY : pico/mutex.c.o + +pico/mutex.i: pico/mutex.c.i + +.PHONY : pico/mutex.i + +# target to preprocess a source file +pico/mutex.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/mutex.c.i +.PHONY : pico/mutex.c.i + +pico/mutex.s: pico/mutex.c.s + +.PHONY : pico/mutex.s + +# target to generate assembly for a file +pico/mutex.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/mutex.c.s +.PHONY : pico/mutex.c.s + +pico/pheap.o: pico/pheap.c.o + +.PHONY : pico/pheap.o + +# target to build an object file +pico/pheap.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/pheap.c.o +.PHONY : pico/pheap.c.o + +pico/pheap.i: pico/pheap.c.i + +.PHONY : pico/pheap.i + +# target to preprocess a source file +pico/pheap.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/pheap.c.i +.PHONY : pico/pheap.c.i + +pico/pheap.s: pico/pheap.c.s + +.PHONY : pico/pheap.s + +# target to generate assembly for a file +pico/pheap.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/pheap.c.s +.PHONY : pico/pheap.c.s + +pico/pico4ml/screen.o: pico/pico4ml/screen.c.o + +.PHONY : pico/pico4ml/screen.o + +# target to build an object file +pico/pico4ml/screen.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.o +.PHONY : pico/pico4ml/screen.c.o + +pico/pico4ml/screen.i: pico/pico4ml/screen.c.i + +.PHONY : pico/pico4ml/screen.i + +# target to preprocess a source file +pico/pico4ml/screen.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.i +.PHONY : pico/pico4ml/screen.c.i + +pico/pico4ml/screen.s: pico/pico4ml/screen.c.s + +.PHONY : pico/pico4ml/screen.s + +# target to generate assembly for a file +pico/pico4ml/screen.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/pico4ml/screen.c.s +.PHONY : pico/pico4ml/screen.c.s + +pico/pico_bootsel_via_double_reset.o: pico/pico_bootsel_via_double_reset.c.o + +.PHONY : pico/pico_bootsel_via_double_reset.o + +# target to build an object file +pico/pico_bootsel_via_double_reset.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.o +.PHONY : pico/pico_bootsel_via_double_reset.c.o + +pico/pico_bootsel_via_double_reset.i: pico/pico_bootsel_via_double_reset.c.i + +.PHONY : pico/pico_bootsel_via_double_reset.i + +# target to preprocess a source file +pico/pico_bootsel_via_double_reset.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.i +.PHONY : pico/pico_bootsel_via_double_reset.c.i + +pico/pico_bootsel_via_double_reset.s: pico/pico_bootsel_via_double_reset.c.s + +.PHONY : pico/pico_bootsel_via_double_reset.s + +# target to generate assembly for a file +pico/pico_bootsel_via_double_reset.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/pico_bootsel_via_double_reset.c.s +.PHONY : pico/pico_bootsel_via_double_reset.c.s + +pico/pico_malloc.o: pico/pico_malloc.c.o + +.PHONY : pico/pico_malloc.o + +# target to build an object file +pico/pico_malloc.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/pico_malloc.c.o +.PHONY : pico/pico_malloc.c.o + +pico/pico_malloc.i: pico/pico_malloc.c.i + +.PHONY : pico/pico_malloc.i + +# target to preprocess a source file +pico/pico_malloc.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/pico_malloc.c.i +.PHONY : pico/pico_malloc.c.i + +pico/pico_malloc.s: pico/pico_malloc.c.s + +.PHONY : pico/pico_malloc.s + +# target to generate assembly for a file +pico/pico_malloc.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/pico_malloc.c.s +.PHONY : pico/pico_malloc.c.s + +pico/platform.o: pico/platform.c.o + +.PHONY : pico/platform.o + +# target to build an object file +pico/platform.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/platform.c.o +.PHONY : pico/platform.c.o + +pico/platform.i: pico/platform.c.i + +.PHONY : pico/platform.i + +# target to preprocess a source file +pico/platform.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/platform.c.i +.PHONY : pico/platform.c.i + +pico/platform.s: pico/platform.c.s + +.PHONY : pico/platform.s + +# target to generate assembly for a file +pico/platform.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/platform.c.s +.PHONY : pico/platform.c.s + +pico/queue.o: pico/queue.c.o + +.PHONY : pico/queue.o + +# target to build an object file +pico/queue.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/queue.c.o +.PHONY : pico/queue.c.o + +pico/queue.i: pico/queue.c.i + +.PHONY : pico/queue.i + +# target to preprocess a source file +pico/queue.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/queue.c.i +.PHONY : pico/queue.c.i + +pico/queue.s: pico/queue.c.s + +.PHONY : pico/queue.s + +# target to generate assembly for a file +pico/queue.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/queue.c.s +.PHONY : pico/queue.c.s + +pico/reset_interface.o: pico/reset_interface.c.o + +.PHONY : pico/reset_interface.o + +# target to build an object file +pico/reset_interface.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/reset_interface.c.o +.PHONY : pico/reset_interface.c.o + +pico/reset_interface.i: pico/reset_interface.c.i + +.PHONY : pico/reset_interface.i + +# target to preprocess a source file +pico/reset_interface.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/reset_interface.c.i +.PHONY : pico/reset_interface.c.i + +pico/reset_interface.s: pico/reset_interface.c.s + +.PHONY : pico/reset_interface.s + +# target to generate assembly for a file +pico/reset_interface.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/reset_interface.c.s +.PHONY : pico/reset_interface.c.s + +pico/runtime.o: pico/runtime.c.o + +.PHONY : pico/runtime.o + +# target to build an object file +pico/runtime.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/runtime.c.o +.PHONY : pico/runtime.c.o + +pico/runtime.i: pico/runtime.c.i + +.PHONY : pico/runtime.i + +# target to preprocess a source file +pico/runtime.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/runtime.c.i +.PHONY : pico/runtime.c.i + +pico/runtime.s: pico/runtime.c.s + +.PHONY : pico/runtime.s + +# target to generate assembly for a file +pico/runtime.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/runtime.c.s +.PHONY : pico/runtime.c.s + +pico/sem.o: pico/sem.c.o + +.PHONY : pico/sem.o + +# target to build an object file +pico/sem.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/sem.c.o +.PHONY : pico/sem.c.o + +pico/sem.i: pico/sem.c.i + +.PHONY : pico/sem.i + +# target to preprocess a source file +pico/sem.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/sem.c.i +.PHONY : pico/sem.c.i + +pico/sem.s: pico/sem.c.s + +.PHONY : pico/sem.s + +# target to generate assembly for a file +pico/sem.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/sem.c.s +.PHONY : pico/sem.c.s + +pico/stdio.o: pico/stdio.c.o + +.PHONY : pico/stdio.o + +# target to build an object file +pico/stdio.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/stdio.c.o +.PHONY : pico/stdio.c.o + +pico/stdio.i: pico/stdio.c.i + +.PHONY : pico/stdio.i + +# target to preprocess a source file +pico/stdio.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/stdio.c.i +.PHONY : pico/stdio.c.i + +pico/stdio.s: pico/stdio.c.s + +.PHONY : pico/stdio.s + +# target to generate assembly for a file +pico/stdio.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/stdio.c.s +.PHONY : pico/stdio.c.s + +pico/stdio_semihosting.o: pico/stdio_semihosting.c.o + +.PHONY : pico/stdio_semihosting.o + +# target to build an object file +pico/stdio_semihosting.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.o +.PHONY : pico/stdio_semihosting.c.o + +pico/stdio_semihosting.i: pico/stdio_semihosting.c.i + +.PHONY : pico/stdio_semihosting.i + +# target to preprocess a source file +pico/stdio_semihosting.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.i +.PHONY : pico/stdio_semihosting.c.i + +pico/stdio_semihosting.s: pico/stdio_semihosting.c.s + +.PHONY : pico/stdio_semihosting.s + +# target to generate assembly for a file +pico/stdio_semihosting.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/stdio_semihosting.c.s +.PHONY : pico/stdio_semihosting.c.s + +pico/stdio_uart.o: pico/stdio_uart.c.o + +.PHONY : pico/stdio_uart.o + +# target to build an object file +pico/stdio_uart.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/stdio_uart.c.o +.PHONY : pico/stdio_uart.c.o + +pico/stdio_uart.i: pico/stdio_uart.c.i + +.PHONY : pico/stdio_uart.i + +# target to preprocess a source file +pico/stdio_uart.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/stdio_uart.c.i +.PHONY : pico/stdio_uart.c.i + +pico/stdio_uart.s: pico/stdio_uart.c.s + +.PHONY : pico/stdio_uart.s + +# target to generate assembly for a file +pico/stdio_uart.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/stdio_uart.c.s +.PHONY : pico/stdio_uart.c.s + +pico/stdio_usb.o: pico/stdio_usb.c.o + +.PHONY : pico/stdio_usb.o + +# target to build an object file +pico/stdio_usb.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/stdio_usb.c.o +.PHONY : pico/stdio_usb.c.o + +pico/stdio_usb.i: pico/stdio_usb.c.i + +.PHONY : pico/stdio_usb.i + +# target to preprocess a source file +pico/stdio_usb.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/stdio_usb.c.i +.PHONY : pico/stdio_usb.c.i + +pico/stdio_usb.s: pico/stdio_usb.c.s + +.PHONY : pico/stdio_usb.s + +# target to generate assembly for a file +pico/stdio_usb.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/stdio_usb.c.s +.PHONY : pico/stdio_usb.c.s + +pico/stdio_usb_descriptors.o: pico/stdio_usb_descriptors.c.o + +.PHONY : pico/stdio_usb_descriptors.o + +# target to build an object file +pico/stdio_usb_descriptors.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.o +.PHONY : pico/stdio_usb_descriptors.c.o + +pico/stdio_usb_descriptors.i: pico/stdio_usb_descriptors.c.i + +.PHONY : pico/stdio_usb_descriptors.i + +# target to preprocess a source file +pico/stdio_usb_descriptors.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.i +.PHONY : pico/stdio_usb_descriptors.c.i + +pico/stdio_usb_descriptors.s: pico/stdio_usb_descriptors.c.s + +.PHONY : pico/stdio_usb_descriptors.s + +# target to generate assembly for a file +pico/stdio_usb_descriptors.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/stdio_usb_descriptors.c.s +.PHONY : pico/stdio_usb_descriptors.c.s + +pico/stdlib.o: pico/stdlib.c.o + +.PHONY : pico/stdlib.o + +# target to build an object file +pico/stdlib.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/stdlib.c.o +.PHONY : pico/stdlib.c.o + +pico/stdlib.i: pico/stdlib.c.i + +.PHONY : pico/stdlib.i + +# target to preprocess a source file +pico/stdlib.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/stdlib.c.i +.PHONY : pico/stdlib.c.i + +pico/stdlib.s: pico/stdlib.c.s + +.PHONY : pico/stdlib.s + +# target to generate assembly for a file +pico/stdlib.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/stdlib.c.s +.PHONY : pico/stdlib.c.s + +pico/time.o: pico/time.c.o + +.PHONY : pico/time.o + +# target to build an object file +pico/time.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/time.c.o +.PHONY : pico/time.c.o + +pico/time.i: pico/time.c.i + +.PHONY : pico/time.i + +# target to preprocess a source file +pico/time.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/time.c.i +.PHONY : pico/time.c.i + +pico/time.s: pico/time.c.s + +.PHONY : pico/time.s + +# target to generate assembly for a file +pico/time.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/time.c.s +.PHONY : pico/time.c.s + +pico/timeout_helper.o: pico/timeout_helper.c.o + +.PHONY : pico/timeout_helper.o + +# target to build an object file +pico/timeout_helper.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/timeout_helper.c.o +.PHONY : pico/timeout_helper.c.o + +pico/timeout_helper.i: pico/timeout_helper.c.i + +.PHONY : pico/timeout_helper.i + +# target to preprocess a source file +pico/timeout_helper.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/timeout_helper.c.i +.PHONY : pico/timeout_helper.c.i + +pico/timeout_helper.s: pico/timeout_helper.c.s + +.PHONY : pico/timeout_helper.s + +# target to generate assembly for a file +pico/timeout_helper.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/timeout_helper.c.s +.PHONY : pico/timeout_helper.c.s + +pico/tinyusb/cdc/cdc_device.o: pico/tinyusb/cdc/cdc_device.c.o + +.PHONY : pico/tinyusb/cdc/cdc_device.o + +# target to build an object file +pico/tinyusb/cdc/cdc_device.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.o +.PHONY : pico/tinyusb/cdc/cdc_device.c.o + +pico/tinyusb/cdc/cdc_device.i: pico/tinyusb/cdc/cdc_device.c.i + +.PHONY : pico/tinyusb/cdc/cdc_device.i + +# target to preprocess a source file +pico/tinyusb/cdc/cdc_device.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.i +.PHONY : pico/tinyusb/cdc/cdc_device.c.i + +pico/tinyusb/cdc/cdc_device.s: pico/tinyusb/cdc/cdc_device.c.s + +.PHONY : pico/tinyusb/cdc/cdc_device.s + +# target to generate assembly for a file +pico/tinyusb/cdc/cdc_device.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_device.c.s +.PHONY : pico/tinyusb/cdc/cdc_device.c.s + +pico/tinyusb/cdc/cdc_host.o: pico/tinyusb/cdc/cdc_host.c.o + +.PHONY : pico/tinyusb/cdc/cdc_host.o + +# target to build an object file +pico/tinyusb/cdc/cdc_host.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.o +.PHONY : pico/tinyusb/cdc/cdc_host.c.o + +pico/tinyusb/cdc/cdc_host.i: pico/tinyusb/cdc/cdc_host.c.i + +.PHONY : pico/tinyusb/cdc/cdc_host.i + +# target to preprocess a source file +pico/tinyusb/cdc/cdc_host.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.i +.PHONY : pico/tinyusb/cdc/cdc_host.c.i + +pico/tinyusb/cdc/cdc_host.s: pico/tinyusb/cdc/cdc_host.c.s + +.PHONY : pico/tinyusb/cdc/cdc_host.s + +# target to generate assembly for a file +pico/tinyusb/cdc/cdc_host.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_host.c.s +.PHONY : pico/tinyusb/cdc/cdc_host.c.s + +pico/tinyusb/cdc/cdc_rndis_host.o: pico/tinyusb/cdc/cdc_rndis_host.c.o + +.PHONY : pico/tinyusb/cdc/cdc_rndis_host.o + +# target to build an object file +pico/tinyusb/cdc/cdc_rndis_host.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.o +.PHONY : pico/tinyusb/cdc/cdc_rndis_host.c.o + +pico/tinyusb/cdc/cdc_rndis_host.i: pico/tinyusb/cdc/cdc_rndis_host.c.i + +.PHONY : pico/tinyusb/cdc/cdc_rndis_host.i + +# target to preprocess a source file +pico/tinyusb/cdc/cdc_rndis_host.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.i +.PHONY : pico/tinyusb/cdc/cdc_rndis_host.c.i + +pico/tinyusb/cdc/cdc_rndis_host.s: pico/tinyusb/cdc/cdc_rndis_host.c.s + +.PHONY : pico/tinyusb/cdc/cdc_rndis_host.s + +# target to generate assembly for a file +pico/tinyusb/cdc/cdc_rndis_host.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/cdc/cdc_rndis_host.c.s +.PHONY : pico/tinyusb/cdc/cdc_rndis_host.c.s + +pico/tinyusb/dcd_rp2040.o: pico/tinyusb/dcd_rp2040.c.o + +.PHONY : pico/tinyusb/dcd_rp2040.o + +# target to build an object file +pico/tinyusb/dcd_rp2040.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.o +.PHONY : pico/tinyusb/dcd_rp2040.c.o + +pico/tinyusb/dcd_rp2040.i: pico/tinyusb/dcd_rp2040.c.i + +.PHONY : pico/tinyusb/dcd_rp2040.i + +# target to preprocess a source file +pico/tinyusb/dcd_rp2040.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.i +.PHONY : pico/tinyusb/dcd_rp2040.c.i + +pico/tinyusb/dcd_rp2040.s: pico/tinyusb/dcd_rp2040.c.s + +.PHONY : pico/tinyusb/dcd_rp2040.s + +# target to generate assembly for a file +pico/tinyusb/dcd_rp2040.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/dcd_rp2040.c.s +.PHONY : pico/tinyusb/dcd_rp2040.c.s + +pico/tinyusb/hcd_rp2040.o: pico/tinyusb/hcd_rp2040.c.o + +.PHONY : pico/tinyusb/hcd_rp2040.o + +# target to build an object file +pico/tinyusb/hcd_rp2040.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.o +.PHONY : pico/tinyusb/hcd_rp2040.c.o + +pico/tinyusb/hcd_rp2040.i: pico/tinyusb/hcd_rp2040.c.i + +.PHONY : pico/tinyusb/hcd_rp2040.i + +# target to preprocess a source file +pico/tinyusb/hcd_rp2040.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.i +.PHONY : pico/tinyusb/hcd_rp2040.c.i + +pico/tinyusb/hcd_rp2040.s: pico/tinyusb/hcd_rp2040.c.s + +.PHONY : pico/tinyusb/hcd_rp2040.s + +# target to generate assembly for a file +pico/tinyusb/hcd_rp2040.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/hcd_rp2040.c.s +.PHONY : pico/tinyusb/hcd_rp2040.c.s + +pico/tinyusb/host/hub.o: pico/tinyusb/host/hub.c.o + +.PHONY : pico/tinyusb/host/hub.o + +# target to build an object file +pico/tinyusb/host/hub.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.o +.PHONY : pico/tinyusb/host/hub.c.o + +pico/tinyusb/host/hub.i: pico/tinyusb/host/hub.c.i + +.PHONY : pico/tinyusb/host/hub.i + +# target to preprocess a source file +pico/tinyusb/host/hub.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.i +.PHONY : pico/tinyusb/host/hub.c.i + +pico/tinyusb/host/hub.s: pico/tinyusb/host/hub.c.s + +.PHONY : pico/tinyusb/host/hub.s + +# target to generate assembly for a file +pico/tinyusb/host/hub.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/host/hub.c.s +.PHONY : pico/tinyusb/host/hub.c.s + +pico/tinyusb/host/usbh.o: pico/tinyusb/host/usbh.c.o + +.PHONY : pico/tinyusb/host/usbh.o + +# target to build an object file +pico/tinyusb/host/usbh.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.o +.PHONY : pico/tinyusb/host/usbh.c.o + +pico/tinyusb/host/usbh.i: pico/tinyusb/host/usbh.c.i + +.PHONY : pico/tinyusb/host/usbh.i + +# target to preprocess a source file +pico/tinyusb/host/usbh.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.i +.PHONY : pico/tinyusb/host/usbh.c.i + +pico/tinyusb/host/usbh.s: pico/tinyusb/host/usbh.c.s + +.PHONY : pico/tinyusb/host/usbh.s + +# target to generate assembly for a file +pico/tinyusb/host/usbh.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh.c.s +.PHONY : pico/tinyusb/host/usbh.c.s + +pico/tinyusb/host/usbh_control.o: pico/tinyusb/host/usbh_control.c.o + +.PHONY : pico/tinyusb/host/usbh_control.o + +# target to build an object file +pico/tinyusb/host/usbh_control.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.o +.PHONY : pico/tinyusb/host/usbh_control.c.o + +pico/tinyusb/host/usbh_control.i: pico/tinyusb/host/usbh_control.c.i + +.PHONY : pico/tinyusb/host/usbh_control.i + +# target to preprocess a source file +pico/tinyusb/host/usbh_control.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.i +.PHONY : pico/tinyusb/host/usbh_control.c.i + +pico/tinyusb/host/usbh_control.s: pico/tinyusb/host/usbh_control.c.s + +.PHONY : pico/tinyusb/host/usbh_control.s + +# target to generate assembly for a file +pico/tinyusb/host/usbh_control.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/host/usbh_control.c.s +.PHONY : pico/tinyusb/host/usbh_control.c.s + +pico/tinyusb/rp2040_usb.o: pico/tinyusb/rp2040_usb.c.o + +.PHONY : pico/tinyusb/rp2040_usb.o + +# target to build an object file +pico/tinyusb/rp2040_usb.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.o +.PHONY : pico/tinyusb/rp2040_usb.c.o + +pico/tinyusb/rp2040_usb.i: pico/tinyusb/rp2040_usb.c.i + +.PHONY : pico/tinyusb/rp2040_usb.i + +# target to preprocess a source file +pico/tinyusb/rp2040_usb.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.i +.PHONY : pico/tinyusb/rp2040_usb.c.i + +pico/tinyusb/rp2040_usb.s: pico/tinyusb/rp2040_usb.c.s + +.PHONY : pico/tinyusb/rp2040_usb.s + +# target to generate assembly for a file +pico/tinyusb/rp2040_usb.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/rp2040_usb.c.s +.PHONY : pico/tinyusb/rp2040_usb.c.s + +pico/tinyusb/tusb.o: pico/tinyusb/tusb.c.o + +.PHONY : pico/tinyusb/tusb.o + +# target to build an object file +pico/tinyusb/tusb.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.o +.PHONY : pico/tinyusb/tusb.c.o + +pico/tinyusb/tusb.i: pico/tinyusb/tusb.c.i + +.PHONY : pico/tinyusb/tusb.i + +# target to preprocess a source file +pico/tinyusb/tusb.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.i +.PHONY : pico/tinyusb/tusb.c.i + +pico/tinyusb/tusb.s: pico/tinyusb/tusb.c.s + +.PHONY : pico/tinyusb/tusb.s + +# target to generate assembly for a file +pico/tinyusb/tusb.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/tusb.c.s +.PHONY : pico/tinyusb/tusb.c.s + +pico/tinyusb/tusb_fifo.o: pico/tinyusb/tusb_fifo.c.o + +.PHONY : pico/tinyusb/tusb_fifo.o + +# target to build an object file +pico/tinyusb/tusb_fifo.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.o +.PHONY : pico/tinyusb/tusb_fifo.c.o + +pico/tinyusb/tusb_fifo.i: pico/tinyusb/tusb_fifo.c.i + +.PHONY : pico/tinyusb/tusb_fifo.i + +# target to preprocess a source file +pico/tinyusb/tusb_fifo.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.i +.PHONY : pico/tinyusb/tusb_fifo.c.i + +pico/tinyusb/tusb_fifo.s: pico/tinyusb/tusb_fifo.c.s + +.PHONY : pico/tinyusb/tusb_fifo.s + +# target to generate assembly for a file +pico/tinyusb/tusb_fifo.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/tusb_fifo.c.s +.PHONY : pico/tinyusb/tusb_fifo.c.s + +pico/tinyusb/usbd.o: pico/tinyusb/usbd.c.o + +.PHONY : pico/tinyusb/usbd.o + +# target to build an object file +pico/tinyusb/usbd.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.o +.PHONY : pico/tinyusb/usbd.c.o + +pico/tinyusb/usbd.i: pico/tinyusb/usbd.c.i + +.PHONY : pico/tinyusb/usbd.i + +# target to preprocess a source file +pico/tinyusb/usbd.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.i +.PHONY : pico/tinyusb/usbd.c.i + +pico/tinyusb/usbd.s: pico/tinyusb/usbd.c.s + +.PHONY : pico/tinyusb/usbd.s + +# target to generate assembly for a file +pico/tinyusb/usbd.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/usbd.c.s +.PHONY : pico/tinyusb/usbd.c.s + +pico/tinyusb/usbd_control.o: pico/tinyusb/usbd_control.c.o + +.PHONY : pico/tinyusb/usbd_control.o + +# target to build an object file +pico/tinyusb/usbd_control.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.o +.PHONY : pico/tinyusb/usbd_control.c.o + +pico/tinyusb/usbd_control.i: pico/tinyusb/usbd_control.c.i + +.PHONY : pico/tinyusb/usbd_control.i + +# target to preprocess a source file +pico/tinyusb/usbd_control.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.i +.PHONY : pico/tinyusb/usbd_control.c.i + +pico/tinyusb/usbd_control.s: pico/tinyusb/usbd_control.c.s + +.PHONY : pico/tinyusb/usbd_control.s + +# target to generate assembly for a file +pico/tinyusb/usbd_control.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/tinyusb/usbd_control.c.s +.PHONY : pico/tinyusb/usbd_control.c.s + +pico/unique_id.o: pico/unique_id.c.o + +.PHONY : pico/unique_id.o + +# target to build an object file +pico/unique_id.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/unique_id.c.o +.PHONY : pico/unique_id.c.o + +pico/unique_id.i: pico/unique_id.c.i + +.PHONY : pico/unique_id.i + +# target to preprocess a source file +pico/unique_id.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/unique_id.c.i +.PHONY : pico/unique_id.c.i + +pico/unique_id.s: pico/unique_id.c.s + +.PHONY : pico/unique_id.s + +# target to generate assembly for a file +pico/unique_id.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/pico/unique_id.c.s +.PHONY : pico/unique_id.c.s + +utils.o: utils.c.o + +.PHONY : utils.o + +# target to build an object file +utils.c.o: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/utils.c.o +.PHONY : utils.c.o + +utils.i: utils.c.i + +.PHONY : utils.i + +# target to preprocess a source file +utils.c.i: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/utils.c.i +.PHONY : utils.c.i + +utils.s: utils.c.s + +.PHONY : utils.s + +# target to generate assembly for a file +utils.c.s: + $(MAKE) -f CMakeFiles/main.elf.dir/build.make CMakeFiles/main.elf.dir/utils.c.s +.PHONY : utils.c.s + +# Help Target +help: + @echo "The following are some of the valid targets for this Makefile:" + @echo "... all (the default if no target is provided)" + @echo "... clean" + @echo "... depend" + @echo "... edit_cache" + @echo "... rebuild_cache" + @echo "... main.elf" + @echo "... balls.o" + @echo "... balls.i" + @echo "... balls.s" + @echo "... fonts.o" + @echo "... fonts.i" + @echo "... fonts.s" + @echo "... main.o" + @echo "... main.i" + @echo "... main.s" + @echo "... pico/boot2/boot2_w25q080.o" + @echo "... pico/bootrom.o" + @echo "... pico/bootrom.i" + @echo "... pico/bootrom.s" + @echo "... pico/critical_section.o" + @echo "... pico/critical_section.i" + @echo "... pico/critical_section.s" + @echo "... pico/crt0.o" + @echo "... pico/datetime.o" + @echo "... pico/datetime.i" + @echo "... pico/datetime.s" + @echo "... pico/hardware/adc.o" + @echo "... pico/hardware/adc.i" + @echo "... pico/hardware/adc.s" + @echo "... pico/hardware/claim.o" + @echo "... pico/hardware/claim.i" + @echo "... pico/hardware/claim.s" + @echo "... pico/hardware/clocks.o" + @echo "... pico/hardware/clocks.i" + @echo "... pico/hardware/clocks.s" + @echo "... pico/hardware/dma.o" + @echo "... pico/hardware/dma.i" + @echo "... pico/hardware/dma.s" + @echo "... pico/hardware/exception.o" + @echo "... pico/hardware/exception.i" + @echo "... pico/hardware/exception.s" + @echo "... pico/hardware/flash.o" + @echo "... pico/hardware/flash.i" + @echo "... pico/hardware/flash.s" + @echo "... pico/hardware/gpio.o" + @echo "... pico/hardware/gpio.i" + @echo "... pico/hardware/gpio.s" + @echo "... pico/hardware/i2c.o" + @echo "... pico/hardware/i2c.i" + @echo "... pico/hardware/i2c.s" + @echo "... pico/hardware/interp.o" + @echo "... pico/hardware/interp.i" + @echo "... pico/hardware/interp.s" + @echo "... pico/hardware/irq.o" + @echo "... pico/hardware/irq.i" + @echo "... pico/hardware/irq.s" + @echo "... pico/hardware/irq_handler_chain.o" + @echo "... pico/hardware/pio.o" + @echo "... pico/hardware/pio.i" + @echo "... pico/hardware/pio.s" + @echo "... pico/hardware/pll.o" + @echo "... pico/hardware/pll.i" + @echo "... pico/hardware/pll.s" + @echo "... pico/hardware/rtc.o" + @echo "... pico/hardware/rtc.i" + @echo "... pico/hardware/rtc.s" + @echo "... pico/hardware/spi.o" + @echo "... pico/hardware/spi.i" + @echo "... pico/hardware/spi.s" + @echo "... pico/hardware/sync.o" + @echo "... pico/hardware/sync.i" + @echo "... pico/hardware/sync.s" + @echo "... pico/hardware/timer.o" + @echo "... pico/hardware/timer.i" + @echo "... pico/hardware/timer.s" + @echo "... pico/hardware/uart.o" + @echo "... pico/hardware/uart.i" + @echo "... pico/hardware/uart.s" + @echo "... pico/hardware/vreg.o" + @echo "... pico/hardware/vreg.i" + @echo "... pico/hardware/vreg.s" + @echo "... pico/hardware/watchdog.o" + @echo "... pico/hardware/watchdog.i" + @echo "... pico/hardware/watchdog.s" + @echo "... pico/hardware/xosc.o" + @echo "... pico/hardware/xosc.i" + @echo "... pico/hardware/xosc.s" + @echo "... pico/lock_core.o" + @echo "... pico/lock_core.i" + @echo "... pico/lock_core.s" + @echo "... pico/multicore.o" + @echo "... pico/multicore.i" + @echo "... pico/multicore.s" + @echo "... pico/mutex.o" + @echo "... pico/mutex.i" + @echo "... pico/mutex.s" + @echo "... pico/pheap.o" + @echo "... pico/pheap.i" + @echo "... pico/pheap.s" + @echo "... pico/pico4ml/screen.o" + @echo "... pico/pico4ml/screen.i" + @echo "... pico/pico4ml/screen.s" + @echo "... pico/pico_bootsel_via_double_reset.o" + @echo "... pico/pico_bootsel_via_double_reset.i" + @echo "... pico/pico_bootsel_via_double_reset.s" + @echo "... pico/pico_malloc.o" + @echo "... pico/pico_malloc.i" + @echo "... pico/pico_malloc.s" + @echo "... pico/platform.o" + @echo "... pico/platform.i" + @echo "... pico/platform.s" + @echo "... pico/queue.o" + @echo "... pico/queue.i" + @echo "... pico/queue.s" + @echo "... pico/reset_interface.o" + @echo "... pico/reset_interface.i" + @echo "... pico/reset_interface.s" + @echo "... pico/runtime.o" + @echo "... pico/runtime.i" + @echo "... pico/runtime.s" + @echo "... pico/sem.o" + @echo "... pico/sem.i" + @echo "... pico/sem.s" + @echo "... pico/stdio.o" + @echo "... pico/stdio.i" + @echo "... pico/stdio.s" + @echo "... pico/stdio_semihosting.o" + @echo "... pico/stdio_semihosting.i" + @echo "... pico/stdio_semihosting.s" + @echo "... pico/stdio_uart.o" + @echo "... pico/stdio_uart.i" + @echo "... pico/stdio_uart.s" + @echo "... pico/stdio_usb.o" + @echo "... pico/stdio_usb.i" + @echo "... pico/stdio_usb.s" + @echo "... pico/stdio_usb_descriptors.o" + @echo "... pico/stdio_usb_descriptors.i" + @echo "... pico/stdio_usb_descriptors.s" + @echo "... pico/stdlib.o" + @echo "... pico/stdlib.i" + @echo "... pico/stdlib.s" + @echo "... pico/time.o" + @echo "... pico/time.i" + @echo "... pico/time.s" + @echo "... pico/timeout_helper.o" + @echo "... pico/timeout_helper.i" + @echo "... pico/timeout_helper.s" + @echo "... pico/tinyusb/cdc/cdc_device.o" + @echo "... pico/tinyusb/cdc/cdc_device.i" + @echo "... pico/tinyusb/cdc/cdc_device.s" + @echo "... pico/tinyusb/cdc/cdc_host.o" + @echo "... pico/tinyusb/cdc/cdc_host.i" + @echo "... pico/tinyusb/cdc/cdc_host.s" + @echo "... pico/tinyusb/cdc/cdc_rndis_host.o" + @echo "... pico/tinyusb/cdc/cdc_rndis_host.i" + @echo "... pico/tinyusb/cdc/cdc_rndis_host.s" + @echo "... pico/tinyusb/dcd_rp2040.o" + @echo "... pico/tinyusb/dcd_rp2040.i" + @echo "... pico/tinyusb/dcd_rp2040.s" + @echo "... pico/tinyusb/hcd_rp2040.o" + @echo "... pico/tinyusb/hcd_rp2040.i" + @echo "... pico/tinyusb/hcd_rp2040.s" + @echo "... pico/tinyusb/host/hub.o" + @echo "... pico/tinyusb/host/hub.i" + @echo "... pico/tinyusb/host/hub.s" + @echo "... pico/tinyusb/host/usbh.o" + @echo "... pico/tinyusb/host/usbh.i" + @echo "... pico/tinyusb/host/usbh.s" + @echo "... pico/tinyusb/host/usbh_control.o" + @echo "... pico/tinyusb/host/usbh_control.i" + @echo "... pico/tinyusb/host/usbh_control.s" + @echo "... pico/tinyusb/rp2040_usb.o" + @echo "... pico/tinyusb/rp2040_usb.i" + @echo "... pico/tinyusb/rp2040_usb.s" + @echo "... pico/tinyusb/tusb.o" + @echo "... pico/tinyusb/tusb.i" + @echo "... pico/tinyusb/tusb.s" + @echo "... pico/tinyusb/tusb_fifo.o" + @echo "... pico/tinyusb/tusb_fifo.i" + @echo "... pico/tinyusb/tusb_fifo.s" + @echo "... pico/tinyusb/usbd.o" + @echo "... pico/tinyusb/usbd.i" + @echo "... pico/tinyusb/usbd.s" + @echo "... pico/tinyusb/usbd_control.o" + @echo "... pico/tinyusb/usbd_control.i" + @echo "... pico/tinyusb/usbd_control.s" + @echo "... pico/unique_id.o" + @echo "... pico/unique_id.i" + @echo "... pico/unique_id.s" + @echo "... utils.o" + @echo "... utils.i" + @echo "... utils.s" +.PHONY : help + + + +#============================================================================= +# Special targets to cleanup operation of make. + +# Special rule to run CMake to check the build system integrity. +# No rule that depends on this can have commands that come from listfiles +# because they might be regenerated. +cmake_check_build_system: + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0 +.PHONY : cmake_check_build_system + diff --git a/arkanoid/build/cmake_install.cmake b/arkanoid/build/cmake_install.cmake new file mode 100644 index 0000000..1daaa5e --- /dev/null +++ b/arkanoid/build/cmake_install.cmake @@ -0,0 +1,49 @@ +# Install script for directory: /home/amy/projects/uni/comp-sys-ii/arkanoid/task1 + +# Set the install prefix +if(NOT DEFINED CMAKE_INSTALL_PREFIX) + set(CMAKE_INSTALL_PREFIX "/usr/local") +endif() +string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + +# Set the install configuration name. +if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) + if(BUILD_TYPE) + string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" + CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") + else() + set(CMAKE_INSTALL_CONFIG_NAME "") + endif() + message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") +endif() + +# Set the component getting installed. +if(NOT CMAKE_INSTALL_COMPONENT) + if(COMPONENT) + message(STATUS "Install component: \"${COMPONENT}\"") + set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") + else() + set(CMAKE_INSTALL_COMPONENT) + endif() +endif() + +# Install shared libraries without execute permission? +if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE) + set(CMAKE_INSTALL_SO_NO_EXE "1") +endif() + +# Is this installation the result of a crosscompile? +if(NOT DEFINED CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING "FALSE") +endif() + +if(CMAKE_INSTALL_COMPONENT) + set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") +else() + set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") +endif() + +string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT + "${CMAKE_INSTALL_MANIFEST_FILES}") +file(WRITE "/home/amy/projects/uni/comp-sys-ii/arkanoid/task1/build/${CMAKE_INSTALL_MANIFEST}" + "${CMAKE_INSTALL_MANIFEST_CONTENT}") diff --git a/arkanoid/compile.sh b/arkanoid/compile.sh new file mode 100755 index 0000000..b21f420 --- /dev/null +++ b/arkanoid/compile.sh @@ -0,0 +1,3 @@ +cd build; +cmake .. +make -j16 \ No newline at end of file diff --git a/arkanoid/elf2uf2 b/arkanoid/elf2uf2 new file mode 100755 index 0000000000000000000000000000000000000000..40ee70cee0f7e990937bb8b25a0d249b4f28a1b1 GIT binary patch literal 94024 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 literal 0 HcmV?d00001 diff --git a/arkanoid/fonts.c b/arkanoid/fonts.c new file mode 100755 index 0000000..3829052 --- /dev/null +++ b/arkanoid/fonts.c @@ -0,0 +1,1615 @@ +/* vim: set ai et ts=4 sw=4: */ +#include "fonts.h" +const uint8_t plaao_logo[25608] = { 0X10,0X10,0X00,0X50,0X00,0XA0,0X01,0X1B, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, +0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, +0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, +0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, +0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, +0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, +0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, +0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, +0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, +0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, +0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, +0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, +0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, +0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, +0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, +0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, +0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, +0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, +0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, +0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, +0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, +0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, +0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, +0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, +0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, +0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, +0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, +0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, +0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, +0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, +0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x87, 0xf1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, +0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x06, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, +0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, +0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, +0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, +0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, +0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0x40 +}; + +// 97 numbers, 4 lines. This surely will not backfire. +// Transposed font. +const uint8_t Font4x6[] = { + 0b000000, 0b000000, 0b110000, 0b111010, 0b010010, 0b100001, 0b010101, 0b000000, 0b000000, 0b000000, 0b101000, 0b000000, 0b000000, 0b000000, 0b000000, 0b100000, 0b011110, 0b000000, 0b011001, 0b010110, 0b000100, 0b100110, 0b000110, 0b110000, 0b010110, 0b011110, 0b000000, 0b000000, 0b000000, 0b001010, 0b000100, 0b011000, 0b011110, 0b011111, 0b010110, 0b010010, 0b011110, 0b100001, 0b100000, 0b010111, 0b111111, 0b000000, 0b111110, 0b100011, 0b000001, 0b111111, 0b111111, 0b011110, 0b011000, 0b011101, 0b011011, 0b100110, 0b100000, 0b111110, 0b111110, 0b111111, 0b110111, 0b111000, 0b000000, 0b000000, 0b000001, 0b000000, 0b010000, 0b000001, 0b000000, 0b001111, 0b000110, 0b001010, 0b111111, 0b001101, 0b100000, 0b011110, 0b000111, 0b000000, 0b000000, 0b010001, 0b000000, 0b011111, 0b001111, 0b001110, 0b000000, 0b000000, 0b001000, 0b010010, 0b000001, 0b011110, 0b011110, 0b011111, 0b011011, 0b011110, 0b000000, 0b000000, 0b000000, 0b000100, 0b001000, + 0b000000, 0b000000, 0b000000, 0b010111, 0b111111, 0b011000, 0b100010, 0b110000, 0b100001, 0b011110, 0b010000, 0b000100, 0b000000, 0b000100, 0b000000, 0b011000, 0b101001, 0b000001, 0b100101, 0b101001, 0b111111, 0b101001, 0b101001, 0b101000, 0b101001, 0b100101, 0b000000, 0b000000, 0b010001, 0b001010, 0b001010, 0b100101, 0b101010, 0b100100, 0b101001, 0b100001, 0b100001, 0b101001, 0b101000, 0b100101, 0b001000, 0b100001, 0b100001, 0b010100, 0b000001, 0b010000, 0b001000, 0b100001, 0b100100, 0b100010, 0b100100, 0b101001, 0b100000, 0b000001, 0b000001, 0b000010, 0b001000, 0b000111, 0b110001, 0b100001, 0b000110, 0b111111, 0b100000, 0b000001, 0b000000, 0b010101, 0b001001, 0b010001, 0b001001, 0b010101, 0b101000, 0b010101, 0b001000, 0b000001, 0b101110, 0b001010, 0b000001, 0b001000, 0b010000, 0b010001, 0b001100, 0b011111, 0b010000, 0b010101, 0b010001, 0b000001, 0b000001, 0b000010, 0b000100, 0b000101, 0b011001, 0b100001, 0b111111, 0b011010, 0b000100, + 0b000000, 0b111101, 0b110000, 0b111010, 0b010101, 0b000110, 0b100101, 0b000000, 0b011110, 0b100001, 0b101000, 0b001110, 0b000011, 0b000100, 0b000010, 0b000110, 0b100101, 0b111111, 0b100101, 0b100001, 0b010100, 0b101001, 0b101001, 0b100111, 0b101001, 0b100101, 0b010010, 0b010011, 0b001010, 0b001010, 0b010001, 0b100000, 0b101111, 0b100100, 0b101001, 0b100001, 0b100001, 0b101001, 0b101000, 0b100001, 0b001000, 0b111111, 0b100001, 0b001000, 0b000001, 0b010000, 0b010000, 0b100001, 0b100100, 0b100001, 0b100100, 0b101001, 0b111111, 0b000001, 0b000010, 0b000010, 0b001000, 0b001000, 0b101101, 0b111111, 0b011000, 0b100001, 0b010000, 0b000001, 0b010000, 0b010101, 0b001001, 0b010001, 0b001001, 0b010101, 0b011111, 0b010101, 0b001000, 0b101111, 0b001001, 0b000100, 0b111111, 0b001000, 0b001000, 0b010001, 0b010010, 0b010010, 0b001000, 0b010101, 0b111110, 0b000001, 0b000010, 0b000010, 0b000100, 0b000101, 0b010101, 0b011010, 0b000000, 0b100001, 0b001000, + 0b000000, 0b000000, 0b000000, 0b010111, 0b001001, 0b100001, 0b011011, 0b000000, 0b000000, 0b000000, 0b000000, 0b000100, 0b000000, 0b000000, 0b000000, 0b000001, 0b011110, 0b010001, 0b010011, 0b010010, 0b001100, 0b111010, 0b011110, 0b100000, 0b010110, 0b011000, 0b000000, 0b000000, 0b000100, 0b001010, 0b000000, 0b000000, 0b010010, 0b011111, 0b111111, 0b011110, 0b111111, 0b111111, 0b111111, 0b011110, 0b111111, 0b100001, 0b000010, 0b111111, 0b111111, 0b111111, 0b111111, 0b011110, 0b111111, 0b011110, 0b111111, 0b010001, 0b100000, 0b111110, 0b111100, 0b111111, 0b110111, 0b110000, 0b100011, 0b000000, 0b100000, 0b000000, 0b000000, 0b000001, 0b100000, 0b000010, 0b111111, 0b001110, 0b000110, 0b001110, 0b001000, 0b001001, 0b111111, 0b001001, 0b000001, 0b111111, 0b100001, 0b011111, 0b011111, 0b001110, 0b011111, 0b001100, 0b011111, 0b001001, 0b010000, 0b011110, 0b011100, 0b011111, 0b011011, 0b011001, 0b010011, 0b000100, 0b000000, 0b000000, 0b000100 +}; + +// !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ diff --git a/arkanoid/fonts.h b/arkanoid/fonts.h new file mode 100755 index 0000000..ebbccf0 --- /dev/null +++ b/arkanoid/fonts.h @@ -0,0 +1,10 @@ +/* vim: set ai et ts=4 sw=4: */ +#ifndef __FONTS_H__ +#define __FONTS_H__ + +#include <stdint.h> + +extern const uint8_t plaao_logo[25608]; +extern const uint8_t Font4x6[]; + +#endif // __FONTS_H__ diff --git a/arkanoid/install.sh b/arkanoid/install.sh new file mode 100755 index 0000000..5a982e8 --- /dev/null +++ b/arkanoid/install.sh @@ -0,0 +1,19 @@ +#!/usr/bin/bash + +./compile.sh +[[ $? -eq 0 ]] || exit + +i=0 + +while true ; do + sudo mount /dev/sdb1 pico_mountpoint + [[ $? -ne 0 ]] || break + echo "Trying to mount... Try #$i" + ((i++)) + sleep 0.5 +done + +echo "Flashing uf2..." +sudo cp main.uf2 pico_mountpoint +sudo umount pico_mountpoint +echo "OK!" \ No newline at end of file diff --git a/arkanoid/levels.h b/arkanoid/levels.h new file mode 100644 index 0000000..ca0c607 --- /dev/null +++ b/arkanoid/levels.h @@ -0,0 +1,91 @@ +#ifndef LEVELS_H +#define LEVELS_H +#include <stdint.h> + +#define col565(r, g, b) (((r & 0xF8) << 8) | ((g & 0xFC) << 3) | ((b & 0xF8) >> 3)) +#define c000 col565(0, 0, 0) +#define c001 col565(0, 0, 192) +#define c002 col565(0, 0, 255) + +#define c010 col565(0, 192, 0) +#define c011 col565(0, 192, 192) +#define c012 col565(0, 192, 255) + +#define c020 col565(0, 255, 0) +#define c021 col565(0, 255, 192) +#define c022 col565(0, 255, 255) + +#define c100 col565(192, 0, 0) +#define c101 col565(192, 0, 192) +#define c102 col565(192, 0, 255) + +#define c110 col565(192, 192, 0) +#define c111 col565(192, 192, 192) +#define c112 col565(192, 192, 255) + +#define c120 col565(192, 255, 0) +#define c121 col565(192, 255, 192) +#define c122 col565(192, 255, 255) + +#define c200 col565(255, 0, 0) +#define c201 col565(255, 0, 192) +#define c202 col565(255, 0, 255) + +#define c210 col565(255, 192, 0) +#define c211 col565(255, 192, 192) +#define c212 col565(255, 192, 255) + +#define c220 col565(255, 255, 0) +#define c221 col565(255, 255, 192) +#define c222 col565(255, 255, 255) + +#define MAX_LEVELS 2 + +const static uint16_t levels[MAX_LEVELS][160] = { + { + c200, c200, c200, c200, c200, c200, c200, c200, + c200, c200, c200, c200, c200, c200, c200, c200, + c200, c000, c000, c200, c200, c000, c000, c200, + c200, c000, c000, c200, c200, c000, c000, c200, + c200, c000, c000, c200, c200, c000, c000, c200, + c200, c000, c000, c200, c200, c000, c000, c200, + c200, c200, c200, c200, c200, c200, c200, c200, + c200, c200, c200, c200, c200, c200, c200, c200, + c200, c200, c200, c200, c200, c200, c200, c200, + c200, c200, c200, c200, c200, c200, c200, c200, + c200, c000, c200, c200, c200, c200, c000, c200, + c200, c000, c000, c200, c200, c000, c000, c200, + c200, c200, c000, c000, c000, c000, c200, c200, + c200, c200, c200, c000, c000, c200, c200, c200, + c200, c200, c200, c200, c200, c200, c200, c200, + c200, c200, c200, c200, c200, c200, c200, c200, + c200, c200, c200, c200, c200, c200, c200, c200, + c220, c220, c220, c220, c220, c220, c220, c220, + c221, c221, c221, c221, c221, c221, c221, c221, + c220, c220, c220, c220, c220, c220, c220, c220, + }, + + { + c200, c200, c200, c200, c200, c200, c200, c200, + c200, c200, c200, c200, c200, c200, c200, c200, + c200, c000, c000, c200, c200, c000, c000, c200, + c200, c000, c000, c200, c200, c000, c000, c200, + c200, c000, c000, c200, c200, c000, c000, c200, + c200, c000, c000, c200, c200, c000, c000, c200, + c200, c200, c200, c200, c200, c200, c200, c200, + c200, c200, c200, c200, c200, c200, c200, c200, + c200, c200, c200, c200, c200, c200, c200, c200, + c200, c200, c200, c200, c200, c200, c200, c200, + c200, c200, c200, c000, c000, c200, c200, c200, + c200, c200, c000, c000, c000, c000, c200, c200, + c200, c000, c000, c200, c200, c000, c000, c200, + c200, c000, c200, c200, c200, c200, c000, c200, + c200, c200, c200, c200, c200, c200, c200, c200, + c200, c200, c200, c200, c200, c200, c200, c200, + c200, c200, c200, c200, c200, c200, c200, c200, + c220, c220, c220, c220, c220, c220, c220, c220, + c221, c221, c221, c221, c221, c221, c221, c221, + c220, c220, c220, c220, c220, c220, c220, c220, + } +}; +#endif diff --git a/arkanoid/main.c b/arkanoid/main.c new file mode 100644 index 0000000..87e47b2 --- /dev/null +++ b/arkanoid/main.c @@ -0,0 +1,161 @@ +#include "pico/stdlib.h" +#include "pico/pico4ml/screen.h" +#include <math.h> +#include <stdio.h> + +#include "pico/time.h" + +#include "balls.h" +#include "fonts.h" +#include "utils.h" +#include "levels.h" + +// the size of the screen is 80x160. the size of the board is therefore 80x80 (the top half). +// every block is 10x4 so the block size is 8x20 (160) +uint16_t blocks[160]; + +char score_text[30]; +char lives_text[30]; + +int score = 0; +int level = 1; +int combo = 0; +int lives = 5; +int blocksLeft = 0; + +void draw_block(uint16_t blocks[], uint16_t block_index) { + uint8_t y = block_index / 8; + uint8_t x = block_index % 8; + + uint16_t block = blocks[block_index]; + if (block) { + ST7735_FillRectangle(x * 10, y * 4, 10, 4, change_color(block, 0.75)); + ST7735_FillRectangle(x * 10 + 1, y * 4 + 1, 8, 2, block); + } else { + ST7735_FillRectangle(x * 10, y * 4, 10, 4, block); + } +} + +void updateBottomText() { + if (combo >= 2) { + sprintf(score_text, "%dpts x%d", score, combo); + } else { + sprintf(score_text, "%dpts ", score); + } + + sprintf(lives_text, "%d", lives); + + ST7735_WriteString(2, 150, Font4x6, score_text, color32_to_16(0xf83800), ST7735_BLACK); + ST7735_WriteString(74, 150, Font4x6, lives_text, color32_to_16(0xf83800), ST7735_BLACK); +} + +void set_level() { + printf("level size %d %d %d\n", sizeof(levels[0]), sizeof(levels[0][0]), sizeof(uint16_t)); + memcpy(blocks, levels[(level - 1) % MAX_LEVELS], sizeof(blocks)); + + for (int i = 0; i < 160; i++) { + if (blocks[i]) { + blocksLeft += 1; + } + + draw_block(blocks, i); + } +} + +int main() { + stdio_init_all(); + setvbuf ( stdout , NULL , _IONBF , 0 ); + ST7735_Init(); + ST7735_DrawImage(0, 0, 80, 160, plaao_logo); + + printf("max levels %d\n", sizeof(levels)); + + const uint LED_PIN = 0; + const uint BUTTON1 = 20; + const uint BUTTON2 = 21; + const uint BUTTON3 = 22; + + for (int i=18; i<28; i++) { + gpio_init(i); + + if (i == 20 || i == 21 || i == 22) { + gpio_set_dir(i, GPIO_IN); + } else { + gpio_set_dir(i, GPIO_OUT); + } + } + + ST7735_FillScreen(ST7735_BLACK); + + set_level(); + + Ball playerBall = { + {43, 120}, + { + {43, 120}, {43, 120}, {43, 120}, {43, 120}, {43, 120}, + {43, 120}, {43, 120}, {43, 120}, {43, 120}, {43, 120}, + {43, 120}, {43, 120}, {43, 120}, {43, 120}, {43, 120}, + {43, 120}, {43, 120}, {43, 120}, {43, 120}, {43, 120}, + {43, 120}, {43, 120}, {43, 120}, {43, 120}, {43, 120}, + }, + 0, 0.9, 1, ST7735_CYAN, ST7735_BLUE, 2.4 + }; + + Paddle playerPaddle; + playerPaddle.pos.x = 40; + playerPaddle.pos.y = 140; + playerPaddle.color = color_to_rgb(192, 192, 192); + playerPaddle.borderColor = change_color(playerPaddle.color, 0.75); + playerPaddle.length = 24; + playerPaddle.moveSpeed = 2; + + updateBottomText(); + + while (true) { + int16_t hit_status = ballPhysicsStep(&playerBall, &playerPaddle, blocks); + if (hit_status != BALL_HIT_NOTHING) { + if (hit_status == BALL_HIT_PADDLE) { + combo = 0; + } else if (hit_status == BALL_DIED) { + combo = 0; + lives -= 1; + } else { + draw_block(blocks, hit_status); + combo += 1; + + if (combo >= 9) { + combo = 9; + } + + score += 100 * level * combo; + blocksLeft -= 1; + } + + updateBottomText(); + + if (lives <= 0) { + ST7735_FillRectangle(0, 72, 80, 10, ST7735_BLACK); + ST7735_WriteString(20, 75, Font4x6, "GAME END", color32_to_16(0xf83800), ST7735_BLACK); + break; + } + + if (blocksLeft <= 10) { + ST7735_FillRectangle(0, 72, 80, 10, ST7735_BLACK); + ST7735_WriteString(10, 75, Font4x6, "LEVEL CLEARED", color32_to_16(0xf83800), ST7735_BLACK); + sleep_ms(2000); + ST7735_FillRectangle(0, 72, 80, 10, ST7735_BLACK); + + resetBall(&playerBall); + level += 1; + set_level(); + } + } + + drawBallTrail(&playerBall); + + paddlePhysicsStep(&playerPaddle); + drawPaddle(&playerPaddle); + + sleep_us(1000000 / 60); + } +} \ No newline at end of file diff --git a/arkanoid/main.elf b/arkanoid/main.elf new file mode 100755 index 0000000000000000000000000000000000000000..06bd2da4ac174dde364fe35e693a054f4dd9d02f GIT binary patch literal 903020 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 CM0xrE literal 0 HcmV?d00001 diff --git a/arkanoid/main.uf2 b/arkanoid/main.uf2 new file mode 100644 index 0000000000000000000000000000000000000000..aed4279f41f3872d6760c4ef4ceaed5d61535663 GIT binary patch literal 265728 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�e{F_0e;UXyRW=qLVu7S7e<Doj$z&b&r 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ⅈ-!0CKL3Od43<KMQNH<0$kow@?mJH2q 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%0D1gjGzQVKe_$gOOh3SPf(_#W03-ex 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 ab!QNm+ruF6lnFW}h>#v-F)%QI;vWD4J+PGk literal 0 HcmV?d00001 diff --git a/arkanoid/pico/binary_info.h b/arkanoid/pico/binary_info.h new file mode 100644 index 0000000..730cfa5 --- /dev/null +++ b/arkanoid/pico/binary_info.h @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_BINARY_INFO_H +#define _PICO_BINARY_INFO_H + +/** \file binary_info.h + * \defgroup pico_binary_info pico_binary_info + * + * Binary info is intended for embedding machine readable information with the binary in FLASH. + * + * Example uses include: + * + * - Program identification / information + * - Pin layouts + * - Included features + * - Identifying flash regions used as block devices/storage + */ + +#include "defs.h" +#include "structure.h" +#if !PICO_ON_DEVICE && !defined(PICO_NO_BINARY_INFO) +#define PICO_NO_BINARY_INFO 1 +#endif +#if !PICO_NO_BINARY_INFO +#include "code.h" +#endif +#endif diff --git a/arkanoid/pico/bit_ops.h b/arkanoid/pico/bit_ops.h new file mode 100644 index 0000000..7b63c1d --- /dev/null +++ b/arkanoid/pico/bit_ops.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_BIT_OPS_H +#define _PICO_BIT_OPS_H + +#include "pico.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file bit_ops.h +* \defgroup pico_bit_ops pico_bit_ops +* +* Optimized bit manipulation functions. +* Additionally provides replacement implementations of the compiler built-ins __builtin_popcount, __builtin_clz +* and __bulitin_ctz +*/ + +/*! \brief Reverse the bits in a 32 bit word + * \ingroup pico_bit_ops + * + * \param bits 32 bit input + * \return the 32 input bits reversed + */ +uint32_t __rev(uint32_t bits); + +/*! \brief Reverse the bits in a 64 bit double word + * \ingroup pico_bit_ops + * + * \param bits 64 bit input + * \return the 64 input bits reversed + */ +uint64_t __revll(uint64_t bits); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/boot2/boot2_w25q080.S b/arkanoid/pico/boot2/boot2_w25q080.S new file mode 100644 index 0000000..51bc7e9 --- /dev/null +++ b/arkanoid/pico/boot2/boot2_w25q080.S @@ -0,0 +1,295 @@ +// ---------------------------------------------------------------------------- +// Second stage boot code +// Copyright (c) 2019-2021 Raspberry Pi (Trading) Ltd. +// SPDX-License-Identifier: BSD-3-Clause +// +// Device: Winbond W25Q080 +// Also supports W25Q16JV (which has some different SR instructions) +// Also supports AT25SF081 +// Also supports S25FL132K0 +// +// Description: Configures W25Q080 to run in Quad I/O continuous read XIP mode +// +// Details: * Check status register 2 to determine if QSPI mode is enabled, +// and perform an SR2 programming cycle if necessary. +// * Use SSI to perform a dummy 0xEB read command, with the mode +// continuation bits set, so that the flash will not require +// 0xEB instruction prefix on subsequent reads. +// * Configure SSI to write address, mode bits, but no instruction. +// SSI + flash are now jointly in a state where continuous reads +// can take place. +// * Jump to exit pointer passed in via lr. Bootrom passes null, +// in which case this code uses a default 256 byte flash offset +// +// Building: * This code must be position-independent, and use stack only +// * The code will be padded to a size of 256 bytes, including a +// 4-byte checksum. Therefore code size cannot exceed 252 bytes. +// ---------------------------------------------------------------------------- + +#include "helpers/asm_helper.S" +#include "../hardware/regs/addressmap.h" +#include "../hardware/regs/ssi.h" +#include "../hardware/regs/pads_qspi.h" + +// ---------------------------------------------------------------------------- +// Config section +// ---------------------------------------------------------------------------- +// It should be possible to support most flash devices by modifying this section + +// The serial flash interface will run at clk_sys/PICO_FLASH_SPI_CLKDIV. +// This must be a positive, even integer. +// The bootrom is very conservative with SPI frequency, but here we should be +// as aggressive as possible. + +#ifndef PICO_FLASH_SPI_CLKDIV +#define PICO_FLASH_SPI_CLKDIV 4 +#endif +#if PICO_FLASH_SPI_CLKDIV & 1 +#error PICO_FLASH_SPI_CLKDIV must be even +#endif + +// Define interface width: single/dual/quad IO +#define FRAME_FORMAT SSI_CTRLR0_SPI_FRF_VALUE_QUAD + +// For W25Q080 this is the "Read data fast quad IO" instruction: +#define CMD_READ 0xeb + +// "Mode bits" are 8 special bits sent immediately after +// the address bits in a "Read Data Fast Quad I/O" command sequence. +// On W25Q080, the four LSBs are don't care, and if MSBs == 0xa, the +// next read does not require the 0xeb instruction prefix. +#define MODE_CONTINUOUS_READ 0xa0 + +// The number of address + mode bits, divided by 4 (always 4, not function of +// interface width). +#define ADDR_L 8 + +// How many clocks of Hi-Z following the mode bits. For W25Q080, 4 dummy cycles +// are required. +#define WAIT_CYCLES 4 + +// If defined, we will read status reg, compare to SREG_DATA, and overwrite +// with our value if the SR doesn't match. +// We do a two-byte write to SR1 (01h cmd) rather than a one-byte write to +// SR2 (31h cmd) as the latter command isn't supported by WX25Q080. +// This isn't great because it will remove block protections. +// A better solution is to use a volatile SR write if your device supports it. +#define PROGRAM_STATUS_REG + +#define CMD_WRITE_ENABLE 0x06 +#define CMD_READ_STATUS 0x05 +#define CMD_READ_STATUS2 0x35 +#define CMD_WRITE_STATUS 0x01 +#define SREG_DATA 0x02 // Enable quad-SPI mode + +// ---------------------------------------------------------------------------- +// Start of 2nd Stage Boot Code +// ---------------------------------------------------------------------------- + +.syntax unified +.cpu cortex-m0plus +.thumb + +.section .boot2, "ax" // TODO - was .text + +// The exit point is passed in lr. If entered from bootrom, this will be the +// flash address immediately following this second stage (0x10000100). +// Otherwise it will be a return address -- second stage being called as a +// function by user code, after copying out of XIP region. r3 holds SSI base, +// r0...2 used as temporaries. Other GPRs not used. +.global _stage2_boot +.type _stage2_boot,%function +.thumb_func +_stage2_boot: + push {lr} + + // Set pad configuration: + // - SCLK 8mA drive, no slew limiting + // - SDx disable input Schmitt to reduce delay + + ldr r3, =PADS_QSPI_BASE + movs r0, #(2 << PADS_QSPI_GPIO_QSPI_SCLK_DRIVE_LSB | PADS_QSPI_GPIO_QSPI_SCLK_SLEWFAST_BITS) + str r0, [r3, #PADS_QSPI_GPIO_QSPI_SCLK_OFFSET] + ldr r0, [r3, #PADS_QSPI_GPIO_QSPI_SD0_OFFSET] + movs r1, #PADS_QSPI_GPIO_QSPI_SD0_SCHMITT_BITS + bics r0, r1 + str r0, [r3, #PADS_QSPI_GPIO_QSPI_SD0_OFFSET] + str r0, [r3, #PADS_QSPI_GPIO_QSPI_SD1_OFFSET] + str r0, [r3, #PADS_QSPI_GPIO_QSPI_SD2_OFFSET] + str r0, [r3, #PADS_QSPI_GPIO_QSPI_SD3_OFFSET] + + ldr r3, =XIP_SSI_BASE + + // Disable SSI to allow further config + movs r1, #0 + str r1, [r3, #SSI_SSIENR_OFFSET] + + // Set baud rate + movs r1, #PICO_FLASH_SPI_CLKDIV + str r1, [r3, #SSI_BAUDR_OFFSET] + + // Set 1-cycle sample delay. If PICO_FLASH_SPI_CLKDIV == 2 then this means, + // if the flash launches data on SCLK posedge, we capture it at the time that + // the next SCLK posedge is launched. This is shortly before that posedge + // arrives at the flash, so data hold time should be ok. For + // PICO_FLASH_SPI_CLKDIV > 2 this pretty much has no effect. + + movs r1, #1 + movs r2, #SSI_RX_SAMPLE_DLY_OFFSET // == 0xf0 so need 8 bits of offset significance + str r1, [r3, r2] + + +// On QSPI parts we usually need a 01h SR-write command to enable QSPI mode +// (i.e. turn WPn and HOLDn into IO2/IO3) +#ifdef PROGRAM_STATUS_REG +program_sregs: +#define CTRL0_SPI_TXRX \ + (7 << SSI_CTRLR0_DFS_32_LSB) | /* 8 bits per data frame */ \ + (SSI_CTRLR0_TMOD_VALUE_TX_AND_RX << SSI_CTRLR0_TMOD_LSB) + + ldr r1, =(CTRL0_SPI_TXRX) + str r1, [r3, #SSI_CTRLR0_OFFSET] + + // Enable SSI and select slave 0 + movs r1, #1 + str r1, [r3, #SSI_SSIENR_OFFSET] + + // Check whether SR needs updating + movs r0, #CMD_READ_STATUS2 + bl read_flash_sreg + movs r2, #SREG_DATA + cmp r0, r2 + beq skip_sreg_programming + + // Send write enable command + movs r1, #CMD_WRITE_ENABLE + str r1, [r3, #SSI_DR0_OFFSET] + + // Poll for completion and discard RX + bl wait_ssi_ready + ldr r1, [r3, #SSI_DR0_OFFSET] + + // Send status write command followed by data bytes + movs r1, #CMD_WRITE_STATUS + str r1, [r3, #SSI_DR0_OFFSET] + movs r0, #0 + str r0, [r3, #SSI_DR0_OFFSET] + str r2, [r3, #SSI_DR0_OFFSET] + + bl wait_ssi_ready + ldr r1, [r3, #SSI_DR0_OFFSET] + ldr r1, [r3, #SSI_DR0_OFFSET] + ldr r1, [r3, #SSI_DR0_OFFSET] + + // Poll status register for write completion +1: + movs r0, #CMD_READ_STATUS + bl read_flash_sreg + movs r1, #1 + tst r0, r1 + bne 1b + +skip_sreg_programming: + + // Disable SSI again so that it can be reconfigured + movs r1, #0 + str r1, [r3, #SSI_SSIENR_OFFSET] +#endif + +// Currently the flash expects an 8 bit serial command prefix on every +// transfer, which is a waste of cycles. Perform a dummy Fast Read Quad I/O +// command, with mode bits set such that the flash will not expect a serial +// command prefix on *subsequent* transfers. We don't care about the results +// of the read, the important part is the mode bits. + +dummy_read: +#define CTRLR0_ENTER_XIP \ + (FRAME_FORMAT /* Quad I/O mode */ \ + << SSI_CTRLR0_SPI_FRF_LSB) | \ + (31 << SSI_CTRLR0_DFS_32_LSB) | /* 32 data bits */ \ + (SSI_CTRLR0_TMOD_VALUE_EEPROM_READ /* Send INST/ADDR, Receive Data */ \ + << SSI_CTRLR0_TMOD_LSB) + + ldr r1, =(CTRLR0_ENTER_XIP) + str r1, [r3, #SSI_CTRLR0_OFFSET] + + movs r1, #0x0 // NDF=0 (single 32b read) + str r1, [r3, #SSI_CTRLR1_OFFSET] + +#define SPI_CTRLR0_ENTER_XIP \ + (ADDR_L << SSI_SPI_CTRLR0_ADDR_L_LSB) | /* Address + mode bits */ \ + (WAIT_CYCLES << SSI_SPI_CTRLR0_WAIT_CYCLES_LSB) | /* Hi-Z dummy clocks following address + mode */ \ + (SSI_SPI_CTRLR0_INST_L_VALUE_8B \ + << SSI_SPI_CTRLR0_INST_L_LSB) | /* 8-bit instruction */ \ + (SSI_SPI_CTRLR0_TRANS_TYPE_VALUE_1C2A /* Send Command in serial mode then address in Quad I/O mode */ \ + << SSI_SPI_CTRLR0_TRANS_TYPE_LSB) + + ldr r1, =(SPI_CTRLR0_ENTER_XIP) + ldr r0, =(XIP_SSI_BASE + SSI_SPI_CTRLR0_OFFSET) // SPI_CTRL0 Register + str r1, [r0] + + movs r1, #1 // Re-enable SSI + str r1, [r3, #SSI_SSIENR_OFFSET] + + movs r1, #CMD_READ + str r1, [r3, #SSI_DR0_OFFSET] // Push SPI command into TX FIFO + movs r1, #MODE_CONTINUOUS_READ // 32-bit: 24 address bits (we don't care, so 0) and M[7:4]=1010 + str r1, [r3, #SSI_DR0_OFFSET] // Push Address into TX FIFO - this will trigger the transaction + + // Poll for completion + bl wait_ssi_ready + +// The flash is in a state where we can blast addresses in parallel, and get +// parallel data back. Now configure the SSI to translate XIP bus accesses +// into QSPI transfers of this form. + + movs r1, #0 + str r1, [r3, #SSI_SSIENR_OFFSET] // Disable SSI (and clear FIFO) to allow further config + +// Note that the INST_L field is used to select what XIP data gets pushed into +// the TX FIFO: +// INST_L_0_BITS {ADDR[23:0],XIP_CMD[7:0]} Load "mode bits" into XIP_CMD +// Anything else {XIP_CMD[7:0],ADDR[23:0]} Load SPI command into XIP_CMD +configure_ssi: +#define SPI_CTRLR0_XIP \ + (MODE_CONTINUOUS_READ /* Mode bits to keep flash in continuous read mode */ \ + << SSI_SPI_CTRLR0_XIP_CMD_LSB) | \ + (ADDR_L << SSI_SPI_CTRLR0_ADDR_L_LSB) | /* Total number of address + mode bits */ \ + (WAIT_CYCLES << SSI_SPI_CTRLR0_WAIT_CYCLES_LSB) | /* Hi-Z dummy clocks following address + mode */ \ + (SSI_SPI_CTRLR0_INST_L_VALUE_NONE /* Do not send a command, instead send XIP_CMD as mode bits after address */ \ + << SSI_SPI_CTRLR0_INST_L_LSB) | \ + (SSI_SPI_CTRLR0_TRANS_TYPE_VALUE_2C2A /* Send Address in Quad I/O mode (and Command but that is zero bits long) */ \ + << SSI_SPI_CTRLR0_TRANS_TYPE_LSB) + + ldr r1, =(SPI_CTRLR0_XIP) + ldr r0, =(XIP_SSI_BASE + SSI_SPI_CTRLR0_OFFSET) + str r1, [r0] + + movs r1, #1 + str r1, [r3, #SSI_SSIENR_OFFSET] // Re-enable SSI + +// Bus accesses to the XIP window will now be transparently serviced by the +// external flash on cache miss. We are ready to run code from flash. + +// Pull in standard exit routine +#include "helpers/exit_from_boot2.S" + +// Common functions +#include "helpers/wait_ssi_ready.S" +#ifdef PROGRAM_STATUS_REG +#include "helpers/read_flash_sreg.S" +#endif + +.global literals +literals: +.ltorg + + + + + + +// TODO - copied pad+checksum +.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xb2, 0x4e, 0x7a + +.end diff --git a/arkanoid/pico/boot2/copied_boot2.S.ignore b/arkanoid/pico/boot2/copied_boot2.S.ignore new file mode 100644 index 0000000..ec0419d --- /dev/null +++ b/arkanoid/pico/boot2/copied_boot2.S.ignore @@ -0,0 +1,22 @@ +.syntax unified +.cpu cortex-m0plus +.thumb + +.section .rrr, "ax" + +.byte 0x00, 0xb5, 0x32, 0x4b, 0x21, 0x20, 0x58, 0x60, 0x98, 0x68, 0x02, 0x21, 0x88, 0x43, 0x98, 0x60 +.byte 0xd8, 0x60, 0x18, 0x61, 0x58, 0x61, 0x2e, 0x4b, 0x00, 0x21, 0x99, 0x60, 0x02, 0x21, 0x59, 0x61 +.byte 0x01, 0x21, 0xf0, 0x22, 0x99, 0x50, 0x2b, 0x49, 0x19, 0x60, 0x01, 0x21, 0x99, 0x60, 0x35, 0x20 +.byte 0x00, 0xf0, 0x44, 0xf8, 0x02, 0x22, 0x90, 0x42, 0x14, 0xd0, 0x06, 0x21, 0x19, 0x66, 0x00, 0xf0 +.byte 0x34, 0xf8, 0x19, 0x6e, 0x01, 0x21, 0x19, 0x66, 0x00, 0x20, 0x18, 0x66, 0x1a, 0x66, 0x00, 0xf0 +.byte 0x2c, 0xf8, 0x19, 0x6e, 0x19, 0x6e, 0x19, 0x6e, 0x05, 0x20, 0x00, 0xf0, 0x2f, 0xf8, 0x01, 0x21 +.byte 0x08, 0x42, 0xf9, 0xd1, 0x00, 0x21, 0x99, 0x60, 0x1b, 0x49, 0x19, 0x60, 0x00, 0x21, 0x59, 0x60 +.byte 0x1a, 0x49, 0x1b, 0x48, 0x01, 0x60, 0x01, 0x21, 0x99, 0x60, 0xeb, 0x21, 0x19, 0x66, 0xa0, 0x21 +.byte 0x19, 0x66, 0x00, 0xf0, 0x12, 0xf8, 0x00, 0x21, 0x99, 0x60, 0x16, 0x49, 0x14, 0x48, 0x01, 0x60 +.byte 0x01, 0x21, 0x99, 0x60, 0x01, 0xbc, 0x00, 0x28, 0x00, 0xd0, 0x00, 0x47, 0x12, 0x48, 0x13, 0x49 +.byte 0x08, 0x60, 0x03, 0xc8, 0x80, 0xf3, 0x08, 0x88, 0x08, 0x47, 0x03, 0xb5, 0x99, 0x6a, 0x04, 0x20 +.byte 0x01, 0x42, 0xfb, 0xd0, 0x01, 0x20, 0x01, 0x42, 0xf8, 0xd1, 0x03, 0xbd, 0x02, 0xb5, 0x18, 0x66 +.byte 0x18, 0x66, 0xff, 0xf7, 0xf2, 0xff, 0x18, 0x6e, 0x18, 0x6e, 0x02, 0xbd, 0x00, 0x00, 0x02, 0x40 +.byte 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03, 0x5f, 0x00, 0x21, 0x22, 0x00, 0x00 +.byte 0xf4, 0x00, 0x00, 0x18, 0x22, 0x20, 0x00, 0xa0, 0x00, 0x01, 0x00, 0x10, 0x08, 0xed, 0x00, 0xe0 +.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xb2, 0x4e, 0x7a diff --git a/arkanoid/pico/boot2/helpers/asm_helper.S b/arkanoid/pico/boot2/helpers/asm_helper.S new file mode 100644 index 0000000..10bd2f5 --- /dev/null +++ b/arkanoid/pico/boot2/helpers/asm_helper.S @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "../../pico.h" + +// do not put align in here as it is used mid function sometimes +.macro regular_func x +.global \x +.type \x,%function +.thumb_func +\x: +.endm + +.macro regular_func_with_section x +.section .text.\x +regular_func \x +.endm + +// do not put align in here as it is used mid function sometimes +.macro wrapper_func x +regular_func WRAPPER_FUNC_NAME(\x) +.endm + +.macro __pre_init func, priority_string +.section .preinit_array.\priority_string +.align 2 +.word \func +.endm + diff --git a/arkanoid/pico/boot2/helpers/exit_from_boot2.S b/arkanoid/pico/boot2/helpers/exit_from_boot2.S new file mode 100644 index 0000000..d48d0bd --- /dev/null +++ b/arkanoid/pico/boot2/helpers/exit_from_boot2.S @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _BOOT2_HELPER_EXIT_FROM_BOOT2 +#define _BOOT2_HELPER_EXIT_FROM_BOOT2 + +#include "../../hardware/regs/m0plus.h" + +// If entered from the bootrom, lr (which we earlier pushed) will be 0, +// and we vector through the table at the start of the main flash image. +// Any regular function call will have a nonzero value for lr. +check_return: + pop {r0} + cmp r0, #0 + beq vector_into_flash + bx r0 +vector_into_flash: + ldr r0, =(XIP_BASE + 0x100) + ldr r1, =(PPB_BASE + M0PLUS_VTOR_OFFSET) + str r0, [r1] + ldmia r0, {r0, r1} + msr msp, r0 + bx r1 + +#endif diff --git a/arkanoid/pico/boot2/helpers/read_flash_sreg.S b/arkanoid/pico/boot2/helpers/read_flash_sreg.S new file mode 100644 index 0000000..1c68e49 --- /dev/null +++ b/arkanoid/pico/boot2/helpers/read_flash_sreg.S @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _BOOT2_HELPER_READ_FLASH_SREG +#define _BOOT2_HELPER_READ_FLASH_SREG + +#include "wait_ssi_ready.S" + +// Pass status read cmd into r0. +// Returns status value in r0. +.global read_flash_sreg +.type read_flash_sreg,%function +.thumb_func +read_flash_sreg: + push {r1, lr} + str r0, [r3, #SSI_DR0_OFFSET] + // Dummy byte: + str r0, [r3, #SSI_DR0_OFFSET] + + bl wait_ssi_ready + // Discard first byte and combine the next two + ldr r0, [r3, #SSI_DR0_OFFSET] + ldr r0, [r3, #SSI_DR0_OFFSET] + + pop {r1, pc} + +#endif diff --git a/arkanoid/pico/boot2/helpers/wait_ssi_ready.S b/arkanoid/pico/boot2/helpers/wait_ssi_ready.S new file mode 100644 index 0000000..2e49b64 --- /dev/null +++ b/arkanoid/pico/boot2/helpers/wait_ssi_ready.S @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _BOOT2_HELPER_WAIT_SSI_READY +#define _BOOT2_HELPER_WAIT_SSI_READY + +wait_ssi_ready: + push {r0, r1, lr} + + // Command is complete when there is nothing left to send + // (TX FIFO empty) and SSI is no longer busy (CSn deasserted) +1: + ldr r1, [r3, #SSI_SR_OFFSET] + movs r0, #SSI_SR_TFE_BITS + tst r1, r0 + beq 1b + movs r0, #SSI_SR_BUSY_BITS + tst r1, r0 + bne 1b + + pop {r0, r1, pc} + +#endif diff --git a/arkanoid/pico/bootrom.c b/arkanoid/pico/bootrom.c new file mode 100644 index 0000000..5a6c361 --- /dev/null +++ b/arkanoid/pico/bootrom.c @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "bootrom.h" + +/// \tag::table_lookup[] + +// Bootrom function: rom_table_lookup +// Returns the 32 bit pointer into the ROM if found or NULL otherwise. +typedef void *(*rom_table_lookup_fn)(uint16_t *table, uint32_t code); + +// Convert a 16 bit pointer stored at the given rom address into a 32 bit pointer +#define rom_hword_as_ptr(rom_address) (void *)(uintptr_t)(*(uint16_t *)rom_address) + +void *rom_func_lookup(uint32_t code) { + return rom_func_lookup_inline(code); +} + +void *rom_data_lookup(uint32_t code) { + rom_table_lookup_fn rom_table_lookup = (rom_table_lookup_fn) rom_hword_as_ptr(0x18); + uint16_t *data_table = (uint16_t *) rom_hword_as_ptr(0x16); + return rom_table_lookup(data_table, code); +} +/// \end::table_lookup[] + +bool rom_funcs_lookup(uint32_t *table, unsigned int count) { + bool ok = true; + for (unsigned int i = 0; i < count; i++) { + table[i] = (uintptr_t) rom_func_lookup(table[i]); + if (!table[i]) ok = false; + } + return ok; +} diff --git a/arkanoid/pico/bootrom.h b/arkanoid/pico/bootrom.h new file mode 100644 index 0000000..e557893 --- /dev/null +++ b/arkanoid/pico/bootrom.h @@ -0,0 +1,162 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PLATFORM_BOOTROM_H +#define _PLATFORM_BOOTROM_H + +#include "pico.h" + +/** \file bootrom.h + * \defgroup pico_bootrom pico_bootrom + * Access to functions and data in the RP2040 bootrom + * + * This header may be included by assembly code + */ + +// ROM FUNCTIONS + +#define ROM_FUNC_POPCOUNT32 ROM_TABLE_CODE('P', '3') +#define ROM_FUNC_REVERSE32 ROM_TABLE_CODE('R', '3') +#define ROM_FUNC_CLZ32 ROM_TABLE_CODE('L', '3') +#define ROM_FUNC_CTZ32 ROM_TABLE_CODE('T', '3') +#define ROM_FUNC_MEMSET ROM_TABLE_CODE('M', 'S') +#define ROM_FUNC_MEMSET4 ROM_TABLE_CODE('S', '4') +#define ROM_FUNC_MEMCPY ROM_TABLE_CODE('M', 'C') +#define ROM_FUNC_MEMCPY44 ROM_TABLE_CODE('C', '4') +#define ROM_FUNC_RESET_USB_BOOT ROM_TABLE_CODE('U', 'B') +#define ROM_FUNC_CONNECT_INTERNAL_FLASH ROM_TABLE_CODE('I', 'F') +#define ROM_FUNC_FLASH_EXIT_XIP ROM_TABLE_CODE('E', 'X') +#define ROM_FUNC_FLASH_RANGE_ERASE ROM_TABLE_CODE('R', 'E') +#define ROM_FUNC_FLASH_RANGE_PROGRAM ROM_TABLE_CODE('R', 'P') +#define ROM_FUNC_FLASH_FLUSH_CACHE ROM_TABLE_CODE('F', 'C') +#define ROM_FUNC_FLASH_ENTER_CMD_XIP ROM_TABLE_CODE('C', 'X') + +/*! \brief Return a bootrom lookup code based on two ASCII characters + * \ingroup pico_bootrom + * + * These codes are uses to lookup data or function addresses in the bootrom + * + * \param c1 the first character + * \param c2 the second character + * \return the 'code' to use in rom_func_lookup() or rom_data_lookup() + */ +#define ROM_TABLE_CODE(c1, c2) ((c1) | ((c2) << 8)) + +#ifndef __ASSEMBLER__ + +// ROM FUNCTION SIGNATURES + +typedef uint32_t (*rom_popcount32_fn)(uint32_t); +typedef uint32_t (*rom_reverse32_fn)(uint32_t); +typedef uint32_t (*rom_clz32_fn)(uint32_t); +typedef uint32_t (*rom_ctz32_fn)(uint32_t); +typedef uint8_t *(*rom_memset_fn)(uint8_t *, uint8_t, uint32_t); +typedef uint32_t *(*rom_memset4_fn)(uint32_t *, uint8_t, uint32_t); +typedef uint32_t *(*rom_memcpy_fn)(uint8_t *, const uint8_t *, uint32_t); +typedef uint32_t *(*rom_memcpy44_fn)(uint32_t *, const uint32_t *, uint32_t); +typedef void __attribute__((noreturn)) (*rom_reset_usb_boot_fn)(uint32_t, uint32_t); +typedef rom_reset_usb_boot_fn reset_usb_boot_fn; // kept for backwards compatibility +typedef void (*rom_connect_internal_flash_fn)(void); +typedef void (*rom_flash_exit_xip_fn)(void); +typedef void (*rom_flash_range_erase_fn)(uint32_t, size_t, uint32_t, uint8_t); +typedef void (*rom_flash_range_program_fn)(uint32_t, const uint8_t*, size_t); +typedef void (*rom_flash_flush_cache_fn)(void); +typedef void (*rom_flash_enter_cmd_xip_fn)(void); + +#ifdef __cplusplus +extern "C" { +#endif + +/*! \brief Return a bootrom lookup code based on two ASCII characters + * \ingroup pico_bootrom + * + * These codes are uses to lookup data or function addresses in the bootrom + * + * \param c1 the first character + * \param c2 the second character + * \return the 'code' to use in rom_func_lookup() or rom_data_lookup() + */ +static inline uint32_t rom_table_code(uint8_t c1, uint8_t c2) { + return ROM_TABLE_CODE((uint32_t) c1, (uint32_t) c2); +} + +/*! + * \brief Lookup a bootrom function by code + * \ingroup pico_bootrom + * \param code the code + * \return a pointer to the function, or NULL if the code does not match any bootrom function + */ +void *rom_func_lookup(uint32_t code); + +/*! + * \brief Lookup a bootrom address by code + * \ingroup pico_bootrom + * \param code the code + * \return a pointer to the data, or NULL if the code does not match any bootrom function + */ +void *rom_data_lookup(uint32_t code); + +/*! + * \brief Helper function to lookup the addresses of multiple bootrom functions + * \ingroup pico_bootrom + * + * This method looks up the 'codes' in the table, and convert each table entry to the looked up + * function pointer, if there is a function for that code in the bootrom. + * + * \param table an IN/OUT array, elements are codes on input, function pointers on success. + * \param count the number of elements in the table + * \return true if all the codes were found, and converted to function pointers, false otherwise + */ +bool rom_funcs_lookup(uint32_t *table, unsigned int count); + +// Bootrom function: rom_table_lookup +// Returns the 32 bit pointer into the ROM if found or NULL otherwise. +typedef void *(*rom_table_lookup_fn)(uint16_t *table, uint32_t code); + +// Convert a 16 bit pointer stored at the given rom address into a 32 bit pointer +#define rom_hword_as_ptr(rom_address) (void *)(uintptr_t)(*(uint16_t *)rom_address) + +/*! + * \brief Lookup a bootrom function by code. This method is forceably inlined into the caller for FLASH/RAM sensitive code usage + * \ingroup pico_bootrom + * \param code the code + * \return a pointer to the function, or NULL if the code does not match any bootrom function + */ +static __force_inline void *rom_func_lookup_inline(uint32_t code) { + rom_table_lookup_fn rom_table_lookup = (rom_table_lookup_fn) rom_hword_as_ptr(0x18); + uint16_t *func_table = (uint16_t *) rom_hword_as_ptr(0x14); + return rom_table_lookup(func_table, code); +} + +/*! + * \brief Reboot the device into BOOTSEL mode + * \ingroup pico_bootrom + * + * This function reboots the device into the BOOTSEL mode ('usb boot"). + * + * Facilities are provided to enable an "activity light" via GPIO attached LED for the USB Mass Storage Device, + * and to limit the USB interfaces exposed. + * + * \param usb_activity_gpio_pin_mask 0 No pins are used as per a cold boot. Otherwise a single bit set indicating which + * GPIO pin should be set to output and raised whenever there is mass storage activity + * from the host. + * \param disable_interface_mask value to control exposed interfaces + * - 0 To enable both interfaces (as per a cold boot) + * - 1 To disable the USB Mass Storage Interface + * - 2 To disable the USB PICOBOOT Interface + */ +static inline void __attribute__((noreturn)) reset_usb_boot(uint32_t usb_activity_gpio_pin_mask, + uint32_t disable_interface_mask) { + rom_reset_usb_boot_fn func = (rom_reset_usb_boot_fn) rom_func_lookup(ROM_FUNC_RESET_USB_BOOT); + func(usb_activity_gpio_pin_mask, disable_interface_mask); +} + +#ifdef __cplusplus +} +#endif + +#endif // !__ASSEMBLER__ +#endif diff --git a/arkanoid/pico/code.h b/arkanoid/pico/code.h new file mode 100644 index 0000000..63afdbc --- /dev/null +++ b/arkanoid/pico/code.h @@ -0,0 +1,141 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_BINARY_INFO_CODE_H +#define _PICO_BINARY_INFO_CODE_H + +#include "pico.h" +#include "structure.h" + +#if !PICO_NO_BINARY_INFO +#define __bi_decl(name, bi, section_prefix, attr) static const attr __attribute__((section(section_prefix __STRING(name)))) struct _binary_info_core *name = bi +#define __bi_lineno_var_name __CONCAT(__bi_, __LINE__) +#define __bi_ptr_lineno_var_name __CONCAT(__bi_ptr, __LINE__) +#define __bi_enclosure_check_lineno_var_name __CONCAT(_error_bi_is_missing_enclosing_decl_,__LINE__) +#define __bi_mark_enclosure static const __unused int __bi_enclosure_check_lineno_var_name=0; +#if !defined(__GNUC__) || __cplusplus || __GNUC__ >= 8 +#define __bi_enclosure_check(x) (x + __bi_enclosure_check_lineno_var_name) +#else +// skip the version check on older GCC non C++, as it doesn't compile.. this is only here to catch the +// user accidentally forgetting to enclose the binary item with bi_decl +#define __bi_enclosure_check(x) (x) +#endif +/** + * Declare some binary information that will be included if the contain source file/line is compiled into the binary + * \ingroup pico_binary_info + */ +#define bi_decl(_decl) __bi_mark_enclosure _decl; __bi_decl(__bi_ptr_lineno_var_name, &__bi_lineno_var_name.core, ".binary_info.keep.", __used); +/** + * Declare some binary information that will be included if the function containing the decl is linked into the binary. + * The SDK uses --gc-sections, so functions that are never called will be removed by the linker, and any associated + * binary information declared this way will also be stripped + * \ingroup pico_binary_info + */ +#define bi_decl_if_func_used(_decl) ({__bi_mark_enclosure _decl; __bi_decl(__bi_ptr_lineno_var_name, &__bi_lineno_var_name.core, ".binary_info.", ); *(volatile uint8_t *)&__bi_ptr_lineno_var_name;}); + +#define bi_decl_with_attr(_decl, _attr) __bi_mark_enclosure _attr _decl; __bi_decl(__bi_ptr_lineno_var_name, &__bi_lineno_var_name.core, ".binary_info.keep.", __used); +#define bi_decl_if_func_used_with_attr(_decl, _attr) ({__bi_mark_enclosure _attr _decl; __bi_decl(__bi_ptr_lineno_var_name, &__bi_lineno_var_name.core, ".binary_info.", ); *(volatile uint8_t *)&__bi_ptr_lineno_var_name;}); +#else +#define __bi_decl(bi, name, attr) +#define bi_decl_with_attr(_decl, _attr) +#define bi_decl(_decl) +#define bi_decl_if_func_used_with_attr(_decl, _attr) ((void)0); +#define bi_decl_if_func_used(_decl) ((void)0); +#endif + +#define bi_int(_tag, _id, _value) \ + static const struct _binary_info_id_and_int __bi_lineno_var_name = { \ + .core = { \ + .type = __bi_enclosure_check(BINARY_INFO_TYPE_ID_AND_INT), \ + .tag = _tag, \ + },\ + .id = _id, \ + .value = _value \ + }; + +#define bi_string(_tag, _id, _value) \ + static const struct _binary_info_id_and_string __bi_lineno_var_name = { \ + .core = { \ + .type = __bi_enclosure_check(BINARY_INFO_TYPE_ID_AND_STRING), \ + .tag = _tag, \ + },\ + .id = _id, \ + .value = _value, \ + } + +#define bi_block_device(_tag, _name, _address, _size, _extra, _flags) \ + static const struct _binary_info_block_device __bi_lineno_var_name = { \ + .core = { \ + .type = __bi_enclosure_check(BINARY_INFO_TYPE_BLOCK_DEVICE), \ + .tag = _tag, \ + },\ + .name = _name, \ + .address = _address, \ + .size = _size, \ + .extra = _extra, \ + .flags = _flags, \ + } + +#define __bi_encoded_pins_with_func(_encoding) \ + static const struct _binary_info_pins_with_func __bi_lineno_var_name = { \ + .core = { \ + .type = __bi_enclosure_check(BINARY_INFO_TYPE_PINS_WITH_FUNC), \ + .tag = BINARY_INFO_TAG_RASPBERRY_PI, \ + },\ + .pin_encoding = _encoding \ + } + +#define __bi_pins_with_name(_mask, _label) \ + static const struct _binary_info_pins_with_name __bi_lineno_var_name = { \ + .core = { \ + .type = __bi_enclosure_check(BINARY_INFO_TYPE_PINS_WITH_NAME), \ + .tag = BINARY_INFO_TAG_RASPBERRY_PI, \ + },\ + .pin_mask = _mask, \ + .label = _label \ + } + +#define __bi_named_group(_parent_tag, _parent_id, _group_tag, _group_id, _label, _flags) \ +static const struct _binary_info_named_group __bi_lineno_var_name = { \ + .core = { \ + .type = __bi_enclosure_check(BINARY_INFO_TYPE_NAMED_GROUP), \ + .tag = _parent_tag, \ + },\ + .parent_id = _parent_id, \ + .group_tag = _group_tag, \ + .flags = _flags, \ + .group_id = _group_id, \ + .label = _label \ + } + +#define bi_binary_end(end) bi_int(BINARY_INFO_TAG_RASPBERRY_PI, BINARY_INFO_ID_RP_BINARY_END, end) +#define bi_program_name(name) bi_string(BINARY_INFO_TAG_RASPBERRY_PI, BINARY_INFO_ID_RP_PROGRAM_NAME, name) +#define bi_program_description(description) bi_string(BINARY_INFO_TAG_RASPBERRY_PI, BINARY_INFO_ID_RP_PROGRAM_DESCRIPTION, description) +#define bi_program_version_string(version_string) bi_string(BINARY_INFO_TAG_RASPBERRY_PI, BINARY_INFO_ID_RP_PROGRAM_VERSION_STRING, version_string) +#define bi_program_build_date_string(date_string) bi_string(BINARY_INFO_TAG_RASPBERRY_PI, BINARY_INFO_ID_RP_PROGRAM_BUILD_DATE_STRING, date_string) +#define bi_program_url(url) bi_string(BINARY_INFO_TAG_RASPBERRY_PI, BINARY_INFO_ID_RP_PROGRAM_URL, url) +// multiple of these may be added +#define bi_program_feature(feature) bi_string(BINARY_INFO_TAG_RASPBERRY_PI, BINARY_INFO_ID_RP_PROGRAM_FEATURE, feature) +#define bi_program_build_attribute(attr) bi_string(BINARY_INFO_TAG_RASPBERRY_PI, BINARY_INFO_ID_RP_PROGRAM_BUILD_ATTRIBUTE, attr) +#define bi_program_feature_group(tag, id, name) __bi_named_group(BINARY_INFO_TAG_RASPBERRY_PI, BINARY_INFO_ID_RP_PROGRAM_FEATURE, tag, id, name, 0) +#define bi_program_feature_group_with_flags(tag, id, name, flags) __bi_named_group(BINARY_INFO_TAG_RASPBERRY_PI, BINARY_INFO_ID_RP_PROGRAM_FEATURE, tag, id, name, flags) + +#define bi_1pin_with_func(p0, func) __bi_encoded_pins_with_func(BI_PINS_ENCODING_MULTI | ((func << 3)) | ((p0) << 7) | ((p0) << 12)) +#define bi_2pins_with_func(p0, p1, func) __bi_encoded_pins_with_func(BI_PINS_ENCODING_MULTI | ((func << 3)) | ((p0) << 7) | ((p1) << 12) | ((p1) << 17)) +#define bi_3pins_with_func(p0, p1, p2, func) __bi_encoded_pins_with_func(BI_PINS_ENCODING_MULTI | ((func << 3)) | ((p0) << 7) | ((p1) << 12) | ((p2) << 17) | ((p2) << 22)) +#define bi_4pins_with_func(p0, p1, p2, p3, func) __bi_encoded_pins_with_func(BI_PINS_ENCODING_MULTI | ((func << 3)) | ((p0) << 7) | ((p1) << 12) | ((p2) << 17) | ((p3) << 22) | ((p3) << 27)) +#define bi_5pins_with_func(p0, p1, p2, p3, p4, func) __bi_encoded_pins_with_func(BI_PINS_ENCODING_MULTI | ((func << 3)) | ((p0) << 7) | ((p1) << 12) | ((p2) << 17) | ((p3) << 22) | ((p4) << 27)) +#define bi_pin_range_with_func(plo, phi, func) __bi_encoded_pins_with_func(BI_PINS_ENCODING_RANGE | ((func << 3)) | ((plo) << 7) | ((phi) << 12)) + +#define bi_pin_mask_with_name(pmask, label) __bi_pins_with_name((pmask), (label)) +// names are sperated by | ... i.e. "name1|name2|name3" +#define bi_pin_mask_with_names(pmask, label) __bi_pins_with_name((pmask), (label)) +#define bi_1pin_with_name(p0, name) bi_pin_mask_with_name(1u << (p0), name) +#define bi_2pins_with_names(p0, name0, p1, name1) bi_pin_mask_with_names((1u << (p0)) | (1u << (p1)), name0 "|" name1) +#define bi_3pins_with_names(p0, name0, p1, name1, p2, name2) bi_pin_mask_with_names((1u << (p0)) | (1u << (p1)) | (1u << (p2)), name0 "|" name1 "|" name2) +#define bi_4pins_with_names(p0, name0, p1, name1, p2, name2, p3, name3) bi_pin_mask_with_names((1u << (p0)) | (1u << (p1)) | (1u << (p2)) | (1u << (p3)), name0 "|" name1 "|" name2 "|" name3) + +#endif diff --git a/arkanoid/pico/critical_section.c b/arkanoid/pico/critical_section.c new file mode 100644 index 0000000..bdbb5f1 --- /dev/null +++ b/arkanoid/pico/critical_section.c @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "critical_section.h" + +#if !PICO_NO_HARDWARE +static_assert(sizeof(critical_section_t) == 8, ""); +#endif + +void critical_section_init(critical_section_t *crit_sec) { + critical_section_init_with_lock_num(crit_sec, (uint)spin_lock_claim_unused(true)); +} + +void critical_section_init_with_lock_num(critical_section_t *crit_sec, uint lock_num) { + crit_sec->spin_lock = spin_lock_instance(lock_num); + __mem_fence_release(); +} + +void critical_section_deinit(critical_section_t *crit_sec) { + spin_lock_unclaim(spin_lock_get_num(crit_sec->spin_lock)); +#ifndef NDEBUG + crit_sec->spin_lock = (spin_lock_t *)-1; +#endif +} \ No newline at end of file diff --git a/arkanoid/pico/critical_section.h b/arkanoid/pico/critical_section.h new file mode 100644 index 0000000..bbc6d73 --- /dev/null +++ b/arkanoid/pico/critical_section.h @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PLATFORM_CRITICAL_SECTION_H +#define _PLATFORM_CRITICAL_SECTION_H + +#include "lock_core.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file critical_section.h + * \defgroup critical_section critical_section + * \ingroup pico_sync + * \brief Critical Section API for short-lived mutual exclusion safe for IRQ and multi-core + * + * A critical section is non-reentrant, and provides mutual exclusion using a spin-lock to prevent access + * from the other core, and from (higher priority) interrupts on the same core. It does the former + * using a spin lock and the latter by disabling interrupts on the calling core. + * + * Because interrupts are disabled when a critical_section is owned, uses of the critical_section + * should be as short as possible. + */ + +typedef struct __packed_aligned critical_section { + spin_lock_t *spin_lock; + uint32_t save; +} critical_section_t; + +/*! \brief Initialise a critical_section structure allowing the system to assign a spin lock number + * \ingroup critical_section + * + * The critical section is initialized ready for use, and will use a (possibly shared) spin lock + * number assigned by the system. Note that in general it is unlikely that you would be nesting + * critical sections, however if you do so you *must* use \ref critical_section_init_with_lock_num + * to ensure that the spin lock's used are different. + * + * \param crit_sec Pointer to critical_section structure + */ +void critical_section_init(critical_section_t *crit_sec); + +/*! \brief Initialise a critical_section structure assigning a specific spin lock number + * \ingroup critical_section + * \param crit_sec Pointer to critical_section structure + * \param lock_num the specific spin lock number to use + */ +void critical_section_init_with_lock_num(critical_section_t *crit_sec, uint lock_num); + +/*! \brief Enter a critical_section + * \ingroup critical_section + * + * If the spin lock associated with this critical section is in use, then this + * method will block until it is released. + * + * \param crit_sec Pointer to critical_section structure + */ +static inline void critical_section_enter_blocking(critical_section_t *crit_sec) { + crit_sec->save = spin_lock_blocking(crit_sec->spin_lock); +} + +/*! \brief Release a critical_section + * \ingroup critical_section + * + * \param crit_sec Pointer to critical_section structure + */ +static inline void critical_section_exit(critical_section_t *crit_sec) { + spin_unlock(crit_sec->spin_lock, crit_sec->save); +} + +/*! \brief De-Initialise a critical_section created by the critical_section_init method + * \ingroup critical_section + * + * This method is only used to free the associated spin lock allocated via + * the critical_section_init method (it should not be used to de-initialize a spin lock + * created via critical_section_init_with_lock_num). After this call, the critical section is invalid + * + * \param crit_sec Pointer to critical_section structure + */ +void critical_section_deinit(critical_section_t *crit_sec); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/arkanoid/pico/crt0.S b/arkanoid/pico/crt0.S new file mode 100644 index 0000000..5f18fe5 --- /dev/null +++ b/arkanoid/pico/crt0.S @@ -0,0 +1,338 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "pico.h" +#include "hardware/regs/m0plus.h" +#include "hardware/regs/addressmap.h" +#include "hardware/regs/sio.h" +#include "defs.h" + +#ifdef NDEBUG +#ifndef COLLAPSE_IRQS +#define COLLAPSE_IRQS +#endif +#endif + +.syntax unified +.cpu cortex-m0plus +.thumb + +.section .vectors, "ax" +.align 2 + +.global __vectors, __VECTOR_TABLE +__VECTOR_TABLE: +__vectors: +.word __StackTop +.word _reset_handler +.word isr_nmi +.word isr_hardfault +.word isr_invalid // Reserved, should never fire +.word isr_invalid // Reserved, should never fire +.word isr_invalid // Reserved, should never fire +.word isr_invalid // Reserved, should never fire +.word isr_invalid // Reserved, should never fire +.word isr_invalid // Reserved, should never fire +.word isr_invalid // Reserved, should never fire +.word isr_svcall +.word isr_invalid // Reserved, should never fire +.word isr_invalid // Reserved, should never fire +.word isr_pendsv +.word isr_systick +.word isr_irq0 +.word isr_irq1 +.word isr_irq2 +.word isr_irq3 +.word isr_irq4 +.word isr_irq5 +.word isr_irq6 +.word isr_irq7 +.word isr_irq8 +.word isr_irq9 +.word isr_irq10 +.word isr_irq11 +.word isr_irq12 +.word isr_irq13 +.word isr_irq14 +.word isr_irq15 +.word isr_irq16 +.word isr_irq17 +.word isr_irq18 +.word isr_irq19 +.word isr_irq20 +.word isr_irq21 +.word isr_irq22 +.word isr_irq23 +.word isr_irq24 +.word isr_irq25 +.word isr_irq26 +.word isr_irq27 +.word isr_irq28 +.word isr_irq29 +.word isr_irq30 +.word isr_irq31 + +// all default exception handlers do nothing, and we can check for them being set to our +// default values by seeing if they point to somewhere between __defaults_isrs_start and __default_isrs_end +.global __default_isrs_start +__default_isrs_start: + +// Declare a weak symbol for each ISR. +// By default, they will fall through to the undefined IRQ handler below (breakpoint), +// but can be overridden by C functions with correct name. + +.macro decl_isr_bkpt name +.weak \name +.type \name,%function +.thumb_func +\name: + bkpt #0 +.endm + +// these are separated out for clarity +decl_isr_bkpt isr_invalid +decl_isr_bkpt isr_nmi +decl_isr_bkpt isr_hardfault +decl_isr_bkpt isr_svcall +decl_isr_bkpt isr_pendsv +decl_isr_bkpt isr_systick + +.global __default_isrs_end +__default_isrs_end: + +.macro decl_isr name +.weak \name +.type \name,%function +.thumb_func +\name: +.endm + +decl_isr isr_irq0 +decl_isr isr_irq1 +decl_isr isr_irq2 +decl_isr isr_irq3 +decl_isr isr_irq4 +decl_isr isr_irq5 +decl_isr isr_irq6 +decl_isr isr_irq7 +decl_isr isr_irq8 +decl_isr isr_irq9 +decl_isr isr_irq10 +decl_isr isr_irq11 +decl_isr isr_irq12 +decl_isr isr_irq13 +decl_isr isr_irq14 +decl_isr isr_irq15 +decl_isr isr_irq16 +decl_isr isr_irq17 +decl_isr isr_irq18 +decl_isr isr_irq19 +decl_isr isr_irq20 +decl_isr isr_irq21 +decl_isr isr_irq22 +decl_isr isr_irq23 +decl_isr isr_irq24 +decl_isr isr_irq25 +decl_isr isr_irq26 +decl_isr isr_irq27 +decl_isr isr_irq28 +decl_isr isr_irq29 +decl_isr isr_irq30 +decl_isr isr_irq31 + +// All unhandled USER IRQs fall through to here +.global __unhandled_user_irq +.thumb_func +__unhandled_user_irq: + bl __get_current_exception + subs r0, #16 +.global unhandled_user_irq_num_in_r0 +unhandled_user_irq_num_in_r0: + bkpt #0 + +// ---------------------------------------------------------------------------- + +.section .binary_info_header, "a" + +// Header must be in first 256 bytes of main image (i.e. excluding flash boot2). +// For flash builds we put it immediately after vector table; for NO_FLASH the +// vectors are at a +0x100 offset because the bootrom enters RAM images directly +// at their lowest address, so we put the header in the VTOR alignment hole. + +#if !PICO_NO_BINARY_INFO +binary_info_header: +.word BINARY_INFO_MARKER_START +.word __binary_info_start +.word __binary_info_end +.word data_cpy_table // we may need to decode pointers that are in RAM at runtime. +.word BINARY_INFO_MARKER_END +#endif + +// ---------------------------------------------------------------------------- + +.section .reset, "ax" + +// On flash builds, the vector table comes first in the image (conventional). +// On NO_FLASH builds, the reset handler section comes first, as the entry +// point is at offset 0 (fixed due to bootrom), and VTOR is highly-aligned. +// Image is entered in various ways: +// +// - NO_FLASH builds are entered from beginning by UF2 bootloader +// +// - Flash builds vector through the table into _reset_handler from boot2 +// +// - Either type can be entered via _entry_point by the debugger, and flash builds +// must then be sent back round the boot sequence to properly initialise flash + +// ELF entry point: +.type _entry_point,%function +.thumb_func +.global _entry_point +_entry_point: + +#if PICO_NO_FLASH + // Vector through our own table (SP, VTOR will not have been set up at + // this point). Same path for debugger entry and bootloader entry. + ldr r0, =__vectors +#else + // Debugger tried to run code after loading, so SSI is in 03h-only mode. + // Go back through bootrom + boot2 to properly initialise flash. + movs r0, #0 +#endif + ldr r1, =(PPB_BASE + M0PLUS_VTOR_OFFSET) + str r0, [r1] + ldmia r0!, {r1, r2} + msr msp, r1 + bx r2 + +// Reset handler: +// - initialises .data +// - clears .bss +// - calls runtime_init +// - calls main +// - calls exit (which should eventually hang the processor via _exit) + +.type _reset_handler,%function +.thumb_func +_reset_handler: + // Only core 0 should run the C runtime startup code; core 1 is normally + // sleeping in the bootrom at this point but check to be sure + ldr r0, =(SIO_BASE + SIO_CPUID_OFFSET) + ldr r0, [r0] + cmp r0, #0 + bne hold_non_core0_in_bootrom + + adr r4, data_cpy_table + + // assume there is at least one entry +1: + ldmia r4!, {r1-r3} + cmp r1, #0 + beq 2f + bl data_cpy + b 1b +2: + + // Zero out the BSS + ldr r1, =__bss_start__ + ldr r2, =__bss_end__ + movs r0, #0 + b bss_fill_test +bss_fill_loop: + stm r1!, {r0} +bss_fill_test: + cmp r1, r2 + bne bss_fill_loop + +platform_entry: // symbol for stack traces + // Use 32-bit jumps, in case these symbols are moved out of branch range + // (e.g. if main is in SRAM and crt0 in flash) + ldr r1, =runtime_init + blx r1 + ldr r1, =main + blx r1 + ldr r1, =exit + blx r1 + // exit should not return. If it does, hang the core. + // (fall thru into our hang _exit impl +.weak _exit +.type _exit,%function +.thumb_func +_exit: +1: // separate label because _exit can be moved out of branch range + bkpt #0 + b 1b + +data_cpy_loop: + ldm r1!, {r0} + stm r2!, {r0} +data_cpy: + cmp r2, r3 + blo data_cpy_loop + bx lr + +.align 2 +data_cpy_table: +#if PICO_COPY_TO_RAM +.word __ram_text_source__ +.word __ram_text_start__ +.word __ram_text_end__ +#endif +.word __etext +.word __data_start__ +.word __data_end__ + +.word __scratch_x_source__ +.word __scratch_x_start__ +.word __scratch_x_end__ + +.word __scratch_y_source__ +.word __scratch_y_start__ +.word __scratch_y_end__ + +.word 0 // null terminator + +// ---------------------------------------------------------------------------- +// Provide safe defaults for _exit and runtime_init +// Full implementations usually provided by platform.c + +.weak runtime_init +.type runtime_init,%function +.thumb_func +runtime_init: + bx lr + +// ---------------------------------------------------------------------------- +// If core 1 somehow gets into crt0 due to a spectacular VTOR mishap, we need to +// catch it and send back to the sleep-and-launch code in the bootrom. Shouldn't +// happen (it should sleep in the ROM until given an entry point via the +// cross-core FIFOs) but it's good to be defensive. + +hold_non_core0_in_bootrom: + ldr r0, = 'W' | ('V' << 8) + bl rom_func_lookup + bx r0 + +.global __get_current_exception +.thumb_func +__get_current_exception: + mrs r0, ipsr + uxtb r0, r0 + bx lr + +// ---------------------------------------------------------------------------- +// Stack/heap dummies to set size + +.section .stack +// align to allow for memory protection (although this alignment is pretty much ignored by linker script) +.align 5 + .equ StackSize, PICO_STACK_SIZE +.space StackSize + +.section .heap +.align 2 + .equ HeapSize, PICO_HEAP_SIZE +.space HeapSize diff --git a/arkanoid/pico/datetime.c b/arkanoid/pico/datetime.c new file mode 100644 index 0000000..cef3ef5 --- /dev/null +++ b/arkanoid/pico/datetime.c @@ -0,0 +1,41 @@ +#include "datetime.h" + +#include <stdio.h> + +static const char *DATETIME_MONTHS[12] = { + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December" +}; + +static const char *DATETIME_DOWS[7] = { + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", +}; + +void datetime_to_str(char *buf, uint buf_size, const datetime_t *t) { + snprintf(buf, + buf_size, + "%s %d %s %d:%02d:%02d %d", + DATETIME_DOWS[t->dotw], + t->day, + DATETIME_MONTHS[t->month - 1], + t->hour, + t->min, + t->sec, + t->year); +}; \ No newline at end of file diff --git a/arkanoid/pico/datetime.h b/arkanoid/pico/datetime.h new file mode 100644 index 0000000..bb32835 --- /dev/null +++ b/arkanoid/pico/datetime.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_DATETIME_H +#define _PICO_DATETIME_H + +#include "pico.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file datetime.h + * \defgroup util_datetime datetime + * \brief Date/Time formatting + * \ingroup pico_util + */ + +/*! \brief Convert a datetime_t structure to a string + * \ingroup util_datetime + * + * \param buf character buffer to accept generated string + * \param buf_size The size of the passed in buffer + * \param t The datetime to be converted. + */ +void datetime_to_str(char *buf, uint buf_size, const datetime_t *t); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/arkanoid/pico/defs.h b/arkanoid/pico/defs.h new file mode 100644 index 0000000..407c0ac --- /dev/null +++ b/arkanoid/pico/defs.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_BINARY_INFO_DEFS_H +#define _PICO_BINARY_INFO_DEFS_H + +// this file is for pre-processor definitions only + +// should be found within the first 256 bytes of the real binary (i.e. after the flash second stage if a flash binary) +// +// Note the layout is: +// +// addr : BINARY_INFO_MARKER_START +// addr+0x04 : __binary_info_start +// addr+0x08 : __binary_info_end +// addr+0x0c : __address_mapping_table +// addr+0x10 | BINARY_INFO_MARKER_END +// +// __binary_info_start to __binary_info_end are the start, end (non inclusive) of an array +// of pointers to binary_info_t structures +// +// __address_mapping_table is an array of the following items: +// +// uint32_t source_addr_start +// uint32_t dest_addr_start +// uint32_t dest_addr_end +// +// representing a mapping from the stored address in the binary/flash to addresses at runtime. +// The linker will store pointers within the binary using their runtime values, however because of +// "AT" mapping in the link script these addresses actually correspond to a different address in the binary +// image. This mapping (which in the case of crt0.S is simply the data copy table used at initialization +// to copy data into it's runtime location) can be used by picotool or others to reverse the mapping to find data +// within the binary. +// +// Note the above array is terminated with a NULL source_addr_start + +#define BINARY_INFO_MARKER_START 0x7188ebf2 +#define BINARY_INFO_MARKER_END 0xe71aa390 + +#endif \ No newline at end of file diff --git a/arkanoid/pico/divider.h b/arkanoid/pico/divider.h new file mode 100644 index 0000000..da4e783 --- /dev/null +++ b/arkanoid/pico/divider.h @@ -0,0 +1,322 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_DIVIDER_H_ +#define _PICO_DIVIDER_H_ + +#include "pico.h" +#include "hardware/divider.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \defgroup pico_divider pico_divider + * Optimized 32 and 64 bit division functions accelerated by the RP2040 hardware divider. + * Additionally provides integration with the C `/` and `%` operators + */ + +/** \file divider.h +* \brief High level APIs including combined quotient and remainder functions for 32 and 64 bit accelerated by the hardware divider +* \ingroup pico_divider +* +* These functions all call __aeabi_idiv0 or __aebi_ldiv0 on division by zero +* passing the largest applicably signed value +* +* Functions with unsafe in their name do not save/restore divider state, so are unsafe to call from interrupts. Unsafe functions are slightly faster. +*/ + +/** + * \brief Integer divide of two signed 32-bit values + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \return quotient + */ +int32_t div_s32s32(int32_t a, int32_t b); + +/** + * \brief Integer divide of two signed 32-bit values, with remainder + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \param [out] rem The remainder of dividend/divisor + * \return Quotient result of dividend/divisor + */ +static inline int32_t divmod_s32s32_rem(int32_t a, int32_t b, int32_t *rem) { + divmod_result_t r = hw_divider_divmod_s32(a, b); + *rem = to_remainder_s32(r); + return to_quotient_s32(r); +} + +/** + * \brief Integer divide of two signed 32-bit values + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \return quotient in low word/r0, remainder in high word/r1 + */ +divmod_result_t divmod_s32s32(int32_t a, int32_t b); + +/** + * \brief Integer divide of two unsigned 32-bit values + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \return Quotient + */ +uint32_t div_u32u32(uint32_t a, uint32_t b); + +/** + * \brief Integer divide of two unsigned 32-bit values, with remainder + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \param [out] rem The remainder of dividend/divisor + * \return Quotient result of dividend/divisor + */ +static inline uint32_t divmod_u32u32_rem(uint32_t a, uint32_t b, uint32_t *rem) { + divmod_result_t r = hw_divider_divmod_u32(a, b); + *rem = to_remainder_u32(r); + return to_quotient_u32(r); +} + +/** + * \brief Integer divide of two unsigned 32-bit values + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \return quotient in low word/r0, remainder in high word/r1 + */ +divmod_result_t divmod_u32u32(uint32_t a, uint32_t b); + +/** + * \brief Integer divide of two signed 64-bit values + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \return Quotient + */ +int64_t div_s64s64(int64_t a, int64_t b); + +/** + * \brief Integer divide of two signed 64-bit values, with remainder + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \param [out] rem The remainder of dividend/divisor + * \return Quotient result of dividend/divisor + */ +int64_t divmod_s64s64_rem(int64_t a, int64_t b, int64_t *rem); + +/** + * \brief Integer divide of two signed 64-bit values + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \return quotient in result (r0,r1), remainder in regs (r2, r3) + */ +int64_t divmod_s64s64(int64_t a, int64_t b); + +/** + * \brief Integer divide of two unsigned 64-bit values + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \return Quotient + */ +uint64_t div_u64u64(uint64_t a, uint64_t b); + +/** + * \brief Integer divide of two unsigned 64-bit values, with remainder + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \param [out] rem The remainder of dividend/divisor + * \return Quotient result of dividend/divisor + */ +uint64_t divmod_u64u64_rem(uint64_t a, uint64_t b, uint64_t *rem); + + +/** + * \brief Integer divide of two signed 64-bit values + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \return quotient in result (r0,r1), remainder in regs (r2, r3) + */ +uint64_t divmod_u64u64(uint64_t a, uint64_t b); + +// ----------------------------------------------------------------------- +// these "unsafe" functions are slightly faster, but do not save the divider state, +// so are not generally safe to be called from interrupts +// ----------------------------------------------------------------------- + +/** + * \brief Unsafe integer divide of two signed 32-bit values + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \return quotient + * + * Do not use in interrupts + */ +int32_t div_s32s32_unsafe(int32_t a, int32_t b); + +/** + * \brief Unsafe integer divide of two signed 32-bit values, with remainder + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \param [out] rem The remainder of dividend/divisor + * \return Quotient result of dividend/divisor + * + * Do not use in interrupts + */ +int32_t divmod_s32s32_rem_unsafe(int32_t a, int32_t b, int32_t *rem); + +/** + * \brief Unsafe integer divide of two unsigned 32-bit values + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \return quotient in low word/r0, remainder in high word/r1 + * + * Do not use in interrupts + */ +int64_t divmod_s32s32_unsafe(int32_t a, int32_t b); + +/** + * \brief Unsafe integer divide of two unsigned 32-bit values + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \return Quotient + * + * Do not use in interrupts + */ +uint32_t div_u32u32_unsafe(uint32_t a, uint32_t b); + +/** + * \brief Unsafe integer divide of two unsigned 32-bit values, with remainder + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \param [out] rem The remainder of dividend/divisor + * \return Quotient result of dividend/divisor + * + * Do not use in interrupts + */ +uint32_t divmod_u32u32_rem_unsafe(uint32_t a, uint32_t b, uint32_t *rem); + +/** + * \brief Unsafe integer divide of two unsigned 32-bit values + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \return quotient in low word/r0, remainder in high word/r1 + * + * Do not use in interrupts + */ +uint64_t divmod_u32u32_unsafe(uint32_t a, uint32_t b); + +/** + * \brief Unsafe integer divide of two signed 64-bit values + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \return Quotient + * + * Do not use in interrupts + */ +int64_t div_s64s64_unsafe(int64_t a, int64_t b); + +/** + * \brief Unsafe integer divide of two signed 64-bit values, with remainder + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \param [out] rem The remainder of dividend/divisor + * \return Quotient result of dividend/divisor + * + * Do not use in interrupts + */ +int64_t divmod_s64s64_rem_unsafe(int64_t a, int64_t b, int64_t *rem); + +/** + * \brief Unsafe integer divide of two signed 64-bit values + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \return quotient in result (r0,r1), remainder in regs (r2, r3) + * + * Do not use in interrupts + */ +int64_t divmod_s64s64_unsafe(int64_t a, int64_t b); + +/** + * \brief Unsafe integer divide of two unsigned 64-bit values + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \return Quotient + * + * Do not use in interrupts + */ +uint64_t div_u64u64_unsafe(uint64_t a, uint64_t b); + +/** + * \brief Unsafe integer divide of two unsigned 64-bit values, with remainder + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \param [out] rem The remainder of dividend/divisor + * \return Quotient result of dividend/divisor + * + * Do not use in interrupts + */ +uint64_t divmod_u64u64_rem_unsafe(uint64_t a, uint64_t b, uint64_t *rem); + +/** + * \brief Unsafe integer divide of two signed 64-bit values + * \ingroup pico_divider + * + * \param a Dividend + * \param b Divisor + * \return quotient in result (r0,r1), remainder in regs (r2, r3) + * + * Do not use in interrupts + */ +uint64_t divmod_u64u64_unsafe(uint64_t a, uint64_t b); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/arkanoid/pico/doc.h b/arkanoid/pico/doc.h new file mode 100644 index 0000000..4485b5d --- /dev/null +++ b/arkanoid/pico/doc.h @@ -0,0 +1,4 @@ +/** + * \defgroup pico_util pico_util + * \brief Useful data structures and utility functions + */ diff --git a/arkanoid/pico/driver.h b/arkanoid/pico/driver.h new file mode 100644 index 0000000..2d2fe17 --- /dev/null +++ b/arkanoid/pico/driver.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_STDIO_DRIVER_H +#define _PICO_STDIO_DRIVER_H + +#include "stdio.h" +#include "platform.h" + +struct stdio_driver { + void (*out_chars)(const char *buf, int len); + void (*out_flush)(void); + int (*in_chars)(char *buf, int len); + stdio_driver_t *next; +#if PICO_STDIO_ENABLE_CRLF_SUPPORT + bool last_ended_with_cr; + bool crlf_enabled; +#endif +}; + +#endif diff --git a/arkanoid/pico/hardware/adc.c b/arkanoid/pico/hardware/adc.c new file mode 100644 index 0000000..c867734 --- /dev/null +++ b/arkanoid/pico/hardware/adc.c @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "../pico.h" +#include "adc.h" +#include "resets.h" + +void adc_init(void) { + // ADC is in an unknown state. We should start by resetting it + reset_block(RESETS_RESET_ADC_BITS); + unreset_block_wait(RESETS_RESET_ADC_BITS); + + // Now turn it back on. Staging of clock etc is handled internally + adc_hw->cs = ADC_CS_EN_BITS; + + // Internal staging completes in a few cycles, but poll to be sure + while (!(adc_hw->cs & ADC_CS_READY_BITS)) { + tight_loop_contents(); + } +} diff --git a/arkanoid/pico/hardware/adc.h b/arkanoid/pico/hardware/adc.h new file mode 100644 index 0000000..20059ea --- /dev/null +++ b/arkanoid/pico/hardware/adc.h @@ -0,0 +1,257 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_ADC_H_ +#define _HARDWARE_ADC_H_ + +#include "../pico.h" +#include "structs/adc.h" +#include "gpio.h" + +/** \file adc.h + * \defgroup hardware_adc hardware_adc + * + * Analog to Digital Converter (ADC) API + * + * The RP2040 has an internal analogue-digital converter (ADC) with the following features: + * - SAR ADC + * - 500 kS/s (Using an independent 48MHz clock) + * - 12 bit (8.7 ENOB) + * - 5 input mux: + * - 4 inputs that are available on package pins shared with GPIO[29:26] + * - 1 input is dedicated to the internal temperature sensor + * - 4 element receive sample FIFO + * - Interrupt generation + * - DMA interface + * + * Although there is only one ADC you can specify the input to it using the adc_select_input() function. + * In round robin mode (adc_set_round_robin()), the ADC will use that input and move to the next one after a read. + * + * User ADC inputs are on 0-3 (GPIO 26-29), the temperature sensor is on input 4. + * + * Temperature sensor values can be approximated in centigrade as: + * + * T = 27 - (ADC_Voltage - 0.706)/0.001721 + * + * The FIFO, if used, can contain up to 4 entries. + * + * \subsection adc_example Example + * \addtogroup hardware_adc + * + * \include hello_adc.c + */ + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_ADC, Enable/disable assertions in the ADC module, type=bool, default=0, group=hardware_adc +#ifndef PARAM_ASSERTIONS_ENABLED_ADC +#define PARAM_ASSERTIONS_ENABLED_ADC 0 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/*! \brief Initialise the ADC HW + * \ingroup hardware_adc + * + */ +void adc_init(void); + +/*! \brief Initialise the gpio for use as an ADC pin + * \ingroup hardware_adc + * + * Prepare a GPIO for use with ADC by disabling all digital functions. + * + * \param gpio The GPIO number to use. Allowable GPIO numbers are 26 to 29 inclusive. + */ +static inline void adc_gpio_init(uint gpio) { + invalid_params_if(ADC, gpio < 26 || gpio > 29); + // Select NULL function to make output driver hi-Z + gpio_set_function(gpio, GPIO_FUNC_NULL); + // Also disable digital pulls and digital receiver + gpio_disable_pulls(gpio); + gpio_set_input_enabled(gpio, false); +} + +/*! \brief ADC input select + * \ingroup hardware_adc + * + * Select an ADC input. 0...3 are GPIOs 26...29 respectively. + * Input 4 is the onboard temperature sensor. + * + * \param input Input to select. + */ +static inline void adc_select_input(uint input) { + valid_params_if(ADC, input < NUM_ADC_CHANNELS); + hw_write_masked(&adc_hw->cs, input << ADC_CS_AINSEL_LSB, ADC_CS_AINSEL_BITS); +} + +/*! \brief Get the currently selected ADC input channel + * \ingroup hardware_adc + * + * \return The currently selected input channel. 0...3 are GPIOs 26...29 respectively. Input 4 is the onboard temperature sensor. + */ +static inline uint adc_get_selected_input(void) { + return (adc_hw->cs & ADC_CS_AINSEL_BITS) >> ADC_CS_AINSEL_LSB; +} + +/*! \brief Round Robin sampling selector + * \ingroup hardware_adc + * + * This function sets which inputs are to be run through in round robin mode. + * Value between 0 and 0x1f (bit 0 to bit 4 for GPIO 26 to 29 and temperature sensor input respectively) + * + * \param input_mask A bit pattern indicating which of the 5 inputs are to be sampled. Write a value of 0 to disable round robin sampling. + */ +static inline void adc_set_round_robin(uint input_mask) { + invalid_params_if(ADC, input_mask & ~ADC_CS_RROBIN_BITS); + hw_write_masked(&adc_hw->cs, input_mask << ADC_CS_RROBIN_LSB, ADC_CS_RROBIN_BITS); +} + +/*! \brief Enable the onboard temperature sensor + * \ingroup hardware_adc + * + * \param enable Set true to power on the onboard temperature sensor, false to power off. + * + */ +static inline void adc_set_temp_sensor_enabled(bool enable) { + if (enable) + hw_set_bits(&adc_hw->cs, ADC_CS_TS_EN_BITS); + else + hw_clear_bits(&adc_hw->cs, ADC_CS_TS_EN_BITS); +} + +/*! \brief Perform a single conversion + * \ingroup hardware_adc + * + * Performs an ADC conversion, waits for the result, and then returns it. + * + * \return Result of the conversion. + */ +static inline uint16_t adc_read(void) { + hw_set_bits(&adc_hw->cs, ADC_CS_START_ONCE_BITS); + + while (!(adc_hw->cs & ADC_CS_READY_BITS)) + tight_loop_contents(); + + return (uint16_t) adc_hw->result; +} + +/*! \brief Enable or disable free-running sampling mode + * \ingroup hardware_adc + * + * \param run false to disable, true to enable free running conversion mode. + */ +static inline void adc_run(bool run) { + if (run) + hw_set_bits(&adc_hw->cs, ADC_CS_START_MANY_BITS); + else + hw_clear_bits(&adc_hw->cs, ADC_CS_START_MANY_BITS); +} + +/*! \brief Set the ADC Clock divisor + * \ingroup hardware_adc + * + * Period of samples will be (1 + div) cycles on average. Note it takes 96 cycles to perform a conversion, + * so any period less than that will be clamped to 96. + * + * \param clkdiv If non-zero, conversion will be started at intervals rather than back to back. + */ +static inline void adc_set_clkdiv(float clkdiv) { + invalid_params_if(ADC, clkdiv >= 1 << (ADC_DIV_INT_MSB - ADC_DIV_INT_LSB + 1)); + adc_hw->div = (uint32_t)(clkdiv * (float) (1 << ADC_DIV_INT_LSB)); +} + +/*! \brief Setup the ADC FIFO + * \ingroup hardware_adc + * + * FIFO is 4 samples long, if a conversion is completed and the FIFO is full, the result is dropped. + * + * \param en Enables write each conversion result to the FIFO + * \param dreq_en Enable DMA requests when FIFO contains data + * \param dreq_thresh Threshold for DMA requests/FIFO IRQ if enabled. + * \param err_in_fifo If enabled, bit 15 of the FIFO contains error flag for each sample + * \param byte_shift Shift FIFO contents to be one byte in size (for byte DMA) - enables DMA to byte buffers. + */ + static inline void adc_fifo_setup(bool en, bool dreq_en, uint16_t dreq_thresh, bool err_in_fifo, bool byte_shift) { + hw_write_masked(&adc_hw->fcs, + (bool_to_bit(en) << ADC_FCS_EN_LSB) | + (bool_to_bit(dreq_en) << ADC_FCS_DREQ_EN_LSB) | + (((uint)dreq_thresh) << ADC_FCS_THRESH_LSB) | + (bool_to_bit(err_in_fifo) << ADC_FCS_ERR_LSB) | + (bool_to_bit(byte_shift) << ADC_FCS_SHIFT_LSB), + ADC_FCS_EN_BITS | + ADC_FCS_DREQ_EN_BITS | + ADC_FCS_THRESH_BITS | + ADC_FCS_ERR_BITS | + ADC_FCS_SHIFT_BITS + ); +} + +/*! \brief Check FIFO empty state + * \ingroup hardware_adc + * + * \return Returns true if the FIFO is empty + */ +static inline bool adc_fifo_is_empty(void) { + return !!(adc_hw->fcs & ADC_FCS_EMPTY_BITS); +} + +/*! \brief Get number of entries in the ADC FIFO + * \ingroup hardware_adc + * + * The ADC FIFO is 4 entries long. This function will return how many samples are currently present. + */ +static inline uint8_t adc_fifo_get_level(void) { + return (adc_hw->fcs & ADC_FCS_LEVEL_BITS) >> ADC_FCS_LEVEL_LSB; +} + +/*! \brief Get ADC result from FIFO + * \ingroup hardware_adc + * + * Pops the latest result from the ADC FIFO. + */ +static inline uint16_t adc_fifo_get(void) { + return (uint16_t)adc_hw->fifo; +} + +/*! \brief Wait for the ADC FIFO to have data. + * \ingroup hardware_adc + * + * Blocks until data is present in the FIFO + */ +static inline uint16_t adc_fifo_get_blocking(void) { + while (adc_fifo_is_empty()) + tight_loop_contents(); + return (uint16_t)adc_hw->fifo; +} + +/*! \brief Drain the ADC FIFO + * \ingroup hardware_adc + * + * Will wait for any conversion to complete then drain the FIFO, discarding any results. + */ +static inline void adc_fifo_drain(void) { + // Potentially there is still a conversion in progress -- wait for this to complete before draining + while (!(adc_hw->cs & ADC_CS_READY_BITS)) + tight_loop_contents(); + while (!adc_fifo_is_empty()) + (void) adc_fifo_get(); +} + +/*! \brief Enable/Disable ADC interrupts. + * \ingroup hardware_adc + * + * \param enabled Set to true to enable the ADC interrupts, false to disable + */ +static inline void adc_irq_set_enabled(bool enabled) { + adc_hw->inte = !!enabled; +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/hardware/address_mapped.h b/arkanoid/pico/hardware/address_mapped.h new file mode 100644 index 0000000..8f309da --- /dev/null +++ b/arkanoid/pico/hardware/address_mapped.h @@ -0,0 +1,165 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_ADDRESS_MAPPED_H +#define _HARDWARE_ADDRESS_MAPPED_H + +#include "../pico.h" +#include "regs/addressmap.h" + +/** \file address_mapped.h + * \defgroup hardware_base hardware_base + * + * Low-level types and (atomic) accessors for memory-mapped hardware registers + * + * `hardware_base` defines the low level types and access functions for memory mapped hardware registers. It is included + * by default by all other hardware libraries. + * + * The following register access typedefs codify the access type (read/write) and the bus size (8/16/32) of the hardware register. + * The register type names are formed by concatenating one from each of the 3 parts A, B, C + + * A | B | C | Meaning + * ------|---|---|-------- + * io_ | | | A Memory mapped IO register + * |ro_| | read-only access + * |rw_| | read-write access + * |wo_| | write-only access (can't actually be enforced via C API) + * | | 8| 8-bit wide access + * | | 16| 16-bit wide access + * | | 32| 32-bit wide access + * + * When dealing with these types, you will always use a pointer, i.e. `io_rw_32 *some_reg` is a pointer to a read/write + * 32 bit register that you can write with `*some_reg = value`, or read with `value = *some_reg`. + * + * RP2040 hardware is also aliased to provide atomic setting, clear or flipping of a subset of the bits within + * a hardware register so that concurrent access by two cores is always consistent with one atomic operation + * being performed first, followed by the second. + * + * See hw_set_bits(), hw_clear_bits() and hw_xor_bits() provide for atomic access via a pointer to a 32 bit register + * + * Additionally given a pointer to a structure representing a piece of hardware (e.g. `dma_hw_t *dma_hw` for the DMA controller), you can + * get an alias to the entire structure such that writing any member (register) within the structure is equivalent + * to an atomic operation via hw_set_alias(), hw_clear_alias() or hw_xor_alias()... + * + * For example `hw_set_alias(dma_hw)->inte1 = 0x80;` will set bit 7 of the INTE1 register of the DMA controller, + * leaving the other bits unchanged. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#define check_hw_layout(type, member, offset) static_assert(offsetof(type, member) == (offset), "hw offset mismatch") +#define check_hw_size(type, size) static_assert(sizeof(type) == (size), "hw size mismatch") + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_ADDRESS_ALIAS, Enable/disable assertions in memory address aliasing macros, type=bool, default=0, group=hardware_base +#ifndef PARAM_ASSERTIONS_ENABLED_ADDRESS_ALIAS +#define PARAM_ASSERTIONS_ENABLED_ADDRESS_ALIAS 0 +#endif + +typedef volatile uint32_t io_rw_32; +typedef const volatile uint32_t io_ro_32; +typedef volatile uint32_t io_wo_32; +typedef volatile uint16_t io_rw_16; +typedef const volatile uint16_t io_ro_16; +typedef volatile uint16_t io_wo_16; +typedef volatile uint8_t io_rw_8; +typedef const volatile uint8_t io_ro_8; +typedef volatile uint8_t io_wo_8; + +typedef volatile uint8_t *const ioptr; +typedef ioptr const const_ioptr; + +// A non-functional (empty) helper macro to help IDEs follow links from the autogenerated +// hardware struct headers in structs/xxx.h to the raw register definitions +// in regs/xxx.h. A preprocessor define such as TIMER_TIMEHW_OFFSET (a timer register offset) +// is not generally clickable (in an IDE) if placed in a C comment, so _REG_(TIMER_TIMEHW_OFFSET) is +// included outside of a comment instead +#define _REG_(x) + +// Helper method used by hw_alias macros to optionally check input validity +#define hw_alias_check_addr(addr) ((uintptr_t)(addr)) +// can't use the following impl as it breaks existing static declarations using hw_alias, so would be a backwards incompatibility +//static __force_inline uint32_t hw_alias_check_addr(volatile void *addr) { +// uint32_t rc = (uintptr_t)addr; +// invalid_params_if(ADDRESS_ALIAS, rc < 0x40000000); // catch likely non HW pointer types +// return rc; +//} + +// Helper method used by xip_alias macros to optionally check input validity +static __force_inline uint32_t xip_alias_check_addr(const void *addr) { + uint32_t rc = (uintptr_t)addr; + valid_params_if(ADDRESS_ALIAS, rc >= XIP_MAIN_BASE && rc < XIP_NOALLOC_BASE); + return rc; +} + +// Untyped conversion alias pointer generation macros +#define hw_set_alias_untyped(addr) ((void *)(REG_ALIAS_SET_BITS | hw_alias_check_addr(addr))) +#define hw_clear_alias_untyped(addr) ((void *)(REG_ALIAS_CLR_BITS | hw_alias_check_addr(addr))) +#define hw_xor_alias_untyped(addr) ((void *)(REG_ALIAS_XOR_BITS | hw_alias_check_addr(addr))) +#define xip_noalloc_alias_untyped(addr) ((void *)(XIP_NOALLOC_BASE | xip_alias_check_addr(addr))) +#define xip_nocache_alias_untyped(addr) ((void *)(XIP_NOCACHE_BASE | xip_alias_check_addr(addr))) +#define xip_nocache_noalloc_alias_untyped(addr) ((void *)(XIP_NOCACHE_NOALLOC_BASE | xip_alias_check_addr(addr))) + +// Typed conversion alias pointer generation macros +#define hw_set_alias(p) ((typeof(p))hw_set_alias_untyped(p)) +#define hw_clear_alias(p) ((typeof(p))hw_clear_alias_untyped(p)) +#define hw_xor_alias(p) ((typeof(p))hw_xor_alias_untyped(p)) +#define xip_noalloc_alias(p) ((typeof(p))xip_noalloc_alias_untyped(p)) +#define xip_nocache_alias(p) ((typeof(p))xip_nocache_alias_untyped(p)) +#define xip_nocache_noalloc_alias(p) ((typeof(p))xip_nocache_noalloc_alias_untyped(p)) + +/*! \brief Atomically set the specified bits to 1 in a HW register + * \ingroup hardware_base + * + * \param addr Address of writable register + * \param mask Bit-mask specifying bits to set + */ +__force_inline static void hw_set_bits(io_rw_32 *addr, uint32_t mask) { + *(io_rw_32 *) hw_set_alias_untyped((volatile void *) addr) = mask; +} + +/*! \brief Atomically clear the specified bits to 0 in a HW register + * \ingroup hardware_base + * + * \param addr Address of writable register + * \param mask Bit-mask specifying bits to clear + */ +__force_inline static void hw_clear_bits(io_rw_32 *addr, uint32_t mask) { + *(io_rw_32 *) hw_clear_alias_untyped((volatile void *) addr) = mask; +} + +/*! \brief Atomically flip the specified bits in a HW register + * \ingroup hardware_base + * + * \param addr Address of writable register + * \param mask Bit-mask specifying bits to invert + */ +__force_inline static void hw_xor_bits(io_rw_32 *addr, uint32_t mask) { + *(io_rw_32 *) hw_xor_alias_untyped((volatile void *) addr) = mask; +} + +/*! \brief Set new values for a sub-set of the bits in a HW register + * \ingroup hardware_base + * + * Sets destination bits to values specified in \p values, if and only if corresponding bit in \p write_mask is set + * + * Note: this method allows safe concurrent modification of *different* bits of + * a register, but multiple concurrent access to the same bits is still unsafe. + * + * \param addr Address of writable register + * \param values Bits values + * \param write_mask Mask of bits to change + */ +__force_inline static void hw_write_masked(io_rw_32 *addr, uint32_t values, uint32_t write_mask) { + hw_xor_bits(addr, (*addr ^ values) & write_mask); +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/hardware/claim.c b/arkanoid/pico/hardware/claim.c new file mode 100644 index 0000000..6ce1a49 --- /dev/null +++ b/arkanoid/pico/hardware/claim.c @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "claim.h" + +uint32_t hw_claim_lock() { + return spin_lock_blocking(spin_lock_instance(PICO_SPINLOCK_ID_HARDWARE_CLAIM)); +} + +void hw_claim_unlock(uint32_t save) { + spin_unlock(spin_lock_instance(PICO_SPINLOCK_ID_HARDWARE_CLAIM), save); +} + +inline bool hw_is_claimed(const uint8_t *bits, uint bit_index) { + return (bits[bit_index >> 3u] & (1u << (bit_index & 7u))); +} + +void hw_claim_or_assert(uint8_t *bits, uint bit_index, const char *message) { + uint32_t save = hw_claim_lock(); + if (hw_is_claimed(bits, bit_index)) { + panic(message, bit_index); + } else { + bits[bit_index >> 3u] |= (uint8_t)(1u << (bit_index & 7u)); + } + hw_claim_unlock(save); +} + +int hw_claim_unused_from_range(uint8_t *bits, bool required, uint bit_lsb, uint bit_msb, const char *message) { + // don't bother check lsb / msb order as if wrong, then it'll fail anyway + uint32_t save = hw_claim_lock(); + int found_bit = -1; + for(uint bit=bit_lsb; bit <= bit_msb; bit++) { + if (!hw_is_claimed(bits, bit)) { + bits[bit >> 3u] |= (uint8_t)(1u << (bit & 7u)); + found_bit = (int)bit; + break; + } + } + hw_claim_unlock(save); + if (found_bit < 0 && required) { + panic(message); + } + return found_bit; +} + +void hw_claim_clear(uint8_t *bits, uint bit_index) { + uint32_t save = hw_claim_lock(); + assert(hw_is_claimed(bits, bit_index)); + bits[bit_index >> 3u] &= (uint8_t) ~(1u << (bit_index & 7u)); + hw_claim_unlock(save); +} + + diff --git a/arkanoid/pico/hardware/claim.h b/arkanoid/pico/hardware/claim.h new file mode 100644 index 0000000..e6f6354 --- /dev/null +++ b/arkanoid/pico/hardware/claim.h @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_CLAIM_H +#define _HARDWARE_CLAIM_H + +#include "../pico.h" +#include "sync.h" + +/** \file claim.h + * \defgroup hardware_claim hardware_claim + * + * Lightweight hardware resource management + * + * `hardware_claim` provides a simple API for management of hardware resources at runtime. + * + * This API is usually called by other hardware specific _claiming_ APIs and provides simple + * multi-core safe methods to manipulate compact bit-sets representing hardware resources. + * + * This API allows any other library to cooperatively participate in a scheme by which + * both compile time and runtime allocation of resources can co-exist, and conflicts + * can be avoided or detected (depending on the use case) without the libraries having + * any other knowledge of each other. + * + * Facilities are providing for: + * + * 1. Claiming resources (and asserting if they are already claimed) + * 2. Freeing (unclaiming) resources + * 3. Finding unused resources + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/*! \brief Atomically claim a resource, panicking if it is already in use + * \ingroup hardware_claim + * + * The resource ownership is indicated by the bit_index bit in an array of bits. + * + * \param bits pointer to an array of bits (8 bits per byte) + * \param bit_index resource to claim (bit index into array of bits) + * \param message string to display if the bit cannot be claimed; note this may have a single printf format "%d" for the bit + */ +void hw_claim_or_assert(uint8_t *bits, uint bit_index, const char *message); + +/*! \brief Atomically claim one resource out of a range of resources, optionally asserting if none are free + * \ingroup hardware_claim + * + * \param bits pointer to an array of bits (8 bits per byte) + * \param required true if this method should panic if the resource is not free + * \param bit_lsb the lower bound (inclusive) of the resource range to claim from + * \param bit_msb the upper bound (inclusive) of the resource range to claim from + * \param message string to display if the bit cannot be claimed + * \return the bit index representing the claimed or -1 if none are available in the range, and required = false + */ +int hw_claim_unused_from_range(uint8_t *bits, bool required, uint bit_lsb, uint bit_msb, const char *message); + +/*! \brief Determine if a resource is claimed at the time of the call + * \ingroup hardware_claim + * + * The resource ownership is indicated by the bit_index bit in an array of bits. + * + * \param bits pointer to an array of bits (8 bits per byte) + * \param bit_index resource to check (bit index into array of bits) + * \return true if the resource is claimed + */ +bool hw_is_claimed(const uint8_t *bits, uint bit_index); + +/*! \brief Atomically unclaim a resource + * \ingroup hardware_claim + * + * The resource ownership is indicated by the bit_index bit in an array of bits. + * + * \param bits pointer to an array of bits (8 bits per byte) + * \param bit_index resource to unclaim (bit index into array of bits) + */ +void hw_claim_clear(uint8_t *bits, uint bit_index); + +/*! \brief Acquire the runtime mutual exclusion lock provided by the `hardware_claim` library + * \ingroup hardware_claim + * + * This method is called automatically by the other `hw_claim_` methods, however it is provided as a convenience + * to code that might want to protect other hardware initialization code from concurrent use. + * + * \note hw_claim_lock() uses a spin lock internally, so disables interrupts on the calling core, and will deadlock + * if the calling core already owns the lock. + * + * \return a token to pass to hw_claim_unlock() + */ +uint32_t hw_claim_lock(void); + +/*! \brief Release the runtime mutual exclusion lock provided by the `hardware_claim` library + * \ingroup hardware_claim + * + * \note This method MUST be called from the same core that call hw_claim_lock() + * + * \param token the token returned by the corresponding call to hw_claim_lock() + */ +void hw_claim_unlock(uint32_t token); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/hardware/clocks.c b/arkanoid/pico/hardware/clocks.c new file mode 100644 index 0000000..8ecd438 --- /dev/null +++ b/arkanoid/pico/hardware/clocks.c @@ -0,0 +1,390 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "../pico.h" +#include "regs/clocks.h" +#include "platform_defs.h" +#include "clocks.h" +#include "watchdog.h" +#include "pll.h" +#include "xosc.h" +#include "irq.h" +#include "gpio.h" + +check_hw_layout(clocks_hw_t, clk[clk_adc].selected, CLOCKS_CLK_ADC_SELECTED_OFFSET); +check_hw_layout(clocks_hw_t, fc0.result, CLOCKS_FC0_RESULT_OFFSET); +check_hw_layout(clocks_hw_t, ints, CLOCKS_INTS_OFFSET); + +static uint32_t configured_freq[CLK_COUNT]; + +static resus_callback_t _resus_callback; + +// Clock muxing consists of two components: +// - A glitchless mux, which can be switched freely, but whose inputs must be +// free-running +// - An auxiliary (glitchy) mux, whose output glitches when switched, but has +// no constraints on its inputs +// Not all clocks have both types of mux. +static inline bool has_glitchless_mux(enum clock_index clk_index) { + return clk_index == clk_sys || clk_index == clk_ref; +} + +void clock_stop(enum clock_index clk_index) { + clock_hw_t *clock = &clocks_hw->clk[clk_index]; + hw_clear_bits(&clock->ctrl, CLOCKS_CLK_USB_CTRL_ENABLE_BITS); + configured_freq[clk_index] = 0; +} + +/// \tag::clock_configure[] +bool clock_configure(enum clock_index clk_index, uint32_t src, uint32_t auxsrc, uint32_t src_freq, uint32_t freq) { + uint32_t div; + + assert(src_freq >= freq); + + if (freq > src_freq) + return false; + + // Div register is 24.8 int.frac divider so multiply by 2^8 (left shift by 8) + div = (uint32_t) (((uint64_t) src_freq << 8) / freq); + + clock_hw_t *clock = &clocks_hw->clk[clk_index]; + + // If increasing divisor, set divisor before source. Otherwise set source + // before divisor. This avoids a momentary overspeed when e.g. switching + // to a faster source and increasing divisor to compensate. + if (div > clock->div) + clock->div = div; + + // If switching a glitchless slice (ref or sys) to an aux source, switch + // away from aux *first* to avoid passing glitches when changing aux mux. + // Assume (!!!) glitchless source 0 is no faster than the aux source. + if (has_glitchless_mux(clk_index) && src == CLOCKS_CLK_SYS_CTRL_SRC_VALUE_CLKSRC_CLK_SYS_AUX) { + hw_clear_bits(&clock->ctrl, CLOCKS_CLK_REF_CTRL_SRC_BITS); + while (!(clock->selected & 1u)) + tight_loop_contents(); + } + // If no glitchless mux, cleanly stop the clock to avoid glitches + // propagating when changing aux mux. Note it would be a really bad idea + // to do this on one of the glitchless clocks (clk_sys, clk_ref). + else { + // Disable clock. On clk_ref and clk_sys this does nothing, + // all other clocks have the ENABLE bit in the same position. + hw_clear_bits(&clock->ctrl, CLOCKS_CLK_GPOUT0_CTRL_ENABLE_BITS); + if (configured_freq[clk_index] > 0) { + // Delay for 3 cycles of the target clock, for ENABLE propagation. + // Note XOSC_COUNT is not helpful here because XOSC is not + // necessarily running, nor is timer... so, 3 cycles per loop: + uint delay_cyc = configured_freq[clk_sys] / configured_freq[clk_index] + 1; + asm volatile ( + ".syntax unified \n\t" + "1: \n\t" + "subs %0, #1 \n\t" + "bne 1b" + : "+r" (delay_cyc) + ); + } + } + + // Set aux mux first, and then glitchless mux if this clock has one + hw_write_masked(&clock->ctrl, + (auxsrc << CLOCKS_CLK_SYS_CTRL_AUXSRC_LSB), + CLOCKS_CLK_SYS_CTRL_AUXSRC_BITS + ); + + if (has_glitchless_mux(clk_index)) { + hw_write_masked(&clock->ctrl, + src << CLOCKS_CLK_REF_CTRL_SRC_LSB, + CLOCKS_CLK_REF_CTRL_SRC_BITS + ); + while (!(clock->selected & (1u << src))) + tight_loop_contents(); + } + + // Enable clock. On clk_ref and clk_sys this does nothing, + // all other clocks have the ENABLE bit in the same position. + hw_set_bits(&clock->ctrl, CLOCKS_CLK_GPOUT0_CTRL_ENABLE_BITS); + + // Now that the source is configured, we can trust that the user-supplied + // divisor is a safe value. + clock->div = div; + + // Store the configured frequency + configured_freq[clk_index] = (uint32_t)(((uint64_t) src_freq << 8) / div); + + return true; +} +/// \end::clock_configure[] + +void clocks_init(void) { + // Start tick in watchdog + watchdog_start_tick(XOSC_MHZ); + + // Everything is 48MHz on FPGA apart from RTC. Otherwise set to 0 and will be set in clock configure + if (running_on_fpga()) { + for (uint i = 0; i < CLK_COUNT; i++) { + configured_freq[i] = 48 * MHZ; + } + configured_freq[clk_rtc] = 46875; + return; + } + + // Disable resus that may be enabled from previous software + clocks_hw->resus.ctrl = 0; + + // Enable the xosc + xosc_init(); + + // Before we touch PLLs, switch sys and ref cleanly away from their aux sources. + hw_clear_bits(&clocks_hw->clk[clk_sys].ctrl, CLOCKS_CLK_SYS_CTRL_SRC_BITS); + while (clocks_hw->clk[clk_sys].selected != 0x1) + tight_loop_contents(); + hw_clear_bits(&clocks_hw->clk[clk_ref].ctrl, CLOCKS_CLK_REF_CTRL_SRC_BITS); + while (clocks_hw->clk[clk_ref].selected != 0x1) + tight_loop_contents(); + + /// \tag::pll_settings[] + // Configure PLLs + // REF FBDIV VCO POSTDIV + // PLL SYS: 12 / 1 = 12MHz * 125 = 1500MHZ / 6 / 2 = 125MHz + // PLL USB: 12 / 1 = 12MHz * 40 = 480 MHz / 5 / 2 = 48MHz + /// \end::pll_settings[] + + /// \tag::pll_init[] + pll_init(pll_sys, 1, 1500 * MHZ, 6, 2); + pll_init(pll_usb, 1, 480 * MHZ, 5, 2); + /// \end::pll_init[] + + // Configure clocks + // CLK_REF = XOSC (12MHz) / 1 = 12MHz + clock_configure(clk_ref, + CLOCKS_CLK_REF_CTRL_SRC_VALUE_XOSC_CLKSRC, + 0, // No aux mux + 12 * MHZ, + 12 * MHZ); + + /// \tag::configure_clk_sys[] + // CLK SYS = PLL SYS (125MHz) / 1 = 125MHz + clock_configure(clk_sys, + CLOCKS_CLK_SYS_CTRL_SRC_VALUE_CLKSRC_CLK_SYS_AUX, + CLOCKS_CLK_SYS_CTRL_AUXSRC_VALUE_CLKSRC_PLL_SYS, + 125 * MHZ, + 125 * MHZ); + /// \end::configure_clk_sys[] + + // CLK USB = PLL USB (48MHz) / 1 = 48MHz + clock_configure(clk_usb, + 0, // No GLMUX + CLOCKS_CLK_USB_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB, + 48 * MHZ, + 48 * MHZ); + + // CLK ADC = PLL USB (48MHZ) / 1 = 48MHz + clock_configure(clk_adc, + 0, // No GLMUX + CLOCKS_CLK_ADC_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB, + 48 * MHZ, + 48 * MHZ); + + // CLK RTC = PLL USB (48MHz) / 1024 = 46875Hz + clock_configure(clk_rtc, + 0, // No GLMUX + CLOCKS_CLK_RTC_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB, + 48 * MHZ, + 46875); + + // CLK PERI = clk_sys. Used as reference clock for Peripherals. No dividers so just select and enable + // Normally choose clk_sys or clk_usb + clock_configure(clk_peri, + 0, + CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_CLK_SYS, + 125 * MHZ, + 125 * MHZ); +} + +/// \tag::clock_get_hz[] +uint32_t clock_get_hz(enum clock_index clk_index) { + return configured_freq[clk_index]; +} +/// \end::clock_get_hz[] + +void clock_set_reported_hz(enum clock_index clk_index, uint hz) { + configured_freq[clk_index] = hz; +} + +/// \tag::frequency_count_khz[] +uint32_t frequency_count_khz(uint src) { + fc_hw_t *fc = &clocks_hw->fc0; + + // If frequency counter is running need to wait for it. It runs even if the source is NULL + while(fc->status & CLOCKS_FC0_STATUS_RUNNING_BITS) { + tight_loop_contents(); + } + + // Set reference freq + fc->ref_khz = clock_get_hz(clk_ref) / 1000; + + // FIXME: Don't pick random interval. Use best interval + fc->interval = 10; + + // No min or max + fc->min_khz = 0; + fc->max_khz = 0xffffffff; + + // Set SRC which automatically starts the measurement + fc->src = src; + + while(!(fc->status & CLOCKS_FC0_STATUS_DONE_BITS)) { + tight_loop_contents(); + } + + // Return the result + return fc->result >> CLOCKS_FC0_RESULT_KHZ_LSB; +} +/// \end::frequency_count_khz[] + +static void clocks_handle_resus(void) { + // Set clk_sys back to the ref clock rather than it being forced to clk_ref + // by resus. Call the user's resus callback if they have set one + + // CLK SYS = CLK_REF. Must be running for this code to be running + uint clk_ref_freq = clock_get_hz(clk_ref); + clock_configure(clk_sys, + CLOCKS_CLK_SYS_CTRL_SRC_VALUE_CLK_REF, + 0, + clk_ref_freq, + clk_ref_freq); + + // Assert we have been resussed + assert(clocks_hw->resus.status & CLOCKS_CLK_SYS_RESUS_STATUS_RESUSSED_BITS); + + // Now we have fixed clk_sys we can safely remove the resus + hw_set_bits(&clocks_hw->resus.ctrl, CLOCKS_CLK_SYS_RESUS_CTRL_CLEAR_BITS); + hw_clear_bits(&clocks_hw->resus.ctrl, CLOCKS_CLK_SYS_RESUS_CTRL_CLEAR_BITS); + + // Now we should no longer be resussed + assert(!(clocks_hw->resus.status & CLOCKS_CLK_SYS_RESUS_STATUS_RESUSSED_BITS)); + + // Call the user's callback to notify them of the resus event + if (_resus_callback) { + _resus_callback(); + } +} + +static void clocks_irq_handler(void) { + // Clocks interrupt handler. Only resus but handle irq + // defensively just in case. + uint32_t ints = clocks_hw->ints; + + if (ints & CLOCKS_INTE_CLK_SYS_RESUS_BITS) { + ints &= ~CLOCKS_INTE_CLK_SYS_RESUS_BITS; + clocks_handle_resus(); + } + +#ifndef NDEBUG + if (ints) { + panic("Unexpected clocks irq\n"); + } +#endif +} + +void clocks_enable_resus(resus_callback_t resus_callback) { + // Restart clk_sys if it is stopped by forcing it + // to the default source of clk_ref. If clk_ref stops running this will + // not work. + + // Store user's resus callback + _resus_callback = resus_callback; + + irq_set_exclusive_handler(CLOCKS_IRQ, clocks_irq_handler); + + // Enable the resus interrupt in clocks + clocks_hw->inte = CLOCKS_INTE_CLK_SYS_RESUS_BITS; + + // Enable the clocks irq + irq_set_enabled(CLOCKS_IRQ, true); + + // 2 * clk_ref freq / clk_sys_min_freq; + // assume clk_ref is 3MHz and we want clk_sys to be no lower than 1MHz + uint timeout = 2 * 3 * 1; + + // Enable resus with the maximum timeout + clocks_hw->resus.ctrl = CLOCKS_CLK_SYS_RESUS_CTRL_ENABLE_BITS | timeout; +} + +void clock_gpio_init(uint gpio, uint src, uint div) { + // Bit messy but it's as much code to loop through a lookup + // table. The sources for each gpout generators are the same + // so just call with the sources from GP0 + uint gpclk = 0; + if (gpio == 21) gpclk = clk_gpout0; + else if (gpio == 23) gpclk = clk_gpout1; + else if (gpio == 24) gpclk = clk_gpout2; + else if (gpio == 25) gpclk = clk_gpout3; + else { + invalid_params_if(CLOCKS, true); + } + + // Set up the gpclk generator + clocks_hw->clk[gpclk].ctrl = (src << CLOCKS_CLK_GPOUT0_CTRL_AUXSRC_LSB) | + CLOCKS_CLK_GPOUT0_CTRL_ENABLE_BITS; + clocks_hw->clk[gpclk].div = div << CLOCKS_CLK_GPOUT0_DIV_INT_LSB; + + // Set gpio pin to gpclock function + gpio_set_function(gpio, GPIO_FUNC_GPCK); +} + +static const uint8_t gpin0_src[CLK_COUNT] = { + CLOCKS_CLK_GPOUT0_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0, // CLK_GPOUT0 + CLOCKS_CLK_GPOUT1_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0, // CLK_GPOUT1 + CLOCKS_CLK_GPOUT2_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0, // CLK_GPOUT2 + CLOCKS_CLK_GPOUT3_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0, // CLK_GPOUT3 + CLOCKS_CLK_REF_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0, // CLK_REF + CLOCKS_CLK_SYS_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0, // CLK_SYS + CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0, // CLK_PERI + CLOCKS_CLK_USB_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0, // CLK_USB + CLOCKS_CLK_ADC_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0, // CLK_ADC + CLOCKS_CLK_RTC_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0, // CLK_RTC +}; + +// Assert GPIN1 is GPIN0 + 1 +static_assert(CLOCKS_CLK_GPOUT0_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 == (CLOCKS_CLK_GPOUT0_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 + 1), "hw mismatch"); +static_assert(CLOCKS_CLK_GPOUT1_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 == (CLOCKS_CLK_GPOUT1_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 + 1), "hw mismatch"); +static_assert(CLOCKS_CLK_GPOUT2_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 == (CLOCKS_CLK_GPOUT2_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 + 1), "hw mismatch"); +static_assert(CLOCKS_CLK_GPOUT3_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 == (CLOCKS_CLK_GPOUT3_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 + 1), "hw mismatch"); +static_assert(CLOCKS_CLK_REF_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 == (CLOCKS_CLK_REF_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 + 1), "hw mismatch"); +static_assert(CLOCKS_CLK_SYS_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 == (CLOCKS_CLK_SYS_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 + 1), "hw mismatch"); +static_assert(CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 == (CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 + 1), "hw mismatch"); +static_assert(CLOCKS_CLK_USB_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 == (CLOCKS_CLK_USB_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 + 1), "hw mismatch"); +static_assert(CLOCKS_CLK_ADC_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 == (CLOCKS_CLK_ADC_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 + 1), "hw mismatch"); +static_assert(CLOCKS_CLK_RTC_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 == (CLOCKS_CLK_RTC_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 + 1), "hw mismatch"); + +bool clock_configure_gpin(enum clock_index clk_index, uint gpio, uint32_t src_freq, uint32_t freq) { + // Configure a clock to run from a GPIO input + uint gpin = 0; + if (gpio == 20) gpin = 0; + else if (gpio == 22) gpin = 1; + else { + invalid_params_if(CLOCKS, true); + } + + // Work out sources. GPIN is always an auxsrc + uint src = 0; + + // GPIN1 == GPIN0 + 1 + uint auxsrc = gpin0_src[clk_index] + gpin; + + if (has_glitchless_mux(clk_index)) { + // AUX src is always 1 + src = 1; + } + + // Set the GPIO function + gpio_set_function(gpio, GPIO_FUNC_GPCK); + + // Now we have the src, auxsrc, and configured the gpio input + // call clock configure to run the clock from a gpio + return clock_configure(clk_index, src, auxsrc, src_freq, freq); +} diff --git a/arkanoid/pico/hardware/clocks.h b/arkanoid/pico/hardware/clocks.h new file mode 100644 index 0000000..bed93ae --- /dev/null +++ b/arkanoid/pico/hardware/clocks.h @@ -0,0 +1,194 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_CLOCKS_H_ +#define _HARDWARE_CLOCKS_H_ + +#include "../pico.h" +#include "structs/clocks.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file clocks.h + * \defgroup hardware_clocks hardware_clocks + * + * Clock Management API + * + * This API provides a high level interface to the clock functions. + * + * The clocks block provides independent clocks to on-chip and external components. It takes inputs from a variety of clock + * sources allowing the user to trade off performance against cost, board area and power consumption. From these sources + * it uses multiple clock generators to provide the required clocks. This architecture allows the user flexibility to start and + * stop clocks independently and to vary some clock frequencies whilst maintaining others at their optimum frequencies + * + * Please refer to the datasheet for more details on the RP2040 clocks. + * + * The clock source depends on which clock you are attempting to configure. The first table below shows main clock sources. If + * you are not setting the Reference clock or the System clock, or you are specifying that one of those two will be using an auxiliary + * clock source, then you will need to use one of the entries from the subsequent tables. + * + * **Main Clock Sources** + * + * Source | Reference Clock | System Clock + * -------|-----------------|--------- + * ROSC | CLOCKS_CLK_REF_CTRL_SRC_VALUE_ROSC_CLKSRC_PH | | + * Auxiliary | CLOCKS_CLK_REF_CTRL_SRC_VALUE_CLKSRC_CLK_REF_AUX | CLOCKS_CLK_SYS_CTRL_SRC_VALUE_CLKSRC_CLK_SYS_AUX + * XOSC | CLOCKS_CLK_REF_CTRL_SRC_VALUE_XOSC_CLKSRC | | + * Reference | | CLOCKS_CLK_SYS_CTRL_SRC_VALUE_CLK_REF + * + * **Auxiliary Clock Sources** + * + * The auxiliary clock sources available for use in the configure function depend on which clock is being configured. The following table + * describes the available values that can be used. Note that for clk_gpout[x], x can be 0-3. + * + * + * Aux Source | clk_gpout[x] | clk_ref | clk_sys + * -----------|------------|---------|-------- + * System PLL | CLOCKS_CLK_GPOUTx_CTRL_AUXSRC_VALUE_CLKSRC_PLL_SYS | | CLOCKS_CLK_SYS_CTRL_AUXSRC_VALUE_CLKSRC_PLL_SYS + * GPIO in 0 | CLOCKS_CLK_GPOUTx_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 | CLOCKS_CLK_REF_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 | CLOCKS_CLK_SYS_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 + * GPIO in 1 | CLOCKS_CLK_GPOUTx_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 | CLOCKS_CLK_REF_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 | CLOCKS_CLK_SYS_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 + * USB PLL | CLOCKS_CLK_GPOUTx_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB | CLOCKS_CLK_REF_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB| CLOCKS_CLK_SYS_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB + * ROSC | CLOCKS_CLK_GPOUTx_CTRL_AUXSRC_VALUE_ROSC_CLKSRC | | CLOCKS_CLK_SYS_CTRL_AUXSRC_VALUE_ROSC_CLKSRC + * XOSC | CLOCKS_CLK_GPOUTx_CTRL_AUXSRC_VALUE_XOSC_CLKSRC | | CLOCKS_CLK_SYS_CTRL_AUXSRC_VALUE_ROSC_CLKSRC + * System clock | CLOCKS_CLK_GPOUTx_CTRL_AUXSRC_VALUE_CLK_SYS | | | + * USB Clock | CLOCKS_CLK_GPOUTx_CTRL_AUXSRC_VALUE_CLK_USB | | | + * ADC clock | CLOCKS_CLK_GPOUTx_CTRL_AUXSRC_VALUE_CLK_ADC | | | + * RTC Clock | CLOCKS_CLK_GPOUTx_CTRL_AUXSRC_VALUE_CLK_RTC | | | + * Ref clock | CLOCKS_CLK_GPOUTx_CTRL_AUXSRC_VALUE_CLK_REF | | | + * + * Aux Source | clk_peri | clk_usb | clk_adc + * -----------|-----------|---------|-------- + * System PLL | CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_CLKSRC_PLL_SYS | CLOCKS_CLK_USB_CTRL_AUXSRC_VALUE_CLKSRC_PLL_SYS | CLOCKS_CLK_ADC_CTRL_AUXSRC_VALUE_CLKSRC_PLL_SYS + * GPIO in 0 | CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 | CLOCKS_CLK_USB_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 | CLOCKS_CLK_ADC_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 + * GPIO in 1 | CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 | CLOCKS_CLK_USB_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 | CLOCKS_CLK_ADC_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 + * USB PLL | CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB | CLOCKS_CLK_USB_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB | CLOCKS_CLK_ADC_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB + * ROSC | CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_ROSC_CLKSRC_PH | CLOCKS_CLK_USB_CTRL_AUXSRC_VALUE_ROSC_CLKSRC_PH | CLOCKS_CLK_ADC_CTRL_AUXSRC_VALUE_ROSC_CLKSRC_PH + * XOSC | CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_XOSC_CLKSRC | CLOCKS_CLK_USB_CTRL_AUXSRC_VALUE_XOSC_CLKSRC | CLOCKS_CLK_ADC_CTRL_AUXSRC_VALUE_XOSC_CLKSRC + * System clock | CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_CLK_SYS | | | + * + * Aux Source | clk_rtc + * -----------|---------- + * System PLL | CLOCKS_CLK_RTC_CTRL_AUXSRC_VALUE_CLKSRC_PLL_SYS + * GPIO in 0 | CLOCKS_CLK_RTC_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 + * GPIO in 1 | CLOCKS_CLK_RTC_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 + * USB PLL | CLOCKS_CLK_RTC_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB + * ROSC | CLOCKS_CLK_RTC_CTRL_AUXSRC_VALUE_ROSC_CLKSRC_PH + * XOSC | CLOCKS_CLK_RTC_CTRL_AUXSRC_VALUE_XOSC_CLKSRC + + * + * \section clock_example Example + * \addtogroup hardware_clocks + * \include hello_48MHz.c + */ + +#define KHZ 1000 +#define MHZ 1000000 + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_CLOCKS, Enable/disable assertions in the clocks module, type=bool, default=0, group=hardware_clocks +#ifndef PARAM_ASSERTIONS_ENABLED_CLOCKS +#define PARAM_ASSERTIONS_ENABLED_CLOCKS 0 +#endif + +/*! \brief Initialise the clock hardware + * \ingroup hardware_clocks + * + * Must be called before any other clock function. + */ +void clocks_init(void); + +/*! \brief Configure the specified clock + * \ingroup hardware_clocks + * + * See the tables in the description for details on the possible values for clock sources. + * + * \param clk_index The clock to configure + * \param src The main clock source, can be 0. + * \param auxsrc The auxiliary clock source, which depends on which clock is being set. Can be 0 + * \param src_freq Frequency of the input clock source + * \param freq Requested frequency + */ +bool clock_configure(enum clock_index clk_index, uint32_t src, uint32_t auxsrc, uint32_t src_freq, uint32_t freq); + +/*! \brief Stop the specified clock + * \ingroup hardware_clocks + * + * \param clk_index The clock to stop + */ +void clock_stop(enum clock_index clk_index); + +/*! \brief Get the current frequency of the specified clock + * \ingroup hardware_clocks + * + * \param clk_index Clock + * \return Clock frequency in Hz + */ +uint32_t clock_get_hz(enum clock_index clk_index); + +/*! \brief Measure a clocks frequency using the Frequency counter. + * \ingroup hardware_clocks + * + * Uses the inbuilt frequency counter to measure the specified clocks frequency. + * Currently, this function is accurate to +-1KHz. See the datasheet for more details. + */ +uint32_t frequency_count_khz(uint src); + +/*! \brief Set the "current frequency" of the clock as reported by clock_get_hz without actually changing the clock + * \ingroup hardware_clocks + * + * \see clock_get_hz() + */ +void clock_set_reported_hz(enum clock_index clk_index, uint hz); + +/// \tag::frequency_count_mhz[] +static inline float frequency_count_mhz(uint src) { + return ((float) (frequency_count_khz(src))) / KHZ; +} +/// \end::frequency_count_mhz[] + +/*! \brief Resus callback function type. + * \ingroup hardware_clocks + * + * User provided callback for a resus event (when clk_sys is stopped by the programmer and is restarted for them). + */ +typedef void (*resus_callback_t)(void); + +/*! \brief Enable the resus function. Restarts clk_sys if it is accidentally stopped. + * \ingroup hardware_clocks + * + * The resuscitate function will restart the system clock if it falls below a certain speed (or stops). This + * could happen if the clock source the system clock is running from stops. For example if a PLL is stopped. + * + * \param resus_callback a function pointer provided by the user to call if a resus event happens. + */ +void clocks_enable_resus(resus_callback_t resus_callback); + +/*! \brief Output an optionally divided clock to the specified gpio pin. + * \ingroup hardware_clocks + * + * \param gpio The GPIO pin to output the clock to. Valid GPIOs are: 21, 23, 24, 25. These GPIOs are connected to the GPOUT0-3 clock generators. + * \param src The source clock. See the register field CLOCKS_CLK_GPOUT0_CTRL_AUXSRC for a full list. The list is the same for each GPOUT clock generator. + * \param div The amount to divide the source clock by. This is useful to not overwhelm the GPIO pin with a fast clock. + */ +void clock_gpio_init(uint gpio, uint src, uint div); + +/*! \brief Configure a clock to come from a gpio input + * \ingroup hardware_clocks + * + * \param clk_index The clock to configure + * \param gpio The GPIO pin to run the clock from. Valid GPIOs are: 20 and 22. + * \param src_freq Frequency of the input clock source + * \param freq Requested frequency + */ +bool clock_configure_gpin(enum clock_index clk_index, uint gpio, uint32_t src_freq, uint32_t freq); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/hardware/divider.h b/arkanoid/pico/hardware/divider.h new file mode 100644 index 0000000..07b9ceb --- /dev/null +++ b/arkanoid/pico/hardware/divider.h @@ -0,0 +1,403 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_DIVIDER_H +#define _HARDWARE_DIVIDER_H + +#include "../pico.h" +#include "hardware/structs/sio.h" + +/** \file hardware/divider.h + * \defgroup hardware_divider hardware_divider + * + * Low-level hardware-divider access + * + * The SIO contains an 8-cycle signed/unsigned divide/modulo circuit, per core. Calculation is started by writing a dividend + * and divisor to the two argument registers, DIVIDEND and DIVISOR. The divider calculates the quotient / and remainder % of + * this division over the next 8 cycles, and on the 9th cycle the results can be read from the two result registers + * DIV_QUOTIENT and DIV_REMAINDER. A 'ready' bit in register DIV_CSR can be polled to wait for the calculation to + * complete, or software can insert a fixed 8-cycle delay + * + * This header provides low level macros and inline functions for accessing the hardware dividers directly, + * and perhaps most usefully performing asynchronous divides. These functions however do not follow the regular + * SDK conventions for saving/restoring the divider state, so are not generally safe to call from interrupt handlers + * + * The pico_divider library provides a more user friendly set of APIs over the divider (and support for + * 64 bit divides), and of course by default regular C language integer divisions are redirected through that library, meaning + * you can just use C level `/` and `%` operators and gain the benefits of the fast hardware divider. + * + * @see pico_divider + * + * \subsection divider_example Example + * \addtogroup hardware_divider + * \include hello_divider.c + */ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef uint64_t divmod_result_t; + +/*! \brief Start a signed asynchronous divide + * \ingroup hardware_divider + * + * Start a divide of the specified signed parameters. You should wait for 8 cycles (__div_pause()) or wait for the ready bit to be set + * (hw_divider_wait_ready()) prior to reading the results. + * + * \param a The dividend + * \param b The divisor + */ +static inline void hw_divider_divmod_s32_start(int32_t a, int32_t b) { + check_hw_layout( sio_hw_t, div_sdividend, SIO_DIV_SDIVIDEND_OFFSET); + sio_hw->div_sdividend = (uint32_t)a; + sio_hw->div_sdivisor = (uint32_t)b; +} + +/*! \brief Start an unsigned asynchronous divide + * \ingroup hardware_divider + * + * Start a divide of the specified unsigned parameters. You should wait for 8 cycles (__div_pause()) or wait for the ready bit to be set + * (hw_divider_wait_ready()) prior to reading the results. + * + * \param a The dividend + * \param b The divisor + */ +static inline void hw_divider_divmod_u32_start(uint32_t a, uint32_t b) { + check_hw_layout( + sio_hw_t, div_udividend, SIO_DIV_UDIVIDEND_OFFSET); + sio_hw->div_udividend = a; + sio_hw->div_udivisor = b; +} + +/*! \brief Wait for a divide to complete + * \ingroup hardware_divider + * + * Wait for a divide to complete + */ +static inline void hw_divider_wait_ready(void) { + // this is #1 in lsr below + static_assert(SIO_DIV_CSR_READY_BITS == 1, ""); + + // we use one less register and instruction than gcc which uses a TST instruction + + uint32_t tmp; // allow compiler to pick scratch register + asm volatile ( + "hw_divider_result_loop_%=:" + "ldr %0, [%1, %2]\n\t" + "lsr %0, #1\n\t" + "bcc hw_divider_result_loop_%=\n\t" + : "=&l" (tmp) + : "l" (sio_hw), "I" (SIO_DIV_CSR_OFFSET) + : + ); +} + +/*! \brief Return result of HW divide, nowait + * \ingroup hardware_divider + * + * \note This is UNSAFE in that the calculation may not have been completed. + * + * \return Current result. Most significant 32 bits are the remainder, lower 32 bits are the quotient. + */ +static inline divmod_result_t hw_divider_result_nowait(void) { + // as ugly as this looks it is actually quite efficient + divmod_result_t rc = (((divmod_result_t) sio_hw->div_remainder) << 32u) | sio_hw->div_quotient; + return rc; +} + +/*! \brief Return result of last asynchronous HW divide + * \ingroup hardware_divider + * + * This function waits for the result to be ready by calling hw_divider_wait_ready(). + * + * \return Current result. Most significant 32 bits are the remainder, lower 32 bits are the quotient. + */ +static inline divmod_result_t hw_divider_result_wait(void) { + hw_divider_wait_ready(); + return hw_divider_result_nowait(); +} + +/*! \brief Return result of last asynchronous HW divide, unsigned quotient only + * \ingroup hardware_divider + * + * This function waits for the result to be ready by calling hw_divider_wait_ready(). + * + * \return Current unsigned quotient result. + */ +static inline uint32_t hw_divider_u32_quotient_wait(void) { + hw_divider_wait_ready(); + return sio_hw->div_quotient; +} + +/*! \brief Return result of last asynchronous HW divide, signed quotient only + * \ingroup hardware_divider + * + * This function waits for the result to be ready by calling hw_divider_wait_ready(). + * + * \return Current signed quotient result. + */ +static inline int32_t hw_divider_s32_quotient_wait(void) { + hw_divider_wait_ready(); + return (int32_t)sio_hw->div_quotient; +} + +/*! \brief Return result of last asynchronous HW divide, unsigned remainder only + * \ingroup hardware_divider + * + * This function waits for the result to be ready by calling hw_divider_wait_ready(). + * + * \return Current unsigned remainder result. + */ +static inline uint32_t hw_divider_u32_remainder_wait(void) { + hw_divider_wait_ready(); + uint32_t rc = sio_hw->div_remainder; + sio_hw->div_quotient; // must read quotient to cooperate with other SDK code + return rc; +} + +/*! \brief Return result of last asynchronous HW divide, signed remainder only + * \ingroup hardware_divider + * + * This function waits for the result to be ready by calling hw_divider_wait_ready(). + * + * \return Current remainder results. + */ +static inline int32_t hw_divider_s32_remainder_wait(void) { + hw_divider_wait_ready(); + int32_t rc = (int32_t)sio_hw->div_remainder; + sio_hw->div_quotient; // must read quotient to cooperate with other SDK code + return rc; +} + +/*! \brief Do a signed HW divide and wait for result + * \ingroup hardware_divider + * + * Divide \p a by \p b, wait for calculation to complete, return result as a fixed point 32p32 value. + * + * \param a The dividend + * \param b The divisor + * \return Results of divide as a 32p32 fixed point value. + */ +divmod_result_t hw_divider_divmod_s32(int32_t a, int32_t b); + +/*! \brief Do an unsigned HW divide and wait for result + * \ingroup hardware_divider + * + * Divide \p a by \p b, wait for calculation to complete, return result as a fixed point 32p32 value. + * + * \param a The dividend + * \param b The divisor + * \return Results of divide as a 32p32 fixed point value. + */ +divmod_result_t hw_divider_divmod_u32(uint32_t a, uint32_t b); + +/*! \brief Efficient extraction of unsigned quotient from 32p32 fixed point + * \ingroup hardware_divider + * + * \param r 32p32 fixed point value. + * \return Unsigned quotient + */ +inline static uint32_t to_quotient_u32(divmod_result_t r) { + return (uint32_t) r; +} + +/*! \brief Efficient extraction of signed quotient from 32p32 fixed point + * \ingroup hardware_divider + * + * \param r 32p32 fixed point value. + * \return Unsigned quotient + */ +inline static int32_t to_quotient_s32(divmod_result_t r) { + return (int32_t)(uint32_t)r; +} + +/*! \brief Efficient extraction of unsigned remainder from 32p32 fixed point + * \ingroup hardware_divider + * + * \param r 32p32 fixed point value. + * \return Unsigned remainder + * + * \note On Arm this is just a 32 bit register move or a nop + */ +inline static uint32_t to_remainder_u32(divmod_result_t r) { + return (uint32_t)(r >> 32u); +} + +/*! \brief Efficient extraction of signed remainder from 32p32 fixed point + * \ingroup hardware_divider + * + * \param r 32p32 fixed point value. + * \return Signed remainder + * + * \note On arm this is just a 32 bit register move or a nop + */ +inline static int32_t to_remainder_s32(divmod_result_t r) { + return (int32_t)(r >> 32u); +} + +/*! \brief Do an unsigned HW divide, wait for result, return quotient + * \ingroup hardware_divider + * + * Divide \p a by \p b, wait for calculation to complete, return quotient. + * + * \param a The dividend + * \param b The divisor + * \return Quotient results of the divide + */ +static inline uint32_t hw_divider_u32_quotient(uint32_t a, uint32_t b) { + return to_quotient_u32(hw_divider_divmod_u32(a, b)); +} + +/*! \brief Do an unsigned HW divide, wait for result, return remainder + * \ingroup hardware_divider + * + * Divide \p a by \p b, wait for calculation to complete, return remainder. + * + * \param a The dividend + * \param b The divisor + * \return Remainder results of the divide + */ +static inline uint32_t hw_divider_u32_remainder(uint32_t a, uint32_t b) { + return to_remainder_u32(hw_divider_divmod_u32(a, b)); +} + +/*! \brief Do a signed HW divide, wait for result, return quotient + * \ingroup hardware_divider + * + * Divide \p a by \p b, wait for calculation to complete, return quotient. + * + * \param a The dividend + * \param b The divisor + * \return Quotient results of the divide + */ +static inline int32_t hw_divider_quotient_s32(int32_t a, int32_t b) { + return to_quotient_s32(hw_divider_divmod_s32(a, b)); +} + +/*! \brief Do a signed HW divide, wait for result, return remainder + * \ingroup hardware_divider + * + * Divide \p a by \p b, wait for calculation to complete, return remainder. + * + * \param a The dividend + * \param b The divisor + * \return Remainder results of the divide + */ +static inline int32_t hw_divider_remainder_s32(int32_t a, int32_t b) { + return to_remainder_s32(hw_divider_divmod_s32(a, b)); +} + +/*! \brief Pause for exact amount of time needed for a asynchronous divide to complete + * \ingroup hardware_divider + */ +static inline void hw_divider_pause(void) { + asm volatile ( + "b _1_%=\n" + "_1_%=:\n" + "b _2_%=\n" + "_2_%=:\n" + "b _3_%=\n" + "_3_%=:\n" + "b _4_%=\n" + "_4_%=:\n" + :: : ); +} + +/*! \brief Do a hardware unsigned HW divide, wait for result, return quotient + * \ingroup hardware_divider + * + * Divide \p a by \p b, wait for calculation to complete, return quotient. + * + * \param a The dividend + * \param b The divisor + * \return Quotient result of the divide + */ +static inline uint32_t hw_divider_u32_quotient_inlined(uint32_t a, uint32_t b) { + hw_divider_divmod_u32_start(a, b); + hw_divider_pause(); + return sio_hw->div_quotient; +} + +/*! \brief Do a hardware unsigned HW divide, wait for result, return remainder + * \ingroup hardware_divider + * + * Divide \p a by \p b, wait for calculation to complete, return remainder. + * + * \param a The dividend + * \param b The divisor + * \return Remainder result of the divide + */ +static inline uint32_t hw_divider_u32_remainder_inlined(uint32_t a, uint32_t b) { + hw_divider_divmod_u32_start(a, b); + hw_divider_pause(); + uint32_t rc = sio_hw->div_remainder; + sio_hw->div_quotient; // must read quotient to cooperate with other SDK code + return rc; +} + +/*! \brief Do a hardware signed HW divide, wait for result, return quotient + * \ingroup hardware_divider + * + * Divide \p a by \p b, wait for calculation to complete, return quotient. + * + * \param a The dividend + * \param b The divisor + * \return Quotient result of the divide + */ +static inline int32_t hw_divider_s32_quotient_inlined(int32_t a, int32_t b) { + hw_divider_divmod_s32_start(a, b); + hw_divider_pause(); + return (int32_t)sio_hw->div_quotient; +} + +/*! \brief Do a hardware signed HW divide, wait for result, return remainder + * \ingroup hardware_divider + * + * Divide \p a by \p b, wait for calculation to complete, return remainder. + * + * \param a The dividend + * \param b The divisor + * \return Remainder result of the divide + */ +static inline int32_t hw_divider_s32_remainder_inlined(int32_t a, int32_t b) { + hw_divider_divmod_s32_start(a, b); + hw_divider_pause(); + int32_t rc = (int32_t)sio_hw->div_remainder; + sio_hw->div_quotient; // must read quotient to cooperate with other SDK code + return rc; +} + +typedef struct { + uint32_t values[4]; +} hw_divider_state_t; + +/*! \brief Save the calling cores hardware divider state + * \ingroup hardware_divider + * + * Copy the current core's hardware divider state into the provided structure. This method + * waits for the divider results to be stable, then copies them to memory. + * They can be restored via hw_divider_restore_state() + * + * \param dest the location to store the divider state + */ +void hw_divider_save_state(hw_divider_state_t *dest); + +/*! \brief Load a saved hardware divider state into the current core's hardware divider + * \ingroup hardware_divider + * + * Copy the passed hardware divider state into the hardware divider. + * + * \param src the location to load the divider state from + */ + +void hw_divider_restore_state(hw_divider_state_t *src); + +#ifdef __cplusplus +} +#endif + +#endif // _HARDWARE_DIVIDER_H diff --git a/arkanoid/pico/hardware/dma.c b/arkanoid/pico/hardware/dma.c new file mode 100644 index 0000000..869a451 --- /dev/null +++ b/arkanoid/pico/hardware/dma.c @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <stdio.h> +#include "dma.h" +#include "claim.h" + +#define DMA_CHAN_STRIDE (DMA_CH1_CTRL_TRIG_OFFSET - DMA_CH0_CTRL_TRIG_OFFSET) +check_hw_size(dma_channel_hw_t, DMA_CHAN_STRIDE); +check_hw_layout(dma_hw_t, abort, DMA_CHAN_ABORT_OFFSET); + +// sanity check +static_assert(__builtin_offsetof(dma_hw_t, ch[0].ctrl_trig) == DMA_CH0_CTRL_TRIG_OFFSET, "hw mismatch"); +static_assert(__builtin_offsetof(dma_hw_t, ch[1].ctrl_trig) == DMA_CH1_CTRL_TRIG_OFFSET, "hw mismatch"); + +static_assert(NUM_DMA_CHANNELS <= 16, ""); +static uint16_t _claimed; +static uint8_t _timer_claimed; + +void dma_channel_claim(uint channel) { + check_dma_channel_param(channel); + hw_claim_or_assert((uint8_t *) &_claimed, channel, "DMA channel %d is already claimed"); +} + +void dma_claim_mask(uint32_t mask) { + for(uint i = 0; mask; i++, mask >>= 1u) { + if (mask & 1u) dma_channel_claim(i); + } +} + +void dma_channel_unclaim(uint channel) { + check_dma_channel_param(channel); + hw_claim_clear((uint8_t *) &_claimed, channel); +} + +int dma_claim_unused_channel(bool required) { + return hw_claim_unused_from_range((uint8_t*)&_claimed, required, 0, NUM_DMA_CHANNELS-1, "No DMA channels are available"); +} + +bool dma_channel_is_claimed(uint channel) { + check_dma_channel_param(channel); + return hw_is_claimed((uint8_t *) &_claimed, channel); +} + +void dma_timer_claim(uint timer) { + check_dma_timer_param(timer); + hw_claim_or_assert(&_timer_claimed, timer, "DMA timer %d is already claimed"); +} + +void dma_timer_unclaim(uint timer) { + check_dma_timer_param(timer); + hw_claim_clear(&_timer_claimed, timer); +} + +int dma_claim_unused_timer(bool required) { + return hw_claim_unused_from_range(&_timer_claimed, required, 0, NUM_DMA_TIMERS-1, "No DMA timers are available"); +} + +bool dma_timer_is_claimed(uint timer) { + check_dma_timer_param(timer); + return hw_is_claimed(&_timer_claimed, timer); +} + +#ifndef NDEBUG + +void print_dma_ctrl(dma_channel_hw_t *channel) { + uint32_t ctrl = channel->ctrl_trig; + int rgsz = (ctrl & DMA_CH0_CTRL_TRIG_RING_SIZE_BITS) >> DMA_CH0_CTRL_TRIG_RING_SIZE_LSB; + printf("(%08x) ber %d rer %d wer %d busy %d trq %d cto %d rgsl %d rgsz %d inw %d inr %d sz %d hip %d en %d", + (uint) ctrl, + ctrl & DMA_CH0_CTRL_TRIG_AHB_ERROR_BITS ? 1 : 0, + ctrl & DMA_CH0_CTRL_TRIG_READ_ERROR_BITS ? 1 : 0, + ctrl & DMA_CH0_CTRL_TRIG_WRITE_ERROR_BITS ? 1 : 0, + ctrl & DMA_CH0_CTRL_TRIG_BUSY_BITS ? 1 : 0, + (int) ((ctrl & DMA_CH0_CTRL_TRIG_TREQ_SEL_BITS) >> DMA_CH0_CTRL_TRIG_TREQ_SEL_LSB), + (int) ((ctrl & DMA_CH0_CTRL_TRIG_CHAIN_TO_BITS) >> DMA_CH0_CTRL_TRIG_CHAIN_TO_LSB), + ctrl & DMA_CH0_CTRL_TRIG_RING_SEL_BITS ? 1 : 0, + rgsz ? (1 << rgsz) : 0, + ctrl & DMA_CH0_CTRL_TRIG_INCR_WRITE_BITS ? 1 : 0, + ctrl & DMA_CH0_CTRL_TRIG_INCR_READ_BITS ? 1 : 0, + 1 << ((ctrl & DMA_CH0_CTRL_TRIG_DATA_SIZE_BITS) >> DMA_CH0_CTRL_TRIG_DATA_SIZE_LSB), + ctrl & DMA_CH0_CTRL_TRIG_HIGH_PRIORITY_BITS ? 1 : 0, + ctrl & DMA_CH0_CTRL_TRIG_EN_BITS ? 1 : 0); +} +#endif + +#if PARAM_ASSERTIONS_ENABLED(DMA) +void check_dma_channel_param_impl(uint __unused channel) { + valid_params_if(DMA, channel < NUM_DMA_CHANNELS); +} +#endif diff --git a/arkanoid/pico/hardware/dma.h b/arkanoid/pico/hardware/dma.h new file mode 100644 index 0000000..c704596 --- /dev/null +++ b/arkanoid/pico/hardware/dma.h @@ -0,0 +1,795 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_DMA_H_ +#define _HARDWARE_DMA_H_ + +#include "../pico.h" +#include "structs/dma.h" +#include "regs/dreq.h" +#include "assert.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file dma.h + * \defgroup hardware_dma hardware_dma + * + * DMA Controller API + * + * The RP2040 Direct Memory Access (DMA) master performs bulk data transfers on a processor’s + * behalf. This leaves processors free to attend to other tasks, or enter low-power sleep states. The + * data throughput of the DMA is also significantly higher than one of RP2040’s processors. + * + * The DMA can perform one read access and one write access, up to 32 bits in size, every clock cycle. + * There are 12 independent channels, which each supervise a sequence of bus transfers, usually in + * one of the following scenarios: + * + * * Memory to peripheral + * * Peripheral to memory + * * Memory to memory + */ + +// these are not defined in generated dreq.h +#define DREQ_DMA_TIMER0 DMA_CH0_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 +#define DREQ_DMA_TIMER1 DMA_CH0_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 +#define DREQ_DMA_TIMER2 DMA_CH0_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 +#define DREQ_DMA_TIMER3 DMA_CH0_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 +#define DREQ_FORCE DMA_CH0_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_DMA, Enable/disable DMA assertions, type=bool, default=0, group=hardware_dma +#ifndef PARAM_ASSERTIONS_ENABLED_DMA +#define PARAM_ASSERTIONS_ENABLED_DMA 0 +#endif + +static inline void check_dma_channel_param(__unused uint channel) { +#if PARAM_ASSERTIONS_ENABLED(DMA) + // this method is used a lot by inline functions so avoid code bloat by deferring to function + extern void check_dma_channel_param_impl(uint channel); + check_dma_channel_param_impl(channel); +#endif +} + +static inline void check_dma_timer_param(__unused uint timer_num) { + valid_params_if(DMA, timer_num < NUM_DMA_TIMERS); +} + +inline static dma_channel_hw_t *dma_channel_hw_addr(uint channel) { + check_dma_channel_param(channel); + return &dma_hw->ch[channel]; +} + +/*! \brief Mark a dma channel as used + * \ingroup hardware_dma + * + * Method for cooperative claiming of hardware. Will cause a panic if the channel + * is already claimed. Use of this method by libraries detects accidental + * configurations that would fail in unpredictable ways. + * + * \param channel the dma channel + */ +void dma_channel_claim(uint channel); + +/*! \brief Mark multiple dma channels as used + * \ingroup hardware_dma + * + * Method for cooperative claiming of hardware. Will cause a panic if any of the channels + * are already claimed. Use of this method by libraries detects accidental + * configurations that would fail in unpredictable ways. + * + * \param channel_mask Bitfield of all required channels to claim (bit 0 == channel 0, bit 1 == channel 1 etc) + */ +void dma_claim_mask(uint32_t channel_mask); + +/*! \brief Mark a dma channel as no longer used + * \ingroup hardware_dma + * + * Method for cooperative claiming of hardware. + * + * \param channel the dma channel to release + */ +void dma_channel_unclaim(uint channel); + +/*! \brief Claim a free dma channel + * \ingroup hardware_dma + * + * \param required if true the function will panic if none are available + * \return the dma channel number or -1 if required was false, and none were free + */ +int dma_claim_unused_channel(bool required); + +/*! \brief Determine if a dma channel is claimed + * \ingroup hardware_dma + * + * \param channel the dma channel + * \return true if the channel is claimed, false otherwise + * \see dma_channel_claim + * \see dma_channel_claim_mask + */ +bool dma_channel_is_claimed(uint channel); + +/** \brief DMA channel configuration + * \defgroup channel_config channel_config + * \ingroup hardware_dma + * + * A DMA channel needs to be configured, these functions provide handy helpers to set up configuration + * structures. See \ref dma_channel_config + * + */ + +/*! \brief Enumeration of available DMA channel transfer sizes. + * \ingroup hardware_dma + * + * Names indicate the number of bits. + */ +enum dma_channel_transfer_size { + DMA_SIZE_8 = 0, ///< Byte transfer (8 bits) + DMA_SIZE_16 = 1, ///< Half word transfer (16 bits) + DMA_SIZE_32 = 2 ///< Word transfer (32 bits) +}; + +typedef struct { + uint32_t ctrl; +} dma_channel_config; + +/*! \brief Set DMA channel read increment + * \ingroup channel_config + * + * \param c Pointer to channel configuration data + * \param incr True to enable read address increments, if false, each read will be from the same address + * Usually disabled for peripheral to memory transfers + */ +static inline void channel_config_set_read_increment(dma_channel_config *c, bool incr) { + c->ctrl = incr ? (c->ctrl | DMA_CH0_CTRL_TRIG_INCR_READ_BITS) : (c->ctrl & ~DMA_CH0_CTRL_TRIG_INCR_READ_BITS); +} + +/*! \brief Set DMA channel write increment + * \ingroup channel_config + * + * \param c Pointer to channel configuration data + * \param incr True to enable write address increments, if false, each write will be to the same address + * Usually disabled for memory to peripheral transfers + * Usually disabled for memory to peripheral transfers + */ +static inline void channel_config_set_write_increment(dma_channel_config *c, bool incr) { + c->ctrl = incr ? (c->ctrl | DMA_CH0_CTRL_TRIG_INCR_WRITE_BITS) : (c->ctrl & ~DMA_CH0_CTRL_TRIG_INCR_WRITE_BITS); +} + +/*! \brief Select a transfer request signal + * \ingroup channel_config + * + * The channel uses the transfer request signal to pace its data transfer rate. + * Sources for TREQ signals are internal (TIMERS) or external (DREQ, a Data Request from the system). + * 0x0 to 0x3a -> select DREQ n as TREQ + * 0x3b -> Select Timer 0 as TREQ + * 0x3c -> Select Timer 1 as TREQ + * 0x3d -> Select Timer 2 as TREQ (Optional) + * 0x3e -> Select Timer 3 as TREQ (Optional) + * 0x3f -> Permanent request, for unpaced transfers. + * + * \param c Pointer to channel configuration data + * \param dreq Source (see description) + */ +static inline void channel_config_set_dreq(dma_channel_config *c, uint dreq) { + assert(dreq <= DREQ_FORCE); + c->ctrl = (c->ctrl & ~DMA_CH0_CTRL_TRIG_TREQ_SEL_BITS) | (dreq << DMA_CH0_CTRL_TRIG_TREQ_SEL_LSB); +} + +/*! \brief Set DMA channel completion channel + * \ingroup channel_config + * + * When this channel completes, it will trigger the channel indicated by chain_to. Disable by + * setting chain_to to itself (the same channel) + * + * \param c Pointer to channel configuration data + * \param chain_to Channel to trigger when this channel completes. + */ +static inline void channel_config_set_chain_to(dma_channel_config *c, uint chain_to) { + assert(chain_to <= NUM_DMA_CHANNELS); + c->ctrl = (c->ctrl & ~DMA_CH0_CTRL_TRIG_CHAIN_TO_BITS) | (chain_to << DMA_CH0_CTRL_TRIG_CHAIN_TO_LSB); +} + +/*! \brief Set the size of each DMA bus transfer + * \ingroup channel_config + * + * Set the size of each bus transfer (byte/halfword/word). The read and write addresses + * advance by the specific amount (1/2/4 bytes) with each transfer. + * + * \param c Pointer to channel configuration data + * \param size See enum for possible values. + */ +static inline void channel_config_set_transfer_data_size(dma_channel_config *c, enum dma_channel_transfer_size size) { + assert(size == DMA_SIZE_8 || size == DMA_SIZE_16 || size == DMA_SIZE_32); + c->ctrl = (c->ctrl & ~DMA_CH0_CTRL_TRIG_DATA_SIZE_BITS) | (((uint)size) << DMA_CH0_CTRL_TRIG_DATA_SIZE_LSB); +} + +/*! \brief Set address wrapping parameters + * \ingroup channel_config + * + * Size of address wrap region. If 0, don’t wrap. For values n > 0, only the lower n bits of the address + * will change. This wraps the address on a (1 << n) byte boundary, facilitating access to naturally-aligned + * ring buffers. + * Ring sizes between 2 and 32768 bytes are possible (size_bits from 1 - 15) + * + * 0x0 -> No wrapping. + * + * \param c Pointer to channel configuration data + * \param write True to apply to write addresses, false to apply to read addresses + * \param size_bits 0 to disable wrapping. Otherwise the size in bits of the changing part of the address. + * Effectively wraps the address on a (1 << size_bits) byte boundary. + */ +static inline void channel_config_set_ring(dma_channel_config *c, bool write, uint size_bits) { + assert(size_bits < 32); + c->ctrl = (c->ctrl & ~(DMA_CH0_CTRL_TRIG_RING_SIZE_BITS | DMA_CH0_CTRL_TRIG_RING_SEL_BITS)) | + (size_bits << DMA_CH0_CTRL_TRIG_RING_SIZE_LSB) | + (write ? DMA_CH0_CTRL_TRIG_RING_SEL_BITS : 0); +} + +/*! \brief Set DMA byte swapping + * \ingroup channel_config + * + * No effect for byte data, for halfword data, the two bytes of each halfword are + * swapped. For word data, the four bytes of each word are swapped to reverse their order. + * + * \param c Pointer to channel configuration data + * \param bswap True to enable byte swapping + */ +static inline void channel_config_set_bswap(dma_channel_config *c, bool bswap) { + c->ctrl = bswap ? (c->ctrl | DMA_CH0_CTRL_TRIG_BSWAP_BITS) : (c->ctrl & ~DMA_CH0_CTRL_TRIG_BSWAP_BITS); +} + +/*! \brief Set IRQ quiet mode + * \ingroup channel_config + * + * In QUIET mode, the channel does not generate IRQs at the end of every transfer block. Instead, + * an IRQ is raised when NULL is written to a trigger register, indicating the end of a control + * block chain. + * + * \param c Pointer to channel configuration data + * \param irq_quiet True to enable quiet mode, false to disable. + */ +static inline void channel_config_set_irq_quiet(dma_channel_config *c, bool irq_quiet) { + c->ctrl = irq_quiet ? (c->ctrl | DMA_CH0_CTRL_TRIG_IRQ_QUIET_BITS) : (c->ctrl & ~DMA_CH0_CTRL_TRIG_IRQ_QUIET_BITS); +} + +/*! + * \brief Enable/Disable the DMA channel + * \ingroup channel_config + * + * When false, the channel will ignore triggers, stop issuing transfers, and pause the current transfer sequence (i.e. BUSY will + * remain high if already high) + * + * \param c Pointer to channel configuration data + * \param enable True to enable the DMA channel. When enabled, the channel will respond to triggering events, and start transferring data. + * + */ +static inline void channel_config_set_enable(dma_channel_config *c, bool enable) { + c->ctrl = enable ? (c->ctrl | DMA_CH0_CTRL_TRIG_EN_BITS) : (c->ctrl & ~DMA_CH0_CTRL_TRIG_EN_BITS); +} + +/*! \brief Enable access to channel by sniff hardware. + * \ingroup channel_config + * + * Sniff HW must be enabled and have this channel selected. + * + * \param c Pointer to channel configuration data + * \param sniff_enable True to enable the Sniff HW access to this DMA channel. + */ +static inline void channel_config_set_sniff_enable(dma_channel_config *c, bool sniff_enable) { + c->ctrl = sniff_enable ? (c->ctrl | DMA_CH0_CTRL_TRIG_SNIFF_EN_BITS) : (c->ctrl & + ~DMA_CH0_CTRL_TRIG_SNIFF_EN_BITS); +} + +/*! \brief Get the default channel configuration for a given channel + * \ingroup channel_config + * + * Setting | Default + * --------|-------- + * Read Increment | true + * Write Increment | false + * DReq | DREQ_FORCE + * Chain to | self + * Data size | DMA_SIZE_32 + * Ring | write=false, size=0 (i.e. off) + * Byte Swap | false + * Quiet IRQs | false + * Channel Enable | true + * Sniff Enable | false + * + * \param channel DMA channel + * \return the default configuration which can then be modified. + */ +static inline dma_channel_config dma_channel_get_default_config(uint channel) { + dma_channel_config c = {0}; + channel_config_set_read_increment(&c, true); + channel_config_set_write_increment(&c, false); + channel_config_set_dreq(&c, DREQ_FORCE); + channel_config_set_chain_to(&c, channel); + channel_config_set_transfer_data_size(&c, DMA_SIZE_32); + channel_config_set_ring(&c, false, 0); + channel_config_set_bswap(&c, false); + channel_config_set_irq_quiet(&c, false); + channel_config_set_enable(&c, true); + channel_config_set_sniff_enable(&c, false); + return c; +} + +/*! \brief Get the current configuration for the specified channel. + * \ingroup channel_config + * + * \param channel DMA channel + * \return The current configuration as read from the HW register (not cached) + */ +static inline dma_channel_config dma_get_channel_config(uint channel) { + dma_channel_config c; + c.ctrl = dma_channel_hw_addr(channel)->ctrl_trig; + return c; +} + +/*! \brief Get the raw configuration register from a channel configuration + * \ingroup channel_config + * + * \param config Pointer to a config structure. + * \return Register content + */ +static inline uint32_t channel_config_get_ctrl_value(const dma_channel_config *config) { + return config->ctrl; +} + +/*! \brief Set a channel configuration + * \ingroup hardware_dma + * + * \param channel DMA channel + * \param config Pointer to a config structure with required configuration + * \param trigger True to trigger the transfer immediately + */ +static inline void dma_channel_set_config(uint channel, const dma_channel_config *config, bool trigger) { + // Don't use CTRL_TRIG since we don't want to start a transfer + if (!trigger) { + dma_channel_hw_addr(channel)->al1_ctrl = channel_config_get_ctrl_value(config); + } else { + dma_channel_hw_addr(channel)->ctrl_trig = channel_config_get_ctrl_value(config); + } +} + +/*! \brief Set the DMA initial read address. + * \ingroup hardware_dma + * + * \param channel DMA channel + * \param read_addr Initial read address of transfer. + * \param trigger True to start the transfer immediately + */ +static inline void dma_channel_set_read_addr(uint channel, const volatile void *read_addr, bool trigger) { + if (!trigger) { + dma_channel_hw_addr(channel)->read_addr = (uintptr_t) read_addr; + } else { + dma_channel_hw_addr(channel)->al3_read_addr_trig = (uintptr_t) read_addr; + } +} + +/*! \brief Set the DMA initial write address + * \ingroup hardware_dma + * + * \param channel DMA channel + * \param write_addr Initial write address of transfer. + * \param trigger True to start the transfer immediately + */ +static inline void dma_channel_set_write_addr(uint channel, volatile void *write_addr, bool trigger) { + if (!trigger) { + dma_channel_hw_addr(channel)->write_addr = (uintptr_t) write_addr; + } else { + dma_channel_hw_addr(channel)->al2_write_addr_trig = (uintptr_t) write_addr; + } +} + +/*! \brief Set the number of bus transfers the channel will do + * \ingroup hardware_dma + * + * \param channel DMA channel + * \param trans_count The number of transfers (not NOT bytes, see channel_config_set_transfer_data_size) + * \param trigger True to start the transfer immediately + */ +static inline void dma_channel_set_trans_count(uint channel, uint32_t trans_count, bool trigger) { + if (!trigger) { + dma_channel_hw_addr(channel)->transfer_count = trans_count; + } else { + dma_channel_hw_addr(channel)->al1_transfer_count_trig = trans_count; + } +} + +/*! \brief Configure all DMA parameters and optionally start transfer + * \ingroup hardware_dma + * + * \param channel DMA channel + * \param config Pointer to DMA config structure + * \param write_addr Initial write address + * \param read_addr Initial read address + * \param transfer_count Number of transfers to perform + * \param trigger True to start the transfer immediately + */ +static inline void dma_channel_configure(uint channel, const dma_channel_config *config, volatile void *write_addr, + const volatile void *read_addr, + uint transfer_count, bool trigger) { + dma_channel_set_read_addr(channel, read_addr, false); + dma_channel_set_write_addr(channel, write_addr, false); + dma_channel_set_trans_count(channel, transfer_count, false); + dma_channel_set_config(channel, config, trigger); +} + +/*! \brief Start a DMA transfer from a buffer immediately + * \ingroup hardware_dma + * + * \param channel DMA channel + * \param read_addr Sets the initial read address + * \param transfer_count Number of transfers to make. Not bytes, but the number of transfers of channel_config_set_transfer_data_size() to be sent. + */ +inline static void __attribute__((always_inline)) dma_channel_transfer_from_buffer_now(uint channel, + const volatile void *read_addr, + uint32_t transfer_count) { +// check_dma_channel_param(channel); + dma_channel_hw_t *hw = dma_channel_hw_addr(channel); + hw->read_addr = (uintptr_t) read_addr; + hw->al1_transfer_count_trig = transfer_count; +} + +/*! \brief Start a DMA transfer to a buffer immediately + * \ingroup hardware_dma + * + * \param channel DMA channel + * \param write_addr Sets the initial write address + * \param transfer_count Number of transfers to make. Not bytes, but the number of transfers of channel_config_set_transfer_data_size() to be sent. + */ +inline static void dma_channel_transfer_to_buffer_now(uint channel, volatile void *write_addr, uint32_t transfer_count) { + dma_channel_hw_t *hw = dma_channel_hw_addr(channel); + hw->write_addr = (uintptr_t) write_addr; + hw->al1_transfer_count_trig = transfer_count; +} + +/*! \brief Start one or more channels simultaneously + * \ingroup hardware_dma + * + * \param chan_mask Bitmask of all the channels requiring starting. Channel 0 = bit 0, channel 1 = bit 1 etc. + */ +static inline void dma_start_channel_mask(uint32_t chan_mask) { + valid_params_if(DMA, chan_mask && chan_mask < (1u << NUM_DMA_CHANNELS)); + dma_hw->multi_channel_trigger = chan_mask; +} + +/*! \brief Start a single DMA channel + * \ingroup hardware_dma + * + * \param channel DMA channel + */ +static inline void dma_channel_start(uint channel) { + dma_start_channel_mask(1u << channel); +} + +/*! \brief Stop a DMA transfer + * \ingroup hardware_dma + * + * Function will only return once the DMA has stopped. + * + * \param channel DMA channel + */ +static inline void dma_channel_abort(uint channel) { + check_dma_channel_param(channel); + dma_hw->abort = 1u << channel; + // Bit will go 0 once channel has reached safe state + // (i.e. any in-flight transfers have retired) + while (dma_hw->abort & (1ul << channel)) tight_loop_contents(); +} + +/*! \brief Enable single DMA channel's interrupt via DMA_IRQ_0 + * \ingroup hardware_dma + * + * \param channel DMA channel + * \param enabled true to enable interrupt 0 on specified channel, false to disable. + */ +static inline void dma_channel_set_irq0_enabled(uint channel, bool enabled) { + check_dma_channel_param(channel); + check_hw_layout(dma_hw_t, inte0, DMA_INTE0_OFFSET); + if (enabled) + hw_set_bits(&dma_hw->inte0, 1u << channel); + else + hw_clear_bits(&dma_hw->inte0, 1u << channel); +} + +/*! \brief Enable multiple DMA channels' interrupts via DMA_IRQ_0 + * \ingroup hardware_dma + * + * \param channel_mask Bitmask of all the channels to enable/disable. Channel 0 = bit 0, channel 1 = bit 1 etc. + * \param enabled true to enable all the interrupts specified in the mask, false to disable all the interrupts specified in the mask. + */ +static inline void dma_set_irq0_channel_mask_enabled(uint32_t channel_mask, bool enabled) { + if (enabled) { + hw_set_bits(&dma_hw->inte0, channel_mask); + } else { + hw_clear_bits(&dma_hw->inte0, channel_mask); + } +} + +/*! \brief Enable single DMA channel's interrupt via DMA_IRQ_1 + * \ingroup hardware_dma + * + * \param channel DMA channel + * \param enabled true to enable interrupt 1 on specified channel, false to disable. + */ +static inline void dma_channel_set_irq1_enabled(uint channel, bool enabled) { + check_dma_channel_param(channel); + check_hw_layout(dma_hw_t, inte1, DMA_INTE1_OFFSET); + if (enabled) + hw_set_bits(&dma_hw->inte1, 1u << channel); + else + hw_clear_bits(&dma_hw->inte1, 1u << channel); +} + +/*! \brief Enable multiple DMA channels' interrupts via DMA_IRQ_1 + * \ingroup hardware_dma + * + * \param channel_mask Bitmask of all the channels to enable/disable. Channel 0 = bit 0, channel 1 = bit 1 etc. + * \param enabled true to enable all the interrupts specified in the mask, false to disable all the interrupts specified in the mask. + */ +static inline void dma_set_irq1_channel_mask_enabled(uint32_t channel_mask, bool enabled) { + if (enabled) { + hw_set_bits(&dma_hw->inte1, channel_mask); + } else { + hw_clear_bits(&dma_hw->inte1, channel_mask); + } +} + +/*! \brief Enable single DMA channel interrupt on either DMA_IRQ_0 or DMA_IRQ_1 + * \ingroup hardware_dma + * + * \param irq_index the IRQ index; either 0 or 1 for DMA_IRQ_0 or DMA_IRQ_1 + * \param channel DMA channel + * \param enabled true to enable interrupt via irq_index for specified channel, false to disable. + */ +static inline void dma_irqn_set_channel_enabled(uint irq_index, uint channel, bool enabled) { + invalid_params_if(DMA, irq_index > 1); + if (irq_index) { + dma_channel_set_irq1_enabled(channel, enabled); + } else { + dma_channel_set_irq0_enabled(channel, enabled); + } +} + +/*! \brief Enable multiple DMA channels' interrupt via either DMA_IRQ_0 or DMA_IRQ_1 + * \ingroup hardware_dma + * + * \param irq_index the IRQ index; either 0 or 1 for DMA_IRQ_0 or DMA_IRQ_1 + * \param channel_mask Bitmask of all the channels to enable/disable. Channel 0 = bit 0, channel 1 = bit 1 etc. + * \param enabled true to enable all the interrupts specified in the mask, false to disable all the interrupts specified in the mask. + */ +static inline void dma_irqn_set_channel_mask_enabled(uint irq_index, uint32_t channel_mask, bool enabled) { + invalid_params_if(DMA, irq_index > 1); + if (irq_index) { + dma_set_irq1_channel_mask_enabled(channel_mask, enabled); + } else { + dma_set_irq0_channel_mask_enabled(channel_mask, enabled); + } +} + +/*! \brief Determine if a particular channel is a cause of DMA_IRQ_0 + * \ingroup hardware_dma + * + * \param channel DMA channel + * \return true if the channel is a cause of DMA_IRQ_0, false otherwise + */ +static inline bool dma_channel_get_irq0_status(uint channel) { + check_dma_channel_param(channel); + return dma_hw->ints0 & (1u << channel); +} + +/*! \brief Determine if a particular channel is a cause of DMA_IRQ_1 + * \ingroup hardware_dma + * + * \param channel DMA channel + * \return true if the channel is a cause of DMA_IRQ_1, false otherwise + */ +static inline bool dma_channel_get_irq1_status(uint channel) { + check_dma_channel_param(channel); + return dma_hw->ints1 & (1u << channel); +} + +/*! \brief Determine if a particular channel is a cause of DMA_IRQ_N + * \ingroup hardware_dma + * + * \param irq_index the IRQ index; either 0 or 1 for DMA_IRQ_0 or DMA_IRQ_1 + * \param channel DMA channel + * \return true if the channel is a cause of the DMA_IRQ_N, false otherwise + */ +static inline bool dma_irqn_get_channel_status(uint irq_index, uint channel) { + invalid_params_if(DMA, irq_index > 1); + check_dma_channel_param(channel); + return (irq_index ? dma_hw->ints1 : dma_hw->ints0) & (1u << channel); +} + +/*! \brief Acknowledge a channel IRQ, resetting it as the cause of DMA_IRQ_0 + * \ingroup hardware_dma + * + * \param channel DMA channel + */ +static inline void dma_channel_acknowledge_irq0(uint channel) { + check_dma_channel_param(channel); + hw_set_bits(&dma_hw->ints0, (1u << channel)); +} + +/*! \brief Acknowledge a channel IRQ, resetting it as the cause of DMA_IRQ_1 + * \ingroup hardware_dma + * + * \param channel DMA channel + */ +static inline void dma_channel_acknowledge_irq1(uint channel) { + check_dma_channel_param(channel); + hw_set_bits(&dma_hw->ints1, (1u << channel)); +} + +/*! \brief Acknowledge a channel IRQ, resetting it as the cause of DMA_IRQ_N + * \ingroup hardware_dma + * + * \param irq_index the IRQ index; either 0 or 1 for DMA_IRQ_0 or DMA_IRQ_1 + * \param channel DMA channel + */ +static inline void dma_irqn_acknowledge_channel(uint irq_index, uint channel) { + invalid_params_if(DMA, irq_index > 1); + check_dma_channel_param(channel); + hw_set_bits(irq_index ? &dma_hw->ints1 : &dma_hw->ints0, (1u << channel)); +} + +/*! \brief Check if DMA channel is busy + * \ingroup hardware_dma + * + * \param channel DMA channel + * \return true if the channel is currently busy + */ +inline static bool dma_channel_is_busy(uint channel) { + check_dma_channel_param(channel); + return !!(dma_hw->ch[channel].al1_ctrl & DMA_CH0_CTRL_TRIG_BUSY_BITS); +} + +/*! \brief Wait for a DMA channel transfer to complete + * \ingroup hardware_dma + * + * \param channel DMA channel + */ +inline static void dma_channel_wait_for_finish_blocking(uint channel) { + while (dma_channel_is_busy(channel)) tight_loop_contents(); + // stop the compiler hoisting a non volatile buffer access above the DMA completion. + __compiler_memory_barrier(); +} + +/*! \brief Enable the DMA sniffing targeting the specified channel + * \ingroup hardware_dma + * + * The mode can be one of the following: + * + * Mode | Function + * -----|--------- + * 0x0 | Calculate a CRC-32 (IEEE802.3 polynomial) + * 0x1 | Calculate a CRC-32 (IEEE802.3 polynomial) with bit reversed data + * 0x2 | Calculate a CRC-16-CCITT + * 0x3 | Calculate a CRC-16-CCITT with bit reversed data + * 0xe | XOR reduction over all data. == 1 if the total 1 population count is odd. + * 0xf | Calculate a simple 32-bit checksum (addition with a 32 bit accumulator) + * + * \param channel DMA channel + * \param mode See description + * \param force_channel_enable Set true to also turn on sniffing in the channel configuration (this + * is usually what you want, but sometimes you might have a chain DMA with only certain segments + * of the chain sniffed, in which case you might pass false). + */ +inline static void dma_sniffer_enable(uint channel, uint mode, bool force_channel_enable) { + check_dma_channel_param(channel); + check_hw_layout(dma_hw_t, sniff_ctrl, DMA_SNIFF_CTRL_OFFSET); + if (force_channel_enable) { + hw_set_bits(&dma_hw->ch[channel].al1_ctrl, DMA_CH0_CTRL_TRIG_SNIFF_EN_BITS); + } + dma_hw->sniff_ctrl = ((channel << DMA_SNIFF_CTRL_DMACH_LSB) & DMA_SNIFF_CTRL_DMACH_BITS) | + ((mode << DMA_SNIFF_CTRL_CALC_LSB) & DMA_SNIFF_CTRL_CALC_BITS) | + DMA_SNIFF_CTRL_EN_BITS; +} + +/*! \brief Enable the Sniffer byte swap function + * \ingroup hardware_dma + * + * Locally perform a byte reverse on the sniffed data, before feeding into checksum. + * + * Note that the sniff hardware is downstream of the DMA channel byteswap performed in the + * read master: if channel_config_set_bswap() and dma_sniffer_set_byte_swap_enabled() are both enabled, + * their effects cancel from the sniffer’s point of view. + * + * \param swap Set true to enable byte swapping + */ +inline static void dma_sniffer_set_byte_swap_enabled(bool swap) { + if (swap) + hw_set_bits(&dma_hw->sniff_ctrl, DMA_SNIFF_CTRL_BSWAP_BITS); + else + hw_clear_bits(&dma_hw->sniff_ctrl, DMA_SNIFF_CTRL_BSWAP_BITS); +} + +/*! \brief Disable the DMA sniffer + * \ingroup hardware_dma + * + */ +inline static void dma_sniffer_disable(void) { + dma_hw->sniff_ctrl = 0; +} + +/*! \brief Mark a dma timer as used + * \ingroup hardware_dma + * + * Method for cooperative claiming of hardware. Will cause a panic if the timer + * is already claimed. Use of this method by libraries detects accidental + * configurations that would fail in unpredictable ways. + * + * \param timer the dma timer + */ +void dma_timer_claim(uint timer); + +/*! \brief Mark a dma timer as no longer used + * \ingroup hardware_dma + * + * Method for cooperative claiming of hardware. + * + * \param timer the dma timer to release + */ +void dma_timer_unclaim(uint timer); + +/*! \brief Claim a free dma timer + * \ingroup hardware_dma + * + * \param required if true the function will panic if none are available + * \return the dma timer number or -1 if required was false, and none were free + */ +int dma_claim_unused_timer(bool required); + +/*! \brief Determine if a dma timer is claimed + * \ingroup hardware_dma + * + * \param timer the dma timer + * \return true if the timer is claimed, false otherwise + * \see dma_timer_claim + */ +bool dma_timer_is_claimed(uint timer); + +/*! \brief Set the divider for the given DMA timer + * \ingroup hardware_dma + * + * The timer will run at the system_clock_freq * numerator / denominator, so this is the speed + * that data elements will be transferred at via a DMA channel using this timer as a DREQ + * + * \param timer the dma timer + * \param numerator the fraction's numerator + * \param denominator the fraction's denominator + */ +static inline void dma_timer_set_fraction(uint timer, uint16_t numerator, uint16_t denominator) { + check_dma_timer_param(timer); + dma_hw->timer[timer] = (((uint32_t)numerator) << DMA_TIMER0_X_LSB) | (((uint32_t)denominator) << DMA_TIMER0_Y_LSB); +} + +/*! \brief Return the DREQ number for a given DMA timer + * \ingroup hardware_dma + * + * \param timer_num DMA timer number 0-3 + */ +static inline uint dma_get_timer_dreq(uint timer_num) { + static_assert(DREQ_DMA_TIMER1 == DREQ_DMA_TIMER0 + 1, ""); + static_assert(DREQ_DMA_TIMER2 == DREQ_DMA_TIMER0 + 2, ""); + static_assert(DREQ_DMA_TIMER3 == DREQ_DMA_TIMER0 + 3, ""); + check_dma_timer_param(timer_num); + return DREQ_DMA_TIMER0 + timer_num; +} + +#ifndef NDEBUG +void print_dma_ctrl(dma_channel_hw_t *channel); +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/hardware/exception.c b/arkanoid/pico/hardware/exception.c new file mode 100644 index 0000000..fe8f3da --- /dev/null +++ b/arkanoid/pico/hardware/exception.c @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "exception.h" +#include "regs/m0plus.h" +#include "platform_defs.h" +#include "structs/scb.h" + +#include "../mutex.h" +#include "assert.h" + +#ifndef exception_is_compile_time_default +static bool exception_is_compile_time_default(exception_handler_t handler) { + extern char __default_isrs_start; + extern char __default_isrs_end; + return ((uintptr_t)handler) >= (uintptr_t)&__default_isrs_start && + ((uintptr_t)handler) < (uintptr_t)&__default_isrs_end; +} +#endif + +static inline exception_handler_t *get_vtable(void) { + return (exception_handler_t *) scb_hw->vtor; +} + +static void set_raw_exception_handler_and_restore_interrupts(enum exception_number num, exception_handler_t handler, uint32_t save) { + // update vtable (vtable_handler may be same or updated depending on cases, but we do it anyway for compactness) + get_vtable()[16 + num] = handler; + __dmb(); + restore_interrupts(save); +} + +static inline void check_exception_param(__unused enum exception_number num) { + invalid_params_if(EXCEPTION, num < NMI_EXCEPTION || num >=0); +} + +exception_handler_t exception_get_vtable_handler(enum exception_number num) { + check_exception_param(num); + return get_vtable()[16 + num]; +} + +exception_handler_t exception_set_exclusive_handler(enum exception_number num, exception_handler_t handler) { + check_exception_param(num); +#if !PICO_NO_RAM_VECTOR_TABLE + uint32_t save = save_and_disable_interrupts(); + exception_handler_t current = exception_get_vtable_handler(num); + hard_assert(handler == current || exception_is_compile_time_default(current)); + set_raw_exception_handler_and_restore_interrupts(num, handler, save); +#else + panic_unsupported(); +#endif + return current; +} + +void exception_restore_handler(enum exception_number num, exception_handler_t original_handler) { + hard_assert(exception_is_compile_time_default(original_handler)); +#if !PICO_NO_RAM_VECTOR_TABLE + uint32_t save = save_and_disable_interrupts(); + set_raw_exception_handler_and_restore_interrupts(num, original_handler, save); +#else + panic_unsupported(); +#endif +} \ No newline at end of file diff --git a/arkanoid/pico/hardware/exception.h b/arkanoid/pico/hardware/exception.h new file mode 100644 index 0000000..5420a52 --- /dev/null +++ b/arkanoid/pico/hardware/exception.h @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_EXCEPTION_H_ +#define _HARDWARE_EXCEPTION_H_ + +#include "../pico.h" +#include "address_mapped.h" +#include "regs/m0plus.h" + +/** \file exception.h + * \defgroup hardware_exception hardware_exception + * + * Methods for setting processor exception handlers + * + * Exceptions are identified by a \ref exception_number which is a number from -15 to -1; these are the numbers relative to + * the index of the first IRQ vector in the vector table. (i.e. vector table index is exception_num plus 16) + * + * There is one set of exception handlers per core, so the exception handlers for each core as set by these methods are independent. + * + * \note That all exception APIs affect the executing core only (i.e. the core calling the function). + */ + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_EXCEPTION, Enable/disable assertions in the exception module, type=bool, default=0, group=hardware_exception +#ifndef PARAM_ASSERTIONS_ENABLED_EXCEPTION +#define PARAM_ASSERTIONS_ENABLED_EXCEPTION 0 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/*! \brief Exception number definitions + * + * Note for consistency with irq numbers, these numbers are defined to be negative. The VTABLE index is + * the number here plus 16. + * + * Name | Value | Exception + * ---------------------|-------|---------- + * NMI_EXCEPTION | -14 | Non Maskable Interrupt + * HARDFAULT_EXCEPTION | -13 | HardFault + * SVCALL_EXCEPTION | -5 | SV Call + * PENDSV_EXCEPTION | -2 | Pend SV + * SYSTICK_EXCEPTION | -1 | System Tick + * + * \ingroup hardware_exception + */ +enum exception_number { + NMI_EXCEPTION = -14, /* Non Maskable Interrupt */ + HARDFAULT_EXCEPTION = -13, /* HardFault Interrupt */ + SVCALL_EXCEPTION = -5, /* SV Call Interrupt */ + PENDSV_EXCEPTION = -2, /* Pend SV Interrupt */ + SYSTICK_EXCEPTION = -1, /* System Tick Interrupt */ +}; + +/*! \brief Exception handler function type + * \ingroup hardware_exception + * + * All exception handlers should be of this type, and follow normal ARM EABI register saving conventions + */ +typedef void (*exception_handler_t)(void); + +/*! \brief Set the exception handler for an exception on the executing core. + * \ingroup hardware_exception + * + * This method will assert if an exception handler has been set for this exception number on this core via + * this method, without an intervening restore via exception_restore_handler. + * + * \note this method may not be used to override an exception handler that was specified at link time by + * providing a strong replacement for the weakly defined stub exception handlers. It will assert in this case too. + * + * \param num Exception number + * \param handler The handler to set + * \see exception_number + */ +exception_handler_t exception_set_exclusive_handler(enum exception_number num, exception_handler_t handler); + +/*! \brief Restore the original exception handler for an exception on this core + * \ingroup hardware_exception + * + * This method may be used to restore the exception handler for an exception on this core to the state + * prior to the call to exception_set_exclusive_handler(), so that exception_set_exclusive_handler() + * may be called again in the future. + * + * \param num Exception number \ref exception_number + * \param original_handler The original handler returned from \ref exception_set_exclusive_handler + * \see exception_set_exclusive_handler() + */ +void exception_restore_handler(enum exception_number num, exception_handler_t original_handler); + +/*! \brief Get the current exception handler for the specified exception from the currently installed vector table + * of the execution core + * \ingroup hardware_exception + * + * \param num Exception number + * \return the address stored in the VTABLE for the given exception number + */ +exception_handler_t exception_get_vtable_handler(enum exception_number num); +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/hardware/flash.c b/arkanoid/pico/hardware/flash.c new file mode 100644 index 0000000..697c756 --- /dev/null +++ b/arkanoid/pico/hardware/flash.c @@ -0,0 +1,176 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "flash.h" +#include "../bootrom.h" + +#include "structs/ssi.h" +#include "structs/ioqspi.h" + +#define FLASH_BLOCK_ERASE_CMD 0xd8 + +// Standard RUID instruction: 4Bh command prefix, 32 dummy bits, 64 data bits. +#define FLASH_RUID_CMD 0x4b +#define FLASH_RUID_DUMMY_BYTES 4 +#define FLASH_RUID_DATA_BYTES 8 +#define FLASH_RUID_TOTAL_BYTES (1 + FLASH_RUID_DUMMY_BYTES + FLASH_RUID_DATA_BYTES) + +//----------------------------------------------------------------------------- +// Infrastructure for reentering XIP mode after exiting for programming (take +// a copy of boot2 before XIP exit). Calling boot2 as a function works because +// it accepts a return vector in LR (and doesn't trash r4-r7). Bootrom passes +// NULL in LR, instructing boot2 to enter flash vector table's reset handler. + +#if !PICO_NO_FLASH + +#define BOOT2_SIZE_WORDS 64 + +static uint32_t boot2_copyout[BOOT2_SIZE_WORDS]; +static bool boot2_copyout_valid = false; + +static void __no_inline_not_in_flash_func(flash_init_boot2_copyout)(void) { + if (boot2_copyout_valid) + return; + for (int i = 0; i < BOOT2_SIZE_WORDS; ++i) + boot2_copyout[i] = ((uint32_t *)XIP_BASE)[i]; + __compiler_memory_barrier(); + boot2_copyout_valid = true; +} + +static void __no_inline_not_in_flash_func(flash_enable_xip_via_boot2)(void) { + ((void (*)(void))boot2_copyout+1)(); +} + +#else + +static void __no_inline_not_in_flash_func(flash_init_boot2_copyout)(void) {} + +static void __no_inline_not_in_flash_func(flash_enable_xip_via_boot2)(void) { + // Set up XIP for 03h read on bus access (slow but generic) + rom_flash_enter_cmd_xip_fn flash_enter_cmd_xip = (rom_flash_enter_cmd_xip_fn)rom_func_lookup_inline(ROM_FUNC_FLASH_ENTER_CMD_XIP); + assert(flash_enter_cmd_xip); + flash_enter_cmd_xip(); +} + +#endif + +//----------------------------------------------------------------------------- +// Actual flash programming shims (work whether or not PICO_NO_FLASH==1) + +void __no_inline_not_in_flash_func(flash_range_erase)(uint32_t flash_offs, size_t count) { +#ifdef PICO_FLASH_SIZE_BYTES + hard_assert(flash_offs + count <= PICO_FLASH_SIZE_BYTES); +#endif + invalid_params_if(FLASH, flash_offs & (FLASH_SECTOR_SIZE - 1)); + invalid_params_if(FLASH, count & (FLASH_SECTOR_SIZE - 1)); + rom_connect_internal_flash_fn connect_internal_flash = (rom_connect_internal_flash_fn)rom_func_lookup_inline(ROM_FUNC_CONNECT_INTERNAL_FLASH); + rom_flash_exit_xip_fn flash_exit_xip = (rom_flash_exit_xip_fn)rom_func_lookup_inline(ROM_FUNC_FLASH_EXIT_XIP); + rom_flash_range_erase_fn flash_range_erase = (rom_flash_range_erase_fn)rom_func_lookup_inline(ROM_FUNC_FLASH_RANGE_ERASE); + rom_flash_flush_cache_fn flash_flush_cache = (rom_flash_flush_cache_fn)rom_func_lookup_inline(ROM_FUNC_FLASH_FLUSH_CACHE); + assert(connect_internal_flash && flash_exit_xip && flash_range_erase && flash_flush_cache); + flash_init_boot2_copyout(); + + // No flash accesses after this point + __compiler_memory_barrier(); + + connect_internal_flash(); + flash_exit_xip(); + flash_range_erase(flash_offs, count, FLASH_BLOCK_SIZE, FLASH_BLOCK_ERASE_CMD); + flash_flush_cache(); // Note this is needed to remove CSn IO force as well as cache flushing + flash_enable_xip_via_boot2(); +} + +void __no_inline_not_in_flash_func(flash_range_program)(uint32_t flash_offs, const uint8_t *data, size_t count) { +#ifdef PICO_FLASH_SIZE_BYTES + hard_assert(flash_offs + count <= PICO_FLASH_SIZE_BYTES); +#endif + invalid_params_if(FLASH, flash_offs & (FLASH_PAGE_SIZE - 1)); + invalid_params_if(FLASH, count & (FLASH_PAGE_SIZE - 1)); + rom_connect_internal_flash_fn connect_internal_flash = (rom_connect_internal_flash_fn)rom_func_lookup_inline(ROM_FUNC_CONNECT_INTERNAL_FLASH); + rom_flash_exit_xip_fn flash_exit_xip = (rom_flash_exit_xip_fn)rom_func_lookup_inline(ROM_FUNC_FLASH_EXIT_XIP); + rom_flash_range_program_fn flash_range_program = (rom_flash_range_program_fn)rom_func_lookup_inline(ROM_FUNC_FLASH_RANGE_PROGRAM); + rom_flash_flush_cache_fn flash_flush_cache = (rom_flash_flush_cache_fn)rom_func_lookup_inline(ROM_FUNC_FLASH_FLUSH_CACHE); + assert(connect_internal_flash && flash_exit_xip && flash_range_program && flash_flush_cache); + flash_init_boot2_copyout(); + + __compiler_memory_barrier(); + + connect_internal_flash(); + flash_exit_xip(); + flash_range_program(flash_offs, data, count); + flash_flush_cache(); // Note this is needed to remove CSn IO force as well as cache flushing + flash_enable_xip_via_boot2(); +} + +//----------------------------------------------------------------------------- +// Lower-level flash access functions + +#if !PICO_NO_FLASH +// Bitbanging the chip select using IO overrides, in case RAM-resident IRQs +// are still running, and the FIFO bottoms out. (the bootrom does the same) +static void __no_inline_not_in_flash_func(flash_cs_force)(bool high) { + uint32_t field_val = high ? + IO_QSPI_GPIO_QSPI_SS_CTRL_OUTOVER_VALUE_HIGH : + IO_QSPI_GPIO_QSPI_SS_CTRL_OUTOVER_VALUE_LOW; + hw_write_masked(&ioqspi_hw->io[1].ctrl, + field_val << IO_QSPI_GPIO_QSPI_SS_CTRL_OUTOVER_LSB, + IO_QSPI_GPIO_QSPI_SS_CTRL_OUTOVER_BITS + ); +} + +void __no_inline_not_in_flash_func(flash_do_cmd)(const uint8_t *txbuf, uint8_t *rxbuf, size_t count) { + rom_connect_internal_flash_fn connect_internal_flash = (rom_connect_internal_flash_fn)rom_func_lookup_inline(ROM_FUNC_CONNECT_INTERNAL_FLASH); + rom_flash_exit_xip_fn flash_exit_xip = (rom_flash_exit_xip_fn)rom_func_lookup_inline(ROM_FUNC_FLASH_EXIT_XIP); + rom_flash_flush_cache_fn flash_flush_cache = (rom_flash_flush_cache_fn)rom_func_lookup_inline(ROM_FUNC_FLASH_FLUSH_CACHE); + assert(connect_internal_flash && flash_exit_xip && flash_flush_cache); + flash_init_boot2_copyout(); + __compiler_memory_barrier(); + connect_internal_flash(); + flash_exit_xip(); + + flash_cs_force(0); + size_t tx_remaining = count; + size_t rx_remaining = count; + // We may be interrupted -- don't want FIFO to overflow if we're distracted. + const size_t max_in_flight = 16 - 2; + while (tx_remaining || rx_remaining) { + uint32_t flags = ssi_hw->sr; + bool can_put = !!(flags & SSI_SR_TFNF_BITS); + bool can_get = !!(flags & SSI_SR_RFNE_BITS); + if (can_put && tx_remaining && rx_remaining - tx_remaining < max_in_flight) { + ssi_hw->dr0 = *txbuf++; + --tx_remaining; + } + if (can_get && rx_remaining) { + *rxbuf++ = (uint8_t)ssi_hw->dr0; + --rx_remaining; + } + } + flash_cs_force(1); + + flash_flush_cache(); + flash_enable_xip_via_boot2(); +} +#endif + +// Use standard RUID command to get a unique identifier for the flash (and +// hence the board) + +static_assert(FLASH_UNIQUE_ID_SIZE_BYTES == FLASH_RUID_DATA_BYTES, ""); + +void flash_get_unique_id(uint8_t *id_out) { +#if PICO_NO_FLASH + __unused uint8_t *ignore = id_out; + panic_unsupported(); +#else + uint8_t txbuf[FLASH_RUID_TOTAL_BYTES] = {0}; + uint8_t rxbuf[FLASH_RUID_TOTAL_BYTES] = {0}; + txbuf[0] = FLASH_RUID_CMD; + flash_do_cmd(txbuf, rxbuf, FLASH_RUID_TOTAL_BYTES); + for (int i = 0; i < FLASH_RUID_DATA_BYTES; i++) + id_out[i] = rxbuf[i + 1 + FLASH_RUID_DUMMY_BYTES]; +#endif +} diff --git a/arkanoid/pico/hardware/flash.h b/arkanoid/pico/hardware/flash.h new file mode 100644 index 0000000..6c02f03 --- /dev/null +++ b/arkanoid/pico/hardware/flash.h @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_FLASH_H +#define _HARDWARE_FLASH_H + +#include "../pico.h" + +/** \file flash.h + * \defgroup hardware_flash hardware_flash + * + * Low level flash programming and erase API + * + * Note these functions are *unsafe* if you have two cores concurrently + * executing from flash. In this case you must perform your own + * synchronisation to make sure no XIP accesses take place during flash + * programming. + * + * Likewise they are *unsafe* if you have interrupt handlers or an interrupt + * vector table in flash, so you must disable interrupts before calling in + * this case. + * + * If PICO_NO_FLASH=1 is not defined (i.e. if the program is built to run from + * flash) then these functions will make a static copy of the second stage + * bootloader in SRAM, and use this to reenter execute-in-place mode after + * programming or erasing flash, so that they can safely be called from + * flash-resident code. + * + * \subsection flash_example Example + * \include flash_program.c + */ + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_FLASH, Enable/disable assertions in the flash module, type=bool, default=0, group=hardware_flash +#ifndef PARAM_ASSERTIONS_ENABLED_FLASH +#define PARAM_ASSERTIONS_ENABLED_FLASH 0 +#endif + +#define FLASH_PAGE_SIZE (1u << 8) +#define FLASH_SECTOR_SIZE (1u << 12) +#define FLASH_BLOCK_SIZE (1u << 16) + +#define FLASH_UNIQUE_ID_SIZE_BYTES 8 + +// PICO_CONFIG: PICO_FLASH_SIZE_BYTES, size of primary flash in bytes, type=int, group=hardware_flash + +#ifdef __cplusplus +extern "C" { +#endif + +/*! \brief Erase areas of flash + * \ingroup hardware_flash + * + * \param flash_offs Offset into flash, in bytes, to start the erase. Must be aligned to a 4096-byte flash sector. + * \param count Number of bytes to be erased. Must be a multiple of 4096 bytes (one sector). + */ +void flash_range_erase(uint32_t flash_offs, size_t count); + +/*! \brief Program flash + * \ingroup hardware_flash + * + * \param flash_offs Flash address of the first byte to be programmed. Must be aligned to a 256-byte flash page. + * \param data Pointer to the data to program into flash + * \param count Number of bytes to program. Must be a multiple of 256 bytes (one page). + */ + +void flash_range_program(uint32_t flash_offs, const uint8_t *data, size_t count); + +/*! \brief Get flash unique 64 bit identifier + * \ingroup hardware_flash + * + * Use a standard 4Bh RUID instruction to retrieve the 64 bit unique + * identifier from a flash device attached to the QSPI interface. Since there + * is a 1:1 association between the MCU and this flash, this also serves as a + * unique identifier for the board. + * + * \param id_out Pointer to an 8-byte buffer to which the ID will be written + */ +void flash_get_unique_id(uint8_t *id_out); + +/*! \brief Execute bidirectional flash command + * \ingroup hardware_flash + * + * Low-level function to execute a serial command on a flash device attached + * to the QSPI interface. Bytes are simultaneously transmitted and received + * from txbuf and to rxbuf. Therefore, both buffers must be the same length, + * count, which is the length of the overall transaction. This is useful for + * reading metadata from the flash chip, such as device ID or SFDP + * parameters. + * + * The XIP cache is flushed following each command, in case flash state + * has been modified. Like other hardware_flash functions, the flash is not + * accessible for execute-in-place transfers whilst the command is in + * progress, so entering a flash-resident interrupt handler or executing flash + * code on the second core concurrently will be fatal. To avoid these pitfalls + * it is recommended that this function only be used to extract flash metadata + * during startup, before the main application begins to run: see the + * implementation of pico_get_unique_id() for an example of this. + * + * \param txbuf Pointer to a byte buffer which will be transmitted to the flash + * \param rxbuf Pointer to a byte buffer where data received from the flash will be written. txbuf and rxbuf may be the same buffer. + * \param count Length in bytes of txbuf and of rxbuf + */ +void flash_do_cmd(const uint8_t *txbuf, uint8_t *rxbuf, size_t count); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/hardware/gpio.c b/arkanoid/pico/hardware/gpio.c new file mode 100644 index 0000000..e072b64 --- /dev/null +++ b/arkanoid/pico/hardware/gpio.c @@ -0,0 +1,228 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "gpio.h" +#include "sync.h" + +#include "structs/iobank0.h" +#include "irq.h" + +#if LIB_PICO_BINARY_INFO +#include "../binary_info.h" +#endif + +static gpio_irq_callback_t _callbacks[NUM_CORES]; + +// Get the raw value from the pin, bypassing any muxing or overrides. +int gpio_get_pad(uint gpio) { + invalid_params_if(GPIO, gpio >= NUM_BANK0_GPIOS); + hw_set_bits(&padsbank0_hw->io[gpio], PADS_BANK0_GPIO0_IE_BITS); + return (iobank0_hw->io[gpio].status & IO_BANK0_GPIO0_STATUS_INFROMPAD_BITS) + >> IO_BANK0_GPIO0_STATUS_INFROMPAD_LSB; +} + +/// \tag::gpio_set_function[] +// Select function for this GPIO, and ensure input/output are enabled at the pad. +// This also clears the input/output/irq override bits. +void gpio_set_function(uint gpio, enum gpio_function fn) { + invalid_params_if(GPIO, gpio >= NUM_BANK0_GPIOS); + invalid_params_if(GPIO, ((uint32_t)fn << IO_BANK0_GPIO0_CTRL_FUNCSEL_LSB) & ~IO_BANK0_GPIO0_CTRL_FUNCSEL_BITS); + // Set input enable on, output disable off + hw_write_masked(&padsbank0_hw->io[gpio], + PADS_BANK0_GPIO0_IE_BITS, + PADS_BANK0_GPIO0_IE_BITS | PADS_BANK0_GPIO0_OD_BITS + ); + // Zero all fields apart from fsel; we want this IO to do what the peripheral tells it. + // This doesn't affect e.g. pullup/pulldown, as these are in pad controls. + iobank0_hw->io[gpio].ctrl = fn << IO_BANK0_GPIO0_CTRL_FUNCSEL_LSB; +} +/// \end::gpio_set_function[] + +enum gpio_function gpio_get_function(uint gpio) { + invalid_params_if(GPIO, gpio >= NUM_BANK0_GPIOS); + return (enum gpio_function) ((iobank0_hw->io[gpio].ctrl & IO_BANK0_GPIO0_CTRL_FUNCSEL_BITS) >> IO_BANK0_GPIO0_CTRL_FUNCSEL_LSB); +} + +// Note that, on RP2040, setting both pulls enables a "bus keep" function, +// i.e. weak pull to whatever is current high/low state of GPIO. +void gpio_set_pulls(uint gpio, bool up, bool down) { + invalid_params_if(GPIO, gpio >= NUM_BANK0_GPIOS); + hw_write_masked( + &padsbank0_hw->io[gpio], + (bool_to_bit(up) << PADS_BANK0_GPIO0_PUE_LSB) | (bool_to_bit(down) << PADS_BANK0_GPIO0_PDE_LSB), + PADS_BANK0_GPIO0_PUE_BITS | PADS_BANK0_GPIO0_PDE_BITS + ); +} + +// Direct override for per-GPIO IRQ signal +void gpio_set_irqover(uint gpio, uint value) { + invalid_params_if(GPIO, gpio >= NUM_BANK0_GPIOS); + hw_write_masked(&iobank0_hw->io[gpio].ctrl, + value << IO_BANK0_GPIO0_CTRL_IRQOVER_LSB, + IO_BANK0_GPIO0_CTRL_IRQOVER_BITS + ); +} + +// Direct overrides for pad controls +void gpio_set_inover(uint gpio, uint value) { + invalid_params_if(GPIO, gpio >= NUM_BANK0_GPIOS); + hw_write_masked(&iobank0_hw->io[gpio].ctrl, + value << IO_BANK0_GPIO0_CTRL_INOVER_LSB, + IO_BANK0_GPIO0_CTRL_INOVER_BITS + ); +} + +void gpio_set_outover(uint gpio, uint value) { + invalid_params_if(GPIO, gpio >= NUM_BANK0_GPIOS); + hw_write_masked(&iobank0_hw->io[gpio].ctrl, + value << IO_BANK0_GPIO0_CTRL_OUTOVER_LSB, + IO_BANK0_GPIO0_CTRL_OUTOVER_BITS + ); +} + +void gpio_set_oeover(uint gpio, uint value) { + invalid_params_if(GPIO, gpio >= NUM_BANK0_GPIOS); + hw_write_masked(&iobank0_hw->io[gpio].ctrl, + value << IO_BANK0_GPIO0_CTRL_OEOVER_LSB, + IO_BANK0_GPIO0_CTRL_OEOVER_BITS + ); +} + +void gpio_set_input_hysteresis_enabled(uint gpio, bool enabled) { + invalid_params_if(GPIO, gpio >= NUM_BANK0_GPIOS); + if (enabled) + hw_set_bits(&padsbank0_hw->io[gpio], PADS_BANK0_GPIO0_SCHMITT_BITS); + else + hw_clear_bits(&padsbank0_hw->io[gpio], PADS_BANK0_GPIO0_SCHMITT_BITS); +} + + +bool gpio_is_input_hysteresis_enabled(uint gpio) { + invalid_params_if(GPIO, gpio >= NUM_BANK0_GPIOS); + return (padsbank0_hw->io[gpio] & PADS_BANK0_GPIO0_SCHMITT_BITS) != 0; +} + +void gpio_set_slew_rate(uint gpio, enum gpio_slew_rate slew) { + invalid_params_if(GPIO, gpio >= NUM_BANK0_GPIOS); + hw_write_masked(&padsbank0_hw->io[gpio], + (uint)slew << PADS_BANK0_GPIO0_SLEWFAST_LSB, + PADS_BANK0_GPIO0_SLEWFAST_BITS + ); +} + +enum gpio_slew_rate gpio_get_slew_rate(uint gpio) { + invalid_params_if(GPIO, gpio >= NUM_BANK0_GPIOS); + return (enum gpio_slew_rate)((padsbank0_hw->io[gpio] + & PADS_BANK0_GPIO0_SLEWFAST_BITS) + >> PADS_BANK0_GPIO0_SLEWFAST_LSB); +} + + +// Enum encoding should match hardware encoding on RP2040 +static_assert(PADS_BANK0_GPIO0_DRIVE_VALUE_8MA == GPIO_DRIVE_STRENGTH_8MA, ""); +void gpio_set_drive_strength(uint gpio, enum gpio_drive_strength drive) { + invalid_params_if(GPIO, gpio >= NUM_BANK0_GPIOS); + hw_write_masked(&padsbank0_hw->io[gpio], + (uint)drive << PADS_BANK0_GPIO0_DRIVE_LSB, + PADS_BANK0_GPIO0_DRIVE_BITS + ); +} + +enum gpio_drive_strength gpio_get_drive_strength(uint gpio) { + invalid_params_if(GPIO, gpio >= NUM_BANK0_GPIOS); + return (enum gpio_drive_strength)((padsbank0_hw->io[gpio] + & PADS_BANK0_GPIO0_DRIVE_BITS) + >> PADS_BANK0_GPIO0_DRIVE_LSB); +} + +static void gpio_irq_handler(void) { + io_irq_ctrl_hw_t *irq_ctrl_base = get_core_num() ? + &iobank0_hw->proc1_irq_ctrl : &iobank0_hw->proc0_irq_ctrl; + for (uint gpio = 0; gpio < NUM_BANK0_GPIOS; gpio++) { + io_ro_32 *status_reg = &irq_ctrl_base->ints[gpio / 8]; + uint events = (*status_reg >> 4 * (gpio % 8)) & 0xf; + if (events) { + // TODO: If both cores care about this event then the second core won't get the irq? + gpio_acknowledge_irq(gpio, events); + gpio_irq_callback_t callback = _callbacks[get_core_num()]; + if (callback) { + callback(gpio, events); + } + } + } +} + +static void _gpio_set_irq_enabled(uint gpio, uint32_t events, bool enabled, io_irq_ctrl_hw_t *irq_ctrl_base) { + // Clear stale events which might cause immediate spurious handler entry + gpio_acknowledge_irq(gpio, events); + + io_rw_32 *en_reg = &irq_ctrl_base->inte[gpio / 8]; + events <<= 4 * (gpio % 8); + + if (enabled) + hw_set_bits(en_reg, events); + else + hw_clear_bits(en_reg, events); +} + +void gpio_set_irq_enabled(uint gpio, uint32_t events, bool enabled) { + // Separate mask/force/status per-core, so check which core called, and + // set the relevant IRQ controls. + io_irq_ctrl_hw_t *irq_ctrl_base = get_core_num() ? + &iobank0_hw->proc1_irq_ctrl : &iobank0_hw->proc0_irq_ctrl; + _gpio_set_irq_enabled(gpio, events, enabled, irq_ctrl_base); +} + +void gpio_set_irq_enabled_with_callback(uint gpio, uint32_t events, bool enabled, gpio_irq_callback_t callback) { + gpio_set_irq_enabled(gpio, events, enabled); + + // TODO: Do we want to support a callback per GPIO pin? + // Install IRQ handler + _callbacks[get_core_num()] = callback; + irq_set_exclusive_handler(IO_IRQ_BANK0, gpio_irq_handler); + irq_set_enabled(IO_IRQ_BANK0, true); +} + +void gpio_set_dormant_irq_enabled(uint gpio, uint32_t events, bool enabled) { + io_irq_ctrl_hw_t *irq_ctrl_base = &iobank0_hw->dormant_wake_irq_ctrl; + _gpio_set_irq_enabled(gpio, events, enabled, irq_ctrl_base); +} + +void gpio_acknowledge_irq(uint gpio, uint32_t events) { + iobank0_hw->intr[gpio / 8] = events << 4 * (gpio % 8); +} + +#define DEBUG_PIN_MASK (((1u << PICO_DEBUG_PIN_COUNT)-1) << PICO_DEBUG_PIN_BASE) +void gpio_debug_pins_init() { + gpio_init_mask(DEBUG_PIN_MASK); + gpio_set_dir_masked(DEBUG_PIN_MASK, DEBUG_PIN_MASK); +#if LIB_PICO_BINARY_INFO + bi_decl_if_func_used(bi_pin_mask_with_names(DEBUG_PIN_MASK, "Debug")); +#endif +} + +void gpio_set_input_enabled(uint gpio, bool enabled) { + if (enabled) + hw_set_bits(&padsbank0_hw->io[gpio], PADS_BANK0_GPIO0_IE_BITS); + else + hw_clear_bits(&padsbank0_hw->io[gpio], PADS_BANK0_GPIO0_IE_BITS); +} + +void gpio_init(uint gpio) { + sio_hw->gpio_oe_clr = 1ul << gpio; + sio_hw->gpio_clr = 1ul << gpio; + gpio_set_function(gpio, GPIO_FUNC_SIO); +} + +void gpio_init_mask(uint gpio_mask) { + for(uint i=0;i<32;i++) { + if (gpio_mask & 1) { + gpio_init(i); + } + gpio_mask >>= 1; + } +} + diff --git a/arkanoid/pico/hardware/gpio.h b/arkanoid/pico/hardware/gpio.h new file mode 100644 index 0000000..c2405d7 --- /dev/null +++ b/arkanoid/pico/hardware/gpio.h @@ -0,0 +1,656 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_GPIO_H_ +#define _HARDWARE_GPIO_H_ + +#include "../pico.h" +#include "structs/sio.h" +#include "structs/padsbank0.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_GPIO, Enable/disable assertions in the GPIO module, type=bool, default=0, group=hardware_gpio +#ifndef PARAM_ASSERTIONS_ENABLED_GPIO +#define PARAM_ASSERTIONS_ENABLED_GPIO 0 +#endif + +/** \file gpio.h + * \defgroup hardware_gpio hardware_gpio + * + * General Purpose Input/Output (GPIO) API + * + * RP2040 has 36 multi-functional General Purpose Input / Output (GPIO) pins, divided into two banks. In a typical use case, + * the pins in the QSPI bank (QSPI_SS, QSPI_SCLK and QSPI_SD0 to QSPI_SD3) are used to execute code from an external + * flash device, leaving the User bank (GPIO0 to GPIO29) for the programmer to use. All GPIOs support digital input and + * output, but GPIO26 to GPIO29 can also be used as inputs to the chip’s Analogue to Digital Converter (ADC). Each GPIO + * can be controlled directly by software running on the processors, or by a number of other functional blocks. + * + * The function allocated to each GPIO is selected by calling the \ref gpio_set_function function. \note Not all functions + * are available on all pins. + * + * Each GPIO can have one function selected at a time. Likewise, each peripheral input (e.g. UART0 RX) should only be selected on + * one _GPIO_ at a time. If the same peripheral input is connected to multiple GPIOs, the peripheral sees the logical OR of these + * GPIO inputs. Please refer to the datasheet for more information on GPIO function select. + * + * ### Function Select Table + * + * GPIO | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 + * -------|----------|-----------|----------|--------|-----|------|------|---------------|---- + * 0 | SPI0 RX | UART0 TX | I2C0 SDA | PWM0 A | SIO | PIO0 | PIO1 | | USB OVCUR DET + * 1 | SPI0 CSn | UART0 RX | I2C0 SCL | PWM0 B | SIO | PIO0 | PIO1 | | USB VBUS DET + * 2 | SPI0 SCK | UART0 CTS | I2C1 SDA | PWM1 A | SIO | PIO0 | PIO1 | | USB VBUS EN + * 3 | SPI0 TX | UART0 RTS | I2C1 SCL | PWM1 B | SIO | PIO0 | PIO1 | | USB OVCUR DET + * 4 | SPI0 RX | UART1 TX | I2C0 SDA | PWM2 A | SIO | PIO0 | PIO1 | | USB VBUS DET + * 5 | SPI0 CSn | UART1 RX | I2C0 SCL | PWM2 B | SIO | PIO0 | PIO1 | | USB VBUS EN + * 6 | SPI0 SCK | UART1 CTS | I2C1 SDA | PWM3 A | SIO | PIO0 | PIO1 | | USB OVCUR DET + * 7 | SPI0 TX | UART1 RTS | I2C1 SCL | PWM3 B | SIO | PIO0 | PIO1 | | USB VBUS DET + * 8 | SPI1 RX | UART1 TX | I2C0 SDA | PWM4 A | SIO | PIO0 | PIO1 | | USB VBUS EN + * 9 | SPI1 CSn | UART1 RX | I2C0 SCL | PWM4 B | SIO | PIO0 | PIO1 | | USB OVCUR DET + * 10 | SPI1 SCK | UART1 CTS | I2C1 SDA | PWM5 A | SIO | PIO0 | PIO1 | | USB VBUS DET + * 11 | SPI1 TX | UART1 RTS | I2C1 SCL | PWM5 B | SIO | PIO0 | PIO1 | | USB VBUS EN + * 12 | SPI1 RX | UART0 TX | I2C0 SDA | PWM6 A | SIO | PIO0 | PIO1 | | USB OVCUR DET + * 13 | SPI1 CSn | UART0 RX | I2C0 SCL | PWM6 B | SIO | PIO0 | PIO1 | | USB VBUS DET + * 14 | SPI1 SCK | UART0 CTS | I2C1 SDA | PWM7 A | SIO | PIO0 | PIO1 | | USB VBUS EN + * 15 | SPI1 TX | UART0 RTS | I2C1 SCL | PWM7 B | SIO | PIO0 | PIO1 | | USB OVCUR DET + * 16 | SPI0 RX | UART0 TX | I2C0 SDA | PWM0 A | SIO | PIO0 | PIO1 | | USB VBUS DET + * 17 | SPI0 CSn | UART0 RX | I2C0 SCL | PWM0 B | SIO | PIO0 | PIO1 | | USB VBUS EN + * 18 | SPI0 SCK | UART0 CTS | I2C1 SDA | PWM1 A | SIO | PIO0 | PIO1 | | USB OVCUR DET + * 19 | SPI0 TX | UART0 RTS | I2C1 SCL | PWM1 B | SIO | PIO0 | PIO1 | | USB VBUS DET + * 20 | SPI0 RX | UART1 TX | I2C0 SDA | PWM2 A | SIO | PIO0 | PIO1 | CLOCK GPIN0 | USB VBUS EN + * 21 | SPI0 CSn | UART1 RX | I2C0 SCL | PWM2 B | SIO | PIO0 | PIO1 | CLOCK GPOUT0 | USB OVCUR DET + * 22 | SPI0 SCK | UART1 CTS | I2C1 SDA | PWM3 A | SIO | PIO0 | PIO1 | CLOCK GPIN1 | USB VBUS DET + * 23 | SPI0 TX | UART1 RTS | I2C1 SCL | PWM3 B | SIO | PIO0 | PIO1 | CLOCK GPOUT1 | USB VBUS EN + * 24 | SPI1 RX | UART1 TX | I2C0 SDA | PWM4 A | SIO | PIO0 | PIO1 | CLOCK GPOUT2 | USB OVCUR DET + * 25 | SPI1 CSn | UART1 RX | I2C0 SCL | PWM4 B | SIO | PIO0 | PIO1 | CLOCK GPOUT3 | USB VBUS DET + * 26 | SPI1 SCK | UART1 CTS | I2C1 SDA | PWM5 A | SIO | PIO0 | PIO1 | | USB VBUS EN + * 27 | SPI1 TX | UART1 RTS | I2C1 SCL | PWM5 B | SIO | PIO0 | PIO1 | | USB OVCUR DET + * 28 | SPI1 RX | UART0 TX | I2C0 SDA | PWM6 A | SIO | PIO0 | PIO1 | | USB VBUS DET + * 29 | SPI1 CSn | UART0 RX | I2C0 SCL | PWM6 B | SIO | PIO0 | PIO1 | | USB VBUS EN + + */ + +/*! \brief GPIO function definitions for use with function select + * \ingroup hardware_gpio + * \brief GPIO function selectors + * + * Each GPIO can have one function selected at a time. Likewise, each peripheral input (e.g. UART0 RX) should only be + * selected on one GPIO at a time. If the same peripheral input is connected to multiple GPIOs, the peripheral sees the logical + * OR of these GPIO inputs. + * + * Please refer to the datsheet for more information on GPIO function selection. + */ +enum gpio_function { + GPIO_FUNC_XIP = 0, + GPIO_FUNC_SPI = 1, + GPIO_FUNC_UART = 2, + GPIO_FUNC_I2C = 3, + GPIO_FUNC_PWM = 4, + GPIO_FUNC_SIO = 5, + GPIO_FUNC_PIO0 = 6, + GPIO_FUNC_PIO1 = 7, + GPIO_FUNC_GPCK = 8, + GPIO_FUNC_USB = 9, + GPIO_FUNC_NULL = 0x1f, +}; + +#define GPIO_OUT 1 +#define GPIO_IN 0 + +/*! \brief GPIO Interrupt level definitions + * \ingroup hardware_gpio + * \brief GPIO Interrupt levels + * + * An interrupt can be generated for every GPIO pin in 4 scenarios: + * + * * Level High: the GPIO pin is a logical 1 + * * Level Low: the GPIO pin is a logical 0 + * * Edge High: the GPIO has transitioned from a logical 0 to a logical 1 + * * Edge Low: the GPIO has transitioned from a logical 1 to a logical 0 + * + * The level interrupts are not latched. This means that if the pin is a logical 1 and the level high interrupt is active, it will + * become inactive as soon as the pin changes to a logical 0. The edge interrupts are stored in the INTR register and can be + * cleared by writing to the INTR register. + */ +enum gpio_irq_level { + GPIO_IRQ_LEVEL_LOW = 0x1u, + GPIO_IRQ_LEVEL_HIGH = 0x2u, + GPIO_IRQ_EDGE_FALL = 0x4u, + GPIO_IRQ_EDGE_RISE = 0x8u, +}; + +/*! Callback function type for GPIO events + * \ingroup hardware_gpio + * + * \param gpio Which GPIO caused this interrupt + * \param events Which events caused this interrupt. See \ref gpio_set_irq_enabled for details. + * \sa gpio_set_irq_enabled_with_callback() + */ +typedef void (*gpio_irq_callback_t)(uint gpio, uint32_t events); + +enum gpio_override { + GPIO_OVERRIDE_NORMAL = 0, ///< peripheral signal selected via \ref gpio_set_function + GPIO_OVERRIDE_INVERT = 1, ///< invert peripheral signal selected via \ref gpio_set_function + GPIO_OVERRIDE_LOW = 2, ///< drive low/disable output + GPIO_OVERRIDE_HIGH = 3, ///< drive high/enable output +}; + +/*! \brief Slew rate limiting levels for GPIO outputs + * \ingroup hardware_gpio + * + * Slew rate limiting increases the minimum rise/fall time when a GPIO output + * is lightly loaded, which can help to reduce electromagnetic emissions. + * \sa gpio_set_slew_rate + */ +enum gpio_slew_rate { + GPIO_SLEW_RATE_SLOW = 0, ///< Slew rate limiting enabled + GPIO_SLEW_RATE_FAST = 1 ///< Slew rate limiting disabled +}; + +/*! \brief Drive strength levels for GPIO outputs + * \ingroup hardware_gpio + * + * Drive strength levels for GPIO outputs. + * \sa gpio_set_drive_strength + */ +enum gpio_drive_strength { + GPIO_DRIVE_STRENGTH_2MA = 0, ///< 2 mA nominal drive strength + GPIO_DRIVE_STRENGTH_4MA = 1, ///< 4 mA nominal drive strength + GPIO_DRIVE_STRENGTH_8MA = 2, ///< 8 mA nominal drive strength + GPIO_DRIVE_STRENGTH_12MA = 3 ///< 12 mA nominal drive strength +}; + +// ---------------------------------------------------------------------------- +// Pad Controls + IO Muxing +// ---------------------------------------------------------------------------- +// Declarations for gpio.c + +/*! \brief Select GPIO function + * \ingroup hardware_gpio + * + * \param gpio GPIO number + * \param fn Which GPIO function select to use from list \ref gpio_function + */ +void gpio_set_function(uint gpio, enum gpio_function fn); + +/*! \brief Determine current GPIO function + * \ingroup hardware_gpio + * + * \param gpio GPIO number + * \return Which GPIO function is currently selected from list \ref gpio_function + */ +enum gpio_function gpio_get_function(uint gpio); + +/*! \brief Select up and down pulls on specific GPIO + * \ingroup hardware_gpio + * + * \param gpio GPIO number + * \param up If true set a pull up on the GPIO + * \param down If true set a pull down on the GPIO + * + * \note On the RP2040, setting both pulls enables a "bus keep" function, + * i.e. a weak pull to whatever is current high/low state of GPIO. + */ +void gpio_set_pulls(uint gpio, bool up, bool down); + +/*! \brief Set specified GPIO to be pulled up. + * \ingroup hardware_gpio + * + * \param gpio GPIO number + */ +static inline void gpio_pull_up(uint gpio) { + gpio_set_pulls(gpio, true, false); +} + +/*! \brief Determine if the specified GPIO is pulled up. + * \ingroup hardware_gpio + * + * \param gpio GPIO number + * \return true if the GPIO is pulled up + */ +static inline bool gpio_is_pulled_up(uint gpio) { + return (padsbank0_hw->io[gpio] & PADS_BANK0_GPIO0_PUE_BITS) != 0; +} + +/*! \brief Set specified GPIO to be pulled down. + * \ingroup hardware_gpio + * + * \param gpio GPIO number + */ +static inline void gpio_pull_down(uint gpio) { + gpio_set_pulls(gpio, false, true); +} + +/*! \brief Determine if the specified GPIO is pulled down. + * \ingroup hardware_gpio + * + * \param gpio GPIO number + * \return true if the GPIO is pulled down + */ +static inline bool gpio_is_pulled_down(uint gpio) { + return (padsbank0_hw->io[gpio] & PADS_BANK0_GPIO0_PDE_BITS) != 0; +} + +/*! \brief Disable pulls on specified GPIO + * \ingroup hardware_gpio + * + * \param gpio GPIO number + */ +static inline void gpio_disable_pulls(uint gpio) { + gpio_set_pulls(gpio, false, false); +} + +/*! \brief Set GPIO IRQ override + * \ingroup hardware_gpio + * + * Optionally invert a GPIO IRQ signal, or drive it high or low + * + * \param gpio GPIO number + * \param value See \ref gpio_override + */ +void gpio_set_irqover(uint gpio, uint value); + +/*! \brief Set GPIO output override + * \ingroup hardware_gpio + * + * \param gpio GPIO number + * \param value See \ref gpio_override + */ +void gpio_set_outover(uint gpio, uint value); + +/*! \brief Select GPIO input override + * \ingroup hardware_gpio + * + * \param gpio GPIO number + * \param value See \ref gpio_override + */ +void gpio_set_inover(uint gpio, uint value); + +/*! \brief Select GPIO output enable override + * \ingroup hardware_gpio + * + * \param gpio GPIO number + * \param value See \ref gpio_override + */ +void gpio_set_oeover(uint gpio, uint value); + +/*! \brief Enable GPIO input + * \ingroup hardware_gpio + * + * \param gpio GPIO number + * \param enabled true to enable input on specified GPIO + */ +void gpio_set_input_enabled(uint gpio, bool enabled); + +/*! \brief Enable/disable GPIO input hysteresis (Schmitt trigger) + * \ingroup hardware_gpio + * + * Enable or disable the Schmitt trigger hysteresis on a given GPIO. This is + * enabled on all GPIOs by default. Disabling input hysteresis can lead to + * inconsistent readings when the input signal has very long rise or fall + * times, but slightly reduces the GPIO's input delay. + * + * \sa gpio_is_input_hysteresis_enabled + * \param gpio GPIO number + * \param enabled true to enable input hysteresis on specified GPIO + */ +void gpio_set_input_hysteresis_enabled(uint gpio, bool enabled); + +/*! \brief Determine whether input hysteresis is enabled on a specified GPIO + * \ingroup hardware_gpio + * + * \sa gpio_set_input_hysteresis_enabled + * \param gpio GPIO number + */ +bool gpio_is_input_hysteresis_enabled(uint gpio); + + +/*! \brief Set slew rate for a specified GPIO + * \ingroup hardware_gpio + * + * \sa gpio_get_slew_rate + * \param gpio GPIO number + * \param slew GPIO output slew rate + */ +void gpio_set_slew_rate(uint gpio, enum gpio_slew_rate slew); + +/*! \brief Determine current slew rate for a specified GPIO + * \ingroup hardware_gpio + * + * \sa gpio_set_slew_rate + * \param gpio GPIO number + * \return Current slew rate of that GPIO + */ +enum gpio_slew_rate gpio_get_slew_rate(uint gpio); + +/*! \brief Set drive strength for a specified GPIO + * \ingroup hardware_gpio + * + * \sa gpio_get_drive_strength + * \param gpio GPIO number + * \param drive GPIO output drive strength + */ +void gpio_set_drive_strength(uint gpio, enum gpio_drive_strength drive); + +/*! \brief Determine current slew rate for a specified GPIO + * \ingroup hardware_gpio + * + * \sa gpio_set_drive_strength + * \param gpio GPIO number + * \return Current drive strength of that GPIO + */ +enum gpio_drive_strength gpio_get_drive_strength(uint gpio); + +/*! \brief Enable or disable interrupts for specified GPIO + * \ingroup hardware_gpio + * + * \note The IO IRQs are independent per-processor. This configures IRQs for + * the processor that calls the function. + * + * \param gpio GPIO number + * \param events Which events will cause an interrupt + * \param enabled Enable or disable flag + * + * Events is a bitmask of the following: + * + * bit | interrupt + * ----|---------- + * 0 | Low level + * 1 | High level + * 2 | Edge low + * 3 | Edge high + */ +void gpio_set_irq_enabled(uint gpio, uint32_t events, bool enabled); + +/*! \brief Enable interrupts for specified GPIO + * \ingroup hardware_gpio + * + * \note The IO IRQs are independent per-processor. This configures IRQs for + * the processor that calls the function. + * + * \param gpio GPIO number + * \param events Which events will cause an interrupt. See \ref gpio_set_irq_enabled for details. + * \param enabled Enable or disable flag + * \param callback user function to call on GPIO irq. Note only one of these can be set per processor. + * + * \note Currently the GPIO parameter is ignored, and this callback will be called for any enabled GPIO IRQ on any pin. + * + */ +void gpio_set_irq_enabled_with_callback(uint gpio, uint32_t events, bool enabled, gpio_irq_callback_t callback); + +/*! \brief Enable dormant wake up interrupt for specified GPIO + * \ingroup hardware_gpio + * + * This configures IRQs to restart the XOSC or ROSC when they are + * disabled in dormant mode + * + * \param gpio GPIO number + * \param events Which events will cause an interrupt. See \ref gpio_set_irq_enabled for details. + * \param enabled Enable/disable flag + */ +void gpio_set_dormant_irq_enabled(uint gpio, uint32_t events, bool enabled); + +/*! \brief Acknowledge a GPIO interrupt + * \ingroup hardware_gpio + * + * \param gpio GPIO number + * \param events Bitmask of events to clear. See \ref gpio_set_irq_enabled for details. + * + */ +void gpio_acknowledge_irq(uint gpio, uint32_t events); + +/*! \brief Initialise a GPIO for (enabled I/O and set func to GPIO_FUNC_SIO) + * \ingroup hardware_gpio + * + * Clear the output enable (i.e. set to input). + * Clear any output value. + * + * \param gpio GPIO number + */ +void gpio_init(uint gpio); + +/*! \brief Initialise multiple GPIOs (enabled I/O and set func to GPIO_FUNC_SIO) + * \ingroup hardware_gpio + * + * Clear the output enable (i.e. set to input). + * Clear any output value. + * + * \param gpio_mask Mask with 1 bit per GPIO number to initialize + */ +void gpio_init_mask(uint gpio_mask); +// ---------------------------------------------------------------------------- +// Input +// ---------------------------------------------------------------------------- + +/*! \brief Get state of a single specified GPIO + * \ingroup hardware_gpio + * + * \param gpio GPIO number + * \return Current state of the GPIO. 0 for low, non-zero for high + */ +static inline bool gpio_get(uint gpio) { + return !!((1ul << gpio) & sio_hw->gpio_in); +} + +/*! \brief Get raw value of all GPIOs + * \ingroup hardware_gpio + * + * \return Bitmask of raw GPIO values, as bits 0-29 + */ +static inline uint32_t gpio_get_all(void) { + return sio_hw->gpio_in; +} + +// ---------------------------------------------------------------------------- +// Output +// ---------------------------------------------------------------------------- + +/*! \brief Drive high every GPIO appearing in mask + * \ingroup hardware_gpio + * + * \param mask Bitmask of GPIO values to set, as bits 0-29 + */ +static inline void gpio_set_mask(uint32_t mask) { + sio_hw->gpio_set = mask; +} + +/*! \brief Drive low every GPIO appearing in mask + * \ingroup hardware_gpio + * + * \param mask Bitmask of GPIO values to clear, as bits 0-29 + */ +static inline void gpio_clr_mask(uint32_t mask) { + sio_hw->gpio_clr = mask; +} + +/*! \brief Toggle every GPIO appearing in mask + * \ingroup hardware_gpio + * + * \param mask Bitmask of GPIO values to toggle, as bits 0-29 + */ +static inline void gpio_xor_mask(uint32_t mask) { + sio_hw->gpio_togl = mask; +} + +/*! \brief Drive GPIO high/low depending on parameters + * \ingroup hardware_gpio + * + * \param mask Bitmask of GPIO values to change, as bits 0-29 + * \param value Value to set + * + * For each 1 bit in \p mask, drive that pin to the value given by + * corresponding bit in \p value, leaving other pins unchanged. + * Since this uses the TOGL alias, it is concurrency-safe with e.g. an IRQ + * bashing different pins from the same core. + */ +static inline void gpio_put_masked(uint32_t mask, uint32_t value) { + sio_hw->gpio_togl = (sio_hw->gpio_out ^ value) & mask; +} + +/*! \brief Drive all pins simultaneously + * \ingroup hardware_gpio + * + * \param value Bitmask of GPIO values to change, as bits 0-29 + */ +static inline void gpio_put_all(uint32_t value) { + sio_hw->gpio_out = value; +} + +/*! \brief Drive a single GPIO high/low + * \ingroup hardware_gpio + * + * \param gpio GPIO number + * \param value If false clear the GPIO, otherwise set it. + */ +static inline void gpio_put(uint gpio, bool value) { + uint32_t mask = 1ul << gpio; + if (value) + gpio_set_mask(mask); + else + gpio_clr_mask(mask); +} + +/*! \brief Determine whether a GPIO is currently driven high or low + * \ingroup hardware_gpio + * + * This function returns the high/low output level most recently assigned to a + * GPIO via gpio_put() or similar. This is the value that is presented outward + * to the IO muxing, *not* the input level back from the pad (which can be + * read using gpio_get()). + * + * To avoid races, this function must not be used for read-modify-write + * sequences when driving GPIOs -- instead functions like gpio_put() should be + * used to atomically update GPIOs. This accessor is intended for debug use + * only. + * + * \param gpio GPIO number + * \return true if the GPIO output level is high, false if low. + */ +static inline bool gpio_get_out_level(uint gpio) { + return !!(sio_hw->gpio_out & (1u << gpio)); +} + +// ---------------------------------------------------------------------------- +// Direction +// ---------------------------------------------------------------------------- + +/*! \brief Set a number of GPIOs to output + * \ingroup hardware_gpio + * + * Switch all GPIOs in "mask" to output + * + * \param mask Bitmask of GPIO to set to output, as bits 0-29 + */ +static inline void gpio_set_dir_out_masked(uint32_t mask) { + sio_hw->gpio_oe_set = mask; +} + +/*! \brief Set a number of GPIOs to input + * \ingroup hardware_gpio + * + * \param mask Bitmask of GPIO to set to input, as bits 0-29 + */ +static inline void gpio_set_dir_in_masked(uint32_t mask) { + sio_hw->gpio_oe_clr = mask; +} + +/*! \brief Set multiple GPIO directions + * \ingroup hardware_gpio + * + * \param mask Bitmask of GPIO to set to input, as bits 0-29 + * \param value Values to set + * + * For each 1 bit in "mask", switch that pin to the direction given by + * corresponding bit in "value", leaving other pins unchanged. + * E.g. gpio_set_dir_masked(0x3, 0x2); -> set pin 0 to input, pin 1 to output, + * simultaneously. + */ +static inline void gpio_set_dir_masked(uint32_t mask, uint32_t value) { + sio_hw->gpio_oe_togl = (sio_hw->gpio_oe ^ value) & mask; +} + +/*! \brief Set direction of all pins simultaneously. + * \ingroup hardware_gpio + * + * \param values individual settings for each gpio; for GPIO N, bit N is 1 for out, 0 for in + */ +static inline void gpio_set_dir_all_bits(uint32_t values) { + sio_hw->gpio_oe = values; +} + +/*! \brief Set a single GPIO direction + * \ingroup hardware_gpio + * + * \param gpio GPIO number + * \param out true for out, false for in + */ +static inline void gpio_set_dir(uint gpio, bool out) { + uint32_t mask = 1ul << gpio; + if (out) + gpio_set_dir_out_masked(mask); + else + gpio_set_dir_in_masked(mask); +} + +/*! \brief Check if a specific GPIO direction is OUT + * \ingroup hardware_gpio + * + * \param gpio GPIO number + * \return true if the direction for the pin is OUT + */ +static inline bool gpio_is_dir_out(uint gpio) { + return !!(sio_hw->gpio_oe & (1u << (gpio))); +} + +/*! \brief Get a specific GPIO direction + * \ingroup hardware_gpio + * + * \param gpio GPIO number + * \return 1 for out, 0 for in + */ +static inline uint gpio_get_dir(uint gpio) { + return gpio_is_dir_out(gpio); // note GPIO_OUT is 1/true and GPIO_IN is 0/false anyway +} + +extern void gpio_debug_pins_init(void); + +#ifdef __cplusplus +} +#endif + + +// PICO_CONFIG: PICO_DEBUG_PIN_BASE, First pin to use for debug output (if enabled), min=0, max=28, default=19, group=hardware_gpio +#ifndef PICO_DEBUG_PIN_BASE +#define PICO_DEBUG_PIN_BASE 19u +#endif + +// PICO_CONFIG: PICO_DEBUG_PIN_COUNT, Number of pins to use for debug output (if enabled), min=1, max=28, default=3, group=hardware_gpio +#ifndef PICO_DEBUG_PIN_COUNT +#define PICO_DEBUG_PIN_COUNT 3u +#endif + +#ifndef __cplusplus +// note these two macros may only be used once per and only apply per compilation unit (hence the CU_) +#define CU_REGISTER_DEBUG_PINS(...) enum __unused DEBUG_PIN_TYPE { _none = 0, __VA_ARGS__ }; static enum DEBUG_PIN_TYPE __selected_debug_pins; +#define CU_SELECT_DEBUG_PINS(x) static enum DEBUG_PIN_TYPE __selected_debug_pins = (x); +#define DEBUG_PINS_ENABLED(p) (__selected_debug_pins == (p)) +#else +#define CU_REGISTER_DEBUG_PINS(p...) \ + enum DEBUG_PIN_TYPE { _none = 0, p }; \ + template <enum DEBUG_PIN_TYPE> class __debug_pin_settings { \ + public: \ + static inline bool enabled() { return false; } \ + }; +#define CU_SELECT_DEBUG_PINS(x) template<> inline bool __debug_pin_settings<x>::enabled() { return true; }; +#define DEBUG_PINS_ENABLED(p) (__debug_pin_settings<p>::enabled()) +#endif +#define DEBUG_PINS_SET(p, v) if (DEBUG_PINS_ENABLED(p)) gpio_set_mask((unsigned)(v)<<PICO_DEBUG_PIN_BASE) +#define DEBUG_PINS_CLR(p, v) if (DEBUG_PINS_ENABLED(p)) gpio_clr_mask((unsigned)(v)<<PICO_DEBUG_PIN_BASE) +#define DEBUG_PINS_XOR(p, v) if (DEBUG_PINS_ENABLED(p)) gpio_xor_mask((unsigned)(v)<<PICO_DEBUG_PIN_BASE) + +#endif // _GPIO_H_ diff --git a/arkanoid/pico/hardware/i2c.c b/arkanoid/pico/hardware/i2c.c new file mode 100644 index 0000000..ee0e779 --- /dev/null +++ b/arkanoid/pico/hardware/i2c.c @@ -0,0 +1,337 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "i2c.h" +#include "resets.h" +#include "clocks.h" +#include "../timeout_helper.h" + +check_hw_layout(i2c_hw_t, enable, I2C_IC_ENABLE_OFFSET); +check_hw_layout(i2c_hw_t, clr_restart_det, I2C_IC_CLR_RESTART_DET_OFFSET); + +i2c_inst_t i2c0_inst = {i2c0_hw, false}; +i2c_inst_t i2c1_inst = {i2c1_hw, false}; + +static inline void i2c_reset(i2c_inst_t *i2c) { + invalid_params_if(I2C, i2c != i2c0 && i2c != i2c1); + reset_block(i2c == i2c0 ? RESETS_RESET_I2C0_BITS : RESETS_RESET_I2C1_BITS); +} + +static inline void i2c_unreset(i2c_inst_t *i2c) { + invalid_params_if(I2C, i2c != i2c0 && i2c != i2c1); + unreset_block_wait(i2c == i2c0 ? RESETS_RESET_I2C0_BITS : RESETS_RESET_I2C1_BITS); +} + +// Addresses of the form 000 0xxx or 111 1xxx are reserved. No slave should +// have these addresses. +static inline bool i2c_reserved_addr(uint8_t addr) { + return (addr & 0x78) == 0 || (addr & 0x78) == 0x78; +} + +uint i2c_init(i2c_inst_t *i2c, uint baudrate) { + i2c_reset(i2c); + i2c_unreset(i2c); + i2c->restart_on_next = false; + + i2c->hw->enable = 0; + + // Configure as a fast-mode master with RepStart support, 7-bit addresses + i2c->hw->con = + I2C_IC_CON_SPEED_VALUE_FAST << I2C_IC_CON_SPEED_LSB | + I2C_IC_CON_MASTER_MODE_BITS | + I2C_IC_CON_IC_SLAVE_DISABLE_BITS | + I2C_IC_CON_IC_RESTART_EN_BITS | + I2C_IC_CON_TX_EMPTY_CTRL_BITS; + + // Set FIFO watermarks to 1 to make things simpler. This is encoded by a register value of 0. + i2c->hw->tx_tl = 0; + i2c->hw->rx_tl = 0; + + // Always enable the DREQ signalling -- harmless if DMA isn't listening + i2c->hw->dma_cr = I2C_IC_DMA_CR_TDMAE_BITS | I2C_IC_DMA_CR_RDMAE_BITS; + + // Re-sets i2c->hw->enable upon returning: + return i2c_set_baudrate(i2c, baudrate); +} + +void i2c_deinit(i2c_inst_t *i2c) { + i2c_reset(i2c); +} + +uint i2c_set_baudrate(i2c_inst_t *i2c, uint baudrate) { + invalid_params_if(I2C, baudrate == 0); + // I2C is synchronous design that runs from clk_sys + uint freq_in = clock_get_hz(clk_sys); + + // TODO there are some subtleties to I2C timing which we are completely ignoring here + uint period = (freq_in + baudrate / 2) / baudrate; + uint lcnt = period * 3 / 5; // oof this one hurts + uint hcnt = period - lcnt; + // Check for out-of-range divisors: + invalid_params_if(I2C, hcnt > I2C_IC_FS_SCL_HCNT_IC_FS_SCL_HCNT_BITS); + invalid_params_if(I2C, lcnt > I2C_IC_FS_SCL_LCNT_IC_FS_SCL_LCNT_BITS); + invalid_params_if(I2C, hcnt < 8); + invalid_params_if(I2C, lcnt < 8); + + // Per I2C-bus specification a device in standard or fast mode must + // internally provide a hold time of at least 300ns for the SDA signal to + // bridge the undefined region of the falling edge of SCL. A smaller hold + // time of 120ns is used for fast mode plus. + uint sda_tx_hold_count; + if (baudrate < 1000000) { + // sda_tx_hold_count = freq_in [cycles/s] * 300ns * (1s / 1e9ns) + // Reduce 300/1e9 to 3/1e7 to avoid numbers that don't fit in uint. + // Add 1 to avoid division truncation. + sda_tx_hold_count = ((freq_in * 3) / 10000000) + 1; + } else { + // sda_tx_hold_count = freq_in [cycles/s] * 120ns * (1s / 1e9ns) + // Reduce 120/1e9 to 3/25e6 to avoid numbers that don't fit in uint. + // Add 1 to avoid division truncation. + sda_tx_hold_count = ((freq_in * 3) / 25000000) + 1; + } + assert(sda_tx_hold_count <= lcnt - 2); + + i2c->hw->enable = 0; + // Always use "fast" mode (<= 400 kHz, works fine for standard mode too) + hw_write_masked(&i2c->hw->con, + I2C_IC_CON_SPEED_VALUE_FAST << I2C_IC_CON_SPEED_LSB, + I2C_IC_CON_SPEED_BITS + ); + i2c->hw->fs_scl_hcnt = hcnt; + i2c->hw->fs_scl_lcnt = lcnt; + i2c->hw->fs_spklen = lcnt < 16 ? 1 : lcnt / 16; + hw_write_masked(&i2c->hw->sda_hold, + sda_tx_hold_count << I2C_IC_SDA_HOLD_IC_SDA_TX_HOLD_LSB, + I2C_IC_SDA_HOLD_IC_SDA_TX_HOLD_BITS); + + i2c->hw->enable = 1; + return freq_in / period; +} + +void i2c_set_slave_mode(i2c_inst_t *i2c, bool slave, uint8_t addr) { + invalid_params_if(I2C, addr >= 0x80); // 7-bit addresses + invalid_params_if(I2C, i2c_reserved_addr(addr)); + i2c->hw->enable = 0; + uint32_t ctrl_set_if_master = I2C_IC_CON_MASTER_MODE_BITS | I2C_IC_CON_IC_SLAVE_DISABLE_BITS; + uint32_t ctrl_set_if_slave = I2C_IC_CON_RX_FIFO_FULL_HLD_CTRL_BITS; + if (slave) { + hw_write_masked(&i2c->hw->con, + ctrl_set_if_slave, + ctrl_set_if_master | ctrl_set_if_slave + ); + i2c->hw->sar = addr; + } else { + hw_write_masked(&i2c->hw->con, + ctrl_set_if_master, + ctrl_set_if_master | ctrl_set_if_slave + ); + } + i2c->hw->enable = 1; +} + +static int i2c_write_blocking_internal(i2c_inst_t *i2c, uint8_t addr, const uint8_t *src, size_t len, bool nostop, + check_timeout_fn timeout_check, struct timeout_state *ts) { + invalid_params_if(I2C, addr >= 0x80); // 7-bit addresses + invalid_params_if(I2C, i2c_reserved_addr(addr)); + // Synopsys hw accepts start/stop flags alongside data items in the same + // FIFO word, so no 0 byte transfers. + invalid_params_if(I2C, len == 0); + invalid_params_if(I2C, ((int)len) < 0); + + i2c->hw->enable = 0; + i2c->hw->tar = addr; + i2c->hw->enable = 1; + + bool abort = false; + bool timeout = false; + + uint32_t abort_reason = 0; + int byte_ctr; + + int ilen = (int)len; + for (byte_ctr = 0; byte_ctr < ilen; ++byte_ctr) { + bool first = byte_ctr == 0; + bool last = byte_ctr == ilen - 1; + + i2c->hw->data_cmd = + bool_to_bit(first && i2c->restart_on_next) << I2C_IC_DATA_CMD_RESTART_LSB | + bool_to_bit(last && !nostop) << I2C_IC_DATA_CMD_STOP_LSB | + *src++; + + // Wait until the transmission of the address/data from the internal + // shift register has completed. For this to function correctly, the + // TX_EMPTY_CTRL flag in IC_CON must be set. The TX_EMPTY_CTRL flag + // was set in i2c_init. + do { + if (timeout_check) { + timeout = timeout_check(ts); + abort |= timeout; + } + tight_loop_contents(); + } while (!timeout && !(i2c->hw->raw_intr_stat & I2C_IC_RAW_INTR_STAT_TX_EMPTY_BITS)); + + // If there was a timeout, don't attempt to do anything else. + if (!timeout) { + abort_reason = i2c->hw->tx_abrt_source; + if (abort_reason) { + // Note clearing the abort flag also clears the reason, and + // this instance of flag is clear-on-read! Note also the + // IC_CLR_TX_ABRT register always reads as 0. + i2c->hw->clr_tx_abrt; + abort = true; + } + + if (abort || (last && !nostop)) { + // If the transaction was aborted or if it completed + // successfully wait until the STOP condition has occured. + + // TODO Could there be an abort while waiting for the STOP + // condition here? If so, additional code would be needed here + // to take care of the abort. + do { + if (timeout_check) { + timeout = timeout_check(ts); + abort |= timeout; + } + tight_loop_contents(); + } while (!timeout && !(i2c->hw->raw_intr_stat & I2C_IC_RAW_INTR_STAT_STOP_DET_BITS)); + + // If there was a timeout, don't attempt to do anything else. + if (!timeout) { + i2c->hw->clr_stop_det; + } + } + } + + // Note the hardware issues a STOP automatically on an abort condition. + // Note also the hardware clears RX FIFO as well as TX on abort, + // because we set hwparam IC_AVOID_RX_FIFO_FLUSH_ON_TX_ABRT to 0. + if (abort) + break; + } + + int rval; + + // A lot of things could have just happened due to the ingenious and + // creative design of I2C. Try to figure things out. + if (abort) { + if (timeout) + rval = PICO_ERROR_TIMEOUT; + else if (!abort_reason || abort_reason & I2C_IC_TX_ABRT_SOURCE_ABRT_7B_ADDR_NOACK_BITS) { + // No reported errors - seems to happen if there is nothing connected to the bus. + // Address byte not acknowledged + rval = PICO_ERROR_GENERIC; + } else if (abort_reason & I2C_IC_TX_ABRT_SOURCE_ABRT_TXDATA_NOACK_BITS) { + // Address acknowledged, some data not acknowledged + rval = byte_ctr; + } else { + //panic("Unknown abort from I2C instance @%08x: %08x\n", (uint32_t) i2c->hw, abort_reason); + rval = PICO_ERROR_GENERIC; + } + } else { + rval = byte_ctr; + } + + // nostop means we are now at the end of a *message* but not the end of a *transfer* + i2c->restart_on_next = nostop; + return rval; +} + +int i2c_write_blocking(i2c_inst_t *i2c, uint8_t addr, const uint8_t *src, size_t len, bool nostop) { + return i2c_write_blocking_internal(i2c, addr, src, len, nostop, NULL, NULL); +} + +int i2c_write_blocking_until(i2c_inst_t *i2c, uint8_t addr, const uint8_t *src, size_t len, bool nostop, + absolute_time_t until) { + timeout_state_t ts; + return i2c_write_blocking_internal(i2c, addr, src, len, nostop, init_single_timeout_until(&ts, until), &ts); +} + +int i2c_write_timeout_per_char_us(i2c_inst_t *i2c, uint8_t addr, const uint8_t *src, size_t len, bool nostop, + uint timeout_per_char_us) { + timeout_state_t ts; + return i2c_write_blocking_internal(i2c, addr, src, len, nostop, + init_per_iteration_timeout_us(&ts, timeout_per_char_us), &ts); +} + +static int i2c_read_blocking_internal(i2c_inst_t *i2c, uint8_t addr, uint8_t *dst, size_t len, bool nostop, + check_timeout_fn timeout_check, timeout_state_t *ts) { + invalid_params_if(I2C, addr >= 0x80); // 7-bit addresses + invalid_params_if(I2C, i2c_reserved_addr(addr)); + invalid_params_if(I2C, len == 0); + invalid_params_if(I2C, ((int)len) < 0); + + i2c->hw->enable = 0; + i2c->hw->tar = addr; + i2c->hw->enable = 1; + + bool abort = false; + bool timeout = false; + uint32_t abort_reason; + int byte_ctr; + int ilen = (int)len; + for (byte_ctr = 0; byte_ctr < ilen; ++byte_ctr) { + bool first = byte_ctr == 0; + bool last = byte_ctr == ilen - 1; + while (!i2c_get_write_available(i2c)) + tight_loop_contents(); + + i2c->hw->data_cmd = + bool_to_bit(first && i2c->restart_on_next) << I2C_IC_DATA_CMD_RESTART_LSB | + bool_to_bit(last && !nostop) << I2C_IC_DATA_CMD_STOP_LSB | + I2C_IC_DATA_CMD_CMD_BITS; // -> 1 for read + + do { + abort_reason = i2c->hw->tx_abrt_source; + abort = (bool) i2c->hw->clr_tx_abrt; + if (timeout_check) { + timeout = timeout_check(ts); + abort |= timeout; + } + } while (!abort && !i2c_get_read_available(i2c)); + + if (abort) + break; + + *dst++ = (uint8_t) i2c->hw->data_cmd; + } + + int rval; + + if (abort) { + if (timeout) + rval = PICO_ERROR_TIMEOUT; + else if (!abort_reason || abort_reason & I2C_IC_TX_ABRT_SOURCE_ABRT_7B_ADDR_NOACK_BITS) { + // No reported errors - seems to happen if there is nothing connected to the bus. + // Address byte not acknowledged + rval = PICO_ERROR_GENERIC; + } else { +// panic("Unknown abort from I2C instance @%08x: %08x\n", (uint32_t) i2c->hw, abort_reason); + rval = PICO_ERROR_GENERIC; + } + } else { + rval = byte_ctr; + } + + i2c->restart_on_next = nostop; + return rval; +} + +int i2c_read_blocking(i2c_inst_t *i2c, uint8_t addr, uint8_t *dst, size_t len, bool nostop) { + return i2c_read_blocking_internal(i2c, addr, dst, len, nostop, NULL, NULL); +} + +int i2c_read_blocking_until(i2c_inst_t *i2c, uint8_t addr, uint8_t *dst, size_t len, bool nostop, absolute_time_t until) { + timeout_state_t ts; + return i2c_read_blocking_internal(i2c, addr, dst, len, nostop, init_single_timeout_until(&ts, until), &ts); +} + +int i2c_read_timeout_per_char_us(i2c_inst_t *i2c, uint8_t addr, uint8_t *dst, size_t len, bool nostop, + uint timeout_per_char_us) { + timeout_state_t ts; + return i2c_read_blocking_internal(i2c, addr, dst, len, nostop, + init_per_iteration_timeout_us(&ts, timeout_per_char_us), &ts); +} diff --git a/arkanoid/pico/hardware/i2c.h b/arkanoid/pico/hardware/i2c.h new file mode 100644 index 0000000..a8c0cbd --- /dev/null +++ b/arkanoid/pico/hardware/i2c.h @@ -0,0 +1,332 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_I2C_H +#define _HARDWARE_I2C_H + +#include "../pico.h" +#include "../time.h" +#include "structs/i2c.h" +#include "regs/dreq.h" + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_I2C, Enable/disable assertions in the I2C module, type=bool, default=0, group=hardware_i2c +#ifndef PARAM_ASSERTIONS_ENABLED_I2C +#define PARAM_ASSERTIONS_ENABLED_I2C 0 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file i2c.h + * \defgroup hardware_i2c hardware_i2c + * + * I2C Controller API + * + * The I2C bus is a two-wire serial interface, consisting of a serial data line SDA and a serial clock SCL. These wires carry + * information between the devices connected to the bus. Each device is recognized by a unique 7-bit address and can operate as + * either a “transmitter” or “receiver”, depending on the function of the device. Devices can also be considered as masters or + * slaves when performing data transfers. A master is a device that initiates a data transfer on the bus and generates the + * clock signals to permit that transfer. The first byte in the data transfer always contains the 7-bit address and + * a read/write bit in the LSB position. This API takes care of toggling the read/write bit. After this, any device addressed + * is considered a slave. + * + * This API allows the controller to be set up as a master or a slave using the \ref i2c_set_slave_mode function. + * + * The external pins of each controller are connected to GPIO pins as defined in the GPIO muxing table in the datasheet. The muxing options + * give some IO flexibility, but each controller external pin should be connected to only one GPIO. + * + * Note that the controller does NOT support High speed mode or Ultra-fast speed mode, the fastest operation being fast mode plus + * at up to 1000Kb/s. + * + * See the datasheet for more information on the I2C controller and its usage. + * + * \subsection i2c_example Example + * \addtogroup hardware_i2c + * \include bus_scan.c + */ + +typedef struct i2c_inst i2c_inst_t; + +// PICO_CONFIG: PICO_DEFAULT_I2C, Define the default I2C for a board, min=0, max=1, group=hardware_i2c +// PICO_CONFIG: PICO_DEFAULT_I2C_SDA_PIN, Define the default I2C SDA pin, min=0, max=29, group=hardware_i2c +// PICO_CONFIG: PICO_DEFAULT_I2C_SCL_PIN, Define the default I2C SCL pin, min=0, max=29, group=hardware_i2c + +/** The I2C identifiers for use in I2C functions. + * + * e.g. i2c_init(i2c0, 48000) + * + * \ingroup hardware_i2c + * @{ + */ +extern i2c_inst_t i2c0_inst; +extern i2c_inst_t i2c1_inst; + +#define i2c0 (&i2c0_inst) ///< Identifier for I2C HW Block 0 +#define i2c1 (&i2c1_inst) ///< Identifier for I2C HW Block 1 + +#if !defined(PICO_DEFAULT_I2C_INSTANCE) && defined(PICO_DEFAULT_I2C) +#define PICO_DEFAULT_I2C_INSTANCE (__CONCAT(i2c,PICO_DEFAULT_I2C)) +#endif + +#ifdef PICO_DEFAULT_I2C_INSTANCE +#define i2c_default PICO_DEFAULT_I2C_INSTANCE +#endif + +/** @} */ + +// ---------------------------------------------------------------------------- +// Setup + +/*! \brief Initialise the I2C HW block + * \ingroup hardware_i2c + * + * Put the I2C hardware into a known state, and enable it. Must be called + * before other functions. By default, the I2C is configured to operate as a + * master. + * + * The I2C bus frequency is set as close as possible to requested, and + * the return actual rate set is returned + * + * \param i2c Either \ref i2c0 or \ref i2c1 + * \param baudrate Baudrate in Hz (e.g. 100kHz is 100000) + * \return Actual set baudrate + */ +uint i2c_init(i2c_inst_t *i2c, uint baudrate); + +/*! \brief Disable the I2C HW block + * \ingroup hardware_i2c + * + * \param i2c Either \ref i2c0 or \ref i2c1 + * + * Disable the I2C again if it is no longer used. Must be reinitialised before + * being used again. + */ +void i2c_deinit(i2c_inst_t *i2c); + +/*! \brief Set I2C baudrate + * \ingroup hardware_i2c + * + * Set I2C bus frequency as close as possible to requested, and return actual + * rate set. + * Baudrate may not be as exactly requested due to clocking limitations. + * + * \param i2c Either \ref i2c0 or \ref i2c1 + * \param baudrate Baudrate in Hz (e.g. 100kHz is 100000) + * \return Actual set baudrate + */ +uint i2c_set_baudrate(i2c_inst_t *i2c, uint baudrate); + +/*! \brief Set I2C port to slave mode + * \ingroup hardware_i2c + * + * \param i2c Either \ref i2c0 or \ref i2c1 + * \param slave true to use slave mode, false to use master mode + * \param addr If \p slave is true, set the slave address to this value + */ +void i2c_set_slave_mode(i2c_inst_t *i2c, bool slave, uint8_t addr); + +// ---------------------------------------------------------------------------- +// Generic input/output + +struct i2c_inst { + i2c_hw_t *hw; + bool restart_on_next; +}; + +/*! \brief Convert I2C instance to hardware instance number + * \ingroup hardware_i2c + * + * \param i2c I2C instance + * \return Number of I2C, 0 or 1. + */ +static inline uint i2c_hw_index(i2c_inst_t *i2c) { + invalid_params_if(I2C, i2c != i2c0 && i2c != i2c1); + return i2c == i2c1 ? 1 : 0; +} + +static inline i2c_hw_t *i2c_get_hw(i2c_inst_t *i2c) { + i2c_hw_index(i2c); // check it is a hw i2c + return i2c->hw; +} + +/*! \brief Attempt to write specified number of bytes to address, blocking until the specified absolute time is reached. + * \ingroup hardware_i2c + * + * \param i2c Either \ref i2c0 or \ref i2c1 + * \param addr 7-bit address of device to write to + * \param src Pointer to data to send + * \param len Length of data in bytes to send + * \param nostop If true, master retains control of the bus at the end of the transfer (no Stop is issued), + * and the next transfer will begin with a Restart rather than a Start. + * \param until The absolute time that the block will wait until the entire transaction is complete. Note, an individual timeout of + * this value divided by the length of data is applied for each byte transfer, so if the first or subsequent + * bytes fails to transfer within that sub timeout, the function will return with an error. + * + * \return Number of bytes written, or PICO_ERROR_GENERIC if address not acknowledged, no device present, or PICO_ERROR_TIMEOUT if a timeout occurred. + */ +int i2c_write_blocking_until(i2c_inst_t *i2c, uint8_t addr, const uint8_t *src, size_t len, bool nostop, absolute_time_t until); + +/*! \brief Attempt to read specified number of bytes from address, blocking until the specified absolute time is reached. + * \ingroup hardware_i2c + * + * \param i2c Either \ref i2c0 or \ref i2c1 + * \param addr 7-bit address of device to read from + * \param dst Pointer to buffer to receive data + * \param len Length of data in bytes to receive + * \param nostop If true, master retains control of the bus at the end of the transfer (no Stop is issued), + * and the next transfer will begin with a Restart rather than a Start. + * \param until The absolute time that the block will wait until the entire transaction is complete. + * \return Number of bytes read, or PICO_ERROR_GENERIC if address not acknowledged, no device present, or PICO_ERROR_TIMEOUT if a timeout occurred. + */ +int i2c_read_blocking_until(i2c_inst_t *i2c, uint8_t addr, uint8_t *dst, size_t len, bool nostop, absolute_time_t until); + +/*! \brief Attempt to write specified number of bytes to address, with timeout + * \ingroup hardware_i2c + * + * \param i2c Either \ref i2c0 or \ref i2c1 + * \param addr 7-bit address of device to write to + * \param src Pointer to data to send + * \param len Length of data in bytes to send + * \param nostop If true, master retains control of the bus at the end of the transfer (no Stop is issued), + * and the next transfer will begin with a Restart rather than a Start. + * \param timeout_us The time that the function will wait for the entire transaction to complete. Note, an individual timeout of + * this value divided by the length of data is applied for each byte transfer, so if the first or subsequent + * bytes fails to transfer within that sub timeout, the function will return with an error. + * + * \return Number of bytes written, or PICO_ERROR_GENERIC if address not acknowledged, no device present, or PICO_ERROR_TIMEOUT if a timeout occurred. + */ +static inline int i2c_write_timeout_us(i2c_inst_t *i2c, uint8_t addr, const uint8_t *src, size_t len, bool nostop, uint timeout_us) { + absolute_time_t t = make_timeout_time_us(timeout_us); + return i2c_write_blocking_until(i2c, addr, src, len, nostop, t); +} + +int i2c_write_timeout_per_char_us(i2c_inst_t *i2c, uint8_t addr, const uint8_t *src, size_t len, bool nostop, uint timeout_per_char_us); + +/*! \brief Attempt to read specified number of bytes from address, with timeout + * \ingroup hardware_i2c + * + * \param i2c Either \ref i2c0 or \ref i2c1 + * \param addr 7-bit address of device to read from + * \param dst Pointer to buffer to receive data + * \param len Length of data in bytes to receive + * \param nostop If true, master retains control of the bus at the end of the transfer (no Stop is issued), + * and the next transfer will begin with a Restart rather than a Start. + * \param timeout_us The time that the function will wait for the entire transaction to complete + * \return Number of bytes read, or PICO_ERROR_GENERIC if address not acknowledged, no device present, or PICO_ERROR_TIMEOUT if a timeout occurred. + */ +static inline int i2c_read_timeout_us(i2c_inst_t *i2c, uint8_t addr, uint8_t *dst, size_t len, bool nostop, uint timeout_us) { + absolute_time_t t = make_timeout_time_us(timeout_us); + return i2c_read_blocking_until(i2c, addr, dst, len, nostop, t); +} + +int i2c_read_timeout_per_char_us(i2c_inst_t *i2c, uint8_t addr, uint8_t *dst, size_t len, bool nostop, uint timeout_per_char_us); + +/*! \brief Attempt to write specified number of bytes to address, blocking + * \ingroup hardware_i2c + * + * \param i2c Either \ref i2c0 or \ref i2c1 + * \param addr 7-bit address of device to write to + * \param src Pointer to data to send + * \param len Length of data in bytes to send + * \param nostop If true, master retains control of the bus at the end of the transfer (no Stop is issued), + * and the next transfer will begin with a Restart rather than a Start. + * \return Number of bytes written, or PICO_ERROR_GENERIC if address not acknowledged, no device present. + */ +int i2c_write_blocking(i2c_inst_t *i2c, uint8_t addr, const uint8_t *src, size_t len, bool nostop); + +/*! \brief Attempt to read specified number of bytes from address, blocking + * \ingroup hardware_i2c + * + * \param i2c Either \ref i2c0 or \ref i2c1 + * \param addr 7-bit address of device to read from + * \param dst Pointer to buffer to receive data + * \param len Length of data in bytes to receive + * \param nostop If true, master retains control of the bus at the end of the transfer (no Stop is issued), + * and the next transfer will begin with a Restart rather than a Start. + * \return Number of bytes read, or PICO_ERROR_GENERIC if address not acknowledged or no device present. + */ +int i2c_read_blocking(i2c_inst_t *i2c, uint8_t addr, uint8_t *dst, size_t len, bool nostop); + + +/*! \brief Determine non-blocking write space available + * \ingroup hardware_i2c + * + * \param i2c Either \ref i2c0 or \ref i2c1 + * \return 0 if no space is available in the I2C to write more data. If return is nonzero, at + * least that many bytes can be written without blocking. + */ +static inline size_t i2c_get_write_available(i2c_inst_t *i2c) { + const size_t IC_TX_BUFFER_DEPTH = 16; + return IC_TX_BUFFER_DEPTH - i2c_get_hw(i2c)->txflr; +} + +/*! \brief Determine number of bytes received + * \ingroup hardware_i2c + * + * \param i2c Either \ref i2c0 or \ref i2c1 + * \return 0 if no data available, if return is nonzero at + * least that many bytes can be read without blocking. + */ +static inline size_t i2c_get_read_available(i2c_inst_t *i2c) { + return i2c_get_hw(i2c)->rxflr; +} + +/*! \brief Write direct to TX FIFO + * \ingroup hardware_i2c + * + * \param i2c Either \ref i2c0 or \ref i2c1 + * \param src Data to send + * \param len Number of bytes to send + * + * Writes directly to the I2C TX FIFO which is mainly useful for + * slave-mode operation. + */ +static inline void i2c_write_raw_blocking(i2c_inst_t *i2c, const uint8_t *src, size_t len) { + for (size_t i = 0; i < len; ++i) { + // TODO NACK or STOP on end? + while (!i2c_get_write_available(i2c)) + tight_loop_contents(); + i2c_get_hw(i2c)->data_cmd = *src++; + } +} + +/*! \brief Read direct from RX FIFO + * \ingroup hardware_i2c + * + * \param i2c Either \ref i2c0 or \ref i2c1 + * \param dst Buffer to accept data + * \param len Number of bytes to read + * + * Reads directly from the I2C RX FIFO which is mainly useful for + * slave-mode operation. + */ +static inline void i2c_read_raw_blocking(i2c_inst_t *i2c, uint8_t *dst, size_t len) { + for (size_t i = 0; i < len; ++i) { + while (!i2c_get_read_available(i2c)) + tight_loop_contents(); + *dst++ = (uint8_t)i2c_get_hw(i2c)->data_cmd; + } +} + +/*! \brief Return the DREQ to use for pacing transfers to/from a particular I2C instance + * \ingroup hardware_i2c + * + * \param i2c Either \ref i2c0 or \ref i2c1 + * \param is_tx true for sending data to the I2C instance, false for receiving data from the I2C instance + */ +static inline uint i2c_get_dreq(i2c_inst_t *i2c, bool is_tx) { + static_assert(DREQ_I2C0_RX == DREQ_I2C0_TX + 1, ""); + static_assert(DREQ_I2C1_RX == DREQ_I2C1_TX + 1, ""); + static_assert(DREQ_I2C1_TX == DREQ_I2C0_TX + 2, ""); + return DREQ_I2C0_TX + i2c_hw_index(i2c) * 2 + !is_tx; +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/hardware/interp.c b/arkanoid/pico/hardware/interp.c new file mode 100644 index 0000000..f270f03 --- /dev/null +++ b/arkanoid/pico/hardware/interp.c @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "interp.h" +#include "structs/sio.h" +#include "claim.h" + +check_hw_size(interp_hw_t, SIO_INTERP1_ACCUM0_OFFSET - SIO_INTERP0_ACCUM0_OFFSET); + +check_hw_layout(sio_hw_t, interp, SIO_INTERP0_ACCUM0_OFFSET); + +static_assert(NUM_DMA_CHANNELS <= 16, ""); + +static uint8_t _claimed; + +static inline uint interp_lane_bit(interp_hw_t * interp, uint lane) { + return (interp_index(interp) << 1u) | lane; +} + +void interp_claim_lane(interp_hw_t *interp, uint lane) { + valid_params_if(INTERP, lane < 2); + hw_claim_or_assert((uint8_t *) &_claimed, interp_lane_bit(interp, lane), "Lane is already claimed"); +} + +void interp_claim_lane_mask(interp_hw_t *interp, uint lane_mask) { + valid_params_if(INTERP, lane_mask && lane_mask <= 0x3); + if (lane_mask & 1u) interp_claim_lane(interp, 0); + if (lane_mask & 2u) interp_claim_lane(interp, 1); +} + +void interp_unclaim_lane(interp_hw_t *interp, uint lane) { + valid_params_if(INTERP, lane < 2); + hw_claim_clear((uint8_t *) &_claimed, interp_lane_bit(interp, lane)); +} + +bool interp_lane_is_claimed(interp_hw_t *interp, uint lane) { + valid_params_if(INTERP, lane < 2); + return hw_is_claimed((uint8_t *) &_claimed, interp_lane_bit(interp, lane)); +} + +void interp_unclaim_lane_mask(interp_hw_t *interp, uint lane_mask) { + valid_params_if(INTERP, lane_mask <= 0x3); + if (lane_mask & 1u) interp_unclaim_lane(interp, 0); + if (lane_mask & 2u) interp_unclaim_lane(interp, 1); +} + +void interp_save(interp_hw_t *interp, interp_hw_save_t *saver) { + saver->accum[0] = interp->accum[0]; + saver->accum[1] = interp->accum[1]; + saver->base[0] = interp->base[0]; + saver->base[1] = interp->base[1]; + saver->base[2] = interp->base[2]; + saver->ctrl[0] = interp->ctrl[0]; + saver->ctrl[1] = interp->ctrl[1]; +} + +void interp_restore(interp_hw_t *interp, interp_hw_save_t *saver) { + interp->accum[0] = saver->accum[0]; + interp->accum[1] = saver->accum[1]; + interp->base[0] = saver->base[0]; + interp->base[1] = saver->base[1]; + interp->base[2] = saver->base[2]; + interp->ctrl[0] = saver->ctrl[0]; + interp->ctrl[1] = saver->ctrl[1]; +} diff --git a/arkanoid/pico/hardware/interp.h b/arkanoid/pico/hardware/interp.h new file mode 100644 index 0000000..935e771 --- /dev/null +++ b/arkanoid/pico/hardware/interp.h @@ -0,0 +1,458 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_INTERP_H +#define _HARDWARE_INTERP_H + +#include "../pico.h" +#include "structs/interp.h" +#include "regs/sio.h" + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_INTERP, Enable/disable assertions in the interpolation module, type=bool, default=0, group=hardware_interp +#ifndef PARAM_ASSERTIONS_ENABLED_INTERP +#define PARAM_ASSERTIONS_ENABLED_INTERP 0 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file interp.h + * \defgroup hardware_interp hardware_interp + * + * Hardware Interpolator API + * + * Each core is equipped with two interpolators (INTERP0 and INTERP1) which can be used to accelerate + * tasks by combining certain pre-configured simple operations into a single processor cycle. Intended + * for cases where the pre-configured operation is repeated a large number of times, this results in + * code which uses both fewer CPU cycles and fewer CPU registers in the time critical sections of the + * code. + * + * The interpolators are used heavily to accelerate audio operations within the SDK, but their + * flexible configuration make it possible to optimise many other tasks such as quantization and + * dithering, table lookup address generation, affine texture mapping, decompression and linear feedback. + * + * Please refer to the RP2040 datasheet for more information on the HW interpolators and how they work. + */ + +#define interp0 interp0_hw +#define interp1 interp1_hw + +/** \brief Interpolator configuration + * \defgroup interp_config interp_config + * \ingroup hardware_interp + * + * Each interpolator needs to be configured, these functions provide handy helpers to set up configuration + * structures. + * + */ + +typedef struct { + uint32_t ctrl; +} interp_config; + +static inline uint interp_index(interp_hw_t *interp) { + valid_params_if(INTERP, interp == interp0 || interp == interp1); + return interp == interp1 ? 1 : 0; +} + +/*! \brief Claim the interpolator lane specified + * \ingroup hardware_interp + * + * Use this function to claim exclusive access to the specified interpolator lane. + * + * This function will panic if the lane is already claimed. + * + * \param interp Interpolator on which to claim a lane. interp0 or interp1 + * \param lane The lane number, 0 or 1. + */ +void interp_claim_lane(interp_hw_t *interp, uint lane); +// The above really should be called this for consistency +#define interp_lane_claim interp_claim_lane + +/*! \brief Claim the interpolator lanes specified in the mask + * \ingroup hardware_interp + * + * \param interp Interpolator on which to claim lanes. interp0 or interp1 + * \param lane_mask Bit pattern of lanes to claim (only bits 0 and 1 are valid) + */ +void interp_claim_lane_mask(interp_hw_t *interp, uint lane_mask); + +/*! \brief Release a previously claimed interpolator lane + * \ingroup hardware_interp + * + * \param interp Interpolator on which to release a lane. interp0 or interp1 + * \param lane The lane number, 0 or 1 + */ +void interp_unclaim_lane(interp_hw_t *interp, uint lane); +// The above really should be called this for consistency +#define interp_lane_unclaim interp_unclaim_lane + +/*! \brief Determine if an interpolator lane is claimed + * \ingroup hardware_interp + * + * \param interp Interpolator whose lane to check + * \param lane The lane number, 0 or 1 + * \return true if claimed, false otherwise + * \see interp_claim_lane + * \see interp_claim_lane_mask + */ +bool interp_lane_is_claimed(interp_hw_t *interp, uint lane); + +/*! \brief Release previously claimed interpolator lanes \see interp_claim_lane_mask + * \ingroup hardware_interp + * + * \param interp Interpolator on which to release lanes. interp0 or interp1 + * \param lane_mask Bit pattern of lanes to unclaim (only bits 0 and 1 are valid) + */ +void interp_unclaim_lane_mask(interp_hw_t *interp, uint lane_mask); + +/*! \brief Set the interpolator shift value + * \ingroup interp_config + * + * Sets the number of bits the accumulator is shifted before masking, on each iteration. + * + * \param c Pointer to an interpolator config + * \param shift Number of bits + */ +static inline void interp_config_set_shift(interp_config *c, uint shift) { + valid_params_if(INTERP, shift < 32); + c->ctrl = (c->ctrl & ~SIO_INTERP0_CTRL_LANE0_SHIFT_BITS) | + ((shift << SIO_INTERP0_CTRL_LANE0_SHIFT_LSB) & SIO_INTERP0_CTRL_LANE0_SHIFT_BITS); +} + +/*! \brief Set the interpolator mask range + * \ingroup interp_config + * + * Sets the range of bits (least to most) that are allowed to pass through the interpolator + * + * \param c Pointer to interpolation config + * \param mask_lsb The least significant bit allowed to pass + * \param mask_msb The most significant bit allowed to pass + */ +static inline void interp_config_set_mask(interp_config *c, uint mask_lsb, uint mask_msb) { + valid_params_if(INTERP, mask_msb < 32); + valid_params_if(INTERP, mask_lsb <= mask_msb); + c->ctrl = (c->ctrl & ~(SIO_INTERP0_CTRL_LANE0_MASK_LSB_BITS | SIO_INTERP0_CTRL_LANE0_MASK_MSB_BITS)) | + ((mask_lsb << SIO_INTERP0_CTRL_LANE0_MASK_LSB_LSB) & SIO_INTERP0_CTRL_LANE0_MASK_LSB_BITS) | + ((mask_msb << SIO_INTERP0_CTRL_LANE0_MASK_MSB_LSB) & SIO_INTERP0_CTRL_LANE0_MASK_MSB_BITS); +} + +/*! \brief Enable cross input + * \ingroup interp_config + * + * Allows feeding of the accumulator content from the other lane back in to this lanes shift+mask hardware. + * This will take effect even if the interp_config_set_add_raw option is set as the cross input mux is before the + * shift+mask bypass + * + * \param c Pointer to interpolation config + * \param cross_input If true, enable the cross input. + */ +static inline void interp_config_set_cross_input(interp_config *c, bool cross_input) { + c->ctrl = (c->ctrl & ~SIO_INTERP0_CTRL_LANE0_CROSS_INPUT_BITS) | + (cross_input ? SIO_INTERP0_CTRL_LANE0_CROSS_INPUT_BITS : 0); +} + +/*! \brief Enable cross results + * \ingroup interp_config + * + * Allows feeding of the other lane’s result into this lane’s accumulator on a POP operation. + * + * \param c Pointer to interpolation config + * \param cross_result If true, enables the cross result + */ +static inline void interp_config_set_cross_result(interp_config *c, bool cross_result) { + c->ctrl = (c->ctrl & ~SIO_INTERP0_CTRL_LANE0_CROSS_RESULT_BITS) | + (cross_result ? SIO_INTERP0_CTRL_LANE0_CROSS_RESULT_BITS : 0); +} + +/*! \brief Set sign extension + * \ingroup interp_config + * + * Enables signed mode, where the shifted and masked accumulator value is sign-extended to 32 bits + * before adding to BASE1, and LANE1 PEEK/POP results appear extended to 32 bits when read by processor. + * + * \param c Pointer to interpolation config + * \param _signed If true, enables sign extension + */ +static inline void interp_config_set_signed(interp_config *c, bool _signed) { + c->ctrl = (c->ctrl & ~SIO_INTERP0_CTRL_LANE0_SIGNED_BITS) | + (_signed ? SIO_INTERP0_CTRL_LANE0_SIGNED_BITS : 0); +} + +/*! \brief Set raw add option + * \ingroup interp_config + * + * When enabled, mask + shift is bypassed for LANE0 result. This does not affect the FULL result. + * + * \param c Pointer to interpolation config + * \param add_raw If true, enable raw add option. + */ +static inline void interp_config_set_add_raw(interp_config *c, bool add_raw) { + c->ctrl = (c->ctrl & ~SIO_INTERP0_CTRL_LANE0_ADD_RAW_BITS) | + (add_raw ? SIO_INTERP0_CTRL_LANE0_ADD_RAW_BITS : 0); +} + +/*! \brief Set blend mode + * \ingroup interp_config + * + * If enabled, LANE1 result is a linear interpolation between BASE0 and BASE1, controlled + * by the 8 LSBs of lane 1 shift and mask value (a fractional number between 0 and 255/256ths) + * + * LANE0 result does not have BASE0 added (yields only the 8 LSBs of lane 1 shift+mask value) + * + * FULL result does not have lane 1 shift+mask value added (BASE2 + lane 0 shift+mask) + * + * LANE1 SIGNED flag controls whether the interpolation is signed or unsig + * + * \param c Pointer to interpolation config + * \param blend Set true to enable blend mode. +*/ +static inline void interp_config_set_blend(interp_config *c, bool blend) { + c->ctrl = (c->ctrl & ~SIO_INTERP0_CTRL_LANE0_BLEND_BITS) | + (blend ? SIO_INTERP0_CTRL_LANE0_BLEND_BITS : 0); +} + +/*! \brief Set interpolator clamp mode (Interpolator 1 only) + * \ingroup interp_config + * + * Only present on INTERP1 on each core. If CLAMP mode is enabled: + * - LANE0 result is a shifted and masked ACCUM0, clamped by a lower bound of BASE0 and an upper bound of BASE1. + * - Signedness of these comparisons is determined by LANE0_CTRL_SIGNED + * + * \param c Pointer to interpolation config + * \param clamp Set true to enable clamp mode + */ +static inline void interp_config_set_clamp(interp_config *c, bool clamp) { + c->ctrl = (c->ctrl & ~SIO_INTERP1_CTRL_LANE0_CLAMP_BITS) | + (clamp ? SIO_INTERP1_CTRL_LANE0_CLAMP_BITS : 0); +} + +/*! \brief Set interpolator Force bits + * \ingroup interp_config + * + * ORed into bits 29:28 of the lane result presented to the processor on the bus. + * + * No effect on the internal 32-bit datapath. Handy for using a lane to generate sequence + * of pointers into flash or SRAM + * + * \param c Pointer to interpolation config + * \param bits Sets the force bits to that specified. Range 0-3 (two bits) + */ +static inline void interp_config_set_force_bits(interp_config *c, uint bits) { + invalid_params_if(INTERP, bits > 3); + // note cannot use hw_set_bits on SIO + c->ctrl = (c->ctrl & ~SIO_INTERP0_CTRL_LANE0_FORCE_MSB_BITS) | + (bits << SIO_INTERP0_CTRL_LANE0_FORCE_MSB_LSB); +} + +/*! \brief Get a default configuration + * \ingroup interp_config + * + * \return A default interpolation configuration + */ +static inline interp_config interp_default_config(void) { + interp_config c = {0}; + // Just pass through everything + interp_config_set_mask(&c, 0, 31); + return c; +} + +/*! \brief Send configuration to a lane + * \ingroup interp_config + * + * If an invalid configuration is specified (ie a lane specific item is set on wrong lane), + * depending on setup this function can panic. + * + * \param interp Interpolator instance, interp0 or interp1. + * \param lane The lane to set + * \param config Pointer to interpolation config + */ + +static inline void interp_set_config(interp_hw_t *interp, uint lane, interp_config *config) { + invalid_params_if(INTERP, lane > 1); + invalid_params_if(INTERP, config->ctrl & SIO_INTERP1_CTRL_LANE0_CLAMP_BITS && + (!interp_index(interp) || lane)); // only interp1 lane 0 has clamp bit + invalid_params_if(INTERP, config->ctrl & SIO_INTERP0_CTRL_LANE0_BLEND_BITS && + (interp_index(interp) || lane)); // only interp0 lane 0 has blend bit + interp->ctrl[lane] = config->ctrl; +} + +/*! \brief Directly set the force bits on a specified lane + * \ingroup hardware_interp + * + * These bits are ORed into bits 29:28 of the lane result presented to the processor on the bus. + * There is no effect on the internal 32-bit datapath. + * + * Useful for using a lane to generate sequence of pointers into flash or SRAM, saving a subsequent + * OR or add operation. + * + * \param interp Interpolator instance, interp0 or interp1. + * \param lane The lane to set + * \param bits The bits to set (bits 0 and 1, value range 0-3) + */ +static inline void interp_set_force_bits(interp_hw_t *interp, uint lane, uint bits) { + // note cannot use hw_set_bits on SIO + interp->ctrl[lane] |= (bits << SIO_INTERP0_CTRL_LANE0_FORCE_MSB_LSB); +} + +typedef struct { + uint32_t accum[2]; + uint32_t base[3]; + uint32_t ctrl[2]; +} interp_hw_save_t; + +/*! \brief Save the specified interpolator state + * \ingroup hardware_interp + * + * Can be used to save state if you need an interpolator for another purpose, state + * can then be recovered afterwards and continue from that point + * + * \param interp Interpolator instance, interp0 or interp1. + * \param saver Pointer to the save structure to fill in + */ +void interp_save(interp_hw_t *interp, interp_hw_save_t *saver); + +/*! \brief Restore an interpolator state + * \ingroup hardware_interp + * + * \param interp Interpolator instance, interp0 or interp1. + * \param saver Pointer to save structure to reapply to the specified interpolator + */ +void interp_restore(interp_hw_t *interp, interp_hw_save_t *saver); + +/*! \brief Sets the interpolator base register by lane + * \ingroup hardware_interp + * + * \param interp Interpolator instance, interp0 or interp1. + * \param lane The lane number, 0 or 1 or 2 + * \param val The value to apply to the register + */ +static inline void interp_set_base(interp_hw_t *interp, uint lane, uint32_t val) { + interp->base[lane] = val; +} + +/*! \brief Gets the content of interpolator base register by lane + * \ingroup hardware_interp + * + * \param interp Interpolator instance, interp0 or interp1. + * \param lane The lane number, 0 or 1 or 2 + * \return The current content of the lane base register + */ +static inline uint32_t interp_get_base(interp_hw_t *interp, uint lane) { + return interp->base[lane]; +} + +/*! \brief Sets the interpolator base registers simultaneously + * \ingroup hardware_interp + * + * The lower 16 bits go to BASE0, upper bits to BASE1 simultaneously. + * Each half is sign-extended to 32 bits if that lane’s SIGNED flag is set. + * + * \param interp Interpolator instance, interp0 or interp1. + * \param val The value to apply to the register + */ +static inline void interp_set_base_both(interp_hw_t *interp, uint32_t val) { + interp->base01 = val; +} + + +/*! \brief Sets the interpolator accumulator register by lane + * \ingroup hardware_interp + * + * \param interp Interpolator instance, interp0 or interp1. + * \param lane The lane number, 0 or 1 + * \param val The value to apply to the register + */ +static inline void interp_set_accumulator(interp_hw_t *interp, uint lane, uint32_t val) { + interp->accum[lane] = val; +} + +/*! \brief Gets the content of the interpolator accumulator register by lane + * \ingroup hardware_interp + * + * \param interp Interpolator instance, interp0 or interp1. + * \param lane The lane number, 0 or 1 + * \return The current content of the register + */ +static inline uint32_t interp_get_accumulator(interp_hw_t *interp, uint lane) { + return interp->accum[lane]; +} + +/*! \brief Read lane result, and write lane results to both accumulators to update the interpolator + * \ingroup hardware_interp + * + * \param interp Interpolator instance, interp0 or interp1. + * \param lane The lane number, 0 or 1 + * \return The content of the lane result register + */ +static inline uint32_t interp_pop_lane_result(interp_hw_t *interp, uint lane) { + return interp->pop[lane]; +} + +/*! \brief Read lane result + * \ingroup hardware_interp + * + * \param interp Interpolator instance, interp0 or interp1. + * \param lane The lane number, 0 or 1 + * \return The content of the lane result register + */ +static inline uint32_t interp_peek_lane_result(interp_hw_t *interp, uint lane) { + return interp->peek[lane]; +} + +/*! \brief Read lane result, and write lane results to both accumulators to update the interpolator + * \ingroup hardware_interp + * + * \param interp Interpolator instance, interp0 or interp1. + * \return The content of the FULL register + */ +static inline uint32_t interp_pop_full_result(interp_hw_t *interp) { + return interp->pop[2]; +} + +/*! \brief Read lane result + * \ingroup hardware_interp + * + * \param interp Interpolator instance, interp0 or interp1. + * \return The content of the FULL register + */ +static inline uint32_t interp_peek_full_result(interp_hw_t *interp) { + return interp->peek[2]; +} + +/*! \brief Add to accumulator + * \ingroup hardware_interp + * + * Atomically add the specified value to the accumulator on the specified lane + * + * \param interp Interpolator instance, interp0 or interp1. + * \param lane The lane number, 0 or 1 + * \param val Value to add + * \return The content of the FULL register + */ +static inline void interp_add_accumulater(interp_hw_t *interp, uint lane, uint32_t val) { + interp->add_raw[lane] = val; +} + +/*! \brief Get raw lane value + * \ingroup hardware_interp + * + * Returns the raw shift and mask value from the specified lane, BASE0 is NOT added + * + * \param interp Interpolator instance, interp0 or interp1. + * \param lane The lane number, 0 or 1 + * \return The raw shift/mask value + */ +static inline uint32_t interp_get_raw(interp_hw_t *interp, uint lane) { + return interp->add_raw[lane]; +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/hardware/irq.c b/arkanoid/pico/hardware/irq.c new file mode 100644 index 0000000..7d0b262 --- /dev/null +++ b/arkanoid/pico/hardware/irq.c @@ -0,0 +1,413 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "irq.h" +#include "regs/m0plus.h" +#include "platform_defs.h" +#include "structs/scb.h" + +#include "../mutex.h" +#include "../junk/assert.h" + +extern void __unhandled_user_irq(void); + +static inline irq_handler_t *get_vtable(void) { + return (irq_handler_t *) scb_hw->vtor; +} + +static inline void *add_thumb_bit(void *addr) { + return (void *) (((uintptr_t) addr) | 0x1); +} + +static inline void *remove_thumb_bit(void *addr) { + return (void *) (((uintptr_t) addr) & (uint)~0x1); +} + +static void set_raw_irq_handler_and_unlock(uint num, irq_handler_t handler, uint32_t save) { + // update vtable (vtable_handler may be same or updated depending on cases, but we do it anyway for compactness) + get_vtable()[16 + num] = handler; + __dmb(); + spin_unlock(spin_lock_instance(PICO_SPINLOCK_ID_IRQ), save); +} + +void irq_set_enabled(uint num, bool enabled) { + check_irq_param(num); + irq_set_mask_enabled(1u << num, enabled); +} + +bool irq_is_enabled(uint num) { + check_irq_param(num); + return 0 != ((1u << num) & *((io_rw_32 *) (PPB_BASE + M0PLUS_NVIC_ISER_OFFSET))); +} + +void irq_set_mask_enabled(uint32_t mask, bool enabled) { + if (enabled) { + // Clear pending before enable + // (if IRQ is actually asserted, it will immediately re-pend) + *((io_rw_32 *) (PPB_BASE + M0PLUS_NVIC_ICPR_OFFSET)) = mask; + *((io_rw_32 *) (PPB_BASE + M0PLUS_NVIC_ISER_OFFSET)) = mask; + } else { + *((io_rw_32 *) (PPB_BASE + M0PLUS_NVIC_ICER_OFFSET)) = mask; + } +} + +void irq_set_pending(uint num) { + check_irq_param(num); + *((io_rw_32 *) (PPB_BASE + M0PLUS_NVIC_ISPR_OFFSET)) = 1u << num; +} + +#if !PICO_DISABLE_SHARED_IRQ_HANDLERS +// limited by 8 bit relative links (and reality) +static_assert(PICO_MAX_SHARED_IRQ_HANDLERS >= 1 && PICO_MAX_SHARED_IRQ_HANDLERS < 0x7f, ""); + +// note these are not real functions, they are code fragments (i.e. don't call them) +extern void irq_handler_chain_first_slot(void); +extern void irq_handler_chain_remove_tail(void); + +extern struct irq_handler_chain_slot { + // first 3 half words are executable code (raw vtable handler points to one slot, and inst3 will jump to next + // in chain (or end of chain handler) + uint16_t inst1; + uint16_t inst2; + uint16_t inst3; + union { + // when a handler is removed while executing, it needs an extra instruction, which overwrites + // the link and the priority; this is ok because no one else is modifying the chain, as + // the chain is effectively core local, and the user code which might still need this link + // disable the IRQ in question before updating, which means we aren't executing! + struct { + int8_t link; + uint8_t priority; + }; + uint16_t inst4; + }; + irq_handler_t handler; +} irq_handler_chain_slots[PICO_MAX_SHARED_IRQ_HANDLERS]; + +static int8_t irq_hander_chain_free_slot_head; + +static inline bool is_shared_irq_raw_handler(irq_handler_t raw_handler) { + return (uintptr_t)raw_handler - (uintptr_t)irq_handler_chain_slots < sizeof(irq_handler_chain_slots); +} +#else +#define is_shared_irq_raw_handler(h) false +#endif + +irq_handler_t irq_get_vtable_handler(uint num) { + check_irq_param(num); + return get_vtable()[16 + num]; +} + +void irq_set_exclusive_handler(uint num, irq_handler_t handler) { + check_irq_param(num); +#if !PICO_NO_RAM_VECTOR_TABLE + spin_lock_t *lock = spin_lock_instance(PICO_SPINLOCK_ID_IRQ); + uint32_t save = spin_lock_blocking(lock); + __unused irq_handler_t current = irq_get_vtable_handler(num); + hard_assert(current == __unhandled_user_irq || current == handler); + set_raw_irq_handler_and_unlock(num, handler, save); +#else + panic_unsupported(); +#endif +} + +irq_handler_t irq_get_exclusive_handler(uint num) { + check_irq_param(num); +#if !PICO_NO_RAM_VECTOR_TABLE + spin_lock_t *lock = spin_lock_instance(PICO_SPINLOCK_ID_IRQ); + uint32_t save = spin_lock_blocking(lock); + irq_handler_t current = irq_get_vtable_handler(num); + spin_unlock(lock, save); + if (current == __unhandled_user_irq || is_shared_irq_raw_handler(current)) { + return NULL; + } + return current; +#else + panic_unsupported(); +#endif +} + + +#if !PICO_DISABLE_SHARED_IRQ_HANDLERS +static uint16_t make_branch(uint16_t *from, void *to) { + uint32_t ui_from = (uint32_t)from; + uint32_t ui_to = (uint32_t)to; + uint32_t delta = (ui_to - ui_from - 4) / 2; + assert(!(delta >> 11u)); + return (uint16_t)(0xe000 | (delta & 0x7ff)); +} + +static void insert_branch_and_link(uint16_t *from, void *to) { + uint32_t ui_from = (uint32_t)from; + uint32_t ui_to = (uint32_t)to; + uint32_t delta = (ui_to - ui_from - 4) / 2; + assert(!(delta >> 11u)); + from[0] = (uint16_t)(0xf000 | ((delta >> 11u) & 0x7ffu)); + from[1] = (uint16_t)(0xf800 | (delta & 0x7ffu)); +} + +static inline void *resolve_branch(uint16_t *inst) { + assert(0x1c == (*inst)>>11u); + int32_t i_addr = (*inst) << 21u; + i_addr /= (int32_t)(1u<<21u); + return inst + 2 + i_addr; +} + +// GCC produces horrible code for subtraction of pointers here, and it was bugging me +static inline int8_t slot_diff(struct irq_handler_chain_slot *to, struct irq_handler_chain_slot *from) { + static_assert(sizeof(struct irq_handler_chain_slot) == 12, ""); + int32_t result = 0xaaaa; + // return (to - from); + // note this implementation has limited range, but is fine for plenty more than -128->127 result + asm (".syntax unified\n" + "subs %1, %2\n" + "adcs %1, %1\n" // * 2 (and + 1 if negative for rounding) + "muls %0, %1\n" + "lsrs %0, 20\n" + : "+l" (result), "+l" (to) + : "l" (from) + : + ); + return (int8_t)result; +} + +static inline int8_t get_slot_index(struct irq_handler_chain_slot *slot) { + return slot_diff(slot, irq_handler_chain_slots); +} +#endif + +void irq_add_shared_handler(uint num, irq_handler_t handler, uint8_t order_priority) { + check_irq_param(num); +#if PICO_NO_RAM_VECTOR_TABLE + panic_unsupported() +#elif PICO_DISABLE_SHARED_IRQ_HANDLERS + irq_set_exclusive_handler(num, handler); +#else + spin_lock_t *lock = spin_lock_instance(PICO_SPINLOCK_ID_IRQ); + uint32_t save = spin_lock_blocking(lock); + hard_assert(irq_hander_chain_free_slot_head >= 0); // we must have a slot + struct irq_handler_chain_slot *slot = &irq_handler_chain_slots[irq_hander_chain_free_slot_head]; + int8_t slot_index = irq_hander_chain_free_slot_head; + irq_hander_chain_free_slot_head = slot->link; + irq_handler_t vtable_handler = get_vtable()[16 + num]; + if (!is_shared_irq_raw_handler(vtable_handler)) { + // start new chain + hard_assert(vtable_handler == __unhandled_user_irq); + struct irq_handler_chain_slot slot_data = { + .inst1 = 0xa100, // add r1, pc, #0 + .inst2 = make_branch(&slot->inst2, irq_handler_chain_first_slot), // b irq_handler_chain_first_slot + .inst3 = 0xbd00, // pop {pc} + .link = -1, + .priority = order_priority, + .handler = handler + }; + *slot = slot_data; + vtable_handler = (irq_handler_t)add_thumb_bit(slot); + } else { + assert(!((((uintptr_t)vtable_handler) - ((uintptr_t)irq_handler_chain_slots) - 1)%sizeof(struct irq_handler_chain_slot))); + struct irq_handler_chain_slot *prev_slot = NULL; + struct irq_handler_chain_slot *existing_vtable_slot = remove_thumb_bit(vtable_handler); + struct irq_handler_chain_slot *cur_slot = existing_vtable_slot; + while (cur_slot->priority > order_priority) { + prev_slot = cur_slot; + if (cur_slot->link < 0) break; + cur_slot = &irq_handler_chain_slots[cur_slot->link]; + } + if (prev_slot) { + // insert into chain + struct irq_handler_chain_slot slot_data = { + .inst1 = 0x4801, // ldr r0, [pc, #4] + .inst2 = 0x4780, // blx r0 + .inst3 = prev_slot->link >= 0 ? + make_branch(&slot->inst3, resolve_branch(&prev_slot->inst3)) : // b next_slot + 0xbd00, // pop {pc} + .link = prev_slot->link, + .priority = order_priority, + .handler = handler + }; + // update code and data links + prev_slot->inst3 = make_branch(&prev_slot->inst3, slot), + prev_slot->link = slot_index; + *slot = slot_data; + } else { + // update with new chain head + struct irq_handler_chain_slot slot_data = { + .inst1 = 0xa100, // add r1, pc, #0 + .inst2 = make_branch(&slot->inst2, irq_handler_chain_first_slot), // b irq_handler_chain_first_slot + .inst3 = make_branch(&slot->inst3, existing_vtable_slot), // b existing_slot + .link = get_slot_index(existing_vtable_slot), + .priority = order_priority, + .handler = handler + }; + *slot = slot_data; + // fixup previous head slot + existing_vtable_slot->inst1 = 0x4801; // ldr r0, [pc, #4] + existing_vtable_slot->inst2 = 0x4780; // blx r0 + vtable_handler = (irq_handler_t)add_thumb_bit(slot); + } + } + set_raw_irq_handler_and_unlock(num, vtable_handler, save); +#endif +} + +void irq_remove_handler(uint num, irq_handler_t handler) { +#if !PICO_NO_RAM_VECTOR_TABLE + spin_lock_t *lock = spin_lock_instance(PICO_SPINLOCK_ID_IRQ); + uint32_t save = spin_lock_blocking(lock); + irq_handler_t vtable_handler = get_vtable()[16 + num]; + if (vtable_handler != __unhandled_user_irq && vtable_handler != handler) { +#if !PICO_DISABLE_SHARED_IRQ_HANDLERS + if (is_shared_irq_raw_handler(vtable_handler)) { + // This is a bit tricky, as an executing IRQ handler doesn't take a lock. + + // First thing to do is to disable the IRQ in question; that takes care of calls from user code. + // Note that a irq handler chain is local to our own core, so we don't need to worry about the other core + bool was_enabled = irq_is_enabled(num); + irq_set_enabled(num, false); + __dmb(); + + // It is possible we are being called while an IRQ for this chain is already in progress. + // The issue we have here is that we must not free a slot that is currently being executed, because + // inst3 is still to be executed, and inst3 might get overwritten if the slot is re-used. + + // By disallowing other exceptions from removing an IRQ handler (which seems fair) + // we now only have to worry about removing a slot from a chain that is currently executing. + + // Note we expect that the slot we are deleting is the one that is executing. + // In particular, bad things happen if the caller were to delete the handler in the chain + // before it. This is not an allowed use case though, and I can't imagine anyone wanting to in practice. + // Sadly this is not something we can detect. + + uint exception = __get_current_exception(); + hard_assert(!exception || exception == num + 16); + + struct irq_handler_chain_slot *prev_slot = NULL; + struct irq_handler_chain_slot *existing_vtable_slot = remove_thumb_bit(vtable_handler); + struct irq_handler_chain_slot *to_free_slot = existing_vtable_slot; + int8_t to_free_slot_index = get_slot_index(to_free_slot); + while (to_free_slot->handler != handler) { + prev_slot = to_free_slot; + if (to_free_slot->link < 0) break; + to_free_slot = &irq_handler_chain_slots[to_free_slot->link]; + } + if (to_free_slot->handler == handler) { + int8_t next_slot_index = to_free_slot->link; + if (next_slot_index >= 0) { + // There is another slot in the chain, so copy that over us, so that our inst3 points at something valid + // Note this only matters in the exception case anyway, and it that case, we will skip the next handler, + // however in that case it's IRQ cause should immediately cause re-entry of the IRQ and the only side + // effect will be that there was potentially brief out of priority order execution of the handlers + struct irq_handler_chain_slot *next_slot = &irq_handler_chain_slots[next_slot_index]; + to_free_slot->handler = next_slot->handler; + to_free_slot->priority = next_slot->priority; + to_free_slot->link = next_slot->link; + to_free_slot->inst3 = next_slot->link >= 0 ? + make_branch(&to_free_slot->inst3, resolve_branch(&next_slot->inst3)) : // b mext_>slot->next_slot + 0xbd00; // pop {pc} + + // add old next slot back to free list + next_slot->link = irq_hander_chain_free_slot_head; + irq_hander_chain_free_slot_head = next_slot_index; + } else { + // Slot being removed is at the end of the chain + if (!exception) { + // case when we're not in exception, we physically unlink now + if (prev_slot) { + // chain is not empty + prev_slot->link = -1; + prev_slot->inst3 = 0xbd00; // pop {pc} + } else { + // chain is not empty + vtable_handler = __unhandled_user_irq; + } + // add slot back to free list + to_free_slot->link = irq_hander_chain_free_slot_head; + irq_hander_chain_free_slot_head = to_free_slot_index; + } else { + // since we are the last slot we know that our inst3 hasn't executed yet, so we change + // it to bl to irq_handler_chain_remove_tail which will remove the slot. + // NOTE THAT THIS TRASHES PRIORITY AND LINK SINCE THIS IS A 4 BYTE INSTRUCTION + // BUT THEY ARE NOT NEEDED NOW + insert_branch_and_link(&to_free_slot->inst3, irq_handler_chain_remove_tail); + } + } + } else { + assert(false); // not found + } + irq_set_enabled(num, was_enabled); + } +#else + assert(false); // not found +#endif + } else { + vtable_handler = __unhandled_user_irq; + } + set_raw_irq_handler_and_unlock(num, vtable_handler, save); +#else + panic_unsupported(); +#endif +} + +void irq_set_priority(uint num, uint8_t hardware_priority) { + check_irq_param(num); + + // note that only 32 bit writes are supported + io_rw_32 *p = (io_rw_32 *)((PPB_BASE + M0PLUS_NVIC_IPR0_OFFSET) + (num & ~3u)); + *p = (*p & ~(0xffu << (8 * (num & 3u)))) | (((uint32_t) hardware_priority) << (8 * (num & 3u))); +} + +uint irq_get_priority(uint num) { + check_irq_param(num); + + // note that only 32 bit reads are supported + io_rw_32 *p = (io_rw_32 *)((PPB_BASE + M0PLUS_NVIC_IPR0_OFFSET) + (num & ~3u)); + return (uint8_t)(*p >> (8 * (num & 3u))); +} + +#if !PICO_DISABLE_SHARED_IRQ_HANDLERS +// used by irq_handler_chain.S to remove the last link in a handler chain after it executes +// note this must be called only with the last slot in a chain (and during the exception) +void irq_add_tail_to_free_list(struct irq_handler_chain_slot *slot) { + irq_handler_t slot_handler = (irq_handler_t) add_thumb_bit(slot); + assert(is_shared_irq_raw_handler(slot_handler)); + + uint exception = __get_current_exception(); + assert(exception); + spin_lock_t *lock = spin_lock_instance(PICO_SPINLOCK_ID_IRQ); + uint32_t save = spin_lock_blocking(lock); + int8_t slot_index = get_slot_index(slot); + if (slot_handler == get_vtable()[exception]) { + get_vtable()[exception] = __unhandled_user_irq; + } else { + bool __unused found = false; + // need to find who points at the slot and update it + for(uint i=0;i<count_of(irq_handler_chain_slots);i++) { + if (irq_handler_chain_slots[i].link == slot_index) { + irq_handler_chain_slots[i].link = -1; + irq_handler_chain_slots[i].inst3 = 0xbd00; // pop {pc} + found = true; + break; + } + } + assert(found); + } + // add slot to free list + slot->link = irq_hander_chain_free_slot_head; + irq_hander_chain_free_slot_head = slot_index; + spin_unlock(lock, save); +} +#endif + +void irq_init_priorities() { +#if PICO_DEFAULT_IRQ_PRIORITY != 0 + static_assert(!(NUM_IRQS & 3), ""); + uint32_t prio4 = (PICO_DEFAULT_IRQ_PRIORITY & 0xff) * 0x1010101u; + io_rw_32 * p = (io_rw_32 *)(PPB_BASE + M0PLUS_NVIC_IPR0_OFFSET); + for (uint i = 0; i < NUM_IRQS / 4; i++) { + *p++ = prio4; + } +#endif +} diff --git a/arkanoid/pico/hardware/irq.h b/arkanoid/pico/hardware/irq.h new file mode 100644 index 0000000..7665b8d --- /dev/null +++ b/arkanoid/pico/hardware/irq.h @@ -0,0 +1,287 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_IRQ_H_ +#define _HARDWARE_IRQ_H_ + +// These two config items are also used by assembler, so keeping separate +// PICO_CONFIG: PICO_MAX_SHARED_IRQ_HANDLERS, Maximum number of shared IRQ handlers, default=4, advanced=true, group=hardware_irq +#ifndef PICO_MAX_SHARED_IRQ_HANDLERS +#define PICO_MAX_SHARED_IRQ_HANDLERS 4u +#endif + +// PICO_CONFIG: PICO_DISABLE_SHARED_IRQ_HANDLERS, Disable shared IRQ handlers, type=bool, default=0, group=hardware_irq +#ifndef PICO_DISABLE_SHARED_IRQ_HANDLERS +#define PICO_DISABLE_SHARED_IRQ_HANDLERS 0 +#endif + +#ifndef __ASSEMBLER__ + +#include "../pico.h" +#include "address_mapped.h" +#include "regs/intctrl.h" +#include "regs/m0plus.h" + +/** \file irq.h + * \defgroup hardware_irq hardware_irq + * + * Hardware interrupt handling + * + * The RP2040 uses the standard ARM nested vectored interrupt controller (NVIC). + * + * Interrupts are identified by a number from 0 to 31. + * + * On the RP2040, only the lower 26 IRQ signals are connected on the NVIC; IRQs 26 to 31 are tied to zero (never firing). + * + * There is one NVIC per core, and each core's NVIC has the same hardware interrupt lines routed to it, with the exception of the IO interrupts + * where there is one IO interrupt per bank, per core. These are completely independent, so, for example, processor 0 can be + * interrupted by GPIO 0 in bank 0, and processor 1 by GPIO 1 in the same bank. + * + * \note That all IRQ APIs affect the executing core only (i.e. the core calling the function). + * + * \note You should not enable the same (shared) IRQ number on both cores, as this will lead to race conditions + * or starvation of one of the cores. Additionally, don't forget that disabling interrupts on one core does not disable interrupts + * on the other core. + * + * There are three different ways to set handlers for an IRQ: + * - Calling irq_add_shared_handler() at runtime to add a handler for a multiplexed interrupt (e.g. GPIO bank) on the current core. Each handler, should check and clear the relevant hardware interrupt source + * - Calling irq_set_exclusive_handler() at runtime to install a single handler for the interrupt on the current core + * - Defining the interrupt handler explicitly in your application (e.g. by defining void `isr_dma_0` will make that function the handler for the DMA_IRQ_0 on core 0, and + * you will not be able to change it using the above APIs at runtime). Using this method can cause link conflicts at runtime, and offers no runtime performance benefit (i.e, it should not generally be used). + * + * \note If an IRQ is enabled and fires with no handler installed, a breakpoint will be hit and the IRQ number will + * be in register r0. + * + * \section interrupt_nums Interrupt Numbers + * + * Interrupts are numbered as follows, a set of defines is available (intctrl.h) with these names to avoid using the numbers directly. + * + * IRQ | Interrupt Source + * ----|----------------- + * 0 | TIMER_IRQ_0 + * 1 | TIMER_IRQ_1 + * 2 | TIMER_IRQ_2 + * 3 | TIMER_IRQ_3 + * 4 | PWM_IRQ_WRAP + * 5 | USBCTRL_IRQ + * 6 | XIP_IRQ + * 7 | PIO0_IRQ_0 + * 8 | PIO0_IRQ_1 + * 9 | PIO1_IRQ_0 + * 10 | PIO1_IRQ_1 + * 11 | DMA_IRQ_0 + * 12 | DMA_IRQ_1 + * 13 | IO_IRQ_BANK0 + * 14 | IO_IRQ_QSPI + * 15 | SIO_IRQ_PROC0 + * 16 | SIO_IRQ_PROC1 + * 17 | CLOCKS_IRQ + * 18 | SPI0_IRQ + * 19 | SPI1_IRQ + * 20 | UART0_IRQ + * 21 | UART1_IRQ + * 22 | ADC0_IRQ_FIFO + * 23 | I2C0_IRQ + * 24 | I2C1_IRQ + * 25 | RTC_IRQ + * + */ + +// PICO_CONFIG: PICO_DEFAULT_IRQ_PRIORITY, Define the default IRQ priority, default=0x80, group=hardware_irq +#ifndef PICO_DEFAULT_IRQ_PRIORITY +#define PICO_DEFAULT_IRQ_PRIORITY 0x80 +#endif + +#define PICO_LOWEST_IRQ_PRIORITY 0xff +#define PICO_HIGHEST_IRQ_PRIORITY 0x00 + +// PICO_CONFIG: PICO_SHARED_IRQ_HANDLER_DEFAULT_ORDER_PRIORITY, Set default shared IRQ order priority, default=0x80, group=hardware_irq +#ifndef PICO_SHARED_IRQ_HANDLER_DEFAULT_ORDER_PRIORITY +#define PICO_SHARED_IRQ_HANDLER_DEFAULT_ORDER_PRIORITY 0x80 +#endif + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_IRQ, Enable/disable assertions in the IRQ module, type=bool, default=0, group=hardware_irq +#ifndef PARAM_ASSERTIONS_ENABLED_IRQ +#define PARAM_ASSERTIONS_ENABLED_IRQ 0 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/*! \brief Interrupt handler function type + * \ingroup hardware_irq + * + * All interrupts handlers should be of this type, and follow normal ARM EABI register saving conventions + */ +typedef void (*irq_handler_t)(void); + +static inline void check_irq_param(__unused uint num) { + invalid_params_if(IRQ, num >= NUM_IRQS); +} + +/*! \brief Set specified interrupt's priority + * \ingroup hardware_irq + * + * \param num Interrupt number + * \param hardware_priority Priority to set. + * Numerically-lower values indicate a higher priority. Hardware priorities + * range from 0 (highest priority) to 255 (lowest priority) though only the + * top 2 bits are significant on ARM Cortex-M0+. To make it easier to specify + * higher or lower priorities than the default, all IRQ priorities are + * initialized to PICO_DEFAULT_IRQ_PRIORITY by the SDK runtime at startup. + * PICO_DEFAULT_IRQ_PRIORITY defaults to 0x80 + */ +void irq_set_priority(uint num, uint8_t hardware_priority); + +/*! \brief Get specified interrupt's priority + * \ingroup hardware_irq + * + * Numerically-lower values indicate a higher priority. Hardware priorities + * range from 0 (highest priority) to 255 (lowest priority) though only the + * top 2 bits are significant on ARM Cortex-M0+. To make it easier to specify + * higher or lower priorities than the default, all IRQ priorities are + * initialized to PICO_DEFAULT_IRQ_PRIORITY by the SDK runtime at startup. + * PICO_DEFAULT_IRQ_PRIORITY defaults to 0x80 + * + * \param num Interrupt number + * \return the IRQ priority + */ +uint irq_get_priority(uint num); + +/*! \brief Enable or disable a specific interrupt on the executing core + * \ingroup hardware_irq + * + * \param num Interrupt number \ref interrupt_nums + * \param enabled true to enable the interrupt, false to disable + */ +void irq_set_enabled(uint num, bool enabled); + +/*! \brief Determine if a specific interrupt is enabled on the executing core + * \ingroup hardware_irq + * + * \param num Interrupt number \ref interrupt_nums + * \return true if the interrupt is enabled + */ +bool irq_is_enabled(uint num); + +/*! \brief Enable/disable multiple interrupts on the executing core + * \ingroup hardware_irq + * + * \param mask 32-bit mask with one bits set for the interrupts to enable/disable + * \param enabled true to enable the interrupts, false to disable them. + */ +void irq_set_mask_enabled(uint32_t mask, bool enabled); + +/*! \brief Set an exclusive interrupt handler for an interrupt on the executing core. + * \ingroup hardware_irq + * + * Use this method to set a handler for single IRQ source interrupts, or when + * your code, use case or performance requirements dictate that there should + * no other handlers for the interrupt. + * + * This method will assert if there is already any sort of interrupt handler installed + * for the specified irq number. + * + * \param num Interrupt number \ref interrupt_nums + * \param handler The handler to set. See \ref irq_handler_t + * \see irq_add_shared_handler() + */ +void irq_set_exclusive_handler(uint num, irq_handler_t handler); + +/*! \brief Get the exclusive interrupt handler for an interrupt on the executing core. + * \ingroup hardware_irq + * + * This method will return an exclusive IRQ handler set on this core + * by irq_set_exclusive_handler if there is one. + * + * \param num Interrupt number \ref interrupt_nums + * \see irq_set_exclusive_handler() + * \return handler The handler if an exclusive handler is set for the IRQ, + * NULL if no handler is set or shared/shareable handlers are installed + */ +irq_handler_t irq_get_exclusive_handler(uint num); + +/*! \brief Add a shared interrupt handler for an interrupt on the executing core + * \ingroup hardware_irq + * + * Use this method to add a handler on an irq number shared between multiple distinct hardware sources (e.g. GPIO, DMA or PIO IRQs). + * Handlers added by this method will all be called in sequence from highest order_priority to lowest. The + * irq_set_exclusive_handler() method should be used instead if you know there will or should only ever be one handler for the interrupt. + * + * This method will assert if there is an exclusive interrupt handler set for this irq number on this core, or if + * the (total across all IRQs on both cores) maximum (configurable via PICO_MAX_SHARED_IRQ_HANDLERS) number of shared handlers + * would be exceeded. + * + * \param num Interrupt number + * \param handler The handler to set. See \ref irq_handler_t + * \param order_priority The order priority controls the order that handlers for the same IRQ number on the core are called. + * The shared irq handlers for an interrupt are all called when an IRQ fires, however the order of the calls is based + * on the order_priority (higher priorities are called first, identical priorities are called in undefined order). A good + * rule of thumb is to use PICO_SHARED_IRQ_HANDLER_DEFAULT_ORDER_PRIORITY if you don't much care, as it is in the middle of + * the priority range by default. + * + * \see irq_set_exclusive_handler() + */ +void irq_add_shared_handler(uint num, irq_handler_t handler, uint8_t order_priority); + +/*! \brief Remove a specific interrupt handler for the given irq number on the executing core + * \ingroup hardware_irq + * + * This method may be used to remove an irq set via either irq_set_exclusive_handler() or + * irq_add_shared_handler(), and will assert if the handler is not currently installed for the given + * IRQ number + * + * \note This method may *only* be called from user (non IRQ code) or from within the handler + * itself (i.e. an IRQ handler may remove itself as part of handling the IRQ). Attempts to call + * from another IRQ will cause an assertion. + * + * \param num Interrupt number \ref interrupt_nums + * \param handler The handler to removed. + * \see irq_set_exclusive_handler() + * \see irq_add_shared_handler() + */ +void irq_remove_handler(uint num, irq_handler_t handler); + +/*! \brief Get the current IRQ handler for the specified IRQ from the currently installed hardware vector table (VTOR) + * of the execution core + * \ingroup hardware_irq + * + * \param num Interrupt number \ref interrupt_nums + * \return the address stored in the VTABLE for the given irq number + */ +irq_handler_t irq_get_vtable_handler(uint num); + +/*! \brief Clear a specific interrupt on the executing core + * \ingroup hardware_irq + * + * \param int_num Interrupt number \ref interrupt_nums + */ +static inline void irq_clear(uint int_num) { + *((volatile uint32_t *) (PPB_BASE + M0PLUS_NVIC_ICPR_OFFSET)) = (1u << ((uint32_t) (int_num & 0x1F))); +} + +/*! \brief Force an interrupt to be pending on the executing core + * \ingroup hardware_irq + * + * This should generally not be used for IRQs connected to hardware. + * + * \param num Interrupt number \ref interrupt_nums + */ +void irq_set_pending(uint num); + + +/*! \brief Perform IRQ priority initialization for the current core + * + * \note This is an internal method and user should generally not call it. + */ +void irq_init_priorities(void); +#ifdef __cplusplus +} +#endif + +#endif +#endif diff --git a/arkanoid/pico/hardware/irq_handler_chain.S b/arkanoid/pico/hardware/irq_handler_chain.S new file mode 100644 index 0000000..2b5c3af --- /dev/null +++ b/arkanoid/pico/hardware/irq_handler_chain.S @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "../pico.h" +#include "irq.h" + +#if !PICO_DISABLE_SHARED_IRQ_HANDLERS +.syntax unified +.cpu cortex-m0plus +.thumb + +.data +.align 2 + +.global irq_handler_chain_slots + +.global irq_handler_chain_first_slot +.global irq_handler_chain_remove_tail + +// +// These Slots make up the code and structure of the handler chains; the only external information are the VTABLE entries +// (obviously one set per core) and a free list head. Each individual handler chain starts with the VTABLE entry I +// pointing at the address of slot S (with thumb bit set). Thus each slot which is part of a chain is executble. +// +// The execution jumps (via branch instruction) from one slot to the other, then jumps to the end of chain handler. +// The entirety of the state needed to traverse the chain is contained within the slots of the chain, which is why +// a VTABLE entry is all that is needed per chain (rather than requiring a separarte set of head pointers) +// + +irq_handler_chain_slots: +.set next_slot_number, 1 +.rept PICO_MAX_SHARED_IRQ_HANDLERS + // a slot is executable and is always 3 instructions long. + .hword 0 // inst1 (either: ldr r0, [pc, #4] or for the FIRST slot : add r1, pc, #0 ) + .hword 0 // inst2 ( blx r0 b irq_handler_chain_first_slot ) + + .hword 0 // inst3 (either: b next_slot or for the LAST pop {pc} ) + + // next is a single byte index of next slot in chain (or -1 to end) +.if next_slot_number == PICO_MAX_SHARED_IRQ_HANDLERS + .byte 0xff +.else + .byte next_slot_number +.endif + // next is the 8 bit unsigned priority + .byte 0x00 +1: + // and finally the handler function pointer + .word 0x00000000 + .set next_slot_number, next_slot_number + 1 +.endr + +irq_handler_chain_first_slot: + push {lr} + ldr r0, [r1, #4] + adds r1, #1 + mov lr, r1 + bx r0 +irq_handler_chain_remove_tail: + mov r0, lr + subs r0, #9 + ldr r1, =irq_add_tail_to_free_list + blx r1 + pop {pc} + + +#endif diff --git a/arkanoid/pico/hardware/pio.c b/arkanoid/pico/hardware/pio.c new file mode 100644 index 0000000..17d4d58 --- /dev/null +++ b/arkanoid/pico/hardware/pio.c @@ -0,0 +1,256 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "claim.h" +#include "pio.h" +#include "pio_instructions.h" + +// sanity check +check_hw_layout(pio_hw_t, sm[0].clkdiv, PIO_SM0_CLKDIV_OFFSET); +check_hw_layout(pio_hw_t, sm[1].clkdiv, PIO_SM1_CLKDIV_OFFSET); +check_hw_layout(pio_hw_t, instr_mem[0], PIO_INSTR_MEM0_OFFSET); +check_hw_layout(pio_hw_t, inte0, PIO_IRQ0_INTE_OFFSET); +check_hw_layout(pio_hw_t, txf[1], PIO_TXF1_OFFSET); +check_hw_layout(pio_hw_t, rxf[3], PIO_RXF3_OFFSET); +check_hw_layout(pio_hw_t, ints1, PIO_IRQ1_INTS_OFFSET); + +static_assert(NUM_PIO_STATE_MACHINES * NUM_PIOS <= 8, ""); +static uint8_t claimed; + +void pio_sm_claim(PIO pio, uint sm) { + check_sm_param(sm); + uint which = pio_get_index(pio); + if (which) { + hw_claim_or_assert(&claimed, NUM_PIO_STATE_MACHINES + sm, "PIO 1 SM (%d - 4) already claimed"); + } else { + hw_claim_or_assert(&claimed, sm, "PIO 0 SM %d already claimed"); + } +} + +void pio_claim_sm_mask(PIO pio, uint sm_mask) { + for(uint i = 0; sm_mask; i++, sm_mask >>= 1u) { + if (sm_mask & 1u) pio_sm_claim(pio, i); + } +} + +void pio_sm_unclaim(PIO pio, uint sm) { + check_sm_param(sm); + uint which = pio_get_index(pio); + hw_claim_clear(&claimed, which * NUM_PIO_STATE_MACHINES + sm); +} + +int pio_claim_unused_sm(PIO pio, bool required) { + // PIO index is 0 or 1. + uint which = pio_get_index(pio); + uint base = which * NUM_PIO_STATE_MACHINES; + int index = hw_claim_unused_from_range((uint8_t*)&claimed, required, base, + base + NUM_PIO_STATE_MACHINES - 1, "No PIO state machines are available"); + return index >= (int)base ? index - (int)base : -1; +} + +bool pio_sm_is_claimed(PIO pio, uint sm) { + check_sm_param(sm); + uint which = pio_get_index(pio); + return hw_is_claimed(&claimed, which * NUM_PIO_STATE_MACHINES + sm); +} + +static_assert(PIO_INSTRUCTION_COUNT <= 32, ""); +static uint32_t _used_instruction_space[2]; + +static int _pio_find_offset_for_program(PIO pio, const pio_program_t *program) { + assert(program->length <= PIO_INSTRUCTION_COUNT); + uint32_t used_mask = _used_instruction_space[pio_get_index(pio)]; + uint32_t program_mask = (1u << program->length) - 1; + if (program->origin >= 0) { + if (program->origin > 32 - program->length) return -1; + return used_mask & (program_mask << program->origin) ? -1 : program->origin; + } else { + // work down from the top always + for (int i = 32 - program->length; i >= 0; i--) { + if (!(used_mask & (program_mask << (uint) i))) { + return i; + } + } + return -1; + } +} + +bool pio_can_add_program(PIO pio, const pio_program_t *program) { + uint32_t save = hw_claim_lock(); + bool rc = -1 != _pio_find_offset_for_program(pio, program); + hw_claim_unlock(save); + return rc; +} + +static bool _pio_can_add_program_at_offset(PIO pio, const pio_program_t *program, uint offset) { + valid_params_if(PIO, offset < PIO_INSTRUCTION_COUNT); + valid_params_if(PIO, offset + program->length <= PIO_INSTRUCTION_COUNT); + if (program->origin >= 0 && (uint)program->origin != offset) return false; + uint32_t used_mask = _used_instruction_space[pio_get_index(pio)]; + uint32_t program_mask = (1u << program->length) - 1; + return !(used_mask & (program_mask << offset)); +} + +bool pio_can_add_program_at_offset(PIO pio, const pio_program_t *program, uint offset) { + uint32_t save = hw_claim_lock(); + bool rc = _pio_can_add_program_at_offset(pio, program, offset); + hw_claim_unlock(save); + return rc; +} + +static void _pio_add_program_at_offset(PIO pio, const pio_program_t *program, uint offset) { + if (!_pio_can_add_program_at_offset(pio, program, offset)) { + panic("No program space"); + } + for (uint i = 0; i < program->length; ++i) { + uint16_t instr = program->instructions[i]; + pio->instr_mem[offset + i] = pio_instr_bits_jmp != _pio_major_instr_bits(instr) ? instr : instr + offset; + } + uint32_t program_mask = (1u << program->length) - 1; + _used_instruction_space[pio_get_index(pio)] |= program_mask << offset; +} + +// these assert if unable +uint pio_add_program(PIO pio, const pio_program_t *program) { + uint32_t save = hw_claim_lock(); + int offset = _pio_find_offset_for_program(pio, program); + if (offset < 0) { + panic("No program space"); + } + _pio_add_program_at_offset(pio, program, (uint)offset); + hw_claim_unlock(save); + return (uint)offset; +} + +void pio_add_program_at_offset(PIO pio, const pio_program_t *program, uint offset) { + uint32_t save = hw_claim_lock(); + _pio_add_program_at_offset(pio, program, offset); + hw_claim_unlock(save); +} + +void pio_remove_program(PIO pio, const pio_program_t *program, uint loaded_offset) { + uint32_t program_mask = (1u << program->length) - 1; + program_mask <<= loaded_offset; + uint32_t save = hw_claim_lock(); + assert(program_mask == (_used_instruction_space[pio_get_index(pio)] & program_mask)); + _used_instruction_space[pio_get_index(pio)] &= ~program_mask; + hw_claim_unlock(save); +} + +void pio_clear_instruction_memory(PIO pio) { + uint32_t save = hw_claim_lock(); + _used_instruction_space[pio_get_index(pio)] = 0; + for(uint i=0;i<PIO_INSTRUCTION_COUNT;i++) { + pio->instr_mem[i] = pio_encode_jmp(i); + } + hw_claim_unlock(save); +} + +// Set the value of all PIO pins. This is done by forcibly executing +// instructions on a "victim" state machine, sm. Ideally you should choose one +// which is not currently running a program. This is intended for one-time +// setup of initial pin states. +void pio_sm_set_pins(PIO pio, uint sm, uint32_t pins) { + check_pio_param(pio); + check_sm_param(sm); + uint32_t pinctrl_saved = pio->sm[sm].pinctrl; + uint remaining = 32; + uint base = 0; + while (remaining) { + uint decrement = remaining > 5 ? 5 : remaining; + pio->sm[sm].pinctrl = + (decrement << PIO_SM0_PINCTRL_SET_COUNT_LSB) | + (base << PIO_SM0_PINCTRL_SET_BASE_LSB); + pio_sm_exec(pio, sm, pio_encode_set(pio_pins, pins & 0x1fu)); + remaining -= decrement; + base += decrement; + pins >>= 5; + } + pio->sm[sm].pinctrl = pinctrl_saved; +} + +void pio_sm_set_pins_with_mask(PIO pio, uint sm, uint32_t pinvals, uint32_t pin_mask) { + check_pio_param(pio); + check_sm_param(sm); + uint32_t pinctrl_saved = pio->sm[sm].pinctrl; + while (pin_mask) { + uint base = (uint)__builtin_ctz(pin_mask); + pio->sm[sm].pinctrl = + (1u << PIO_SM0_PINCTRL_SET_COUNT_LSB) | + (base << PIO_SM0_PINCTRL_SET_BASE_LSB); + pio_sm_exec(pio, sm, pio_encode_set(pio_pins, (pinvals >> base) & 0x1u)); + pin_mask &= pin_mask - 1; + } + pio->sm[sm].pinctrl = pinctrl_saved; +} + +void pio_sm_set_pindirs_with_mask(PIO pio, uint sm, uint32_t pindirs, uint32_t pin_mask) { + check_pio_param(pio); + check_sm_param(sm); + uint32_t pinctrl_saved = pio->sm[sm].pinctrl; + while (pin_mask) { + uint base = (uint)__builtin_ctz(pin_mask); + pio->sm[sm].pinctrl = + (1u << PIO_SM0_PINCTRL_SET_COUNT_LSB) | + (base << PIO_SM0_PINCTRL_SET_BASE_LSB); + pio_sm_exec(pio, sm, pio_encode_set(pio_pindirs, (pindirs >> base) & 0x1u)); + pin_mask &= pin_mask - 1; + } + pio->sm[sm].pinctrl = pinctrl_saved; +} + +void pio_sm_set_consecutive_pindirs(PIO pio, uint sm, uint pin, uint count, bool is_out) { + check_pio_param(pio); + check_sm_param(sm); + valid_params_if(PIO, pin < 32u); + uint32_t pinctrl_saved = pio->sm[sm].pinctrl; + uint pindir_val = is_out ? 0x1f : 0; + while (count > 5) { + pio->sm[sm].pinctrl = (5u << PIO_SM0_PINCTRL_SET_COUNT_LSB) | (pin << PIO_SM0_PINCTRL_SET_BASE_LSB); + pio_sm_exec(pio, sm, pio_encode_set(pio_pindirs, pindir_val)); + count -= 5; + pin = (pin + 5) & 0x1f; + } + pio->sm[sm].pinctrl = (count << PIO_SM0_PINCTRL_SET_COUNT_LSB) | (pin << PIO_SM0_PINCTRL_SET_BASE_LSB); + pio_sm_exec(pio, sm, pio_encode_set(pio_pindirs, pindir_val)); + pio->sm[sm].pinctrl = pinctrl_saved; +} + +void pio_sm_init(PIO pio, uint sm, uint initial_pc, const pio_sm_config *config) { + valid_params_if(PIO, initial_pc < PIO_INSTRUCTION_COUNT); + // Halt the machine, set some sensible defaults + pio_sm_set_enabled(pio, sm, false); + + if (config) { + pio_sm_set_config(pio, sm, config); + } else { + pio_sm_config c = pio_get_default_sm_config(); + pio_sm_set_config(pio, sm, &c); + } + + pio_sm_clear_fifos(pio, sm); + + // Clear FIFO debug flags + const uint32_t fdebug_sm_mask = + (1u << PIO_FDEBUG_TXOVER_LSB) | + (1u << PIO_FDEBUG_RXUNDER_LSB) | + (1u << PIO_FDEBUG_TXSTALL_LSB) | + (1u << PIO_FDEBUG_RXSTALL_LSB); + pio->fdebug = fdebug_sm_mask << sm; + + // Finally, clear some internal SM state + pio_sm_restart(pio, sm); + pio_sm_clkdiv_restart(pio, sm); + pio_sm_exec(pio, sm, pio_encode_jmp(initial_pc)); +} + +void pio_sm_drain_tx_fifo(PIO pio, uint sm) { + uint instr = (pio->sm[sm].shiftctrl & PIO_SM0_SHIFTCTRL_AUTOPULL_BITS) ? pio_encode_out(pio_null, 32) : + pio_encode_pull(false, false); + while (!pio_sm_is_tx_fifo_empty(pio, sm)) { + pio_sm_exec(pio, sm, instr); + } +} diff --git a/arkanoid/pico/hardware/pio.h b/arkanoid/pico/hardware/pio.h new file mode 100644 index 0000000..a629df8 --- /dev/null +++ b/arkanoid/pico/hardware/pio.h @@ -0,0 +1,1311 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_PIO_H_ +#define _HARDWARE_PIO_H_ + +#include "../pico.h" +#include "address_mapped.h" +#include "structs/pio.h" +#include "gpio.h" +#include "regs/dreq.h" +#include "pio_instructions.h" + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_PIO, Enable/disable assertions in the PIO module, type=bool, default=0, group=hardware_pio +#ifndef PARAM_ASSERTIONS_ENABLED_PIO +#define PARAM_ASSERTIONS_ENABLED_PIO 0 +#endif + +/** \file pio.h + * \defgroup hardware_pio hardware_pio + * + * Programmable I/O (PIO) API + * + * A programmable input/output block (PIO) is a versatile hardware interface which + * can support a number of different IO standards. There are two PIO blocks in the RP2040. + * + * Each PIO is programmable in the same sense as a processor: the four state machines independently + * execute short, sequential programs, to manipulate GPIOs and transfer data. Unlike a general + * purpose processor, PIO state machines are highly specialised for IO, with a focus on determinism, + * precise timing, and close integration with fixed-function hardware. Each state machine is equipped + * with: + * * Two 32-bit shift registers – either direction, any shift count + * * Two 32-bit scratch registers + * * 4×32 bit bus FIFO in each direction (TX/RX), reconfigurable as 8×32 in a single direction + * * Fractional clock divider (16 integer, 8 fractional bits) + * * Flexible GPIO mapping + * * DMA interface, sustained throughput up to 1 word per clock from system DMA + * * IRQ flag set/clear/status + * + * Full details of the PIO can be found in the RP2040 datasheet. + */ + +#ifdef __cplusplus +extern "C" { +#endif + +static_assert(PIO_SM0_SHIFTCTRL_FJOIN_RX_LSB == PIO_SM0_SHIFTCTRL_FJOIN_TX_LSB + 1, ""); + +/** \brief FIFO join states + * \ingroup hardware_pio + */ +enum pio_fifo_join { + PIO_FIFO_JOIN_NONE = 0, + PIO_FIFO_JOIN_TX = 1, + PIO_FIFO_JOIN_RX = 2, +}; + +/** \brief MOV status types + * \ingroup hardware_pio + */ +enum pio_mov_status_type { + STATUS_TX_LESSTHAN = 0, + STATUS_RX_LESSTHAN = 1 +}; + +typedef pio_hw_t *PIO; + +/** Identifier for the first (PIO 0) hardware PIO instance (for use in PIO functions). + * + * e.g. pio_gpio_init(pio0, 5) + * + * \ingroup hardware_pio + * @{ + */ +#define pio0 pio0_hw +/** @} */ + +/** Identifier for the second (PIO 1) hardware PIO instance (for use in PIO functions). + * + * e.g. pio_gpio_init(pio1, 5) + * + * \ingroup hardware_pio + * @{ + */ +#define pio1 pio1_hw +/** @} */ + +/** \brief PIO state machine configuration + * \defgroup sm_config sm_config + * \ingroup hardware_pio + * + * A PIO block needs to be configured, these functions provide helpers to set up configuration + * structures. See \ref pio_sm_set_config + * + */ + +/** \brief PIO Configuration structure + * \ingroup sm_config + */ +typedef struct { + uint32_t clkdiv; + uint32_t execctrl; + uint32_t shiftctrl; + uint32_t pinctrl; +} pio_sm_config; + +static inline void check_sm_param(__unused uint sm) { + valid_params_if(PIO, sm < NUM_PIO_STATE_MACHINES); +} + +static inline void check_sm_mask(__unused uint mask) { + valid_params_if(PIO, mask < (1u << NUM_PIO_STATE_MACHINES)); +} + + +static inline void check_pio_param(__unused PIO pio) { + valid_params_if(PIO, pio == pio0 || pio == pio1); +} + +/*! \brief Set the 'out' pins in a state machine configuration + * \ingroup sm_config + * + * Can overlap with the 'in', 'set' and 'sideset' pins + * + * \param c Pointer to the configuration structure to modify + * \param out_base 0-31 First pin to set as output + * \param out_count 0-32 Number of pins to set. + */ +static inline void sm_config_set_out_pins(pio_sm_config *c, uint out_base, uint out_count) { + valid_params_if(PIO, out_base < 32); + valid_params_if(PIO, out_count <= 32); + c->pinctrl = (c->pinctrl & ~(PIO_SM0_PINCTRL_OUT_BASE_BITS | PIO_SM0_PINCTRL_OUT_COUNT_BITS)) | + (out_base << PIO_SM0_PINCTRL_OUT_BASE_LSB) | + (out_count << PIO_SM0_PINCTRL_OUT_COUNT_LSB); +} + +/*! \brief Set the 'set' pins in a state machine configuration + * \ingroup sm_config + * + * Can overlap with the 'in', 'out' and 'sideset' pins + * + * \param c Pointer to the configuration structure to modify + * \param set_base 0-31 First pin to set as + * \param set_count 0-5 Number of pins to set. + */ +static inline void sm_config_set_set_pins(pio_sm_config *c, uint set_base, uint set_count) { + valid_params_if(PIO, set_base < 32); + valid_params_if(PIO, set_count <= 5); + c->pinctrl = (c->pinctrl & ~(PIO_SM0_PINCTRL_SET_BASE_BITS | PIO_SM0_PINCTRL_SET_COUNT_BITS)) | + (set_base << PIO_SM0_PINCTRL_SET_BASE_LSB) | + (set_count << PIO_SM0_PINCTRL_SET_COUNT_LSB); +} + +/*! \brief Set the 'in' pins in a state machine configuration + * \ingroup sm_config + * + * Can overlap with the 'out', ''set' and 'sideset' pins + * + * \param c Pointer to the configuration structure to modify + * \param in_base 0-31 First pin to use as input + */ +static inline void sm_config_set_in_pins(pio_sm_config *c, uint in_base) { + valid_params_if(PIO, in_base < 32); + c->pinctrl = (c->pinctrl & ~PIO_SM0_PINCTRL_IN_BASE_BITS) | + (in_base << PIO_SM0_PINCTRL_IN_BASE_LSB); +} + +/*! \brief Set the 'sideset' pins in a state machine configuration + * \ingroup sm_config + * + * Can overlap with the 'in', 'out' and 'set' pins + * + * \param c Pointer to the configuration structure to modify + * \param sideset_base 0-31 base pin for 'side set' + */ +static inline void sm_config_set_sideset_pins(pio_sm_config *c, uint sideset_base) { + valid_params_if(PIO, sideset_base < 32); + c->pinctrl = (c->pinctrl & ~PIO_SM0_PINCTRL_SIDESET_BASE_BITS) | + (sideset_base << PIO_SM0_PINCTRL_SIDESET_BASE_LSB); +} + +/*! \brief Set the 'sideset' options in a state machine configuration + * \ingroup sm_config + * + * \param c Pointer to the configuration structure to modify + * \param bit_count Number of bits to steal from delay field in the instruction for use of side set (max 5) + * \param optional True if the topmost side set bit is used as a flag for whether to apply side set on that instruction + * \param pindirs True if the side set affects pin directions rather than values + */ +static inline void sm_config_set_sideset(pio_sm_config *c, uint bit_count, bool optional, bool pindirs) { + valid_params_if(PIO, bit_count <= 5); + valid_params_if(PIO, !optional || bit_count >= 1); + c->pinctrl = (c->pinctrl & ~PIO_SM0_PINCTRL_SIDESET_COUNT_BITS) | + (bit_count << PIO_SM0_PINCTRL_SIDESET_COUNT_LSB); + + c->execctrl = (c->execctrl & ~(PIO_SM0_EXECCTRL_SIDE_EN_BITS | PIO_SM0_EXECCTRL_SIDE_PINDIR_BITS)) | + (bool_to_bit(optional) << PIO_SM0_EXECCTRL_SIDE_EN_LSB) | + (bool_to_bit(pindirs) << PIO_SM0_EXECCTRL_SIDE_PINDIR_LSB); +} + +/*! \brief Set the state machine clock divider (from integer and fractional parts - 16:8) in a state machine configuration + * \ingroup sm_config + * + * The clock divider can slow the state machine's execution to some rate below + * the system clock frequency, by enabling the state machine on some cycles + * but not on others, in a regular pattern. This can be used to generate e.g. + * a given UART baud rate. See the datasheet for further detail. + * + * \param c Pointer to the configuration structure to modify + * \param div_int Integer part of the divisor + * \param div_frac Fractional part in 1/256ths + * \sa sm_config_set_clkdiv() + */ +static inline void sm_config_set_clkdiv_int_frac(pio_sm_config *c, uint16_t div_int, uint8_t div_frac) { + c->clkdiv = + (((uint)div_frac) << PIO_SM0_CLKDIV_FRAC_LSB) | + (((uint)div_int) << PIO_SM0_CLKDIV_INT_LSB); +} + +static inline void pio_calculate_clkdiv_from_float(float div, uint16_t *div_int, uint8_t *div_frac) { + valid_params_if(PIO, div >= 1 && div <= 65536); + *div_int = (uint16_t)div; + if (*div_int == 0) { + *div_frac = 0; + } else { + *div_frac = (uint8_t)((div - (float)*div_int) * (1u << 8u)); + } +} + +/*! \brief Set the state machine clock divider (from a floating point value) in a state machine configuration + * \ingroup sm_config + * + * The clock divider slows the state machine's execution by masking the + * system clock on some cycles, in a repeating pattern, so that the state + * machine does not advance. Effectively this produces a slower clock for the + * state machine to run from, which can be used to generate e.g. a particular + * UART baud rate. See the datasheet for further detail. + * + * \param c Pointer to the configuration structure to modify + * \param div The fractional divisor to be set. 1 for full speed. An integer clock divisor of n + * will cause the state machine to run 1 cycle in every n. + * Note that for small n, the jitter introduced by a fractional divider (e.g. 2.5) may be unacceptable + * although it will depend on the use case. + */ +static inline void sm_config_set_clkdiv(pio_sm_config *c, float div) { + uint16_t div_int; + uint8_t div_frac; + pio_calculate_clkdiv_from_float(div, &div_int, &div_frac); + sm_config_set_clkdiv_int_frac(c, div_int, div_frac); +} + +/*! \brief Set the wrap addresses in a state machine configuration + * \ingroup sm_config + * + * \param c Pointer to the configuration structure to modify + * \param wrap_target the instruction memory address to wrap to + * \param wrap the instruction memory address after which to set the program counter to wrap_target + * if the instruction does not itself update the program_counter + */ +static inline void sm_config_set_wrap(pio_sm_config *c, uint wrap_target, uint wrap) { + valid_params_if(PIO, wrap < PIO_INSTRUCTION_COUNT); + valid_params_if(PIO, wrap_target < PIO_INSTRUCTION_COUNT); + c->execctrl = (c->execctrl & ~(PIO_SM0_EXECCTRL_WRAP_TOP_BITS | PIO_SM0_EXECCTRL_WRAP_BOTTOM_BITS)) | + (wrap_target << PIO_SM0_EXECCTRL_WRAP_BOTTOM_LSB) | + (wrap << PIO_SM0_EXECCTRL_WRAP_TOP_LSB); +} + +/*! \brief Set the 'jmp' pin in a state machine configuration + * \ingroup sm_config + * + * \param c Pointer to the configuration structure to modify + * \param pin The raw GPIO pin number to use as the source for a `jmp pin` instruction + */ +static inline void sm_config_set_jmp_pin(pio_sm_config *c, uint pin) { + valid_params_if(PIO, pin < 32); + c->execctrl = (c->execctrl & ~PIO_SM0_EXECCTRL_JMP_PIN_BITS) | + (pin << PIO_SM0_EXECCTRL_JMP_PIN_LSB); +} + +/*! \brief Setup 'in' shifting parameters in a state machine configuration + * \ingroup sm_config + * + * \param c Pointer to the configuration structure to modify + * \param shift_right true to shift ISR to right, false to shift ISR to left + * \param autopush whether autopush is enabled + * \param push_threshold threshold in bits to shift in before auto/conditional re-pushing of the ISR + */ +static inline void sm_config_set_in_shift(pio_sm_config *c, bool shift_right, bool autopush, uint push_threshold) { + valid_params_if(PIO, push_threshold <= 32); + c->shiftctrl = (c->shiftctrl & + ~(PIO_SM0_SHIFTCTRL_IN_SHIFTDIR_BITS | + PIO_SM0_SHIFTCTRL_AUTOPUSH_BITS | + PIO_SM0_SHIFTCTRL_PUSH_THRESH_BITS)) | + (bool_to_bit(shift_right) << PIO_SM0_SHIFTCTRL_IN_SHIFTDIR_LSB) | + (bool_to_bit(autopush) << PIO_SM0_SHIFTCTRL_AUTOPUSH_LSB) | + ((push_threshold & 0x1fu) << PIO_SM0_SHIFTCTRL_PUSH_THRESH_LSB); +} + +/*! \brief Setup 'out' shifting parameters in a state machine configuration + * \ingroup sm_config + * + * \param c Pointer to the configuration structure to modify + * \param shift_right true to shift OSR to right, false to shift OSR to left + * \param autopull whether autopull is enabled + * \param pull_threshold threshold in bits to shift out before auto/conditional re-pulling of the OSR + */ +static inline void sm_config_set_out_shift(pio_sm_config *c, bool shift_right, bool autopull, uint pull_threshold) { + valid_params_if(PIO, pull_threshold <= 32); + c->shiftctrl = (c->shiftctrl & + ~(PIO_SM0_SHIFTCTRL_OUT_SHIFTDIR_BITS | + PIO_SM0_SHIFTCTRL_AUTOPULL_BITS | + PIO_SM0_SHIFTCTRL_PULL_THRESH_BITS)) | + (bool_to_bit(shift_right) << PIO_SM0_SHIFTCTRL_OUT_SHIFTDIR_LSB) | + (bool_to_bit(autopull) << PIO_SM0_SHIFTCTRL_AUTOPULL_LSB) | + ((pull_threshold & 0x1fu) << PIO_SM0_SHIFTCTRL_PULL_THRESH_LSB); +} + +/*! \brief Setup the FIFO joining in a state machine configuration + * \ingroup sm_config + * + * \param c Pointer to the configuration structure to modify + * \param join Specifies the join type. \see enum pio_fifo_join + */ +static inline void sm_config_set_fifo_join(pio_sm_config *c, enum pio_fifo_join join) { + valid_params_if(PIO, join == PIO_FIFO_JOIN_NONE || join == PIO_FIFO_JOIN_TX || join == PIO_FIFO_JOIN_RX); + c->shiftctrl = (c->shiftctrl & (uint)~(PIO_SM0_SHIFTCTRL_FJOIN_TX_BITS | PIO_SM0_SHIFTCTRL_FJOIN_RX_BITS)) | + (((uint)join) << PIO_SM0_SHIFTCTRL_FJOIN_TX_LSB); +} + +/*! \brief Set special 'out' operations in a state machine configuration + * \ingroup sm_config + * + * \param c Pointer to the configuration structure to modify + * \param sticky to enable 'sticky' output (i.e. re-asserting most recent OUT/SET pin values on subsequent cycles) + * \param has_enable_pin true to enable auxiliary OUT enable pin + * \param enable_pin_index pin index for auxiliary OUT enable + */ +static inline void sm_config_set_out_special(pio_sm_config *c, bool sticky, bool has_enable_pin, uint enable_pin_index) { + c->execctrl = (c->execctrl & + (uint)~(PIO_SM0_EXECCTRL_OUT_STICKY_BITS | PIO_SM0_EXECCTRL_INLINE_OUT_EN_BITS | + PIO_SM0_EXECCTRL_OUT_EN_SEL_BITS)) | + (bool_to_bit(sticky) << PIO_SM0_EXECCTRL_OUT_STICKY_LSB) | + (bool_to_bit(has_enable_pin) << PIO_SM0_EXECCTRL_INLINE_OUT_EN_LSB) | + ((enable_pin_index << PIO_SM0_EXECCTRL_OUT_EN_SEL_LSB) & PIO_SM0_EXECCTRL_OUT_EN_SEL_BITS); +} + +/*! \brief Set source for 'mov status' in a state machine configuration + * \ingroup sm_config + * + * \param c Pointer to the configuration structure to modify + * \param status_sel the status operation selector. \see enum pio_mov_status_type + * \param status_n parameter for the mov status operation (currently a bit count) + */ +static inline void sm_config_set_mov_status(pio_sm_config *c, enum pio_mov_status_type status_sel, uint status_n) { + valid_params_if(PIO, status_sel == STATUS_TX_LESSTHAN || status_sel == STATUS_RX_LESSTHAN); + c->execctrl = (c->execctrl + & ~(PIO_SM0_EXECCTRL_STATUS_SEL_BITS | PIO_SM0_EXECCTRL_STATUS_N_BITS)) + | ((((uint)status_sel) << PIO_SM0_EXECCTRL_STATUS_SEL_LSB) & PIO_SM0_EXECCTRL_STATUS_SEL_BITS) + | ((status_n << PIO_SM0_EXECCTRL_STATUS_N_LSB) & PIO_SM0_EXECCTRL_STATUS_N_BITS); +} + + +/*! \brief Get the default state machine configuration + * \ingroup sm_config + * + * Setting | Default + * --------|-------- + * Out Pins | 32 starting at 0 + * Set Pins | 0 starting at 0 + * In Pins (base) | 0 + * Side Set Pins (base) | 0 + * Side Set | disabled + * Wrap | wrap=31, wrap_to=0 + * In Shift | shift_direction=right, autopush=false, push_thrshold=32 + * Out Shift | shift_direction=right, autopull=false, pull_thrshold=32 + * Jmp Pin | 0 + * Out Special | sticky=false, has_enable_pin=false, enable_pin_index=0 + * Mov Status | status_sel=STATUS_TX_LESSTHAN, n=0 + * + * \return the default state machine configuration which can then be modified. + */ +static inline pio_sm_config pio_get_default_sm_config(void) { + pio_sm_config c = {0, 0, 0, 0}; + sm_config_set_clkdiv_int_frac(&c, 1, 0); + sm_config_set_wrap(&c, 0, 31); + sm_config_set_in_shift(&c, true, false, 32); + sm_config_set_out_shift(&c, true, false, 32); + return c; +} + +/*! \brief Apply a state machine configuration to a state machine + * \ingroup hardware_pio + * + * \param pio Handle to PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \param config the configuration to apply +*/ +static inline void pio_sm_set_config(PIO pio, uint sm, const pio_sm_config *config) { + check_pio_param(pio); + check_sm_param(sm); + pio->sm[sm].clkdiv = config->clkdiv; + pio->sm[sm].execctrl = config->execctrl; + pio->sm[sm].shiftctrl = config->shiftctrl; + pio->sm[sm].pinctrl = config->pinctrl; +} + +/*! \brief Return the instance number of a PIO instance + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \return the PIO instance number (either 0 or 1) + */ +static inline uint pio_get_index(PIO pio) { + check_pio_param(pio); + return pio == pio1 ? 1 : 0; +} + +/*! \brief Setup the function select for a GPIO to use output from the given PIO instance + * \ingroup hardware_pio + * + * PIO appears as an alternate function in the GPIO muxing, just like an SPI + * or UART. This function configures that multiplexing to connect a given PIO + * instance to a GPIO. Note that this is not necessary for a state machine to + * be able to read the *input* value from a GPIO, but only for it to set the + * output value or output enable. + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param pin the GPIO pin whose function select to set + */ +static inline void pio_gpio_init(PIO pio, uint pin) { + check_pio_param(pio); + valid_params_if(PIO, pin < 32); + gpio_set_function(pin, pio == pio0 ? GPIO_FUNC_PIO0 : GPIO_FUNC_PIO1); +} + +/*! \brief Return the DREQ to use for pacing transfers to/from a particular state machine FIFO + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \param is_tx true for sending data to the state machine, false for receiving data from the state machine + */ +static inline uint pio_get_dreq(PIO pio, uint sm, bool is_tx) { + static_assert(DREQ_PIO0_TX1 == DREQ_PIO0_TX0 + 1, ""); + static_assert(DREQ_PIO0_TX2 == DREQ_PIO0_TX0 + 2, ""); + static_assert(DREQ_PIO0_TX3 == DREQ_PIO0_TX0 + 3, ""); + static_assert(DREQ_PIO0_RX0 == DREQ_PIO0_TX0 + NUM_PIO_STATE_MACHINES, ""); + static_assert(DREQ_PIO1_RX0 == DREQ_PIO1_TX0 + NUM_PIO_STATE_MACHINES, ""); + check_pio_param(pio); + check_sm_param(sm); + return sm + (is_tx ? 0 : NUM_PIO_STATE_MACHINES) + (pio == pio0 ? DREQ_PIO0_TX0 : DREQ_PIO1_TX0); +} + +typedef struct pio_program { + const uint16_t *instructions; + uint8_t length; + int8_t origin; // required instruction memory origin or -1 +} __packed pio_program_t; + +/*! \brief Determine whether the given program can (at the time of the call) be loaded onto the PIO instance + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param program the program definition + * \return true if the program can be loaded; false if there is not suitable space in the instruction memory + */ +bool pio_can_add_program(PIO pio, const pio_program_t *program); + +/*! \brief Determine whether the given program can (at the time of the call) be loaded onto the PIO instance starting at a particular location + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param program the program definition + * \param offset the instruction memory offset wanted for the start of the program + * \return true if the program can be loaded at that location; false if there is not space in the instruction memory + */ +bool pio_can_add_program_at_offset(PIO pio, const pio_program_t *program, uint offset); + +/*! \brief Attempt to load the program, panicking if not possible + * \ingroup hardware_pio + * + * \see pio_can_add_program() if you need to check whether the program can be loaded + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param program the program definition + * \return the instruction memory offset the program is loaded at + */ +uint pio_add_program(PIO pio, const pio_program_t *program); + +/*! \brief Attempt to load the program at the specified instruction memory offset, panicking if not possible + * \ingroup hardware_pio + * + * \see pio_can_add_program_at_offset() if you need to check whether the program can be loaded + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param program the program definition + * \param offset the instruction memory offset wanted for the start of the program + */ +void pio_add_program_at_offset(PIO pio, const pio_program_t *program, uint offset); + +/*! \brief Remove a program from a PIO instance's instruction memory + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param program the program definition + * \param loaded_offset the loaded offset returned when the program was added + */ +void pio_remove_program(PIO pio, const pio_program_t *program, uint loaded_offset); + +/*! \brief Clears all of a PIO instance's instruction memory + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + */ +void pio_clear_instruction_memory(PIO pio); + +/*! \brief Resets the state machine to a consistent state, and configures it + * \ingroup hardware_pio + * + * This method: + * - Disables the state machine (if running) + * - Clears the FIFOs + * - Applies the configuration specified by 'config' + * - Resets any internal state e.g. shift counters + * - Jumps to the initial program location given by 'initial_pc' + * + * The state machine is left disabled on return from this call. + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \param initial_pc the initial program memory offset to run from + * \param config the configuration to apply (or NULL to apply defaults) + */ +void pio_sm_init(PIO pio, uint sm, uint initial_pc, const pio_sm_config *config); + +/*! \brief Enable or disable a PIO state machine + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \param enabled true to enable the state machine; false to disable + */ +static inline void pio_sm_set_enabled(PIO pio, uint sm, bool enabled) { + check_pio_param(pio); + check_sm_param(sm); + pio->ctrl = (pio->ctrl & ~(1u << sm)) | (bool_to_bit(enabled) << sm); +} + +/*! \brief Enable or disable multiple PIO state machines + * \ingroup hardware_pio + * + * Note that this method just sets the enabled state of the state machine; + * if now enabled they continue exactly from where they left off. + * + * \see pio_enable_sm_mask_in_sync() if you wish to enable multiple state machines + * and ensure their clock dividers are in sync. + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param mask bit mask of state machine indexes to modify the enabled state of + * \param enabled true to enable the state machines; false to disable + */ +static inline void pio_set_sm_mask_enabled(PIO pio, uint32_t mask, bool enabled) { + check_pio_param(pio); + check_sm_mask(mask); + pio->ctrl = (pio->ctrl & ~mask) | (enabled ? mask : 0u); +} + +/*! \brief Restart a state machine with a known state + * \ingroup hardware_pio + * + * This method clears the ISR, shift counters, clock divider counter + * pin write flags, delay counter, latched EXEC instruction, and IRQ wait condition. + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + */ +static inline void pio_sm_restart(PIO pio, uint sm) { + check_pio_param(pio); + check_sm_param(sm); + pio->ctrl |= 1u << (PIO_CTRL_SM_RESTART_LSB + sm); +} + +/*! \brief Restart multiple state machine with a known state + * \ingroup hardware_pio + * + * This method clears the ISR, shift counters, clock divider counter + * pin write flags, delay counter, latched EXEC instruction, and IRQ wait condition. + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param mask bit mask of state machine indexes to modify the enabled state of + */ +static inline void pio_restart_sm_mask(PIO pio, uint32_t mask) { + check_pio_param(pio); + check_sm_mask(mask); + pio->ctrl |= (mask << PIO_CTRL_SM_RESTART_LSB) & PIO_CTRL_SM_RESTART_BITS; +} + +/*! \brief Restart a state machine's clock divider from a phase of 0 + * \ingroup hardware_pio + * + * Each state machine's clock divider is a free-running piece of hardware, + * that generates a pattern of clock enable pulses for the state machine, + * based *only* on the configured integer/fractional divisor. The pattern of + * running/halted cycles slows the state machine's execution to some + * controlled rate. + * + * This function clears the divider's integer and fractional phase + * accumulators so that it restarts this pattern from the beginning. It is + * called automatically by pio_sm_init() but can also be called at a later + * time, when you enable the state machine, to ensure precisely consistent + * timing each time you load and run a given PIO program. + * + * More commonly this hardware mechanism is used to synchronise the execution + * clocks of multiple state machines -- see pio_clkdiv_restart_sm_mask(). + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + */ +static inline void pio_sm_clkdiv_restart(PIO pio, uint sm) { + check_pio_param(pio); + check_sm_param(sm); + pio->ctrl |= 1u << (PIO_CTRL_CLKDIV_RESTART_LSB + sm); +} + +/*! \brief Restart multiple state machines' clock dividers from a phase of 0. + * \ingroup hardware_pio + * + * Each state machine's clock divider is a free-running piece of hardware, + * that generates a pattern of clock enable pulses for the state machine, + * based *only* on the configured integer/fractional divisor. The pattern of + * running/halted cycles slows the state machine's execution to some + * controlled rate. + * + * This function simultaneously clears the integer and fractional phase + * accumulators of multiple state machines' clock dividers. If these state + * machines all have the same integer and fractional divisors configured, + * their clock dividers will run in precise deterministic lockstep from this + * point. + * + * With their execution clocks synchronised in this way, it is then safe to + * e.g. have multiple state machines performing a 'wait irq' on the same flag, + * and all clear it on the same cycle. + * + * Also note that this function can be called whilst state machines are + * running (e.g. if you have just changed the clock divisors of some state + * machines and wish to resynchronise them), and that disabling a state + * machine does not halt its clock divider: that is, if multiple state + * machines have their clocks synchronised, you can safely disable and + * reenable one of the state machines without losing synchronisation. + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param mask bit mask of state machine indexes to modify the enabled state of + */ +static inline void pio_clkdiv_restart_sm_mask(PIO pio, uint32_t mask) { + check_pio_param(pio); + check_sm_mask(mask); + pio->ctrl |= (mask << PIO_CTRL_CLKDIV_RESTART_LSB) & PIO_CTRL_CLKDIV_RESTART_BITS; +} + +/*! \brief Enable multiple PIO state machines synchronizing their clock dividers + * \ingroup hardware_pio + * + * This is equivalent to calling both pio_set_sm_mask_enabled() and + * pio_clkdiv_restart_sm_mask() on the *same* clock cycle. All state machines + * specified by 'mask' are started simultaneously and, assuming they have the + * same clock divisors, their divided clocks will stay precisely synchronised. + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param mask bit mask of state machine indexes to modify the enabled state of + */ +static inline void pio_enable_sm_mask_in_sync(PIO pio, uint32_t mask) { + check_pio_param(pio); + check_sm_mask(mask); + pio->ctrl |= ((mask << PIO_CTRL_CLKDIV_RESTART_LSB) & PIO_CTRL_CLKDIV_RESTART_BITS) | + ((mask << PIO_CTRL_SM_ENABLE_LSB) & PIO_CTRL_SM_ENABLE_BITS); +} + +/*! \brief PIO interrupt source numbers for pio related IRQs + * \ingroup hardware_pio + */ +enum pio_interrupt_source { + pis_interrupt0 = PIO_INTR_SM0_LSB, + pis_interrupt1 = PIO_INTR_SM1_LSB, + pis_interrupt2 = PIO_INTR_SM2_LSB, + pis_interrupt3 = PIO_INTR_SM3_LSB, + pis_sm0_tx_fifo_not_full = PIO_INTR_SM0_TXNFULL_LSB, + pis_sm1_tx_fifo_not_full = PIO_INTR_SM1_TXNFULL_LSB, + pis_sm2_tx_fifo_not_full = PIO_INTR_SM2_TXNFULL_LSB, + pis_sm3_tx_fifo_not_full = PIO_INTR_SM3_TXNFULL_LSB, + pis_sm0_rx_fifo_not_empty = PIO_INTR_SM0_RXNEMPTY_LSB, + pis_sm1_rx_fifo_not_empty = PIO_INTR_SM1_RXNEMPTY_LSB, + pis_sm2_rx_fifo_not_empty = PIO_INTR_SM2_RXNEMPTY_LSB, + pis_sm3_rx_fifo_not_empty = PIO_INTR_SM3_RXNEMPTY_LSB, +}; + +/*! \brief Enable/Disable a single source on a PIO's IRQ 0 + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param source the source number (see \ref pio_interrupt_source) + * \param enabled true to enable IRQ 0 for the source, false to disable. + */ +static inline void pio_set_irq0_source_enabled(PIO pio, enum pio_interrupt_source source, bool enabled) { + check_pio_param(pio); + invalid_params_if(PIO, source >= 12); + if (enabled) + hw_set_bits(&pio->inte0, 1u << source); + else + hw_clear_bits(&pio->inte0, 1u << source); +} + +/*! \brief Enable/Disable a single source on a PIO's IRQ 1 + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param source the source number (see \ref pio_interrupt_source) + * \param enabled true to enable IRQ 0 for the source, false to disable. + */ +static inline void pio_set_irq1_source_enabled(PIO pio, enum pio_interrupt_source source, bool enabled) { + check_pio_param(pio); + invalid_params_if(PIO, source >= 12); + if (enabled) + hw_set_bits(&pio->inte1, 1u << source); + else + hw_clear_bits(&pio->inte1, 1u << source); +} + +/*! \brief Enable/Disable multiple sources on a PIO's IRQ 0 + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param source_mask Mask of bits, one for each source number (see \ref pio_interrupt_source) to affect + * \param enabled true to enable all the sources specified in the mask on IRQ 0, false to disable all the sources specified in the mask on IRQ 0 + */ +static inline void pio_set_irq0_source_mask_enabled(PIO pio, uint32_t source_mask, bool enabled) { + check_pio_param(pio); + invalid_params_if(PIO, source_mask > PIO_INTR_BITS); + if (enabled) { + hw_set_bits(&pio->inte0, source_mask); + } else { + hw_clear_bits(&pio->inte0, source_mask); + } +} + +/*! \brief Enable/Disable multiple sources on a PIO's IRQ 1 + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param source_mask Mask of bits, one for each source number (see \ref pio_interrupt_source) to affect + * \param enabled true to enable all the sources specified in the mask on IRQ 1, false to disable all the source specified in the mask on IRQ 1 + */ +static inline void pio_set_irq1_source_mask_enabled(PIO pio, uint32_t source_mask, bool enabled) { + check_pio_param(pio); + invalid_params_if(PIO, source_mask > PIO_INTR_BITS); + if (enabled) { + hw_set_bits(&pio->inte1, source_mask); + } else { + hw_clear_bits(&pio->inte1, source_mask); + } +} + +/*! \brief Enable/Disable a single source on a PIO's specified (0/1) IRQ index + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param irq_index the IRQ index; either 0 or 1 + * \param source the source number (see \ref pio_interrupt_source) + * \param enabled true to enable the source on the specified IRQ, false to disable. + */ +static inline void pio_set_irqn_source_enabled(PIO pio, uint irq_index, enum pio_interrupt_source source, bool enabled) { + invalid_params_if(PIO, irq_index > 1); + if (irq_index) { + pio_set_irq1_source_enabled(pio, source, enabled); + } else { + pio_set_irq0_source_enabled(pio, source, enabled); + } +} + +/*! \brief Enable/Disable multiple sources on a PIO's specified (0/1) IRQ index + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param irq_index the IRQ index; either 0 or 1 + * \param source_mask Mask of bits, one for each source number (see \ref pio_interrupt_source) to affect + * \param enabled true to enable all the sources specified in the mask on the specified IRQ, false to disable all the sources specified in the mask on the specified IRQ + */ +static inline void pio_set_irqn_source_mask_enabled(PIO pio, uint irq_index, uint32_t source_mask, bool enabled) { + invalid_params_if(PIO, irq_index > 1); + if (irq_index) { + pio_set_irq0_source_mask_enabled(pio, source_mask, enabled); + } else { + pio_set_irq1_source_mask_enabled(pio, source_mask, enabled); + } +} + +/*! \brief Determine if a particular PIO interrupt is set + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param pio_interrupt_num the PIO interrupt number 0-7 + * \return true if corresponding PIO interrupt is currently set + */ +static inline bool pio_interrupt_get(PIO pio, uint pio_interrupt_num) { + check_pio_param(pio); + invalid_params_if(PIO, pio_interrupt_num >= 8); + return pio->irq & (1u << pio_interrupt_num); +} + +/*! \brief Clear a particular PIO interrupt + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param pio_interrupt_num the PIO interrupt number 0-7 + */ +static inline void pio_interrupt_clear(PIO pio, uint pio_interrupt_num) { + check_pio_param(pio); + invalid_params_if(PIO, pio_interrupt_num >= 8); + hw_set_bits(&pio->irq, (1u << pio_interrupt_num)); +} + +/*! \brief Return the current program counter for a state machine + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \return the program counter + */ +static inline uint8_t pio_sm_get_pc(PIO pio, uint sm) { + check_pio_param(pio); + check_sm_param(sm); + return (uint8_t) pio->sm[sm].addr; +} + +/*! \brief Immediately execute an instruction on a state machine + * \ingroup hardware_pio + * + * This instruction is executed instead of the next instruction in the normal control flow on the state machine. + * Subsequent calls to this method replace the previous executed + * instruction if it is still running. \see pio_sm_is_exec_stalled() to see if an executed instruction + * is still running (i.e. it is stalled on some condition) + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \param instr the encoded PIO instruction + */ +inline static void pio_sm_exec(PIO pio, uint sm, uint instr) { + check_pio_param(pio); + check_sm_param(sm); + pio->sm[sm].instr = instr; +} + +/*! \brief Determine if an instruction set by pio_sm_exec() is stalled executing + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \return true if the executed instruction is still running (stalled) + */ +static inline bool pio_sm_is_exec_stalled(PIO pio, uint sm) { + check_pio_param(pio); + check_sm_param(sm); + return !!(pio->sm[sm].execctrl & PIO_SM0_EXECCTRL_EXEC_STALLED_BITS); +} + +/*! \brief Immediately execute an instruction on a state machine and wait for it to complete + * \ingroup hardware_pio + * + * This instruction is executed instead of the next instruction in the normal control flow on the state machine. + * Subsequent calls to this method replace the previous executed + * instruction if it is still running. \see pio_sm_is_exec_stalled() to see if an executed instruction + * is still running (i.e. it is stalled on some condition) + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \param instr the encoded PIO instruction + */ +static inline void pio_sm_exec_wait_blocking(PIO pio, uint sm, uint instr) { + check_pio_param(pio); + check_sm_param(sm); + pio_sm_exec(pio, sm, instr); + while (pio_sm_is_exec_stalled(pio, sm)) tight_loop_contents(); +} + +/*! \brief Set the current wrap configuration for a state machine + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \param wrap_target the instruction memory address to wrap to + * \param wrap the instruction memory address after which to set the program counter to wrap_target + * if the instruction does not itself update the program_counter + */ +static inline void pio_sm_set_wrap(PIO pio, uint sm, uint wrap_target, uint wrap) { + check_pio_param(pio); + check_sm_param(sm); + valid_params_if(PIO, wrap < PIO_INSTRUCTION_COUNT); + valid_params_if(PIO, wrap_target < PIO_INSTRUCTION_COUNT); + pio->sm[sm].execctrl = + (pio->sm[sm].execctrl & ~(PIO_SM0_EXECCTRL_WRAP_TOP_BITS | PIO_SM0_EXECCTRL_WRAP_BOTTOM_BITS)) | + (wrap_target << PIO_SM0_EXECCTRL_WRAP_BOTTOM_LSB) | + (wrap << PIO_SM0_EXECCTRL_WRAP_TOP_LSB); +} + +/*! \brief Set the current 'out' pins for a state machine + * \ingroup sm_config + * + * Can overlap with the 'in', 'set' and 'sideset' pins + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \param out_base 0-31 First pin to set as output + * \param out_count 0-32 Number of pins to set. + */ +static inline void pio_sm_set_out_pins(PIO pio, uint sm, uint out_base, uint out_count) { + check_pio_param(pio); + check_sm_param(sm); + valid_params_if(PIO, out_base < 32); + valid_params_if(PIO, out_count <= 32); + pio->sm[sm].pinctrl = (pio->sm[sm].pinctrl & ~(PIO_SM0_PINCTRL_OUT_BASE_BITS | PIO_SM0_PINCTRL_OUT_COUNT_BITS)) | + (out_base << PIO_SM0_PINCTRL_OUT_BASE_LSB) | + (out_count << PIO_SM0_PINCTRL_OUT_COUNT_LSB); +} + + +/*! \brief Set the current 'set' pins for a state machine + * \ingroup sm_config + * + * Can overlap with the 'in', 'out' and 'sideset' pins + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \param set_base 0-31 First pin to set as + * \param set_count 0-5 Number of pins to set. + */ +static inline void pio_sm_set_set_pins(PIO pio, uint sm, uint set_base, uint set_count) { + check_pio_param(pio); + check_sm_param(sm); + valid_params_if(PIO, set_base < 32); + valid_params_if(PIO, set_count <= 5); + pio->sm[sm].pinctrl = (pio->sm[sm].pinctrl & ~(PIO_SM0_PINCTRL_SET_BASE_BITS | PIO_SM0_PINCTRL_SET_COUNT_BITS)) | + (set_base << PIO_SM0_PINCTRL_SET_BASE_LSB) | + (set_count << PIO_SM0_PINCTRL_SET_COUNT_LSB); +} + +/*! \brief Set the current 'in' pins for a state machine + * \ingroup sm_config + * + * Can overlap with the 'out', ''set' and 'sideset' pins + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \param in_base 0-31 First pin to use as input + */ +static inline void pio_sm_set_in_pins(PIO pio, uint sm, uint in_base) { + check_pio_param(pio); + check_sm_param(sm); + valid_params_if(PIO, in_base < 32); + pio->sm[sm].pinctrl = (pio->sm[sm].pinctrl & ~PIO_SM0_PINCTRL_IN_BASE_BITS) | + (in_base << PIO_SM0_PINCTRL_IN_BASE_LSB); +} + +/*! \brief Set the current 'sideset' pins for a state machine + * \ingroup sm_config + * + * Can overlap with the 'in', 'out' and 'set' pins + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \param sideset_base 0-31 base pin for 'side set' + */ +static inline void pio_sm_set_sideset_pins(PIO pio, uint sm, uint sideset_base) { + check_pio_param(pio); + check_sm_param(sm); + valid_params_if(PIO, sideset_base < 32); + pio->sm[sm].pinctrl = (pio->sm[sm].pinctrl & ~PIO_SM0_PINCTRL_SIDESET_BASE_BITS) | + (sideset_base << PIO_SM0_PINCTRL_SIDESET_BASE_LSB); +} + +/*! \brief Write a word of data to a state machine's TX FIFO + * \ingroup hardware_pio + * + * This is a raw FIFO access that does not check for fullness. If the FIFO is + * full, the FIFO contents and state are not affected by the write attempt. + * Hardware sets the TXOVER sticky flag for this FIFO in FDEBUG, to indicate + * that the system attempted to write to a full FIFO. + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \param data the 32 bit data value + * + * \sa pio_sm_put_blocking() + */ +static inline void pio_sm_put(PIO pio, uint sm, uint32_t data) { + check_pio_param(pio); + check_sm_param(sm); + pio->txf[sm] = data; +} + +/*! \brief Read a word of data from a state machine's RX FIFO + * \ingroup hardware_pio + * + * This is a raw FIFO access that does not check for emptiness. If the FIFO is + * empty, the hardware ignores the attempt to read from the FIFO (the FIFO + * remains in an empty state following the read) and the sticky RXUNDER flag + * for this FIFO is set in FDEBUG to indicate that the system tried to read + * from this FIFO when empty. The data returned by this function is undefined + * when the FIFO is empty. + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * + * \sa pio_sm_get_blocking() + */ +static inline uint32_t pio_sm_get(PIO pio, uint sm) { + check_pio_param(pio); + check_sm_param(sm); + return pio->rxf[sm]; +} + +/*! \brief Determine if a state machine's RX FIFO is full + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \return true if the RX FIFO is full + */ +static inline bool pio_sm_is_rx_fifo_full(PIO pio, uint sm) { + check_pio_param(pio); + check_sm_param(sm); + return (pio->fstat & (1u << (PIO_FSTAT_RXFULL_LSB + sm))) != 0; +} + +/*! \brief Determine if a state machine's RX FIFO is empty + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \return true if the RX FIFO is empty + */ +static inline bool pio_sm_is_rx_fifo_empty(PIO pio, uint sm) { + check_pio_param(pio); + check_sm_param(sm); + return (pio->fstat & (1u << (PIO_FSTAT_RXEMPTY_LSB + sm))) != 0; +} + +/*! \brief Return the number of elements currently in a state machine's RX FIFO + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \return the number of elements in the RX FIFO + */ +static inline uint pio_sm_get_rx_fifo_level(PIO pio, uint sm) { + check_pio_param(pio); + check_sm_param(sm); + uint bitoffs = PIO_FLEVEL_RX0_LSB + sm * (PIO_FLEVEL_RX1_LSB - PIO_FLEVEL_RX0_LSB); + const uint32_t mask = PIO_FLEVEL_RX0_BITS >> PIO_FLEVEL_RX0_LSB; + return (pio->flevel >> bitoffs) & mask; +} + +/*! \brief Determine if a state machine's TX FIFO is full + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \return true if the TX FIFO is full + */ +static inline bool pio_sm_is_tx_fifo_full(PIO pio, uint sm) { + check_pio_param(pio); + check_sm_param(sm); + return (pio->fstat & (1u << (PIO_FSTAT_TXFULL_LSB + sm))) != 0; +} + +/*! \brief Determine if a state machine's TX FIFO is empty + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \return true if the TX FIFO is empty + */ +static inline bool pio_sm_is_tx_fifo_empty(PIO pio, uint sm) { + check_pio_param(pio); + check_sm_param(sm); + return (pio->fstat & (1u << (PIO_FSTAT_TXEMPTY_LSB + sm))) != 0; +} + +/*! \brief Return the number of elements currently in a state machine's TX FIFO + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \return the number of elements in the TX FIFO + */ +static inline uint pio_sm_get_tx_fifo_level(PIO pio, uint sm) { + check_pio_param(pio); + check_sm_param(sm); + unsigned int bitoffs = PIO_FLEVEL_TX0_LSB + sm * (PIO_FLEVEL_TX1_LSB - PIO_FLEVEL_TX0_LSB); + const uint32_t mask = PIO_FLEVEL_TX0_BITS >> PIO_FLEVEL_TX0_LSB; + return (pio->flevel >> bitoffs) & mask; +} + +/*! \brief Write a word of data to a state machine's TX FIFO, blocking if the FIFO is full + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \param data the 32 bit data value + */ +static inline void pio_sm_put_blocking(PIO pio, uint sm, uint32_t data) { + check_pio_param(pio); + check_sm_param(sm); + while (pio_sm_is_tx_fifo_full(pio, sm)) tight_loop_contents(); + pio_sm_put(pio, sm, data); +} + +/*! \brief Read a word of data from a state machine's RX FIFO, blocking if the FIFO is empty + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + */ +static inline uint32_t pio_sm_get_blocking(PIO pio, uint sm) { + check_pio_param(pio); + check_sm_param(sm); + while (pio_sm_is_rx_fifo_empty(pio, sm)) tight_loop_contents(); + return pio_sm_get(pio, sm); +} + +/*! \brief Empty out a state machine's TX FIFO + * \ingroup hardware_pio + * + * This method executes `pull` instructions on the state machine until the TX + * FIFO is empty. This disturbs the contents of the OSR, so see also + * pio_sm_clear_fifos() which clears both FIFOs but leaves the state machine's + * internal state undisturbed. + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * + * \sa pio_sm_clear_fifos() + */ +void pio_sm_drain_tx_fifo(PIO pio, uint sm); + +/*! \brief set the current clock divider for a state machine using a 16:8 fraction + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \param div_int the integer part of the clock divider + * \param div_frac the fractional part of the clock divider in 1/256s + */ +static inline void pio_sm_set_clkdiv_int_frac(PIO pio, uint sm, uint16_t div_int, uint8_t div_frac) { + check_pio_param(pio); + check_sm_param(sm); + pio->sm[sm].clkdiv = + (((uint)div_frac) << PIO_SM0_CLKDIV_FRAC_LSB) | + (((uint)div_int) << PIO_SM0_CLKDIV_INT_LSB); +} + +/*! \brief set the current clock divider for a state machine + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \param div the floating point clock divider + */ +static inline void pio_sm_set_clkdiv(PIO pio, uint sm, float div) { + check_pio_param(pio); + check_sm_param(sm); + uint16_t div_int; + uint8_t div_frac; + pio_calculate_clkdiv_from_float(div, &div_int, &div_frac); + pio_sm_set_clkdiv_int_frac(pio, sm, div_int, div_frac); +} + +/*! \brief Clear a state machine's TX and RX FIFOs + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + */ +static inline void pio_sm_clear_fifos(PIO pio, uint sm) { + // changing the FIFO join state clears the fifo + check_pio_param(pio); + check_sm_param(sm); + hw_xor_bits(&pio->sm[sm].shiftctrl, PIO_SM0_SHIFTCTRL_FJOIN_RX_BITS); + hw_xor_bits(&pio->sm[sm].shiftctrl, PIO_SM0_SHIFTCTRL_FJOIN_RX_BITS); +} + +/*! \brief Use a state machine to set a value on all pins for the PIO instance + * \ingroup hardware_pio + * + * This method repeatedly reconfigures the target state machine's pin configuration and executes 'set' instructions to set values on all 32 pins, + * before restoring the state machine's pin configuration to what it was. + * + * This method is provided as a convenience to set initial pin states, and should not be used against a state machine that is enabled. + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) to use + * \param pin_values the pin values to set + */ +void pio_sm_set_pins(PIO pio, uint sm, uint32_t pin_values); + +/*! \brief Use a state machine to set a value on multiple pins for the PIO instance + * \ingroup hardware_pio + * + * This method repeatedly reconfigures the target state machine's pin configuration and executes 'set' instructions to set values on up to 32 pins, + * before restoring the state machine's pin configuration to what it was. + * + * This method is provided as a convenience to set initial pin states, and should not be used against a state machine that is enabled. + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) to use + * \param pin_values the pin values to set (if the corresponding bit in pin_mask is set) + * \param pin_mask a bit for each pin to indicate whether the corresponding pin_value for that pin should be applied. + */ +void pio_sm_set_pins_with_mask(PIO pio, uint sm, uint32_t pin_values, uint32_t pin_mask); + +/*! \brief Use a state machine to set the pin directions for multiple pins for the PIO instance + * \ingroup hardware_pio + * + * This method repeatedly reconfigures the target state machine's pin configuration and executes 'set' instructions to set pin directions on up to 32 pins, + * before restoring the state machine's pin configuration to what it was. + * + * This method is provided as a convenience to set initial pin directions, and should not be used against a state machine that is enabled. + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) to use + * \param pin_dirs the pin directions to set - 1 = out, 0 = in (if the corresponding bit in pin_mask is set) + * \param pin_mask a bit for each pin to indicate whether the corresponding pin_value for that pin should be applied. + */ +void pio_sm_set_pindirs_with_mask(PIO pio, uint sm, uint32_t pin_dirs, uint32_t pin_mask); + +/*! \brief Use a state machine to set the same pin direction for multiple consecutive pins for the PIO instance + * \ingroup hardware_pio + * + * This method repeatedly reconfigures the target state machine's pin configuration and executes 'set' instructions to set the pin direction on consecutive pins, + * before restoring the state machine's pin configuration to what it was. + * + * This method is provided as a convenience to set initial pin directions, and should not be used against a state machine that is enabled. + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) to use + * \param pin_base the first pin to set a direction for + * \param pin_count the count of consecutive pins to set the direction for + * \param is_out the direction to set; true = out, false = in + */ +void pio_sm_set_consecutive_pindirs(PIO pio, uint sm, uint pin_base, uint pin_count, bool is_out); + +/*! \brief Mark a state machine as used + * \ingroup hardware_pio + * + * Method for cooperative claiming of hardware. Will cause a panic if the state machine + * is already claimed. Use of this method by libraries detects accidental + * configurations that would fail in unpredictable ways. + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + */ +void pio_sm_claim(PIO pio, uint sm); + +/*! \brief Mark multiple state machines as used + * \ingroup hardware_pio + * + * Method for cooperative claiming of hardware. Will cause a panic if any of the state machines + * are already claimed. Use of this method by libraries detects accidental + * configurations that would fail in unpredictable ways. + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm_mask Mask of state machine indexes + */ +void pio_claim_sm_mask(PIO pio, uint sm_mask); + +/*! \brief Mark a state machine as no longer used + * \ingroup hardware_pio + * + * Method for cooperative claiming of hardware. + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + */ +void pio_sm_unclaim(PIO pio, uint sm); + +/*! \brief Claim a free state machine on a PIO instance + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param required if true the function will panic if none are available + * \return the state machine index or -1 if required was false, and none were free + */ +int pio_claim_unused_sm(PIO pio, bool required); + +/*! \brief Determine if a PIO state machine is claimed + * \ingroup hardware_pio + * + * \param pio The PIO instance; either \ref pio0 or \ref pio1 + * \param sm State machine index (0..3) + * \return true if claimed, false otherwise + * \see pio_sm_claim + * \see pio_claim_sm_mask + */ +bool pio_sm_is_claimed(PIO pio, uint sm); + +#ifdef __cplusplus +} +#endif + +#endif // _PIO_H_ diff --git a/arkanoid/pico/hardware/pio_instructions.h b/arkanoid/pico/hardware/pio_instructions.h new file mode 100644 index 0000000..3b34f2f --- /dev/null +++ b/arkanoid/pico/hardware/pio_instructions.h @@ -0,0 +1,484 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_PIO_INSTRUCTIONS_H_ +#define _HARDWARE_PIO_INSTRUCTIONS_H_ + +#include "../pico.h" + +/** \brief PIO instruction encoding + * \defgroup pio_instructions pio_instructions + * \ingroup hardware_pio + * + * Functions for generating PIO instruction encodings programmatically. In debug builds + *`PARAM_ASSERTIONS_ENABLED_PIO_INSTRUCTIONS` can be set to 1 to enable validation of encoding function + * parameters. + * + * For fuller descriptions of the instructions in question see the "RP2040 Datasheet" + */ + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_PIO_INSTRUCTIONS, Enable/disable assertions in the PIO instructions, type=bool, default=0, group=pio_instructions +#ifndef PARAM_ASSERTIONS_ENABLED_PIO_INSTRUCTIONS +#define PARAM_ASSERTIONS_ENABLED_PIO_INSTRUCTIONS 0 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +enum pio_instr_bits { + pio_instr_bits_jmp = 0x0000, + pio_instr_bits_wait = 0x2000, + pio_instr_bits_in = 0x4000, + pio_instr_bits_out = 0x6000, + pio_instr_bits_push = 0x8000, + pio_instr_bits_pull = 0x8080, + pio_instr_bits_mov = 0xa000, + pio_instr_bits_irq = 0xc000, + pio_instr_bits_set = 0xe000, +}; + +#ifndef NDEBUG +#define _PIO_INVALID_IN_SRC 0x08u +#define _PIO_INVALID_OUT_DEST 0x10u +#define _PIO_INVALID_SET_DEST 0x20u +#define _PIO_INVALID_MOV_SRC 0x40u +#define _PIO_INVALID_MOV_DEST 0x80u +#else +#define _PIO_INVALID_IN_SRC 0u +#define _PIO_INVALID_OUT_DEST 0u +#define _PIO_INVALID_SET_DEST 0u +#define _PIO_INVALID_MOV_SRC 0u +#define _PIO_INVALID_MOV_DEST 0u +#endif + +/*! \brief Enumeration of values to pass for source/destination args for instruction encoding functions + * \ingroup pio_instructions + * + * \note Not all values are suitable for all functions. Validity is only checked in debug mode when + * `PARAM_ASSERTIONS_ENABLED_PIO_INSTRUCTIONS` is 1 + */ +enum pio_src_dest { + pio_pins = 0u, + pio_x = 1u, + pio_y = 2u, + pio_null = 3u | _PIO_INVALID_SET_DEST | _PIO_INVALID_MOV_DEST, + pio_pindirs = 4u | _PIO_INVALID_IN_SRC | _PIO_INVALID_MOV_SRC | _PIO_INVALID_MOV_DEST, + pio_exec_mov = 4u | _PIO_INVALID_IN_SRC | _PIO_INVALID_OUT_DEST | _PIO_INVALID_SET_DEST | _PIO_INVALID_MOV_SRC, + pio_status = 5u | _PIO_INVALID_IN_SRC | _PIO_INVALID_OUT_DEST | _PIO_INVALID_SET_DEST | _PIO_INVALID_MOV_DEST, + pio_pc = 5u | _PIO_INVALID_IN_SRC | _PIO_INVALID_SET_DEST | _PIO_INVALID_MOV_SRC, + pio_isr = 6u | _PIO_INVALID_SET_DEST, + pio_osr = 7u | _PIO_INVALID_OUT_DEST | _PIO_INVALID_SET_DEST, + pio_exec_out = 7u | _PIO_INVALID_IN_SRC | _PIO_INVALID_SET_DEST | _PIO_INVALID_MOV_SRC | _PIO_INVALID_MOV_DEST, +}; + +static inline uint _pio_major_instr_bits(uint instr) { + return instr & 0xe000u; +} + +static inline uint _pio_encode_instr_and_args(enum pio_instr_bits instr_bits, uint arg1, uint arg2) { + valid_params_if(PIO_INSTRUCTIONS, arg1 <= 0x7); +#if PARAM_ASSERTIONS_ENABLED(PIO_INSTRUCTIONS) + uint32_t major = _pio_major_instr_bits(instr_bits); + if (major == pio_instr_bits_in || major == pio_instr_bits_out) { + assert(arg2 && arg2 <= 32); + } else { + assert(arg2 <= 31); + } +#endif + return instr_bits | (arg1 << 5u) | (arg2 & 0x1fu); +} + +static inline uint _pio_encode_instr_and_src_dest(enum pio_instr_bits instr_bits, enum pio_src_dest dest, uint value) { + return _pio_encode_instr_and_args(instr_bits, dest & 7u, value); +} + +/*! \brief Encode just the delay slot bits of an instruction + * \ingroup pio_instructions + * + * \note This function does not return a valid instruction encoding; instead it returns an encoding of the delay + * slot suitable for `OR`ing with the result of an encoding function for an actual instruction. Care should be taken when + * combining the results of this function with the results of \ref pio_encode_sideset and \ref pio_encode_sideset_opt + * as they share the same bits within the instruction encoding. + * + * \param cycles the number of cycles 0-31 (or less if side set is being used) + * \return the delay slot bits to be ORed with an instruction encoding + */ +static inline uint pio_encode_delay(uint cycles) { + // note that the maximum cycles will be smaller if sideset_bit_count > 0 + valid_params_if(PIO_INSTRUCTIONS, cycles <= 0x1f); + return cycles << 8u; +} + +/*! \brief Encode just the side set bits of an instruction (in non optional side set mode) + * \ingroup pio_instructions + * + * \note This function does not return a valid instruction encoding; instead it returns an encoding of the side set bits + * suitable for `OR`ing with the result of an encoding function for an actual instruction. Care should be taken when + * combining the results of this function with the results of \ref pio_encode_delay as they share the same bits + * within the instruction encoding. + * + * \param sideset_bit_count number of side set bits as would be specified via `.sideset` in pioasm + * \param value the value to sideset on the pins + * \return the side set bits to be ORed with an instruction encoding + */ +static inline uint pio_encode_sideset(uint sideset_bit_count, uint value) { + valid_params_if(PIO_INSTRUCTIONS, sideset_bit_count >= 1 && sideset_bit_count <= 5); + valid_params_if(PIO_INSTRUCTIONS, value <= ((1u << sideset_bit_count) - 1)); + return value << (13u - sideset_bit_count); +} + +/*! \brief Encode just the side set bits of an instruction (in optional -`opt` side set mode) + * \ingroup pio_instructions + * + * \note This function does not return a valid instruction encoding; instead it returns an encoding of the side set bits + * suitable for `OR`ing with the result of an encoding function for an actual instruction. Care should be taken when + * combining the results of this function with the results of \ref pio_encode_delay as they share the same bits + * within the instruction encoding. + * + * \param sideset_bit_count number of side set bits as would be specified via `.sideset <n> opt` in pioasm + * \param value the value to sideset on the pins + * \return the side set bits to be ORed with an instruction encoding + */ +static inline uint pio_encode_sideset_opt(uint sideset_bit_count, uint value) { + valid_params_if(PIO_INSTRUCTIONS, sideset_bit_count >= 1 && sideset_bit_count <= 4); + valid_params_if(PIO_INSTRUCTIONS, value <= ((1u << sideset_bit_count) - 1)); + return 0x1000u | value << (12u - sideset_bit_count); +} + +/*! \brief Encode an unconditional JMP instruction + * \ingroup pio_instructions + * + * This is the equivalent of `JMP <addr>` + * + * \param addr The target address 0-31 (an absolute address within the PIO instruction memory) + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_jmp(uint addr) { + return _pio_encode_instr_and_args(pio_instr_bits_jmp, 0, addr); +} + +/*! \brief Encode a conditional JMP if scratch X zero instruction + * \ingroup pio_instructions + * + * This is the equivalent of `JMP !X <addr>` + * + * \param addr The target address 0-31 (an absolute address within the PIO instruction memory) + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_jmp_not_x(uint addr) { + return _pio_encode_instr_and_args(pio_instr_bits_jmp, 1, addr); +} + +/*! \brief Encode a conditional JMP if scratch X non-zero (and post-decrement X) instruction + * \ingroup pio_instructions + * + * This is the equivalent of `JMP X-- <addr>` + * + * \param addr The target address 0-31 (an absolute address within the PIO instruction memory) + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_jmp_x_dec(uint addr) { + return _pio_encode_instr_and_args(pio_instr_bits_jmp, 2, addr); +} + +/*! \brief Encode a conditional JMP if scratch Y zero instruction + * \ingroup pio_instructions + * + * This is the equivalent of `JMP !Y <addr>` + * + * \param addr The target address 0-31 (an absolute address within the PIO instruction memory) + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_jmp_not_y(uint addr) { + return _pio_encode_instr_and_args(pio_instr_bits_jmp, 3, addr); +} + +/*! \brief Encode a conditional JMP if scratch Y non-zero (and post-decrement Y) instruction + * \ingroup pio_instructions + * + * This is the equivalent of `JMP Y-- <addr>` + * + * \param addr The target address 0-31 (an absolute address within the PIO instruction memory) + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_jmp_y_dec(uint addr) { + return _pio_encode_instr_and_args(pio_instr_bits_jmp, 4, addr); +} + +/*! \brief Encode a conditional JMP if scratch X not equal scratch Y instruction + * \ingroup pio_instructions + * + * This is the equivalent of `JMP X!=Y <addr>` + * + * \param addr The target address 0-31 (an absolute address within the PIO instruction memory) + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_jmp_x_ne_y(uint addr) { + return _pio_encode_instr_and_args(pio_instr_bits_jmp, 5, addr); +} + +/*! \brief Encode a conditional JMP if input pin high instruction + * \ingroup pio_instructions + * + * This is the equivalent of `JMP PIN <addr>` + * + * \param addr The target address 0-31 (an absolute address within the PIO instruction memory) + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_jmp_pin(uint addr) { + return _pio_encode_instr_and_args(pio_instr_bits_jmp, 6, addr); +} + +/*! \brief Encode a conditional JMP if output shift register not empty instruction + * \ingroup pio_instructions + * + * This is the equivalent of `JMP !OSRE <addr>` + * + * \param addr The target address 0-31 (an absolute address within the PIO instruction memory) + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_jmp_not_osre(uint addr) { + return _pio_encode_instr_and_args(pio_instr_bits_jmp, 7, addr); +} + +static inline uint _pio_encode_irq(bool relative, uint irq) { + valid_params_if(PIO_INSTRUCTIONS, irq <= 7); + return (relative ? 0x10u : 0x0u) | irq; +} + +/*! \brief Encode a WAIT for GPIO pin instruction + * \ingroup pio_instructions + * + * This is the equivalent of `WAIT <polarity> GPIO <gpio>` + * + * \param polarity true for `WAIT 1`, false for `WAIT 0` + * \param gpio The real GPIO number 0-31 + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_wait_gpio(bool polarity, uint gpio) { + return _pio_encode_instr_and_args(pio_instr_bits_wait, 0u | (polarity ? 4u : 0u), gpio); +} + +/*! \brief Encode a WAIT for pin instruction + * \ingroup pio_instructions + * + * This is the equivalent of `WAIT <polarity> PIN <pin>` + * + * \param polarity true for `WAIT 1`, false for `WAIT 0` + * \param pin The pin number 0-31 relative to the executing SM's input pin mapping + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_wait_pin(bool polarity, uint pin) { + return _pio_encode_instr_and_args(pio_instr_bits_wait, 1u | (polarity ? 4u : 0u), pin); +} + +/*! \brief Encode a WAIT for IRQ instruction + * \ingroup pio_instructions + * + * This is the equivalent of `WAIT <polarity> IRQ <irq> <relative>` + * + * \param polarity true for `WAIT 1`, false for `WAIT 0` + * \param relative true for a `WAIT IRQ <irq> REL`, false for regular `WAIT IRQ <irq>` + * \param irq the irq number 0-7 + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_wait_irq(bool polarity, bool relative, uint irq) { + valid_params_if(PIO_INSTRUCTIONS, irq <= 7); + return _pio_encode_instr_and_args(pio_instr_bits_wait, 2u | (polarity ? 4u : 0u), _pio_encode_irq(relative, irq)); +} + +/*! \brief Encode an IN instruction + * \ingroup pio_instructions + * + * This is the equivalent of `IN <src>, <count>` + * + * \param src The source to take data from + * \param count The number of bits 1-32 + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_in(enum pio_src_dest src, uint count) { + valid_params_if(PIO_INSTRUCTIONS, !(src & _PIO_INVALID_IN_SRC)); + return _pio_encode_instr_and_src_dest(pio_instr_bits_in, src, count); +} + +/*! \brief Encode an OUT instruction + * \ingroup pio_instructions + * + * This is the equivalent of `OUT <src>, <count>` + * + * \param dest The destination to write data to + * \param count The number of bits 1-32 + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_out(enum pio_src_dest dest, uint count) { + valid_params_if(PIO_INSTRUCTIONS, !(dest & _PIO_INVALID_OUT_DEST)); + return _pio_encode_instr_and_src_dest(pio_instr_bits_out, dest, count); +} + +/*! \brief Encode a PUSH instruction + * \ingroup pio_instructions + * + * This is the equivalent of `PUSH <if_full>, <block>` + * + * \param if_full true for `PUSH IF_FULL ...`, false for `PUSH ...` + * \param block true for `PUSH ... BLOCK`, false for `PUSH ...` + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_push(bool if_full, bool block) { + return _pio_encode_instr_and_args(pio_instr_bits_push, (if_full ? 2u : 0u) | (block ? 1u : 0u), 0); +} + +/*! \brief Encode a PULL instruction + * \ingroup pio_instructions + * + * This is the equivalent of `PULL <if_empty>, <block>` + * + * \param if_empty true for `PULL IF_EMPTY ...`, false for `PULL ...` + * \param block true for `PULL ... BLOCK`, false for `PULL ...` + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_pull(bool if_empty, bool block) { + return _pio_encode_instr_and_args(pio_instr_bits_pull, (if_empty ? 2u : 0u) | (block ? 1u : 0u), 0); +} + +/*! \brief Encode a MOV instruction + * \ingroup pio_instructions + * + * This is the equivalent of `MOV <dest>, <src>` + * + * \param dest The destination to write data to + * \param src The source to take data from + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_mov(enum pio_src_dest dest, enum pio_src_dest src) { + valid_params_if(PIO_INSTRUCTIONS, !(dest & _PIO_INVALID_MOV_DEST)); + valid_params_if(PIO_INSTRUCTIONS, !(src & _PIO_INVALID_MOV_SRC)); + return _pio_encode_instr_and_src_dest(pio_instr_bits_mov, dest, src & 7u); +} + +/*! \brief Encode a MOV instruction with bit invert + * \ingroup pio_instructions + * + * This is the equivalent of `MOV <dest>, ~<src>` + * + * \param dest The destination to write inverted data to + * \param src The source to take data from + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_mov_not(enum pio_src_dest dest, enum pio_src_dest src) { + valid_params_if(PIO_INSTRUCTIONS, !(dest & _PIO_INVALID_MOV_DEST)); + valid_params_if(PIO_INSTRUCTIONS, !(src & _PIO_INVALID_MOV_SRC)); + return _pio_encode_instr_and_src_dest(pio_instr_bits_mov, dest, (1u << 3u) | (src & 7u)); +} + +/*! \brief Encode a MOV instruction with bit reverse + * \ingroup pio_instructions + * + * This is the equivalent of `MOV <dest>, ::<src>` + * + * \param dest The destination to write bit reversed data to + * \param src The source to take data from + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_mov_reverse(enum pio_src_dest dest, enum pio_src_dest src) { + valid_params_if(PIO_INSTRUCTIONS, !(dest & _PIO_INVALID_MOV_DEST)); + valid_params_if(PIO_INSTRUCTIONS, !(src & _PIO_INVALID_MOV_SRC)); + return _pio_encode_instr_and_src_dest(pio_instr_bits_mov, dest, (2u << 3u) | (src & 7u)); +} + +/*! \brief Encode a IRQ SET instruction + * \ingroup pio_instructions + * + * This is the equivalent of `IRQ SET <irq> <relative>` + * + * \param relative true for a `IRQ SET <irq> REL`, false for regular `IRQ SET <irq>` + * \param irq the irq number 0-7 + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_irq_set(bool relative, uint irq) { + return _pio_encode_instr_and_args(pio_instr_bits_irq, 0, _pio_encode_irq(relative, irq)); +} + +/*! \brief Encode a IRQ WAIT instruction + * \ingroup pio_instructions + * + * This is the equivalent of `IRQ WAIT <irq> <relative>` + * + * \param relative true for a `IRQ WAIT <irq> REL`, false for regular `IRQ WAIT <irq>` + * \param irq the irq number 0-7 + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_irq_wait(bool relative, uint irq) { + return _pio_encode_instr_and_args(pio_instr_bits_irq, 1, _pio_encode_irq(relative, irq)); +} + +/*! \brief Encode a IRQ CLEAR instruction + * \ingroup pio_instructions + * + * This is the equivalent of `IRQ CLEAR <irq> <relative>` + * + * \param relative true for a `IRQ CLEAR <irq> REL`, false for regular `IRQ CLEAR <irq>` + * \param irq the irq number 0-7 + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_irq_clear(bool relative, uint irq) { + return _pio_encode_instr_and_args(pio_instr_bits_irq, 2, _pio_encode_irq(relative, irq)); +} + +/*! \brief Encode a SET instruction + * \ingroup pio_instructions + * + * This is the equivalent of `SET <dest>, <value>` + * + * \param dest The destination to apply the value to + * \param value The value 0-31 + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_set(enum pio_src_dest dest, uint value) { + valid_params_if(PIO_INSTRUCTIONS, !(dest & _PIO_INVALID_SET_DEST)); + return _pio_encode_instr_and_src_dest(pio_instr_bits_set, dest, value); +} + +/*! \brief Encode a NOP instruction + * \ingroup pio_instructions + * + * This is the equivalent of `NOP` which is itself encoded as `MOV y, y` + * + * \return The instruction encoding with 0 delay and no side set value + * \see pio_encode_delay, pio_encode_sideset, pio_encode_sideset_opt + */ +static inline uint pio_encode_nop(void) { + return pio_encode_mov(pio_y, pio_y); +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/hardware/platform_defs.h b/arkanoid/pico/hardware/platform_defs.h new file mode 100644 index 0000000..08c7159 --- /dev/null +++ b/arkanoid/pico/hardware/platform_defs.h @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_PLATFORM_DEFS_H +#define _HARDWARE_PLATFORM_DEFS_H + +// This header is included from C and assembler - intended mostly for #defines; guard other stuff with #ifdef __ASSEMBLER__ + +#ifndef _u +#ifdef __ASSEMBLER__ +#define _u(x) x +#else +#define _u(x) x ## u +#endif +#endif + +#define NUM_CORES _u(2) +#define NUM_DMA_CHANNELS _u(12) +#define NUM_DMA_TIMERS _u(4) +#define NUM_IRQS _u(32) +#define NUM_PIOS _u(2) +#define NUM_PIO_STATE_MACHINES _u(4) +#define NUM_PWM_SLICES _u(8) +#define NUM_SPIN_LOCKS _u(32) +#define NUM_UARTS _u(2) +#define NUM_I2CS _u(2) +#define NUM_SPIS _u(2) +#define NUM_TIMERS _u(4) +#define NUM_ADC_CHANNELS _u(5) + +#define NUM_BANK0_GPIOS _u(30) +#define NUM_QSPI_GPIOS _u(6) + +#define PIO_INSTRUCTION_COUNT _u(32) + +// PICO_CONFIG: XOSC_MHZ, The crystal oscillator frequency in Mhz, type=int, default=12, advanced=true, group=hardware_base +#ifndef XOSC_MHZ +#define XOSC_MHZ _u(12) +#endif + +#endif + diff --git a/arkanoid/pico/hardware/pll.c b/arkanoid/pico/hardware/pll.c new file mode 100644 index 0000000..9fdd6f8 --- /dev/null +++ b/arkanoid/pico/hardware/pll.c @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +// For MHZ definitions etc +#include "clocks.h" +#include "pll.h" +#include "resets.h" + +/// \tag::pll_init_calculations[] +void pll_init(PLL pll, uint refdiv, uint vco_freq, uint post_div1, uint post_div2) { + uint32_t ref_mhz = XOSC_MHZ / refdiv; + + // What are we multiplying the reference clock by to get the vco freq + // (The regs are called div, because you divide the vco output and compare it to the refclk) + uint32_t fbdiv = vco_freq / (ref_mhz * MHZ); +/// \end::pll_init_calculations[] + + // fbdiv + assert(fbdiv >= 16 && fbdiv <= 320); + + // Check divider ranges + assert((post_div1 >= 1 && post_div1 <= 7) && (post_div2 >= 1 && post_div2 <= 7)); + + // post_div1 should be >= post_div2 + // from appnote page 11 + // postdiv1 is designed to operate with a higher input frequency + // than postdiv2 + assert(post_div2 <= post_div1); + + // Check that reference frequency is no greater than vco / 16 + assert(ref_mhz <= (vco_freq / 16)); + + // div1 feeds into div2 so if div1 is 5 and div2 is 2 then you get a divide by 10 + uint32_t pdiv = (post_div1 << PLL_PRIM_POSTDIV1_LSB) | + (post_div2 << PLL_PRIM_POSTDIV2_LSB); + +/// \tag::pll_init_finish[] + if ((pll->cs & PLL_CS_LOCK_BITS) && + (refdiv == (pll->cs & PLL_CS_REFDIV_BITS)) && + (fbdiv == (pll->fbdiv_int & PLL_FBDIV_INT_BITS)) && + (pdiv == (pll->prim & (PLL_PRIM_POSTDIV1_BITS & PLL_PRIM_POSTDIV2_BITS)))) { + // do not disrupt PLL that is already correctly configured and operating + return; + } + + uint32_t pll_reset = (pll_usb_hw == pll) ? RESETS_RESET_PLL_USB_BITS : RESETS_RESET_PLL_SYS_BITS; + reset_block(pll_reset); + unreset_block_wait(pll_reset); + + // Load VCO-related dividers before starting VCO + pll->cs = refdiv; + pll->fbdiv_int = fbdiv; + + // Turn on PLL + uint32_t power = PLL_PWR_PD_BITS | // Main power + PLL_PWR_VCOPD_BITS; // VCO Power + + hw_clear_bits(&pll->pwr, power); + + // Wait for PLL to lock + while (!(pll->cs & PLL_CS_LOCK_BITS)) tight_loop_contents(); + + // Set up post dividers + pll->prim = pdiv; + + // Turn on post divider + hw_clear_bits(&pll->pwr, PLL_PWR_POSTDIVPD_BITS); +/// \end::pll_init_finish[] +} + +void pll_deinit(PLL pll) { + // todo: Make sure there are no sources running from this pll? + pll->pwr = PLL_PWR_BITS; +} diff --git a/arkanoid/pico/hardware/pll.h b/arkanoid/pico/hardware/pll.h new file mode 100644 index 0000000..b7ab27e --- /dev/null +++ b/arkanoid/pico/hardware/pll.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_PLL_H_ +#define _HARDWARE_PLL_H_ + +#include "../pico.h" +#include "structs/pll.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file pll.h + * \defgroup hardware_pll hardware_pll + * + * Phase Locked Loop control APIs + * + * There are two PLLs in RP2040. They are: + * - pll_sys - Used to generate up to a 133MHz system clock + * - pll_usb - Used to generate a 48MHz USB reference clock + * + * For details on how the PLL's are calculated, please refer to the RP2040 datasheet. + */ + +typedef pll_hw_t *PLL; + +#define pll_sys pll_sys_hw +#define pll_usb pll_usb_hw + +/*! \brief Initialise specified PLL. + * \ingroup hardware_pll + * \param pll pll_sys or pll_usb + * \param ref_div Input clock divider. + * \param vco_freq Requested output from the VCO (voltage controlled oscillator) + * \param post_div1 Post Divider 1 - range 1-7. Must be >= post_div2 + * \param post_div2 Post Divider 2 - range 1-7 + */ +void pll_init(PLL pll, uint ref_div, uint vco_freq, uint post_div1, uint post_div2); + +/*! \brief Release/uninitialise specified PLL. + * \ingroup hardware_pll + * + * This will turn off the power to the specified PLL. Note this function does not currently check if + * the PLL is in use before powering it off so should be used with care. + * + * \param pll pll_sys or pll_usb + */ +void pll_deinit(PLL pll); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/hardware/pwm.h b/arkanoid/pico/hardware/pwm.h new file mode 100644 index 0000000..f17ebe8 --- /dev/null +++ b/arkanoid/pico/hardware/pwm.h @@ -0,0 +1,559 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_PWM_H +#define _HARDWARE_PWM_H + +#include "../pico.h" +#include "structs/pwm.h" +#include "regs/dreq.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_PWM, Enable/disable assertions in the PWM module, type=bool, default=0, group=hardware_pwm +#ifndef PARAM_ASSERTIONS_ENABLED_PWM +#define PARAM_ASSERTIONS_ENABLED_PWM 0 +#endif + +/** \file pwm.h + * \defgroup hardware_pwm hardware_pwm + * + * Hardware Pulse Width Modulation (PWM) API + * + * The RP2040 PWM block has 8 identical slices. Each slice can drive two PWM output signals, or + * measure the frequency or duty cycle of an input signal. This gives a total of up to 16 controllable + * PWM outputs. All 30 GPIOs can be driven by the PWM block. + * + * The PWM hardware functions by continuously comparing the input value to a free-running counter. This produces a + * toggling output where the amount of time spent at the high output level is proportional to the input value. The fraction of + * time spent at the high signal level is known as the duty cycle of the signal. + * + * The default behaviour of a PWM slice is to count upward until the wrap value (\ref pwm_config_set_wrap) is reached, and then + * immediately wrap to 0. PWM slices also offer a phase-correct mode, where the counter starts to count downward after + * reaching TOP, until it reaches 0 again. + * + * \subsection pwm_example Example + * \addtogroup hardware_pwm + * \include hello_pwm.c + */ + +/** \brief PWM Divider mode settings + * \ingroup hardware_pwm + * + */ +enum pwm_clkdiv_mode +{ + PWM_DIV_FREE_RUNNING = 0, ///< Free-running counting at rate dictated by fractional divider + PWM_DIV_B_HIGH = 1, ///< Fractional divider is gated by the PWM B pin + PWM_DIV_B_RISING = 2, ///< Fractional divider advances with each rising edge of the PWM B pin + PWM_DIV_B_FALLING = 3 ///< Fractional divider advances with each falling edge of the PWM B pin +}; + +enum pwm_chan +{ + PWM_CHAN_A = 0, + PWM_CHAN_B = 1 +}; + +typedef struct { + uint32_t csr; + uint32_t div; + uint32_t top; +} pwm_config; + +static inline void check_slice_num_param(__unused uint slice_num) { + valid_params_if(PWM, slice_num < NUM_PWM_SLICES); +} + +/** \brief Determine the PWM slice that is attached to the specified GPIO + * \ingroup hardware_pwm + * + * \return The PWM slice number that controls the specified GPIO. + */ +static inline uint pwm_gpio_to_slice_num(uint gpio) { + valid_params_if(PWM, gpio < NUM_BANK0_GPIOS); + return (gpio >> 1u) & 7u; +} + +/** \brief Determine the PWM channel that is attached to the specified GPIO. + * \ingroup hardware_pwm + * + * Each slice 0 to 7 has two channels, A and B. + * + * \return The PWM channel that controls the specified GPIO. + */ +static inline uint pwm_gpio_to_channel(uint gpio) { + valid_params_if(PWM, gpio < NUM_BANK0_GPIOS); + return gpio & 1u; +} + +/** \brief Set phase correction in a PWM configuration + * \ingroup hardware_pwm + * + * \param c PWM configuration struct to modify + * \param phase_correct true to set phase correct modulation, false to set trailing edge + * + * Setting phase control to true means that instead of wrapping back to zero when the wrap point is reached, + * the PWM starts counting back down. The output frequency is halved when phase-correct mode is enabled. + */ +static inline void pwm_config_set_phase_correct(pwm_config *c, bool phase_correct) { + c->csr = (c->csr & ~PWM_CH0_CSR_PH_CORRECT_BITS) + | (bool_to_bit(phase_correct) << PWM_CH0_CSR_PH_CORRECT_LSB); +} + +/** \brief Set clock divider in a PWM configuration + * \ingroup hardware_pwm + * + * \param c PWM configuration struct to modify + * \param div Value to divide counting rate by. Must be greater than or equal to 1. + * + * If the divide mode is free-running, the PWM counter runs at clk_sys / div. + * Otherwise, the divider reduces the rate of events seen on the B pin input (level or edge) + * before passing them on to the PWM counter. + */ +static inline void pwm_config_set_clkdiv(pwm_config *c, float div) { + c->div = (uint32_t)(div * (float)(1u << PWM_CH0_DIV_INT_LSB)); +} + +/** \brief Set PWM clock divider in a PWM configuration + * \ingroup hardware_pwm + * + * \param c PWM configuration struct to modify + * \param div Integer value to reduce counting rate by. Must be greater than or equal to 1. + * + * If the divide mode is free-running, the PWM counter runs at clk_sys / div. + * Otherwise, the divider reduces the rate of events seen on the B pin input (level or edge) + * before passing them on to the PWM counter. + */ +static inline void pwm_config_set_clkdiv_int(pwm_config *c, uint div) { + c->div = div << PWM_CH0_DIV_INT_LSB; +} + +/** \brief Set PWM counting mode in a PWM configuration + * \ingroup hardware_pwm + * + * \param c PWM configuration struct to modify + * \param mode PWM divide/count mode + * + * Configure which event gates the operation of the fractional divider. + * The default is always-on (free-running PWM). Can also be configured to count on + * high level, rising edge or falling edge of the B pin input. + */ +static inline void pwm_config_set_clkdiv_mode(pwm_config *c, enum pwm_clkdiv_mode mode) { + valid_params_if(PWM, mode == PWM_DIV_FREE_RUNNING || + mode == PWM_DIV_B_RISING || + mode == PWM_DIV_B_HIGH || + mode == PWM_DIV_B_FALLING); + c->csr = (c->csr & ~PWM_CH0_CSR_DIVMODE_BITS) + | (((uint)mode) << PWM_CH0_CSR_DIVMODE_LSB); +} + +/** \brief Set output polarity in a PWM configuration + * \ingroup hardware_pwm + * + * \param c PWM configuration struct to modify + * \param a true to invert output A + * \param b true to invert output B + */ +static inline void pwm_config_set_output_polarity(pwm_config *c, bool a, bool b) { + c->csr = (c->csr & ~(PWM_CH0_CSR_A_INV_BITS | PWM_CH0_CSR_B_INV_BITS)) + | ((bool_to_bit(a) << PWM_CH0_CSR_A_INV_LSB) | (bool_to_bit(b) << PWM_CH0_CSR_B_INV_LSB)); +} + +/** \brief Set PWM counter wrap value in a PWM configuration + * \ingroup hardware_pwm + * + * Set the highest value the counter will reach before returning to 0. Also known as TOP. + * + * \param c PWM configuration struct to modify + * \param wrap Value to set wrap to + */ +static inline void pwm_config_set_wrap(pwm_config *c, uint16_t wrap) { + c->top = wrap; +} + +/** \brief Initialise a PWM with settings from a configuration object + * \ingroup hardware_pwm + * + * Use the \ref pwm_get_default_config() function to initialise a config structure, make changes as + * needed using the pwm_config_* functions, then call this function to set up the PWM. + * + * \param slice_num PWM slice number + * \param c The configuration to use + * \param start If true the PWM will be started running once configured. If false you will need to start + * manually using \ref pwm_set_enabled() or \ref pwm_set_mask_enabled() + */ +static inline void pwm_init(uint slice_num, pwm_config *c, bool start) { + check_slice_num_param(slice_num); + pwm_hw->slice[slice_num].csr = 0; + + pwm_hw->slice[slice_num].ctr = PWM_CH0_CTR_RESET; + pwm_hw->slice[slice_num].cc = PWM_CH0_CC_RESET; + pwm_hw->slice[slice_num].top = c->top; + pwm_hw->slice[slice_num].div = c->div; + pwm_hw->slice[slice_num].csr = c->csr | (bool_to_bit(start) << PWM_CH0_CSR_EN_LSB); +} + +/** \brief Get a set of default values for PWM configuration + * \ingroup hardware_pwm + * + * PWM config is free-running at system clock speed, no phase correction, wrapping at 0xffff, + * with standard polarities for channels A and B. + * + * \return Set of default values. + */ +static inline pwm_config pwm_get_default_config(void) { + pwm_config c = {0, 0, 0}; + pwm_config_set_phase_correct(&c, false); + pwm_config_set_clkdiv_int(&c, 1); + pwm_config_set_clkdiv_mode(&c, PWM_DIV_FREE_RUNNING); + pwm_config_set_output_polarity(&c, false, false); + pwm_config_set_wrap(&c, 0xffffu); + return c; +} + +/** \brief Set the current PWM counter wrap value + * \ingroup hardware_pwm + * + * Set the highest value the counter will reach before returning to 0. Also + * known as TOP. + * + * The counter wrap value is double-buffered in hardware. This means that, + * when the PWM is running, a write to the counter wrap value does not take + * effect until after the next time the PWM slice wraps (or, in phase-correct + * mode, the next time the slice reaches 0). If the PWM is not running, the + * write is latched in immediately. + * + * \param slice_num PWM slice number + * \param wrap Value to set wrap to + */ +static inline void pwm_set_wrap(uint slice_num, uint16_t wrap) { + check_slice_num_param(slice_num); + pwm_hw->slice[slice_num].top = wrap; +} + +/** \brief Set the current PWM counter compare value for one channel + * \ingroup hardware_pwm + * + * Set the value of the PWM counter compare value, for either channel A or channel B. + * + * The counter compare register is double-buffered in hardware. This means + * that, when the PWM is running, a write to the counter compare values does + * not take effect until the next time the PWM slice wraps (or, in + * phase-correct mode, the next time the slice reaches 0). If the PWM is not + * running, the write is latched in immediately. + * + * \param slice_num PWM slice number + * \param chan Which channel to update. 0 for A, 1 for B. + * \param level new level for the selected output + */ +static inline void pwm_set_chan_level(uint slice_num, uint chan, uint16_t level) { + check_slice_num_param(slice_num); + hw_write_masked( + &pwm_hw->slice[slice_num].cc, + ((uint)level) << (chan ? PWM_CH0_CC_B_LSB : PWM_CH0_CC_A_LSB), + chan ? PWM_CH0_CC_B_BITS : PWM_CH0_CC_A_BITS + ); +} + +/** \brief Set PWM counter compare values + * \ingroup hardware_pwm + * + * Set the value of the PWM counter compare values, A and B. + * + * The counter compare register is double-buffered in hardware. This means + * that, when the PWM is running, a write to the counter compare values does + * not take effect until the next time the PWM slice wraps (or, in + * phase-correct mode, the next time the slice reaches 0). If the PWM is not + * running, the write is latched in immediately. + * + * \param slice_num PWM slice number + * \param level_a Value to set compare A to. When the counter reaches this value the A output is deasserted + * \param level_b Value to set compare B to. When the counter reaches this value the B output is deasserted + */ +static inline void pwm_set_both_levels(uint slice_num, uint16_t level_a, uint16_t level_b) { + check_slice_num_param(slice_num); + pwm_hw->slice[slice_num].cc = (((uint)level_b) << PWM_CH0_CC_B_LSB) | (((uint)level_a) << PWM_CH0_CC_A_LSB); +} + +/** \brief Helper function to set the PWM level for the slice and channel associated with a GPIO. + * \ingroup hardware_pwm + * + * Look up the correct slice (0 to 7) and channel (A or B) for a given GPIO, and update the corresponding + * counter compare field. + * + * This PWM slice should already have been configured and set running. Also be careful of multiple GPIOs + * mapping to the same slice and channel (if GPIOs have a difference of 16). + * + * The counter compare register is double-buffered in hardware. This means + * that, when the PWM is running, a write to the counter compare values does + * not take effect until the next time the PWM slice wraps (or, in + * phase-correct mode, the next time the slice reaches 0). If the PWM is not + * running, the write is latched in immediately. + * + * \param gpio GPIO to set level of + * \param level PWM level for this GPIO + */ +static inline void pwm_set_gpio_level(uint gpio, uint16_t level) { + valid_params_if(PWM, gpio < NUM_BANK0_GPIOS); + pwm_set_chan_level(pwm_gpio_to_slice_num(gpio), pwm_gpio_to_channel(gpio), level); +} + +/** \brief Get PWM counter + * \ingroup hardware_pwm + * + * Get current value of PWM counter + * + * \param slice_num PWM slice number + * \return Current value of the PWM counter + */ +static inline uint16_t pwm_get_counter(uint slice_num) { + check_slice_num_param(slice_num); + return (uint16_t)(pwm_hw->slice[slice_num].ctr); +} + +/** \brief Set PWM counter + * \ingroup hardware_pwm + * + * Set the value of the PWM counter + * + * \param slice_num PWM slice number + * \param c Value to set the PWM counter to + * + */ +static inline void pwm_set_counter(uint slice_num, uint16_t c) { + check_slice_num_param(slice_num); + pwm_hw->slice[slice_num].ctr = c; +} + +/** \brief Advance PWM count + * \ingroup hardware_pwm + * + * Advance the phase of a running the counter by 1 count. + * + * This function will return once the increment is complete. + * + * \param slice_num PWM slice number + */ +static inline void pwm_advance_count(uint slice_num) { + check_slice_num_param(slice_num); + hw_set_bits(&pwm_hw->slice[slice_num].csr, PWM_CH0_CSR_PH_ADV_BITS); + while (pwm_hw->slice[slice_num].csr & PWM_CH0_CSR_PH_ADV_BITS) { + tight_loop_contents(); + } +} + +/** \brief Retard PWM count + * \ingroup hardware_pwm + * + * Retard the phase of a running counter by 1 count + * + * This function will return once the retardation is complete. + * + * \param slice_num PWM slice number + */ +static inline void pwm_retard_count(uint slice_num) { + check_slice_num_param(slice_num); + hw_set_bits(&pwm_hw->slice[slice_num].csr, PWM_CH0_CSR_PH_RET_BITS); + while (pwm_hw->slice[slice_num].csr & PWM_CH0_CSR_PH_RET_BITS) { + tight_loop_contents(); + } +} + +/** \brief Set PWM clock divider using an 8:4 fractional value + * \ingroup hardware_pwm + * + * Set the clock divider. Counter increment will be on sysclock divided by this value, taking into account the gating. + * + * \param slice_num PWM slice number + * \param integer 8 bit integer part of the clock divider + * \param fract 4 bit fractional part of the clock divider + */ +static inline void pwm_set_clkdiv_int_frac(uint slice_num, uint8_t integer, uint8_t fract) { + check_slice_num_param(slice_num); + valid_params_if(PWM, fract < 16); + pwm_hw->slice[slice_num].div = (((uint)integer) << PWM_CH0_DIV_INT_LSB) | (((uint)fract) << PWM_CH0_DIV_FRAC_LSB); +} + +/** \brief Set PWM clock divider + * \ingroup hardware_pwm + * + * Set the clock divider. Counter increment will be on sysclock divided by this value, taking into account the gating. + * + * \param slice_num PWM slice number + * \param divider Floating point clock divider, 1.f <= value < 256.f + */ +static inline void pwm_set_clkdiv(uint slice_num, float divider) { + check_slice_num_param(slice_num); + valid_params_if(PWM, divider >= 1.f && divider < 256.f); + uint8_t i = (uint8_t)divider; + uint8_t f = (uint8_t)((divider - i) * (0x01 << 4)); + pwm_set_clkdiv_int_frac(slice_num, i, f); +} + +/** \brief Set PWM output polarity + * \ingroup hardware_pwm + * + * \param slice_num PWM slice number + * \param a true to invert output A + * \param b true to invert output B + */ +static inline void pwm_set_output_polarity(uint slice_num, bool a, bool b) { + check_slice_num_param(slice_num); + hw_write_masked(&pwm_hw->slice[slice_num].csr, bool_to_bit(a) << PWM_CH0_CSR_A_INV_LSB | bool_to_bit(b) << PWM_CH0_CSR_B_INV_LSB, + PWM_CH0_CSR_A_INV_BITS | PWM_CH0_CSR_B_INV_BITS); +} + + +/** \brief Set PWM divider mode + * \ingroup hardware_pwm + * + * \param slice_num PWM slice number + * \param mode Required divider mode + */ +static inline void pwm_set_clkdiv_mode(uint slice_num, enum pwm_clkdiv_mode mode) { + check_slice_num_param(slice_num); + valid_params_if(PWM, mode == PWM_DIV_FREE_RUNNING || + mode == PWM_DIV_B_RISING || + mode == PWM_DIV_B_HIGH || + mode == PWM_DIV_B_FALLING); + hw_write_masked(&pwm_hw->slice[slice_num].csr, ((uint)mode) << PWM_CH0_CSR_DIVMODE_LSB, PWM_CH0_CSR_DIVMODE_BITS); +} + +/** \brief Set PWM phase correct on/off + * \ingroup hardware_pwm + * + * \param slice_num PWM slice number + * \param phase_correct true to set phase correct modulation, false to set trailing edge + * + * Setting phase control to true means that instead of wrapping back to zero when the wrap point is reached, + * the PWM starts counting back down. The output frequency is halved when phase-correct mode is enabled. + */ +static inline void pwm_set_phase_correct(uint slice_num, bool phase_correct) { + check_slice_num_param(slice_num); + hw_write_masked(&pwm_hw->slice[slice_num].csr, bool_to_bit(phase_correct) << PWM_CH0_CSR_PH_CORRECT_LSB, PWM_CH0_CSR_PH_CORRECT_BITS); +} + +/** \brief Enable/Disable PWM + * \ingroup hardware_pwm + * + * When a PWM is disabled, it halts its counter, and the output pins are left + * high or low depending on exactly when the counter is halted. When + * re-enabled the PWM resumes immediately from where it left off. + * + * If the PWM's output pins need to be low when halted: + * + * - The counter compare can be set to zero whilst the PWM is enabled, and + * then the PWM disabled once both pins are seen to be low + * + * - The GPIO output overrides can be used to force the actual pins low + * + * - The PWM can be run for one cycle (i.e. enabled then immediately disabled) + * with a TOP of 0, count of 0 and counter compare of 0, to force the pins + * low when the PWM has already been halted. The same method can be used + * with a counter compare value of 1 to force a pin high. + * + * Note that, when disabled, the PWM can still be advanced one count at a time + * by pulsing the PH_ADV bit in its CSR. The output pins transition as though + * the PWM were enabled. + * + * \param slice_num PWM slice number + * \param enabled true to enable the specified PWM, false to disable. + */ +static inline void pwm_set_enabled(uint slice_num, bool enabled) { + check_slice_num_param(slice_num); + hw_write_masked(&pwm_hw->slice[slice_num].csr, bool_to_bit(enabled) << PWM_CH0_CSR_EN_LSB, PWM_CH0_CSR_EN_BITS); +} + +/** \brief Enable/Disable multiple PWM slices simultaneously + * \ingroup hardware_pwm + * + * \param mask Bitmap of PWMs to enable/disable. Bits 0 to 7 enable slices 0-7 respectively + */ +static inline void pwm_set_mask_enabled(uint32_t mask) { + pwm_hw->en = mask; +} + +/*! \brief Enable PWM instance interrupt + * \ingroup hardware_pwm + * + * Used to enable a single PWM instance interrupt. + * + * \param slice_num PWM block to enable/disable + * \param enabled true to enable, false to disable + */ +static inline void pwm_set_irq_enabled(uint slice_num, bool enabled) { + check_slice_num_param(slice_num); + if (enabled) { + hw_set_bits(&pwm_hw->inte, 1u << slice_num); + } else { + hw_clear_bits(&pwm_hw->inte, 1u << slice_num); + } +} + +/*! \brief Enable multiple PWM instance interrupts + * \ingroup hardware_pwm + * + * Use this to enable multiple PWM interrupts at once. + * + * \param slice_mask Bitmask of all the blocks to enable/disable. Channel 0 = bit 0, channel 1 = bit 1 etc. + * \param enabled true to enable, false to disable + */ +static inline void pwm_set_irq_mask_enabled(uint32_t slice_mask, bool enabled) { + valid_params_if(PWM, slice_mask < 256); + if (enabled) { + hw_set_bits(&pwm_hw->inte, slice_mask); + } else { + hw_clear_bits(&pwm_hw->inte, slice_mask); + } +} + +/*! \brief Clear a single PWM channel interrupt + * \ingroup hardware_pwm + * + * \param slice_num PWM slice number + */ +static inline void pwm_clear_irq(uint slice_num) { + pwm_hw->intr = 1u << slice_num; +} + +/*! \brief Get PWM interrupt status, raw + * \ingroup hardware_pwm + * + * \return Bitmask of all PWM interrupts currently set + */ +static inline uint32_t pwm_get_irq_status_mask(void) { + return pwm_hw->ints; +} + +/*! \brief Force PWM interrupt + * \ingroup hardware_pwm + * + * \param slice_num PWM slice number + */ +static inline void pwm_force_irq(uint slice_num) { + pwm_hw->intf = 1u << slice_num; +} + +/*! \brief Return the DREQ to use for pacing transfers to a particular PWM slice + * \ingroup hardware_pwm + * + * \param slice_num PWM slice number + */ +static inline uint pwm_get_dreq(uint slice_num) { + static_assert(DREQ_PWM_WRAP1 == DREQ_PWM_WRAP0 + 1, ""); + static_assert(DREQ_PWM_WRAP7 == DREQ_PWM_WRAP0 + 7, ""); + check_slice_num_param(slice_num); + return DREQ_PWM_WRAP0 + slice_num; +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/hardware/regs/adc.h b/arkanoid/pico/hardware/regs/adc.h new file mode 100644 index 0000000..47510be --- /dev/null +++ b/arkanoid/pico/hardware/regs/adc.h @@ -0,0 +1,314 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : ADC +// Version : 2 +// Bus type : apb +// Description : Control and data interface to SAR ADC +// ============================================================================= +#ifndef HARDWARE_REGS_ADC_DEFINED +#define HARDWARE_REGS_ADC_DEFINED +// ============================================================================= +// Register : ADC_CS +// Description : ADC Control and Status +#define ADC_CS_OFFSET _u(0x00000000) +#define ADC_CS_BITS _u(0x001f770f) +#define ADC_CS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : ADC_CS_RROBIN +// Description : Round-robin sampling. 1 bit per channel. Set all bits to 0 to +// disable. +// Otherwise, the ADC will cycle through each enabled channel in a +// round-robin fashion. +// The first channel to be sampled will be the one currently +// indicated by AINSEL. +// AINSEL will be updated after each conversion with the +// newly-selected channel. +#define ADC_CS_RROBIN_RESET _u(0x00) +#define ADC_CS_RROBIN_BITS _u(0x001f0000) +#define ADC_CS_RROBIN_MSB _u(20) +#define ADC_CS_RROBIN_LSB _u(16) +#define ADC_CS_RROBIN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : ADC_CS_AINSEL +// Description : Select analog mux input. Updated automatically in round-robin +// mode. +#define ADC_CS_AINSEL_RESET _u(0x0) +#define ADC_CS_AINSEL_BITS _u(0x00007000) +#define ADC_CS_AINSEL_MSB _u(14) +#define ADC_CS_AINSEL_LSB _u(12) +#define ADC_CS_AINSEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : ADC_CS_ERR_STICKY +// Description : Some past ADC conversion encountered an error. Write 1 to +// clear. +#define ADC_CS_ERR_STICKY_RESET _u(0x0) +#define ADC_CS_ERR_STICKY_BITS _u(0x00000400) +#define ADC_CS_ERR_STICKY_MSB _u(10) +#define ADC_CS_ERR_STICKY_LSB _u(10) +#define ADC_CS_ERR_STICKY_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : ADC_CS_ERR +// Description : The most recent ADC conversion encountered an error; result is +// undefined or noisy. +#define ADC_CS_ERR_RESET _u(0x0) +#define ADC_CS_ERR_BITS _u(0x00000200) +#define ADC_CS_ERR_MSB _u(9) +#define ADC_CS_ERR_LSB _u(9) +#define ADC_CS_ERR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : ADC_CS_READY +// Description : 1 if the ADC is ready to start a new conversion. Implies any +// previous conversion has completed. +// 0 whilst conversion in progress. +#define ADC_CS_READY_RESET _u(0x0) +#define ADC_CS_READY_BITS _u(0x00000100) +#define ADC_CS_READY_MSB _u(8) +#define ADC_CS_READY_LSB _u(8) +#define ADC_CS_READY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : ADC_CS_START_MANY +// Description : Continuously perform conversions whilst this bit is 1. A new +// conversion will start immediately after the previous finishes. +#define ADC_CS_START_MANY_RESET _u(0x0) +#define ADC_CS_START_MANY_BITS _u(0x00000008) +#define ADC_CS_START_MANY_MSB _u(3) +#define ADC_CS_START_MANY_LSB _u(3) +#define ADC_CS_START_MANY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : ADC_CS_START_ONCE +// Description : Start a single conversion. Self-clearing. Ignored if start_many +// is asserted. +#define ADC_CS_START_ONCE_RESET _u(0x0) +#define ADC_CS_START_ONCE_BITS _u(0x00000004) +#define ADC_CS_START_ONCE_MSB _u(2) +#define ADC_CS_START_ONCE_LSB _u(2) +#define ADC_CS_START_ONCE_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : ADC_CS_TS_EN +// Description : Power on temperature sensor. 1 - enabled. 0 - disabled. +#define ADC_CS_TS_EN_RESET _u(0x0) +#define ADC_CS_TS_EN_BITS _u(0x00000002) +#define ADC_CS_TS_EN_MSB _u(1) +#define ADC_CS_TS_EN_LSB _u(1) +#define ADC_CS_TS_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : ADC_CS_EN +// Description : Power on ADC and enable its clock. +// 1 - enabled. 0 - disabled. +#define ADC_CS_EN_RESET _u(0x0) +#define ADC_CS_EN_BITS _u(0x00000001) +#define ADC_CS_EN_MSB _u(0) +#define ADC_CS_EN_LSB _u(0) +#define ADC_CS_EN_ACCESS "RW" +// ============================================================================= +// Register : ADC_RESULT +// Description : Result of most recent ADC conversion +#define ADC_RESULT_OFFSET _u(0x00000004) +#define ADC_RESULT_BITS _u(0x00000fff) +#define ADC_RESULT_RESET _u(0x00000000) +#define ADC_RESULT_MSB _u(11) +#define ADC_RESULT_LSB _u(0) +#define ADC_RESULT_ACCESS "RO" +// ============================================================================= +// Register : ADC_FCS +// Description : FIFO control and status +#define ADC_FCS_OFFSET _u(0x00000008) +#define ADC_FCS_BITS _u(0x0f0f0f0f) +#define ADC_FCS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : ADC_FCS_THRESH +// Description : DREQ/IRQ asserted when level >= threshold +#define ADC_FCS_THRESH_RESET _u(0x0) +#define ADC_FCS_THRESH_BITS _u(0x0f000000) +#define ADC_FCS_THRESH_MSB _u(27) +#define ADC_FCS_THRESH_LSB _u(24) +#define ADC_FCS_THRESH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : ADC_FCS_LEVEL +// Description : The number of conversion results currently waiting in the FIFO +#define ADC_FCS_LEVEL_RESET _u(0x0) +#define ADC_FCS_LEVEL_BITS _u(0x000f0000) +#define ADC_FCS_LEVEL_MSB _u(19) +#define ADC_FCS_LEVEL_LSB _u(16) +#define ADC_FCS_LEVEL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : ADC_FCS_OVER +// Description : 1 if the FIFO has been overflowed. Write 1 to clear. +#define ADC_FCS_OVER_RESET _u(0x0) +#define ADC_FCS_OVER_BITS _u(0x00000800) +#define ADC_FCS_OVER_MSB _u(11) +#define ADC_FCS_OVER_LSB _u(11) +#define ADC_FCS_OVER_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : ADC_FCS_UNDER +// Description : 1 if the FIFO has been underflowed. Write 1 to clear. +#define ADC_FCS_UNDER_RESET _u(0x0) +#define ADC_FCS_UNDER_BITS _u(0x00000400) +#define ADC_FCS_UNDER_MSB _u(10) +#define ADC_FCS_UNDER_LSB _u(10) +#define ADC_FCS_UNDER_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : ADC_FCS_FULL +// Description : None +#define ADC_FCS_FULL_RESET _u(0x0) +#define ADC_FCS_FULL_BITS _u(0x00000200) +#define ADC_FCS_FULL_MSB _u(9) +#define ADC_FCS_FULL_LSB _u(9) +#define ADC_FCS_FULL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : ADC_FCS_EMPTY +// Description : None +#define ADC_FCS_EMPTY_RESET _u(0x0) +#define ADC_FCS_EMPTY_BITS _u(0x00000100) +#define ADC_FCS_EMPTY_MSB _u(8) +#define ADC_FCS_EMPTY_LSB _u(8) +#define ADC_FCS_EMPTY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : ADC_FCS_DREQ_EN +// Description : If 1: assert DMA requests when FIFO contains data +#define ADC_FCS_DREQ_EN_RESET _u(0x0) +#define ADC_FCS_DREQ_EN_BITS _u(0x00000008) +#define ADC_FCS_DREQ_EN_MSB _u(3) +#define ADC_FCS_DREQ_EN_LSB _u(3) +#define ADC_FCS_DREQ_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : ADC_FCS_ERR +// Description : If 1: conversion error bit appears in the FIFO alongside the +// result +#define ADC_FCS_ERR_RESET _u(0x0) +#define ADC_FCS_ERR_BITS _u(0x00000004) +#define ADC_FCS_ERR_MSB _u(2) +#define ADC_FCS_ERR_LSB _u(2) +#define ADC_FCS_ERR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : ADC_FCS_SHIFT +// Description : If 1: FIFO results are right-shifted to be one byte in size. +// Enables DMA to byte buffers. +#define ADC_FCS_SHIFT_RESET _u(0x0) +#define ADC_FCS_SHIFT_BITS _u(0x00000002) +#define ADC_FCS_SHIFT_MSB _u(1) +#define ADC_FCS_SHIFT_LSB _u(1) +#define ADC_FCS_SHIFT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : ADC_FCS_EN +// Description : If 1: write result to the FIFO after each conversion. +#define ADC_FCS_EN_RESET _u(0x0) +#define ADC_FCS_EN_BITS _u(0x00000001) +#define ADC_FCS_EN_MSB _u(0) +#define ADC_FCS_EN_LSB _u(0) +#define ADC_FCS_EN_ACCESS "RW" +// ============================================================================= +// Register : ADC_FIFO +// Description : Conversion result FIFO +#define ADC_FIFO_OFFSET _u(0x0000000c) +#define ADC_FIFO_BITS _u(0x00008fff) +#define ADC_FIFO_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : ADC_FIFO_ERR +// Description : 1 if this particular sample experienced a conversion error. +// Remains in the same location if the sample is shifted. +#define ADC_FIFO_ERR_RESET "-" +#define ADC_FIFO_ERR_BITS _u(0x00008000) +#define ADC_FIFO_ERR_MSB _u(15) +#define ADC_FIFO_ERR_LSB _u(15) +#define ADC_FIFO_ERR_ACCESS "RF" +// ----------------------------------------------------------------------------- +// Field : ADC_FIFO_VAL +// Description : None +#define ADC_FIFO_VAL_RESET "-" +#define ADC_FIFO_VAL_BITS _u(0x00000fff) +#define ADC_FIFO_VAL_MSB _u(11) +#define ADC_FIFO_VAL_LSB _u(0) +#define ADC_FIFO_VAL_ACCESS "RF" +// ============================================================================= +// Register : ADC_DIV +// Description : Clock divider. If non-zero, CS_START_MANY will start +// conversions +// at regular intervals rather than back-to-back. +// The divider is reset when either of these fields are written. +// Total period is 1 + INT + FRAC / 256 +#define ADC_DIV_OFFSET _u(0x00000010) +#define ADC_DIV_BITS _u(0x00ffffff) +#define ADC_DIV_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : ADC_DIV_INT +// Description : Integer part of clock divisor. +#define ADC_DIV_INT_RESET _u(0x0000) +#define ADC_DIV_INT_BITS _u(0x00ffff00) +#define ADC_DIV_INT_MSB _u(23) +#define ADC_DIV_INT_LSB _u(8) +#define ADC_DIV_INT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : ADC_DIV_FRAC +// Description : Fractional part of clock divisor. First-order delta-sigma. +#define ADC_DIV_FRAC_RESET _u(0x00) +#define ADC_DIV_FRAC_BITS _u(0x000000ff) +#define ADC_DIV_FRAC_MSB _u(7) +#define ADC_DIV_FRAC_LSB _u(0) +#define ADC_DIV_FRAC_ACCESS "RW" +// ============================================================================= +// Register : ADC_INTR +// Description : Raw Interrupts +#define ADC_INTR_OFFSET _u(0x00000014) +#define ADC_INTR_BITS _u(0x00000001) +#define ADC_INTR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : ADC_INTR_FIFO +// Description : Triggered when the sample FIFO reaches a certain level. +// This level can be programmed via the FCS_THRESH field. +#define ADC_INTR_FIFO_RESET _u(0x0) +#define ADC_INTR_FIFO_BITS _u(0x00000001) +#define ADC_INTR_FIFO_MSB _u(0) +#define ADC_INTR_FIFO_LSB _u(0) +#define ADC_INTR_FIFO_ACCESS "RO" +// ============================================================================= +// Register : ADC_INTE +// Description : Interrupt Enable +#define ADC_INTE_OFFSET _u(0x00000018) +#define ADC_INTE_BITS _u(0x00000001) +#define ADC_INTE_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : ADC_INTE_FIFO +// Description : Triggered when the sample FIFO reaches a certain level. +// This level can be programmed via the FCS_THRESH field. +#define ADC_INTE_FIFO_RESET _u(0x0) +#define ADC_INTE_FIFO_BITS _u(0x00000001) +#define ADC_INTE_FIFO_MSB _u(0) +#define ADC_INTE_FIFO_LSB _u(0) +#define ADC_INTE_FIFO_ACCESS "RW" +// ============================================================================= +// Register : ADC_INTF +// Description : Interrupt Force +#define ADC_INTF_OFFSET _u(0x0000001c) +#define ADC_INTF_BITS _u(0x00000001) +#define ADC_INTF_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : ADC_INTF_FIFO +// Description : Triggered when the sample FIFO reaches a certain level. +// This level can be programmed via the FCS_THRESH field. +#define ADC_INTF_FIFO_RESET _u(0x0) +#define ADC_INTF_FIFO_BITS _u(0x00000001) +#define ADC_INTF_FIFO_MSB _u(0) +#define ADC_INTF_FIFO_LSB _u(0) +#define ADC_INTF_FIFO_ACCESS "RW" +// ============================================================================= +// Register : ADC_INTS +// Description : Interrupt status after masking & forcing +#define ADC_INTS_OFFSET _u(0x00000020) +#define ADC_INTS_BITS _u(0x00000001) +#define ADC_INTS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : ADC_INTS_FIFO +// Description : Triggered when the sample FIFO reaches a certain level. +// This level can be programmed via the FCS_THRESH field. +#define ADC_INTS_FIFO_RESET _u(0x0) +#define ADC_INTS_FIFO_BITS _u(0x00000001) +#define ADC_INTS_FIFO_MSB _u(0) +#define ADC_INTS_FIFO_LSB _u(0) +#define ADC_INTS_FIFO_ACCESS "RO" +// ============================================================================= +#endif // HARDWARE_REGS_ADC_DEFINED diff --git a/arkanoid/pico/hardware/regs/addressmap.h b/arkanoid/pico/hardware/regs/addressmap.h new file mode 100644 index 0000000..b3b5ac0 --- /dev/null +++ b/arkanoid/pico/hardware/regs/addressmap.h @@ -0,0 +1,74 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +#ifndef _ADDRESSMAP_H_ +#define _ADDRESSMAP_H_ + +#include "../platform_defs.h" + +// Register address offsets for atomic RMW aliases +#define REG_ALIAS_RW_BITS (0x0u << 12u) +#define REG_ALIAS_XOR_BITS (0x1u << 12u) +#define REG_ALIAS_SET_BITS (0x2u << 12u) +#define REG_ALIAS_CLR_BITS (0x3u << 12u) + +#define ROM_BASE _u(0x00000000) +#define XIP_BASE _u(0x10000000) +#define XIP_MAIN_BASE _u(0x10000000) +#define XIP_NOALLOC_BASE _u(0x11000000) +#define XIP_NOCACHE_BASE _u(0x12000000) +#define XIP_NOCACHE_NOALLOC_BASE _u(0x13000000) +#define XIP_CTRL_BASE _u(0x14000000) +#define XIP_SRAM_BASE _u(0x15000000) +#define XIP_SRAM_END _u(0x15004000) +#define XIP_SSI_BASE _u(0x18000000) +#define SRAM_BASE _u(0x20000000) +#define SRAM_STRIPED_BASE _u(0x20000000) +#define SRAM_STRIPED_END _u(0x20040000) +#define SRAM4_BASE _u(0x20040000) +#define SRAM5_BASE _u(0x20041000) +#define SRAM_END _u(0x20042000) +#define SRAM0_BASE _u(0x21000000) +#define SRAM1_BASE _u(0x21010000) +#define SRAM2_BASE _u(0x21020000) +#define SRAM3_BASE _u(0x21030000) +#define SYSINFO_BASE _u(0x40000000) +#define SYSCFG_BASE _u(0x40004000) +#define CLOCKS_BASE _u(0x40008000) +#define RESETS_BASE _u(0x4000c000) +#define PSM_BASE _u(0x40010000) +#define IO_BANK0_BASE _u(0x40014000) +#define IO_QSPI_BASE _u(0x40018000) +#define PADS_BANK0_BASE _u(0x4001c000) +#define PADS_QSPI_BASE _u(0x40020000) +#define XOSC_BASE _u(0x40024000) +#define PLL_SYS_BASE _u(0x40028000) +#define PLL_USB_BASE _u(0x4002c000) +#define BUSCTRL_BASE _u(0x40030000) +#define UART0_BASE _u(0x40034000) +#define UART1_BASE _u(0x40038000) +#define SPI0_BASE _u(0x4003c000) +#define SPI1_BASE _u(0x40040000) +#define I2C0_BASE _u(0x40044000) +#define I2C1_BASE _u(0x40048000) +#define ADC_BASE _u(0x4004c000) +#define PWM_BASE _u(0x40050000) +#define TIMER_BASE _u(0x40054000) +#define WATCHDOG_BASE _u(0x40058000) +#define RTC_BASE _u(0x4005c000) +#define ROSC_BASE _u(0x40060000) +#define VREG_AND_CHIP_RESET_BASE _u(0x40064000) +#define TBMAN_BASE _u(0x4006c000) +#define DMA_BASE _u(0x50000000) +#define USBCTRL_DPRAM_BASE _u(0x50100000) +#define USBCTRL_BASE _u(0x50100000) +#define USBCTRL_REGS_BASE _u(0x50110000) +#define PIO0_BASE _u(0x50200000) +#define PIO1_BASE _u(0x50300000) +#define XIP_AUX_BASE _u(0x50400000) +#define SIO_BASE _u(0xd0000000) +#define PPB_BASE _u(0xe0000000) + +#endif // _ADDRESSMAP_H_ diff --git a/arkanoid/pico/hardware/regs/busctrl.h b/arkanoid/pico/hardware/regs/busctrl.h new file mode 100644 index 0000000..8be0d86 --- /dev/null +++ b/arkanoid/pico/hardware/regs/busctrl.h @@ -0,0 +1,324 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : BUSCTRL +// Version : 1 +// Bus type : apb +// Description : Register block for busfabric control signals and performance +// counters +// ============================================================================= +#ifndef HARDWARE_REGS_BUSCTRL_DEFINED +#define HARDWARE_REGS_BUSCTRL_DEFINED +// ============================================================================= +// Register : BUSCTRL_BUS_PRIORITY +// Description : Set the priority of each master for bus arbitration. +#define BUSCTRL_BUS_PRIORITY_OFFSET _u(0x00000000) +#define BUSCTRL_BUS_PRIORITY_BITS _u(0x00001111) +#define BUSCTRL_BUS_PRIORITY_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : BUSCTRL_BUS_PRIORITY_DMA_W +// Description : 0 - low priority, 1 - high priority +#define BUSCTRL_BUS_PRIORITY_DMA_W_RESET _u(0x0) +#define BUSCTRL_BUS_PRIORITY_DMA_W_BITS _u(0x00001000) +#define BUSCTRL_BUS_PRIORITY_DMA_W_MSB _u(12) +#define BUSCTRL_BUS_PRIORITY_DMA_W_LSB _u(12) +#define BUSCTRL_BUS_PRIORITY_DMA_W_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : BUSCTRL_BUS_PRIORITY_DMA_R +// Description : 0 - low priority, 1 - high priority +#define BUSCTRL_BUS_PRIORITY_DMA_R_RESET _u(0x0) +#define BUSCTRL_BUS_PRIORITY_DMA_R_BITS _u(0x00000100) +#define BUSCTRL_BUS_PRIORITY_DMA_R_MSB _u(8) +#define BUSCTRL_BUS_PRIORITY_DMA_R_LSB _u(8) +#define BUSCTRL_BUS_PRIORITY_DMA_R_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : BUSCTRL_BUS_PRIORITY_PROC1 +// Description : 0 - low priority, 1 - high priority +#define BUSCTRL_BUS_PRIORITY_PROC1_RESET _u(0x0) +#define BUSCTRL_BUS_PRIORITY_PROC1_BITS _u(0x00000010) +#define BUSCTRL_BUS_PRIORITY_PROC1_MSB _u(4) +#define BUSCTRL_BUS_PRIORITY_PROC1_LSB _u(4) +#define BUSCTRL_BUS_PRIORITY_PROC1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : BUSCTRL_BUS_PRIORITY_PROC0 +// Description : 0 - low priority, 1 - high priority +#define BUSCTRL_BUS_PRIORITY_PROC0_RESET _u(0x0) +#define BUSCTRL_BUS_PRIORITY_PROC0_BITS _u(0x00000001) +#define BUSCTRL_BUS_PRIORITY_PROC0_MSB _u(0) +#define BUSCTRL_BUS_PRIORITY_PROC0_LSB _u(0) +#define BUSCTRL_BUS_PRIORITY_PROC0_ACCESS "RW" +// ============================================================================= +// Register : BUSCTRL_BUS_PRIORITY_ACK +// Description : Bus priority acknowledge +// Goes to 1 once all arbiters have registered the new global +// priority levels. +// Arbiters update their local priority when servicing a new +// nonsequential access. +// In normal circumstances this will happen almost immediately. +#define BUSCTRL_BUS_PRIORITY_ACK_OFFSET _u(0x00000004) +#define BUSCTRL_BUS_PRIORITY_ACK_BITS _u(0x00000001) +#define BUSCTRL_BUS_PRIORITY_ACK_RESET _u(0x00000000) +#define BUSCTRL_BUS_PRIORITY_ACK_MSB _u(0) +#define BUSCTRL_BUS_PRIORITY_ACK_LSB _u(0) +#define BUSCTRL_BUS_PRIORITY_ACK_ACCESS "RO" +// ============================================================================= +// Register : BUSCTRL_PERFCTR0 +// Description : Bus fabric performance counter 0 +// Busfabric saturating performance counter 0 +// Count some event signal from the busfabric arbiters. +// Write any value to clear. Select an event to count using +// PERFSEL0 +#define BUSCTRL_PERFCTR0_OFFSET _u(0x00000008) +#define BUSCTRL_PERFCTR0_BITS _u(0x00ffffff) +#define BUSCTRL_PERFCTR0_RESET _u(0x00000000) +#define BUSCTRL_PERFCTR0_MSB _u(23) +#define BUSCTRL_PERFCTR0_LSB _u(0) +#define BUSCTRL_PERFCTR0_ACCESS "WC" +// ============================================================================= +// Register : BUSCTRL_PERFSEL0 +// Description : Bus fabric performance event select for PERFCTR0 +// Select an event for PERFCTR0. Count either contested accesses, +// or all accesses, on a downstream port of the main crossbar. +// 0x00 -> apb_contested +// 0x01 -> apb +// 0x02 -> fastperi_contested +// 0x03 -> fastperi +// 0x04 -> sram5_contested +// 0x05 -> sram5 +// 0x06 -> sram4_contested +// 0x07 -> sram4 +// 0x08 -> sram3_contested +// 0x09 -> sram3 +// 0x0a -> sram2_contested +// 0x0b -> sram2 +// 0x0c -> sram1_contested +// 0x0d -> sram1 +// 0x0e -> sram0_contested +// 0x0f -> sram0 +// 0x10 -> xip_main_contested +// 0x11 -> xip_main +// 0x12 -> rom_contested +// 0x13 -> rom +#define BUSCTRL_PERFSEL0_OFFSET _u(0x0000000c) +#define BUSCTRL_PERFSEL0_BITS _u(0x0000001f) +#define BUSCTRL_PERFSEL0_RESET _u(0x0000001f) +#define BUSCTRL_PERFSEL0_MSB _u(4) +#define BUSCTRL_PERFSEL0_LSB _u(0) +#define BUSCTRL_PERFSEL0_ACCESS "RW" +#define BUSCTRL_PERFSEL0_VALUE_APB_CONTESTED _u(0x00) +#define BUSCTRL_PERFSEL0_VALUE_APB _u(0x01) +#define BUSCTRL_PERFSEL0_VALUE_FASTPERI_CONTESTED _u(0x02) +#define BUSCTRL_PERFSEL0_VALUE_FASTPERI _u(0x03) +#define BUSCTRL_PERFSEL0_VALUE_SRAM5_CONTESTED _u(0x04) +#define BUSCTRL_PERFSEL0_VALUE_SRAM5 _u(0x05) +#define BUSCTRL_PERFSEL0_VALUE_SRAM4_CONTESTED _u(0x06) +#define BUSCTRL_PERFSEL0_VALUE_SRAM4 _u(0x07) +#define BUSCTRL_PERFSEL0_VALUE_SRAM3_CONTESTED _u(0x08) +#define BUSCTRL_PERFSEL0_VALUE_SRAM3 _u(0x09) +#define BUSCTRL_PERFSEL0_VALUE_SRAM2_CONTESTED _u(0x0a) +#define BUSCTRL_PERFSEL0_VALUE_SRAM2 _u(0x0b) +#define BUSCTRL_PERFSEL0_VALUE_SRAM1_CONTESTED _u(0x0c) +#define BUSCTRL_PERFSEL0_VALUE_SRAM1 _u(0x0d) +#define BUSCTRL_PERFSEL0_VALUE_SRAM0_CONTESTED _u(0x0e) +#define BUSCTRL_PERFSEL0_VALUE_SRAM0 _u(0x0f) +#define BUSCTRL_PERFSEL0_VALUE_XIP_MAIN_CONTESTED _u(0x10) +#define BUSCTRL_PERFSEL0_VALUE_XIP_MAIN _u(0x11) +#define BUSCTRL_PERFSEL0_VALUE_ROM_CONTESTED _u(0x12) +#define BUSCTRL_PERFSEL0_VALUE_ROM _u(0x13) +// ============================================================================= +// Register : BUSCTRL_PERFCTR1 +// Description : Bus fabric performance counter 1 +// Busfabric saturating performance counter 1 +// Count some event signal from the busfabric arbiters. +// Write any value to clear. Select an event to count using +// PERFSEL1 +#define BUSCTRL_PERFCTR1_OFFSET _u(0x00000010) +#define BUSCTRL_PERFCTR1_BITS _u(0x00ffffff) +#define BUSCTRL_PERFCTR1_RESET _u(0x00000000) +#define BUSCTRL_PERFCTR1_MSB _u(23) +#define BUSCTRL_PERFCTR1_LSB _u(0) +#define BUSCTRL_PERFCTR1_ACCESS "WC" +// ============================================================================= +// Register : BUSCTRL_PERFSEL1 +// Description : Bus fabric performance event select for PERFCTR1 +// Select an event for PERFCTR1. Count either contested accesses, +// or all accesses, on a downstream port of the main crossbar. +// 0x00 -> apb_contested +// 0x01 -> apb +// 0x02 -> fastperi_contested +// 0x03 -> fastperi +// 0x04 -> sram5_contested +// 0x05 -> sram5 +// 0x06 -> sram4_contested +// 0x07 -> sram4 +// 0x08 -> sram3_contested +// 0x09 -> sram3 +// 0x0a -> sram2_contested +// 0x0b -> sram2 +// 0x0c -> sram1_contested +// 0x0d -> sram1 +// 0x0e -> sram0_contested +// 0x0f -> sram0 +// 0x10 -> xip_main_contested +// 0x11 -> xip_main +// 0x12 -> rom_contested +// 0x13 -> rom +#define BUSCTRL_PERFSEL1_OFFSET _u(0x00000014) +#define BUSCTRL_PERFSEL1_BITS _u(0x0000001f) +#define BUSCTRL_PERFSEL1_RESET _u(0x0000001f) +#define BUSCTRL_PERFSEL1_MSB _u(4) +#define BUSCTRL_PERFSEL1_LSB _u(0) +#define BUSCTRL_PERFSEL1_ACCESS "RW" +#define BUSCTRL_PERFSEL1_VALUE_APB_CONTESTED _u(0x00) +#define BUSCTRL_PERFSEL1_VALUE_APB _u(0x01) +#define BUSCTRL_PERFSEL1_VALUE_FASTPERI_CONTESTED _u(0x02) +#define BUSCTRL_PERFSEL1_VALUE_FASTPERI _u(0x03) +#define BUSCTRL_PERFSEL1_VALUE_SRAM5_CONTESTED _u(0x04) +#define BUSCTRL_PERFSEL1_VALUE_SRAM5 _u(0x05) +#define BUSCTRL_PERFSEL1_VALUE_SRAM4_CONTESTED _u(0x06) +#define BUSCTRL_PERFSEL1_VALUE_SRAM4 _u(0x07) +#define BUSCTRL_PERFSEL1_VALUE_SRAM3_CONTESTED _u(0x08) +#define BUSCTRL_PERFSEL1_VALUE_SRAM3 _u(0x09) +#define BUSCTRL_PERFSEL1_VALUE_SRAM2_CONTESTED _u(0x0a) +#define BUSCTRL_PERFSEL1_VALUE_SRAM2 _u(0x0b) +#define BUSCTRL_PERFSEL1_VALUE_SRAM1_CONTESTED _u(0x0c) +#define BUSCTRL_PERFSEL1_VALUE_SRAM1 _u(0x0d) +#define BUSCTRL_PERFSEL1_VALUE_SRAM0_CONTESTED _u(0x0e) +#define BUSCTRL_PERFSEL1_VALUE_SRAM0 _u(0x0f) +#define BUSCTRL_PERFSEL1_VALUE_XIP_MAIN_CONTESTED _u(0x10) +#define BUSCTRL_PERFSEL1_VALUE_XIP_MAIN _u(0x11) +#define BUSCTRL_PERFSEL1_VALUE_ROM_CONTESTED _u(0x12) +#define BUSCTRL_PERFSEL1_VALUE_ROM _u(0x13) +// ============================================================================= +// Register : BUSCTRL_PERFCTR2 +// Description : Bus fabric performance counter 2 +// Busfabric saturating performance counter 2 +// Count some event signal from the busfabric arbiters. +// Write any value to clear. Select an event to count using +// PERFSEL2 +#define BUSCTRL_PERFCTR2_OFFSET _u(0x00000018) +#define BUSCTRL_PERFCTR2_BITS _u(0x00ffffff) +#define BUSCTRL_PERFCTR2_RESET _u(0x00000000) +#define BUSCTRL_PERFCTR2_MSB _u(23) +#define BUSCTRL_PERFCTR2_LSB _u(0) +#define BUSCTRL_PERFCTR2_ACCESS "WC" +// ============================================================================= +// Register : BUSCTRL_PERFSEL2 +// Description : Bus fabric performance event select for PERFCTR2 +// Select an event for PERFCTR2. Count either contested accesses, +// or all accesses, on a downstream port of the main crossbar. +// 0x00 -> apb_contested +// 0x01 -> apb +// 0x02 -> fastperi_contested +// 0x03 -> fastperi +// 0x04 -> sram5_contested +// 0x05 -> sram5 +// 0x06 -> sram4_contested +// 0x07 -> sram4 +// 0x08 -> sram3_contested +// 0x09 -> sram3 +// 0x0a -> sram2_contested +// 0x0b -> sram2 +// 0x0c -> sram1_contested +// 0x0d -> sram1 +// 0x0e -> sram0_contested +// 0x0f -> sram0 +// 0x10 -> xip_main_contested +// 0x11 -> xip_main +// 0x12 -> rom_contested +// 0x13 -> rom +#define BUSCTRL_PERFSEL2_OFFSET _u(0x0000001c) +#define BUSCTRL_PERFSEL2_BITS _u(0x0000001f) +#define BUSCTRL_PERFSEL2_RESET _u(0x0000001f) +#define BUSCTRL_PERFSEL2_MSB _u(4) +#define BUSCTRL_PERFSEL2_LSB _u(0) +#define BUSCTRL_PERFSEL2_ACCESS "RW" +#define BUSCTRL_PERFSEL2_VALUE_APB_CONTESTED _u(0x00) +#define BUSCTRL_PERFSEL2_VALUE_APB _u(0x01) +#define BUSCTRL_PERFSEL2_VALUE_FASTPERI_CONTESTED _u(0x02) +#define BUSCTRL_PERFSEL2_VALUE_FASTPERI _u(0x03) +#define BUSCTRL_PERFSEL2_VALUE_SRAM5_CONTESTED _u(0x04) +#define BUSCTRL_PERFSEL2_VALUE_SRAM5 _u(0x05) +#define BUSCTRL_PERFSEL2_VALUE_SRAM4_CONTESTED _u(0x06) +#define BUSCTRL_PERFSEL2_VALUE_SRAM4 _u(0x07) +#define BUSCTRL_PERFSEL2_VALUE_SRAM3_CONTESTED _u(0x08) +#define BUSCTRL_PERFSEL2_VALUE_SRAM3 _u(0x09) +#define BUSCTRL_PERFSEL2_VALUE_SRAM2_CONTESTED _u(0x0a) +#define BUSCTRL_PERFSEL2_VALUE_SRAM2 _u(0x0b) +#define BUSCTRL_PERFSEL2_VALUE_SRAM1_CONTESTED _u(0x0c) +#define BUSCTRL_PERFSEL2_VALUE_SRAM1 _u(0x0d) +#define BUSCTRL_PERFSEL2_VALUE_SRAM0_CONTESTED _u(0x0e) +#define BUSCTRL_PERFSEL2_VALUE_SRAM0 _u(0x0f) +#define BUSCTRL_PERFSEL2_VALUE_XIP_MAIN_CONTESTED _u(0x10) +#define BUSCTRL_PERFSEL2_VALUE_XIP_MAIN _u(0x11) +#define BUSCTRL_PERFSEL2_VALUE_ROM_CONTESTED _u(0x12) +#define BUSCTRL_PERFSEL2_VALUE_ROM _u(0x13) +// ============================================================================= +// Register : BUSCTRL_PERFCTR3 +// Description : Bus fabric performance counter 3 +// Busfabric saturating performance counter 3 +// Count some event signal from the busfabric arbiters. +// Write any value to clear. Select an event to count using +// PERFSEL3 +#define BUSCTRL_PERFCTR3_OFFSET _u(0x00000020) +#define BUSCTRL_PERFCTR3_BITS _u(0x00ffffff) +#define BUSCTRL_PERFCTR3_RESET _u(0x00000000) +#define BUSCTRL_PERFCTR3_MSB _u(23) +#define BUSCTRL_PERFCTR3_LSB _u(0) +#define BUSCTRL_PERFCTR3_ACCESS "WC" +// ============================================================================= +// Register : BUSCTRL_PERFSEL3 +// Description : Bus fabric performance event select for PERFCTR3 +// Select an event for PERFCTR3. Count either contested accesses, +// or all accesses, on a downstream port of the main crossbar. +// 0x00 -> apb_contested +// 0x01 -> apb +// 0x02 -> fastperi_contested +// 0x03 -> fastperi +// 0x04 -> sram5_contested +// 0x05 -> sram5 +// 0x06 -> sram4_contested +// 0x07 -> sram4 +// 0x08 -> sram3_contested +// 0x09 -> sram3 +// 0x0a -> sram2_contested +// 0x0b -> sram2 +// 0x0c -> sram1_contested +// 0x0d -> sram1 +// 0x0e -> sram0_contested +// 0x0f -> sram0 +// 0x10 -> xip_main_contested +// 0x11 -> xip_main +// 0x12 -> rom_contested +// 0x13 -> rom +#define BUSCTRL_PERFSEL3_OFFSET _u(0x00000024) +#define BUSCTRL_PERFSEL3_BITS _u(0x0000001f) +#define BUSCTRL_PERFSEL3_RESET _u(0x0000001f) +#define BUSCTRL_PERFSEL3_MSB _u(4) +#define BUSCTRL_PERFSEL3_LSB _u(0) +#define BUSCTRL_PERFSEL3_ACCESS "RW" +#define BUSCTRL_PERFSEL3_VALUE_APB_CONTESTED _u(0x00) +#define BUSCTRL_PERFSEL3_VALUE_APB _u(0x01) +#define BUSCTRL_PERFSEL3_VALUE_FASTPERI_CONTESTED _u(0x02) +#define BUSCTRL_PERFSEL3_VALUE_FASTPERI _u(0x03) +#define BUSCTRL_PERFSEL3_VALUE_SRAM5_CONTESTED _u(0x04) +#define BUSCTRL_PERFSEL3_VALUE_SRAM5 _u(0x05) +#define BUSCTRL_PERFSEL3_VALUE_SRAM4_CONTESTED _u(0x06) +#define BUSCTRL_PERFSEL3_VALUE_SRAM4 _u(0x07) +#define BUSCTRL_PERFSEL3_VALUE_SRAM3_CONTESTED _u(0x08) +#define BUSCTRL_PERFSEL3_VALUE_SRAM3 _u(0x09) +#define BUSCTRL_PERFSEL3_VALUE_SRAM2_CONTESTED _u(0x0a) +#define BUSCTRL_PERFSEL3_VALUE_SRAM2 _u(0x0b) +#define BUSCTRL_PERFSEL3_VALUE_SRAM1_CONTESTED _u(0x0c) +#define BUSCTRL_PERFSEL3_VALUE_SRAM1 _u(0x0d) +#define BUSCTRL_PERFSEL3_VALUE_SRAM0_CONTESTED _u(0x0e) +#define BUSCTRL_PERFSEL3_VALUE_SRAM0 _u(0x0f) +#define BUSCTRL_PERFSEL3_VALUE_XIP_MAIN_CONTESTED _u(0x10) +#define BUSCTRL_PERFSEL3_VALUE_XIP_MAIN _u(0x11) +#define BUSCTRL_PERFSEL3_VALUE_ROM_CONTESTED _u(0x12) +#define BUSCTRL_PERFSEL3_VALUE_ROM _u(0x13) +// ============================================================================= +#endif // HARDWARE_REGS_BUSCTRL_DEFINED diff --git a/arkanoid/pico/hardware/regs/clocks.h b/arkanoid/pico/hardware/regs/clocks.h new file mode 100644 index 0000000..c0d2eab --- /dev/null +++ b/arkanoid/pico/hardware/regs/clocks.h @@ -0,0 +1,2409 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : CLOCKS +// Version : 1 +// Bus type : apb +// Description : None +// ============================================================================= +#ifndef HARDWARE_REGS_CLOCKS_DEFINED +#define HARDWARE_REGS_CLOCKS_DEFINED +// ============================================================================= +// Register : CLOCKS_CLK_GPOUT0_CTRL +// Description : Clock control, can be changed on-the-fly (except for auxsrc) +#define CLOCKS_CLK_GPOUT0_CTRL_OFFSET _u(0x00000000) +#define CLOCKS_CLK_GPOUT0_CTRL_BITS _u(0x00131de0) +#define CLOCKS_CLK_GPOUT0_CTRL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT0_CTRL_NUDGE +// Description : An edge on this signal shifts the phase of the output by 1 +// cycle of the input clock +// This can be done at any time +#define CLOCKS_CLK_GPOUT0_CTRL_NUDGE_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT0_CTRL_NUDGE_BITS _u(0x00100000) +#define CLOCKS_CLK_GPOUT0_CTRL_NUDGE_MSB _u(20) +#define CLOCKS_CLK_GPOUT0_CTRL_NUDGE_LSB _u(20) +#define CLOCKS_CLK_GPOUT0_CTRL_NUDGE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT0_CTRL_PHASE +// Description : This delays the enable signal by up to 3 cycles of the input +// clock +// This must be set before the clock is enabled to have any effect +#define CLOCKS_CLK_GPOUT0_CTRL_PHASE_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT0_CTRL_PHASE_BITS _u(0x00030000) +#define CLOCKS_CLK_GPOUT0_CTRL_PHASE_MSB _u(17) +#define CLOCKS_CLK_GPOUT0_CTRL_PHASE_LSB _u(16) +#define CLOCKS_CLK_GPOUT0_CTRL_PHASE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT0_CTRL_DC50 +// Description : Enables duty cycle correction for odd divisors +#define CLOCKS_CLK_GPOUT0_CTRL_DC50_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT0_CTRL_DC50_BITS _u(0x00001000) +#define CLOCKS_CLK_GPOUT0_CTRL_DC50_MSB _u(12) +#define CLOCKS_CLK_GPOUT0_CTRL_DC50_LSB _u(12) +#define CLOCKS_CLK_GPOUT0_CTRL_DC50_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT0_CTRL_ENABLE +// Description : Starts and stops the clock generator cleanly +#define CLOCKS_CLK_GPOUT0_CTRL_ENABLE_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT0_CTRL_ENABLE_BITS _u(0x00000800) +#define CLOCKS_CLK_GPOUT0_CTRL_ENABLE_MSB _u(11) +#define CLOCKS_CLK_GPOUT0_CTRL_ENABLE_LSB _u(11) +#define CLOCKS_CLK_GPOUT0_CTRL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT0_CTRL_KILL +// Description : Asynchronously kills the clock generator +#define CLOCKS_CLK_GPOUT0_CTRL_KILL_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT0_CTRL_KILL_BITS _u(0x00000400) +#define CLOCKS_CLK_GPOUT0_CTRL_KILL_MSB _u(10) +#define CLOCKS_CLK_GPOUT0_CTRL_KILL_LSB _u(10) +#define CLOCKS_CLK_GPOUT0_CTRL_KILL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT0_CTRL_AUXSRC +// Description : Selects the auxiliary clock source, will glitch when switching +// 0x0 -> clksrc_pll_sys +// 0x1 -> clksrc_gpin0 +// 0x2 -> clksrc_gpin1 +// 0x3 -> clksrc_pll_usb +// 0x4 -> rosc_clksrc +// 0x5 -> xosc_clksrc +// 0x6 -> clk_sys +// 0x7 -> clk_usb +// 0x8 -> clk_adc +// 0x9 -> clk_rtc +// 0xa -> clk_ref +#define CLOCKS_CLK_GPOUT0_CTRL_AUXSRC_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT0_CTRL_AUXSRC_BITS _u(0x000001e0) +#define CLOCKS_CLK_GPOUT0_CTRL_AUXSRC_MSB _u(8) +#define CLOCKS_CLK_GPOUT0_CTRL_AUXSRC_LSB _u(5) +#define CLOCKS_CLK_GPOUT0_CTRL_AUXSRC_ACCESS "RW" +#define CLOCKS_CLK_GPOUT0_CTRL_AUXSRC_VALUE_CLKSRC_PLL_SYS _u(0x0) +#define CLOCKS_CLK_GPOUT0_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 _u(0x1) +#define CLOCKS_CLK_GPOUT0_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 _u(0x2) +#define CLOCKS_CLK_GPOUT0_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB _u(0x3) +#define CLOCKS_CLK_GPOUT0_CTRL_AUXSRC_VALUE_ROSC_CLKSRC _u(0x4) +#define CLOCKS_CLK_GPOUT0_CTRL_AUXSRC_VALUE_XOSC_CLKSRC _u(0x5) +#define CLOCKS_CLK_GPOUT0_CTRL_AUXSRC_VALUE_CLK_SYS _u(0x6) +#define CLOCKS_CLK_GPOUT0_CTRL_AUXSRC_VALUE_CLK_USB _u(0x7) +#define CLOCKS_CLK_GPOUT0_CTRL_AUXSRC_VALUE_CLK_ADC _u(0x8) +#define CLOCKS_CLK_GPOUT0_CTRL_AUXSRC_VALUE_CLK_RTC _u(0x9) +#define CLOCKS_CLK_GPOUT0_CTRL_AUXSRC_VALUE_CLK_REF _u(0xa) +// ============================================================================= +// Register : CLOCKS_CLK_GPOUT0_DIV +// Description : Clock divisor, can be changed on-the-fly +#define CLOCKS_CLK_GPOUT0_DIV_OFFSET _u(0x00000004) +#define CLOCKS_CLK_GPOUT0_DIV_BITS _u(0xffffffff) +#define CLOCKS_CLK_GPOUT0_DIV_RESET _u(0x00000100) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT0_DIV_INT +// Description : Integer component of the divisor, 0 -> divide by 2^16 +#define CLOCKS_CLK_GPOUT0_DIV_INT_RESET _u(0x000001) +#define CLOCKS_CLK_GPOUT0_DIV_INT_BITS _u(0xffffff00) +#define CLOCKS_CLK_GPOUT0_DIV_INT_MSB _u(31) +#define CLOCKS_CLK_GPOUT0_DIV_INT_LSB _u(8) +#define CLOCKS_CLK_GPOUT0_DIV_INT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT0_DIV_FRAC +// Description : Fractional component of the divisor +#define CLOCKS_CLK_GPOUT0_DIV_FRAC_RESET _u(0x00) +#define CLOCKS_CLK_GPOUT0_DIV_FRAC_BITS _u(0x000000ff) +#define CLOCKS_CLK_GPOUT0_DIV_FRAC_MSB _u(7) +#define CLOCKS_CLK_GPOUT0_DIV_FRAC_LSB _u(0) +#define CLOCKS_CLK_GPOUT0_DIV_FRAC_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_CLK_GPOUT0_SELECTED +// Description : Indicates which SRC is currently selected by the glitchless mux +// (one-hot). +// This slice does not have a glitchless mux (only the AUX_SRC +// field is present, not SRC) so this register is hardwired to +// 0x1. +#define CLOCKS_CLK_GPOUT0_SELECTED_OFFSET _u(0x00000008) +#define CLOCKS_CLK_GPOUT0_SELECTED_BITS _u(0xffffffff) +#define CLOCKS_CLK_GPOUT0_SELECTED_RESET _u(0x00000001) +#define CLOCKS_CLK_GPOUT0_SELECTED_MSB _u(31) +#define CLOCKS_CLK_GPOUT0_SELECTED_LSB _u(0) +#define CLOCKS_CLK_GPOUT0_SELECTED_ACCESS "RO" +// ============================================================================= +// Register : CLOCKS_CLK_GPOUT1_CTRL +// Description : Clock control, can be changed on-the-fly (except for auxsrc) +#define CLOCKS_CLK_GPOUT1_CTRL_OFFSET _u(0x0000000c) +#define CLOCKS_CLK_GPOUT1_CTRL_BITS _u(0x00131de0) +#define CLOCKS_CLK_GPOUT1_CTRL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT1_CTRL_NUDGE +// Description : An edge on this signal shifts the phase of the output by 1 +// cycle of the input clock +// This can be done at any time +#define CLOCKS_CLK_GPOUT1_CTRL_NUDGE_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT1_CTRL_NUDGE_BITS _u(0x00100000) +#define CLOCKS_CLK_GPOUT1_CTRL_NUDGE_MSB _u(20) +#define CLOCKS_CLK_GPOUT1_CTRL_NUDGE_LSB _u(20) +#define CLOCKS_CLK_GPOUT1_CTRL_NUDGE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT1_CTRL_PHASE +// Description : This delays the enable signal by up to 3 cycles of the input +// clock +// This must be set before the clock is enabled to have any effect +#define CLOCKS_CLK_GPOUT1_CTRL_PHASE_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT1_CTRL_PHASE_BITS _u(0x00030000) +#define CLOCKS_CLK_GPOUT1_CTRL_PHASE_MSB _u(17) +#define CLOCKS_CLK_GPOUT1_CTRL_PHASE_LSB _u(16) +#define CLOCKS_CLK_GPOUT1_CTRL_PHASE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT1_CTRL_DC50 +// Description : Enables duty cycle correction for odd divisors +#define CLOCKS_CLK_GPOUT1_CTRL_DC50_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT1_CTRL_DC50_BITS _u(0x00001000) +#define CLOCKS_CLK_GPOUT1_CTRL_DC50_MSB _u(12) +#define CLOCKS_CLK_GPOUT1_CTRL_DC50_LSB _u(12) +#define CLOCKS_CLK_GPOUT1_CTRL_DC50_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT1_CTRL_ENABLE +// Description : Starts and stops the clock generator cleanly +#define CLOCKS_CLK_GPOUT1_CTRL_ENABLE_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT1_CTRL_ENABLE_BITS _u(0x00000800) +#define CLOCKS_CLK_GPOUT1_CTRL_ENABLE_MSB _u(11) +#define CLOCKS_CLK_GPOUT1_CTRL_ENABLE_LSB _u(11) +#define CLOCKS_CLK_GPOUT1_CTRL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT1_CTRL_KILL +// Description : Asynchronously kills the clock generator +#define CLOCKS_CLK_GPOUT1_CTRL_KILL_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT1_CTRL_KILL_BITS _u(0x00000400) +#define CLOCKS_CLK_GPOUT1_CTRL_KILL_MSB _u(10) +#define CLOCKS_CLK_GPOUT1_CTRL_KILL_LSB _u(10) +#define CLOCKS_CLK_GPOUT1_CTRL_KILL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT1_CTRL_AUXSRC +// Description : Selects the auxiliary clock source, will glitch when switching +// 0x0 -> clksrc_pll_sys +// 0x1 -> clksrc_gpin0 +// 0x2 -> clksrc_gpin1 +// 0x3 -> clksrc_pll_usb +// 0x4 -> rosc_clksrc +// 0x5 -> xosc_clksrc +// 0x6 -> clk_sys +// 0x7 -> clk_usb +// 0x8 -> clk_adc +// 0x9 -> clk_rtc +// 0xa -> clk_ref +#define CLOCKS_CLK_GPOUT1_CTRL_AUXSRC_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT1_CTRL_AUXSRC_BITS _u(0x000001e0) +#define CLOCKS_CLK_GPOUT1_CTRL_AUXSRC_MSB _u(8) +#define CLOCKS_CLK_GPOUT1_CTRL_AUXSRC_LSB _u(5) +#define CLOCKS_CLK_GPOUT1_CTRL_AUXSRC_ACCESS "RW" +#define CLOCKS_CLK_GPOUT1_CTRL_AUXSRC_VALUE_CLKSRC_PLL_SYS _u(0x0) +#define CLOCKS_CLK_GPOUT1_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 _u(0x1) +#define CLOCKS_CLK_GPOUT1_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 _u(0x2) +#define CLOCKS_CLK_GPOUT1_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB _u(0x3) +#define CLOCKS_CLK_GPOUT1_CTRL_AUXSRC_VALUE_ROSC_CLKSRC _u(0x4) +#define CLOCKS_CLK_GPOUT1_CTRL_AUXSRC_VALUE_XOSC_CLKSRC _u(0x5) +#define CLOCKS_CLK_GPOUT1_CTRL_AUXSRC_VALUE_CLK_SYS _u(0x6) +#define CLOCKS_CLK_GPOUT1_CTRL_AUXSRC_VALUE_CLK_USB _u(0x7) +#define CLOCKS_CLK_GPOUT1_CTRL_AUXSRC_VALUE_CLK_ADC _u(0x8) +#define CLOCKS_CLK_GPOUT1_CTRL_AUXSRC_VALUE_CLK_RTC _u(0x9) +#define CLOCKS_CLK_GPOUT1_CTRL_AUXSRC_VALUE_CLK_REF _u(0xa) +// ============================================================================= +// Register : CLOCKS_CLK_GPOUT1_DIV +// Description : Clock divisor, can be changed on-the-fly +#define CLOCKS_CLK_GPOUT1_DIV_OFFSET _u(0x00000010) +#define CLOCKS_CLK_GPOUT1_DIV_BITS _u(0xffffffff) +#define CLOCKS_CLK_GPOUT1_DIV_RESET _u(0x00000100) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT1_DIV_INT +// Description : Integer component of the divisor, 0 -> divide by 2^16 +#define CLOCKS_CLK_GPOUT1_DIV_INT_RESET _u(0x000001) +#define CLOCKS_CLK_GPOUT1_DIV_INT_BITS _u(0xffffff00) +#define CLOCKS_CLK_GPOUT1_DIV_INT_MSB _u(31) +#define CLOCKS_CLK_GPOUT1_DIV_INT_LSB _u(8) +#define CLOCKS_CLK_GPOUT1_DIV_INT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT1_DIV_FRAC +// Description : Fractional component of the divisor +#define CLOCKS_CLK_GPOUT1_DIV_FRAC_RESET _u(0x00) +#define CLOCKS_CLK_GPOUT1_DIV_FRAC_BITS _u(0x000000ff) +#define CLOCKS_CLK_GPOUT1_DIV_FRAC_MSB _u(7) +#define CLOCKS_CLK_GPOUT1_DIV_FRAC_LSB _u(0) +#define CLOCKS_CLK_GPOUT1_DIV_FRAC_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_CLK_GPOUT1_SELECTED +// Description : Indicates which SRC is currently selected by the glitchless mux +// (one-hot). +// This slice does not have a glitchless mux (only the AUX_SRC +// field is present, not SRC) so this register is hardwired to +// 0x1. +#define CLOCKS_CLK_GPOUT1_SELECTED_OFFSET _u(0x00000014) +#define CLOCKS_CLK_GPOUT1_SELECTED_BITS _u(0xffffffff) +#define CLOCKS_CLK_GPOUT1_SELECTED_RESET _u(0x00000001) +#define CLOCKS_CLK_GPOUT1_SELECTED_MSB _u(31) +#define CLOCKS_CLK_GPOUT1_SELECTED_LSB _u(0) +#define CLOCKS_CLK_GPOUT1_SELECTED_ACCESS "RO" +// ============================================================================= +// Register : CLOCKS_CLK_GPOUT2_CTRL +// Description : Clock control, can be changed on-the-fly (except for auxsrc) +#define CLOCKS_CLK_GPOUT2_CTRL_OFFSET _u(0x00000018) +#define CLOCKS_CLK_GPOUT2_CTRL_BITS _u(0x00131de0) +#define CLOCKS_CLK_GPOUT2_CTRL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT2_CTRL_NUDGE +// Description : An edge on this signal shifts the phase of the output by 1 +// cycle of the input clock +// This can be done at any time +#define CLOCKS_CLK_GPOUT2_CTRL_NUDGE_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT2_CTRL_NUDGE_BITS _u(0x00100000) +#define CLOCKS_CLK_GPOUT2_CTRL_NUDGE_MSB _u(20) +#define CLOCKS_CLK_GPOUT2_CTRL_NUDGE_LSB _u(20) +#define CLOCKS_CLK_GPOUT2_CTRL_NUDGE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT2_CTRL_PHASE +// Description : This delays the enable signal by up to 3 cycles of the input +// clock +// This must be set before the clock is enabled to have any effect +#define CLOCKS_CLK_GPOUT2_CTRL_PHASE_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT2_CTRL_PHASE_BITS _u(0x00030000) +#define CLOCKS_CLK_GPOUT2_CTRL_PHASE_MSB _u(17) +#define CLOCKS_CLK_GPOUT2_CTRL_PHASE_LSB _u(16) +#define CLOCKS_CLK_GPOUT2_CTRL_PHASE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT2_CTRL_DC50 +// Description : Enables duty cycle correction for odd divisors +#define CLOCKS_CLK_GPOUT2_CTRL_DC50_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT2_CTRL_DC50_BITS _u(0x00001000) +#define CLOCKS_CLK_GPOUT2_CTRL_DC50_MSB _u(12) +#define CLOCKS_CLK_GPOUT2_CTRL_DC50_LSB _u(12) +#define CLOCKS_CLK_GPOUT2_CTRL_DC50_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT2_CTRL_ENABLE +// Description : Starts and stops the clock generator cleanly +#define CLOCKS_CLK_GPOUT2_CTRL_ENABLE_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT2_CTRL_ENABLE_BITS _u(0x00000800) +#define CLOCKS_CLK_GPOUT2_CTRL_ENABLE_MSB _u(11) +#define CLOCKS_CLK_GPOUT2_CTRL_ENABLE_LSB _u(11) +#define CLOCKS_CLK_GPOUT2_CTRL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT2_CTRL_KILL +// Description : Asynchronously kills the clock generator +#define CLOCKS_CLK_GPOUT2_CTRL_KILL_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT2_CTRL_KILL_BITS _u(0x00000400) +#define CLOCKS_CLK_GPOUT2_CTRL_KILL_MSB _u(10) +#define CLOCKS_CLK_GPOUT2_CTRL_KILL_LSB _u(10) +#define CLOCKS_CLK_GPOUT2_CTRL_KILL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT2_CTRL_AUXSRC +// Description : Selects the auxiliary clock source, will glitch when switching +// 0x0 -> clksrc_pll_sys +// 0x1 -> clksrc_gpin0 +// 0x2 -> clksrc_gpin1 +// 0x3 -> clksrc_pll_usb +// 0x4 -> rosc_clksrc_ph +// 0x5 -> xosc_clksrc +// 0x6 -> clk_sys +// 0x7 -> clk_usb +// 0x8 -> clk_adc +// 0x9 -> clk_rtc +// 0xa -> clk_ref +#define CLOCKS_CLK_GPOUT2_CTRL_AUXSRC_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT2_CTRL_AUXSRC_BITS _u(0x000001e0) +#define CLOCKS_CLK_GPOUT2_CTRL_AUXSRC_MSB _u(8) +#define CLOCKS_CLK_GPOUT2_CTRL_AUXSRC_LSB _u(5) +#define CLOCKS_CLK_GPOUT2_CTRL_AUXSRC_ACCESS "RW" +#define CLOCKS_CLK_GPOUT2_CTRL_AUXSRC_VALUE_CLKSRC_PLL_SYS _u(0x0) +#define CLOCKS_CLK_GPOUT2_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 _u(0x1) +#define CLOCKS_CLK_GPOUT2_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 _u(0x2) +#define CLOCKS_CLK_GPOUT2_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB _u(0x3) +#define CLOCKS_CLK_GPOUT2_CTRL_AUXSRC_VALUE_ROSC_CLKSRC_PH _u(0x4) +#define CLOCKS_CLK_GPOUT2_CTRL_AUXSRC_VALUE_XOSC_CLKSRC _u(0x5) +#define CLOCKS_CLK_GPOUT2_CTRL_AUXSRC_VALUE_CLK_SYS _u(0x6) +#define CLOCKS_CLK_GPOUT2_CTRL_AUXSRC_VALUE_CLK_USB _u(0x7) +#define CLOCKS_CLK_GPOUT2_CTRL_AUXSRC_VALUE_CLK_ADC _u(0x8) +#define CLOCKS_CLK_GPOUT2_CTRL_AUXSRC_VALUE_CLK_RTC _u(0x9) +#define CLOCKS_CLK_GPOUT2_CTRL_AUXSRC_VALUE_CLK_REF _u(0xa) +// ============================================================================= +// Register : CLOCKS_CLK_GPOUT2_DIV +// Description : Clock divisor, can be changed on-the-fly +#define CLOCKS_CLK_GPOUT2_DIV_OFFSET _u(0x0000001c) +#define CLOCKS_CLK_GPOUT2_DIV_BITS _u(0xffffffff) +#define CLOCKS_CLK_GPOUT2_DIV_RESET _u(0x00000100) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT2_DIV_INT +// Description : Integer component of the divisor, 0 -> divide by 2^16 +#define CLOCKS_CLK_GPOUT2_DIV_INT_RESET _u(0x000001) +#define CLOCKS_CLK_GPOUT2_DIV_INT_BITS _u(0xffffff00) +#define CLOCKS_CLK_GPOUT2_DIV_INT_MSB _u(31) +#define CLOCKS_CLK_GPOUT2_DIV_INT_LSB _u(8) +#define CLOCKS_CLK_GPOUT2_DIV_INT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT2_DIV_FRAC +// Description : Fractional component of the divisor +#define CLOCKS_CLK_GPOUT2_DIV_FRAC_RESET _u(0x00) +#define CLOCKS_CLK_GPOUT2_DIV_FRAC_BITS _u(0x000000ff) +#define CLOCKS_CLK_GPOUT2_DIV_FRAC_MSB _u(7) +#define CLOCKS_CLK_GPOUT2_DIV_FRAC_LSB _u(0) +#define CLOCKS_CLK_GPOUT2_DIV_FRAC_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_CLK_GPOUT2_SELECTED +// Description : Indicates which SRC is currently selected by the glitchless mux +// (one-hot). +// This slice does not have a glitchless mux (only the AUX_SRC +// field is present, not SRC) so this register is hardwired to +// 0x1. +#define CLOCKS_CLK_GPOUT2_SELECTED_OFFSET _u(0x00000020) +#define CLOCKS_CLK_GPOUT2_SELECTED_BITS _u(0xffffffff) +#define CLOCKS_CLK_GPOUT2_SELECTED_RESET _u(0x00000001) +#define CLOCKS_CLK_GPOUT2_SELECTED_MSB _u(31) +#define CLOCKS_CLK_GPOUT2_SELECTED_LSB _u(0) +#define CLOCKS_CLK_GPOUT2_SELECTED_ACCESS "RO" +// ============================================================================= +// Register : CLOCKS_CLK_GPOUT3_CTRL +// Description : Clock control, can be changed on-the-fly (except for auxsrc) +#define CLOCKS_CLK_GPOUT3_CTRL_OFFSET _u(0x00000024) +#define CLOCKS_CLK_GPOUT3_CTRL_BITS _u(0x00131de0) +#define CLOCKS_CLK_GPOUT3_CTRL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT3_CTRL_NUDGE +// Description : An edge on this signal shifts the phase of the output by 1 +// cycle of the input clock +// This can be done at any time +#define CLOCKS_CLK_GPOUT3_CTRL_NUDGE_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT3_CTRL_NUDGE_BITS _u(0x00100000) +#define CLOCKS_CLK_GPOUT3_CTRL_NUDGE_MSB _u(20) +#define CLOCKS_CLK_GPOUT3_CTRL_NUDGE_LSB _u(20) +#define CLOCKS_CLK_GPOUT3_CTRL_NUDGE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT3_CTRL_PHASE +// Description : This delays the enable signal by up to 3 cycles of the input +// clock +// This must be set before the clock is enabled to have any effect +#define CLOCKS_CLK_GPOUT3_CTRL_PHASE_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT3_CTRL_PHASE_BITS _u(0x00030000) +#define CLOCKS_CLK_GPOUT3_CTRL_PHASE_MSB _u(17) +#define CLOCKS_CLK_GPOUT3_CTRL_PHASE_LSB _u(16) +#define CLOCKS_CLK_GPOUT3_CTRL_PHASE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT3_CTRL_DC50 +// Description : Enables duty cycle correction for odd divisors +#define CLOCKS_CLK_GPOUT3_CTRL_DC50_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT3_CTRL_DC50_BITS _u(0x00001000) +#define CLOCKS_CLK_GPOUT3_CTRL_DC50_MSB _u(12) +#define CLOCKS_CLK_GPOUT3_CTRL_DC50_LSB _u(12) +#define CLOCKS_CLK_GPOUT3_CTRL_DC50_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT3_CTRL_ENABLE +// Description : Starts and stops the clock generator cleanly +#define CLOCKS_CLK_GPOUT3_CTRL_ENABLE_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT3_CTRL_ENABLE_BITS _u(0x00000800) +#define CLOCKS_CLK_GPOUT3_CTRL_ENABLE_MSB _u(11) +#define CLOCKS_CLK_GPOUT3_CTRL_ENABLE_LSB _u(11) +#define CLOCKS_CLK_GPOUT3_CTRL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT3_CTRL_KILL +// Description : Asynchronously kills the clock generator +#define CLOCKS_CLK_GPOUT3_CTRL_KILL_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT3_CTRL_KILL_BITS _u(0x00000400) +#define CLOCKS_CLK_GPOUT3_CTRL_KILL_MSB _u(10) +#define CLOCKS_CLK_GPOUT3_CTRL_KILL_LSB _u(10) +#define CLOCKS_CLK_GPOUT3_CTRL_KILL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT3_CTRL_AUXSRC +// Description : Selects the auxiliary clock source, will glitch when switching +// 0x0 -> clksrc_pll_sys +// 0x1 -> clksrc_gpin0 +// 0x2 -> clksrc_gpin1 +// 0x3 -> clksrc_pll_usb +// 0x4 -> rosc_clksrc_ph +// 0x5 -> xosc_clksrc +// 0x6 -> clk_sys +// 0x7 -> clk_usb +// 0x8 -> clk_adc +// 0x9 -> clk_rtc +// 0xa -> clk_ref +#define CLOCKS_CLK_GPOUT3_CTRL_AUXSRC_RESET _u(0x0) +#define CLOCKS_CLK_GPOUT3_CTRL_AUXSRC_BITS _u(0x000001e0) +#define CLOCKS_CLK_GPOUT3_CTRL_AUXSRC_MSB _u(8) +#define CLOCKS_CLK_GPOUT3_CTRL_AUXSRC_LSB _u(5) +#define CLOCKS_CLK_GPOUT3_CTRL_AUXSRC_ACCESS "RW" +#define CLOCKS_CLK_GPOUT3_CTRL_AUXSRC_VALUE_CLKSRC_PLL_SYS _u(0x0) +#define CLOCKS_CLK_GPOUT3_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 _u(0x1) +#define CLOCKS_CLK_GPOUT3_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 _u(0x2) +#define CLOCKS_CLK_GPOUT3_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB _u(0x3) +#define CLOCKS_CLK_GPOUT3_CTRL_AUXSRC_VALUE_ROSC_CLKSRC_PH _u(0x4) +#define CLOCKS_CLK_GPOUT3_CTRL_AUXSRC_VALUE_XOSC_CLKSRC _u(0x5) +#define CLOCKS_CLK_GPOUT3_CTRL_AUXSRC_VALUE_CLK_SYS _u(0x6) +#define CLOCKS_CLK_GPOUT3_CTRL_AUXSRC_VALUE_CLK_USB _u(0x7) +#define CLOCKS_CLK_GPOUT3_CTRL_AUXSRC_VALUE_CLK_ADC _u(0x8) +#define CLOCKS_CLK_GPOUT3_CTRL_AUXSRC_VALUE_CLK_RTC _u(0x9) +#define CLOCKS_CLK_GPOUT3_CTRL_AUXSRC_VALUE_CLK_REF _u(0xa) +// ============================================================================= +// Register : CLOCKS_CLK_GPOUT3_DIV +// Description : Clock divisor, can be changed on-the-fly +#define CLOCKS_CLK_GPOUT3_DIV_OFFSET _u(0x00000028) +#define CLOCKS_CLK_GPOUT3_DIV_BITS _u(0xffffffff) +#define CLOCKS_CLK_GPOUT3_DIV_RESET _u(0x00000100) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT3_DIV_INT +// Description : Integer component of the divisor, 0 -> divide by 2^16 +#define CLOCKS_CLK_GPOUT3_DIV_INT_RESET _u(0x000001) +#define CLOCKS_CLK_GPOUT3_DIV_INT_BITS _u(0xffffff00) +#define CLOCKS_CLK_GPOUT3_DIV_INT_MSB _u(31) +#define CLOCKS_CLK_GPOUT3_DIV_INT_LSB _u(8) +#define CLOCKS_CLK_GPOUT3_DIV_INT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_GPOUT3_DIV_FRAC +// Description : Fractional component of the divisor +#define CLOCKS_CLK_GPOUT3_DIV_FRAC_RESET _u(0x00) +#define CLOCKS_CLK_GPOUT3_DIV_FRAC_BITS _u(0x000000ff) +#define CLOCKS_CLK_GPOUT3_DIV_FRAC_MSB _u(7) +#define CLOCKS_CLK_GPOUT3_DIV_FRAC_LSB _u(0) +#define CLOCKS_CLK_GPOUT3_DIV_FRAC_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_CLK_GPOUT3_SELECTED +// Description : Indicates which SRC is currently selected by the glitchless mux +// (one-hot). +// This slice does not have a glitchless mux (only the AUX_SRC +// field is present, not SRC) so this register is hardwired to +// 0x1. +#define CLOCKS_CLK_GPOUT3_SELECTED_OFFSET _u(0x0000002c) +#define CLOCKS_CLK_GPOUT3_SELECTED_BITS _u(0xffffffff) +#define CLOCKS_CLK_GPOUT3_SELECTED_RESET _u(0x00000001) +#define CLOCKS_CLK_GPOUT3_SELECTED_MSB _u(31) +#define CLOCKS_CLK_GPOUT3_SELECTED_LSB _u(0) +#define CLOCKS_CLK_GPOUT3_SELECTED_ACCESS "RO" +// ============================================================================= +// Register : CLOCKS_CLK_REF_CTRL +// Description : Clock control, can be changed on-the-fly (except for auxsrc) +#define CLOCKS_CLK_REF_CTRL_OFFSET _u(0x00000030) +#define CLOCKS_CLK_REF_CTRL_BITS _u(0x00000063) +#define CLOCKS_CLK_REF_CTRL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_REF_CTRL_AUXSRC +// Description : Selects the auxiliary clock source, will glitch when switching +// 0x0 -> clksrc_pll_usb +// 0x1 -> clksrc_gpin0 +// 0x2 -> clksrc_gpin1 +#define CLOCKS_CLK_REF_CTRL_AUXSRC_RESET _u(0x0) +#define CLOCKS_CLK_REF_CTRL_AUXSRC_BITS _u(0x00000060) +#define CLOCKS_CLK_REF_CTRL_AUXSRC_MSB _u(6) +#define CLOCKS_CLK_REF_CTRL_AUXSRC_LSB _u(5) +#define CLOCKS_CLK_REF_CTRL_AUXSRC_ACCESS "RW" +#define CLOCKS_CLK_REF_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB _u(0x0) +#define CLOCKS_CLK_REF_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 _u(0x1) +#define CLOCKS_CLK_REF_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 _u(0x2) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_REF_CTRL_SRC +// Description : Selects the clock source glitchlessly, can be changed +// on-the-fly +// 0x0 -> rosc_clksrc_ph +// 0x1 -> clksrc_clk_ref_aux +// 0x2 -> xosc_clksrc +#define CLOCKS_CLK_REF_CTRL_SRC_RESET "-" +#define CLOCKS_CLK_REF_CTRL_SRC_BITS _u(0x00000003) +#define CLOCKS_CLK_REF_CTRL_SRC_MSB _u(1) +#define CLOCKS_CLK_REF_CTRL_SRC_LSB _u(0) +#define CLOCKS_CLK_REF_CTRL_SRC_ACCESS "RW" +#define CLOCKS_CLK_REF_CTRL_SRC_VALUE_ROSC_CLKSRC_PH _u(0x0) +#define CLOCKS_CLK_REF_CTRL_SRC_VALUE_CLKSRC_CLK_REF_AUX _u(0x1) +#define CLOCKS_CLK_REF_CTRL_SRC_VALUE_XOSC_CLKSRC _u(0x2) +// ============================================================================= +// Register : CLOCKS_CLK_REF_DIV +// Description : Clock divisor, can be changed on-the-fly +#define CLOCKS_CLK_REF_DIV_OFFSET _u(0x00000034) +#define CLOCKS_CLK_REF_DIV_BITS _u(0x00000300) +#define CLOCKS_CLK_REF_DIV_RESET _u(0x00000100) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_REF_DIV_INT +// Description : Integer component of the divisor, 0 -> divide by 2^16 +#define CLOCKS_CLK_REF_DIV_INT_RESET _u(0x1) +#define CLOCKS_CLK_REF_DIV_INT_BITS _u(0x00000300) +#define CLOCKS_CLK_REF_DIV_INT_MSB _u(9) +#define CLOCKS_CLK_REF_DIV_INT_LSB _u(8) +#define CLOCKS_CLK_REF_DIV_INT_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_CLK_REF_SELECTED +// Description : Indicates which SRC is currently selected by the glitchless mux +// (one-hot). +// The glitchless multiplexer does not switch instantaneously (to +// avoid glitches), so software should poll this register to wait +// for the switch to complete. This register contains one decoded +// bit for each of the clock sources enumerated in the CTRL SRC +// field. At most one of these bits will be set at any time, +// indicating that clock is currently present at the output of the +// glitchless mux. Whilst switching is in progress, this register +// may briefly show all-0s. +#define CLOCKS_CLK_REF_SELECTED_OFFSET _u(0x00000038) +#define CLOCKS_CLK_REF_SELECTED_BITS _u(0xffffffff) +#define CLOCKS_CLK_REF_SELECTED_RESET _u(0x00000001) +#define CLOCKS_CLK_REF_SELECTED_MSB _u(31) +#define CLOCKS_CLK_REF_SELECTED_LSB _u(0) +#define CLOCKS_CLK_REF_SELECTED_ACCESS "RO" +// ============================================================================= +// Register : CLOCKS_CLK_SYS_CTRL +// Description : Clock control, can be changed on-the-fly (except for auxsrc) +#define CLOCKS_CLK_SYS_CTRL_OFFSET _u(0x0000003c) +#define CLOCKS_CLK_SYS_CTRL_BITS _u(0x000000e1) +#define CLOCKS_CLK_SYS_CTRL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_SYS_CTRL_AUXSRC +// Description : Selects the auxiliary clock source, will glitch when switching +// 0x0 -> clksrc_pll_sys +// 0x1 -> clksrc_pll_usb +// 0x2 -> rosc_clksrc +// 0x3 -> xosc_clksrc +// 0x4 -> clksrc_gpin0 +// 0x5 -> clksrc_gpin1 +#define CLOCKS_CLK_SYS_CTRL_AUXSRC_RESET _u(0x0) +#define CLOCKS_CLK_SYS_CTRL_AUXSRC_BITS _u(0x000000e0) +#define CLOCKS_CLK_SYS_CTRL_AUXSRC_MSB _u(7) +#define CLOCKS_CLK_SYS_CTRL_AUXSRC_LSB _u(5) +#define CLOCKS_CLK_SYS_CTRL_AUXSRC_ACCESS "RW" +#define CLOCKS_CLK_SYS_CTRL_AUXSRC_VALUE_CLKSRC_PLL_SYS _u(0x0) +#define CLOCKS_CLK_SYS_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB _u(0x1) +#define CLOCKS_CLK_SYS_CTRL_AUXSRC_VALUE_ROSC_CLKSRC _u(0x2) +#define CLOCKS_CLK_SYS_CTRL_AUXSRC_VALUE_XOSC_CLKSRC _u(0x3) +#define CLOCKS_CLK_SYS_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 _u(0x4) +#define CLOCKS_CLK_SYS_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 _u(0x5) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_SYS_CTRL_SRC +// Description : Selects the clock source glitchlessly, can be changed +// on-the-fly +// 0x0 -> clk_ref +// 0x1 -> clksrc_clk_sys_aux +#define CLOCKS_CLK_SYS_CTRL_SRC_RESET _u(0x0) +#define CLOCKS_CLK_SYS_CTRL_SRC_BITS _u(0x00000001) +#define CLOCKS_CLK_SYS_CTRL_SRC_MSB _u(0) +#define CLOCKS_CLK_SYS_CTRL_SRC_LSB _u(0) +#define CLOCKS_CLK_SYS_CTRL_SRC_ACCESS "RW" +#define CLOCKS_CLK_SYS_CTRL_SRC_VALUE_CLK_REF _u(0x0) +#define CLOCKS_CLK_SYS_CTRL_SRC_VALUE_CLKSRC_CLK_SYS_AUX _u(0x1) +// ============================================================================= +// Register : CLOCKS_CLK_SYS_DIV +// Description : Clock divisor, can be changed on-the-fly +#define CLOCKS_CLK_SYS_DIV_OFFSET _u(0x00000040) +#define CLOCKS_CLK_SYS_DIV_BITS _u(0xffffffff) +#define CLOCKS_CLK_SYS_DIV_RESET _u(0x00000100) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_SYS_DIV_INT +// Description : Integer component of the divisor, 0 -> divide by 2^16 +#define CLOCKS_CLK_SYS_DIV_INT_RESET _u(0x000001) +#define CLOCKS_CLK_SYS_DIV_INT_BITS _u(0xffffff00) +#define CLOCKS_CLK_SYS_DIV_INT_MSB _u(31) +#define CLOCKS_CLK_SYS_DIV_INT_LSB _u(8) +#define CLOCKS_CLK_SYS_DIV_INT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_SYS_DIV_FRAC +// Description : Fractional component of the divisor +#define CLOCKS_CLK_SYS_DIV_FRAC_RESET _u(0x00) +#define CLOCKS_CLK_SYS_DIV_FRAC_BITS _u(0x000000ff) +#define CLOCKS_CLK_SYS_DIV_FRAC_MSB _u(7) +#define CLOCKS_CLK_SYS_DIV_FRAC_LSB _u(0) +#define CLOCKS_CLK_SYS_DIV_FRAC_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_CLK_SYS_SELECTED +// Description : Indicates which SRC is currently selected by the glitchless mux +// (one-hot). +// The glitchless multiplexer does not switch instantaneously (to +// avoid glitches), so software should poll this register to wait +// for the switch to complete. This register contains one decoded +// bit for each of the clock sources enumerated in the CTRL SRC +// field. At most one of these bits will be set at any time, +// indicating that clock is currently present at the output of the +// glitchless mux. Whilst switching is in progress, this register +// may briefly show all-0s. +#define CLOCKS_CLK_SYS_SELECTED_OFFSET _u(0x00000044) +#define CLOCKS_CLK_SYS_SELECTED_BITS _u(0xffffffff) +#define CLOCKS_CLK_SYS_SELECTED_RESET _u(0x00000001) +#define CLOCKS_CLK_SYS_SELECTED_MSB _u(31) +#define CLOCKS_CLK_SYS_SELECTED_LSB _u(0) +#define CLOCKS_CLK_SYS_SELECTED_ACCESS "RO" +// ============================================================================= +// Register : CLOCKS_CLK_PERI_CTRL +// Description : Clock control, can be changed on-the-fly (except for auxsrc) +#define CLOCKS_CLK_PERI_CTRL_OFFSET _u(0x00000048) +#define CLOCKS_CLK_PERI_CTRL_BITS _u(0x00000ce0) +#define CLOCKS_CLK_PERI_CTRL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_PERI_CTRL_ENABLE +// Description : Starts and stops the clock generator cleanly +#define CLOCKS_CLK_PERI_CTRL_ENABLE_RESET _u(0x0) +#define CLOCKS_CLK_PERI_CTRL_ENABLE_BITS _u(0x00000800) +#define CLOCKS_CLK_PERI_CTRL_ENABLE_MSB _u(11) +#define CLOCKS_CLK_PERI_CTRL_ENABLE_LSB _u(11) +#define CLOCKS_CLK_PERI_CTRL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_PERI_CTRL_KILL +// Description : Asynchronously kills the clock generator +#define CLOCKS_CLK_PERI_CTRL_KILL_RESET _u(0x0) +#define CLOCKS_CLK_PERI_CTRL_KILL_BITS _u(0x00000400) +#define CLOCKS_CLK_PERI_CTRL_KILL_MSB _u(10) +#define CLOCKS_CLK_PERI_CTRL_KILL_LSB _u(10) +#define CLOCKS_CLK_PERI_CTRL_KILL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_PERI_CTRL_AUXSRC +// Description : Selects the auxiliary clock source, will glitch when switching +// 0x0 -> clk_sys +// 0x1 -> clksrc_pll_sys +// 0x2 -> clksrc_pll_usb +// 0x3 -> rosc_clksrc_ph +// 0x4 -> xosc_clksrc +// 0x5 -> clksrc_gpin0 +// 0x6 -> clksrc_gpin1 +#define CLOCKS_CLK_PERI_CTRL_AUXSRC_RESET _u(0x0) +#define CLOCKS_CLK_PERI_CTRL_AUXSRC_BITS _u(0x000000e0) +#define CLOCKS_CLK_PERI_CTRL_AUXSRC_MSB _u(7) +#define CLOCKS_CLK_PERI_CTRL_AUXSRC_LSB _u(5) +#define CLOCKS_CLK_PERI_CTRL_AUXSRC_ACCESS "RW" +#define CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_CLK_SYS _u(0x0) +#define CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_CLKSRC_PLL_SYS _u(0x1) +#define CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB _u(0x2) +#define CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_ROSC_CLKSRC_PH _u(0x3) +#define CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_XOSC_CLKSRC _u(0x4) +#define CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 _u(0x5) +#define CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 _u(0x6) +// ============================================================================= +// Register : CLOCKS_CLK_PERI_SELECTED +// Description : Indicates which SRC is currently selected by the glitchless mux +// (one-hot). +// This slice does not have a glitchless mux (only the AUX_SRC +// field is present, not SRC) so this register is hardwired to +// 0x1. +#define CLOCKS_CLK_PERI_SELECTED_OFFSET _u(0x00000050) +#define CLOCKS_CLK_PERI_SELECTED_BITS _u(0xffffffff) +#define CLOCKS_CLK_PERI_SELECTED_RESET _u(0x00000001) +#define CLOCKS_CLK_PERI_SELECTED_MSB _u(31) +#define CLOCKS_CLK_PERI_SELECTED_LSB _u(0) +#define CLOCKS_CLK_PERI_SELECTED_ACCESS "RO" +// ============================================================================= +// Register : CLOCKS_CLK_USB_CTRL +// Description : Clock control, can be changed on-the-fly (except for auxsrc) +#define CLOCKS_CLK_USB_CTRL_OFFSET _u(0x00000054) +#define CLOCKS_CLK_USB_CTRL_BITS _u(0x00130ce0) +#define CLOCKS_CLK_USB_CTRL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_USB_CTRL_NUDGE +// Description : An edge on this signal shifts the phase of the output by 1 +// cycle of the input clock +// This can be done at any time +#define CLOCKS_CLK_USB_CTRL_NUDGE_RESET _u(0x0) +#define CLOCKS_CLK_USB_CTRL_NUDGE_BITS _u(0x00100000) +#define CLOCKS_CLK_USB_CTRL_NUDGE_MSB _u(20) +#define CLOCKS_CLK_USB_CTRL_NUDGE_LSB _u(20) +#define CLOCKS_CLK_USB_CTRL_NUDGE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_USB_CTRL_PHASE +// Description : This delays the enable signal by up to 3 cycles of the input +// clock +// This must be set before the clock is enabled to have any effect +#define CLOCKS_CLK_USB_CTRL_PHASE_RESET _u(0x0) +#define CLOCKS_CLK_USB_CTRL_PHASE_BITS _u(0x00030000) +#define CLOCKS_CLK_USB_CTRL_PHASE_MSB _u(17) +#define CLOCKS_CLK_USB_CTRL_PHASE_LSB _u(16) +#define CLOCKS_CLK_USB_CTRL_PHASE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_USB_CTRL_ENABLE +// Description : Starts and stops the clock generator cleanly +#define CLOCKS_CLK_USB_CTRL_ENABLE_RESET _u(0x0) +#define CLOCKS_CLK_USB_CTRL_ENABLE_BITS _u(0x00000800) +#define CLOCKS_CLK_USB_CTRL_ENABLE_MSB _u(11) +#define CLOCKS_CLK_USB_CTRL_ENABLE_LSB _u(11) +#define CLOCKS_CLK_USB_CTRL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_USB_CTRL_KILL +// Description : Asynchronously kills the clock generator +#define CLOCKS_CLK_USB_CTRL_KILL_RESET _u(0x0) +#define CLOCKS_CLK_USB_CTRL_KILL_BITS _u(0x00000400) +#define CLOCKS_CLK_USB_CTRL_KILL_MSB _u(10) +#define CLOCKS_CLK_USB_CTRL_KILL_LSB _u(10) +#define CLOCKS_CLK_USB_CTRL_KILL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_USB_CTRL_AUXSRC +// Description : Selects the auxiliary clock source, will glitch when switching +// 0x0 -> clksrc_pll_usb +// 0x1 -> clksrc_pll_sys +// 0x2 -> rosc_clksrc_ph +// 0x3 -> xosc_clksrc +// 0x4 -> clksrc_gpin0 +// 0x5 -> clksrc_gpin1 +#define CLOCKS_CLK_USB_CTRL_AUXSRC_RESET _u(0x0) +#define CLOCKS_CLK_USB_CTRL_AUXSRC_BITS _u(0x000000e0) +#define CLOCKS_CLK_USB_CTRL_AUXSRC_MSB _u(7) +#define CLOCKS_CLK_USB_CTRL_AUXSRC_LSB _u(5) +#define CLOCKS_CLK_USB_CTRL_AUXSRC_ACCESS "RW" +#define CLOCKS_CLK_USB_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB _u(0x0) +#define CLOCKS_CLK_USB_CTRL_AUXSRC_VALUE_CLKSRC_PLL_SYS _u(0x1) +#define CLOCKS_CLK_USB_CTRL_AUXSRC_VALUE_ROSC_CLKSRC_PH _u(0x2) +#define CLOCKS_CLK_USB_CTRL_AUXSRC_VALUE_XOSC_CLKSRC _u(0x3) +#define CLOCKS_CLK_USB_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 _u(0x4) +#define CLOCKS_CLK_USB_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 _u(0x5) +// ============================================================================= +// Register : CLOCKS_CLK_USB_DIV +// Description : Clock divisor, can be changed on-the-fly +#define CLOCKS_CLK_USB_DIV_OFFSET _u(0x00000058) +#define CLOCKS_CLK_USB_DIV_BITS _u(0x00000300) +#define CLOCKS_CLK_USB_DIV_RESET _u(0x00000100) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_USB_DIV_INT +// Description : Integer component of the divisor, 0 -> divide by 2^16 +#define CLOCKS_CLK_USB_DIV_INT_RESET _u(0x1) +#define CLOCKS_CLK_USB_DIV_INT_BITS _u(0x00000300) +#define CLOCKS_CLK_USB_DIV_INT_MSB _u(9) +#define CLOCKS_CLK_USB_DIV_INT_LSB _u(8) +#define CLOCKS_CLK_USB_DIV_INT_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_CLK_USB_SELECTED +// Description : Indicates which SRC is currently selected by the glitchless mux +// (one-hot). +// This slice does not have a glitchless mux (only the AUX_SRC +// field is present, not SRC) so this register is hardwired to +// 0x1. +#define CLOCKS_CLK_USB_SELECTED_OFFSET _u(0x0000005c) +#define CLOCKS_CLK_USB_SELECTED_BITS _u(0xffffffff) +#define CLOCKS_CLK_USB_SELECTED_RESET _u(0x00000001) +#define CLOCKS_CLK_USB_SELECTED_MSB _u(31) +#define CLOCKS_CLK_USB_SELECTED_LSB _u(0) +#define CLOCKS_CLK_USB_SELECTED_ACCESS "RO" +// ============================================================================= +// Register : CLOCKS_CLK_ADC_CTRL +// Description : Clock control, can be changed on-the-fly (except for auxsrc) +#define CLOCKS_CLK_ADC_CTRL_OFFSET _u(0x00000060) +#define CLOCKS_CLK_ADC_CTRL_BITS _u(0x00130ce0) +#define CLOCKS_CLK_ADC_CTRL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_ADC_CTRL_NUDGE +// Description : An edge on this signal shifts the phase of the output by 1 +// cycle of the input clock +// This can be done at any time +#define CLOCKS_CLK_ADC_CTRL_NUDGE_RESET _u(0x0) +#define CLOCKS_CLK_ADC_CTRL_NUDGE_BITS _u(0x00100000) +#define CLOCKS_CLK_ADC_CTRL_NUDGE_MSB _u(20) +#define CLOCKS_CLK_ADC_CTRL_NUDGE_LSB _u(20) +#define CLOCKS_CLK_ADC_CTRL_NUDGE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_ADC_CTRL_PHASE +// Description : This delays the enable signal by up to 3 cycles of the input +// clock +// This must be set before the clock is enabled to have any effect +#define CLOCKS_CLK_ADC_CTRL_PHASE_RESET _u(0x0) +#define CLOCKS_CLK_ADC_CTRL_PHASE_BITS _u(0x00030000) +#define CLOCKS_CLK_ADC_CTRL_PHASE_MSB _u(17) +#define CLOCKS_CLK_ADC_CTRL_PHASE_LSB _u(16) +#define CLOCKS_CLK_ADC_CTRL_PHASE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_ADC_CTRL_ENABLE +// Description : Starts and stops the clock generator cleanly +#define CLOCKS_CLK_ADC_CTRL_ENABLE_RESET _u(0x0) +#define CLOCKS_CLK_ADC_CTRL_ENABLE_BITS _u(0x00000800) +#define CLOCKS_CLK_ADC_CTRL_ENABLE_MSB _u(11) +#define CLOCKS_CLK_ADC_CTRL_ENABLE_LSB _u(11) +#define CLOCKS_CLK_ADC_CTRL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_ADC_CTRL_KILL +// Description : Asynchronously kills the clock generator +#define CLOCKS_CLK_ADC_CTRL_KILL_RESET _u(0x0) +#define CLOCKS_CLK_ADC_CTRL_KILL_BITS _u(0x00000400) +#define CLOCKS_CLK_ADC_CTRL_KILL_MSB _u(10) +#define CLOCKS_CLK_ADC_CTRL_KILL_LSB _u(10) +#define CLOCKS_CLK_ADC_CTRL_KILL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_ADC_CTRL_AUXSRC +// Description : Selects the auxiliary clock source, will glitch when switching +// 0x0 -> clksrc_pll_usb +// 0x1 -> clksrc_pll_sys +// 0x2 -> rosc_clksrc_ph +// 0x3 -> xosc_clksrc +// 0x4 -> clksrc_gpin0 +// 0x5 -> clksrc_gpin1 +#define CLOCKS_CLK_ADC_CTRL_AUXSRC_RESET _u(0x0) +#define CLOCKS_CLK_ADC_CTRL_AUXSRC_BITS _u(0x000000e0) +#define CLOCKS_CLK_ADC_CTRL_AUXSRC_MSB _u(7) +#define CLOCKS_CLK_ADC_CTRL_AUXSRC_LSB _u(5) +#define CLOCKS_CLK_ADC_CTRL_AUXSRC_ACCESS "RW" +#define CLOCKS_CLK_ADC_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB _u(0x0) +#define CLOCKS_CLK_ADC_CTRL_AUXSRC_VALUE_CLKSRC_PLL_SYS _u(0x1) +#define CLOCKS_CLK_ADC_CTRL_AUXSRC_VALUE_ROSC_CLKSRC_PH _u(0x2) +#define CLOCKS_CLK_ADC_CTRL_AUXSRC_VALUE_XOSC_CLKSRC _u(0x3) +#define CLOCKS_CLK_ADC_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 _u(0x4) +#define CLOCKS_CLK_ADC_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 _u(0x5) +// ============================================================================= +// Register : CLOCKS_CLK_ADC_DIV +// Description : Clock divisor, can be changed on-the-fly +#define CLOCKS_CLK_ADC_DIV_OFFSET _u(0x00000064) +#define CLOCKS_CLK_ADC_DIV_BITS _u(0x00000300) +#define CLOCKS_CLK_ADC_DIV_RESET _u(0x00000100) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_ADC_DIV_INT +// Description : Integer component of the divisor, 0 -> divide by 2^16 +#define CLOCKS_CLK_ADC_DIV_INT_RESET _u(0x1) +#define CLOCKS_CLK_ADC_DIV_INT_BITS _u(0x00000300) +#define CLOCKS_CLK_ADC_DIV_INT_MSB _u(9) +#define CLOCKS_CLK_ADC_DIV_INT_LSB _u(8) +#define CLOCKS_CLK_ADC_DIV_INT_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_CLK_ADC_SELECTED +// Description : Indicates which SRC is currently selected by the glitchless mux +// (one-hot). +// This slice does not have a glitchless mux (only the AUX_SRC +// field is present, not SRC) so this register is hardwired to +// 0x1. +#define CLOCKS_CLK_ADC_SELECTED_OFFSET _u(0x00000068) +#define CLOCKS_CLK_ADC_SELECTED_BITS _u(0xffffffff) +#define CLOCKS_CLK_ADC_SELECTED_RESET _u(0x00000001) +#define CLOCKS_CLK_ADC_SELECTED_MSB _u(31) +#define CLOCKS_CLK_ADC_SELECTED_LSB _u(0) +#define CLOCKS_CLK_ADC_SELECTED_ACCESS "RO" +// ============================================================================= +// Register : CLOCKS_CLK_RTC_CTRL +// Description : Clock control, can be changed on-the-fly (except for auxsrc) +#define CLOCKS_CLK_RTC_CTRL_OFFSET _u(0x0000006c) +#define CLOCKS_CLK_RTC_CTRL_BITS _u(0x00130ce0) +#define CLOCKS_CLK_RTC_CTRL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_RTC_CTRL_NUDGE +// Description : An edge on this signal shifts the phase of the output by 1 +// cycle of the input clock +// This can be done at any time +#define CLOCKS_CLK_RTC_CTRL_NUDGE_RESET _u(0x0) +#define CLOCKS_CLK_RTC_CTRL_NUDGE_BITS _u(0x00100000) +#define CLOCKS_CLK_RTC_CTRL_NUDGE_MSB _u(20) +#define CLOCKS_CLK_RTC_CTRL_NUDGE_LSB _u(20) +#define CLOCKS_CLK_RTC_CTRL_NUDGE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_RTC_CTRL_PHASE +// Description : This delays the enable signal by up to 3 cycles of the input +// clock +// This must be set before the clock is enabled to have any effect +#define CLOCKS_CLK_RTC_CTRL_PHASE_RESET _u(0x0) +#define CLOCKS_CLK_RTC_CTRL_PHASE_BITS _u(0x00030000) +#define CLOCKS_CLK_RTC_CTRL_PHASE_MSB _u(17) +#define CLOCKS_CLK_RTC_CTRL_PHASE_LSB _u(16) +#define CLOCKS_CLK_RTC_CTRL_PHASE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_RTC_CTRL_ENABLE +// Description : Starts and stops the clock generator cleanly +#define CLOCKS_CLK_RTC_CTRL_ENABLE_RESET _u(0x0) +#define CLOCKS_CLK_RTC_CTRL_ENABLE_BITS _u(0x00000800) +#define CLOCKS_CLK_RTC_CTRL_ENABLE_MSB _u(11) +#define CLOCKS_CLK_RTC_CTRL_ENABLE_LSB _u(11) +#define CLOCKS_CLK_RTC_CTRL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_RTC_CTRL_KILL +// Description : Asynchronously kills the clock generator +#define CLOCKS_CLK_RTC_CTRL_KILL_RESET _u(0x0) +#define CLOCKS_CLK_RTC_CTRL_KILL_BITS _u(0x00000400) +#define CLOCKS_CLK_RTC_CTRL_KILL_MSB _u(10) +#define CLOCKS_CLK_RTC_CTRL_KILL_LSB _u(10) +#define CLOCKS_CLK_RTC_CTRL_KILL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_RTC_CTRL_AUXSRC +// Description : Selects the auxiliary clock source, will glitch when switching +// 0x0 -> clksrc_pll_usb +// 0x1 -> clksrc_pll_sys +// 0x2 -> rosc_clksrc_ph +// 0x3 -> xosc_clksrc +// 0x4 -> clksrc_gpin0 +// 0x5 -> clksrc_gpin1 +#define CLOCKS_CLK_RTC_CTRL_AUXSRC_RESET _u(0x0) +#define CLOCKS_CLK_RTC_CTRL_AUXSRC_BITS _u(0x000000e0) +#define CLOCKS_CLK_RTC_CTRL_AUXSRC_MSB _u(7) +#define CLOCKS_CLK_RTC_CTRL_AUXSRC_LSB _u(5) +#define CLOCKS_CLK_RTC_CTRL_AUXSRC_ACCESS "RW" +#define CLOCKS_CLK_RTC_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB _u(0x0) +#define CLOCKS_CLK_RTC_CTRL_AUXSRC_VALUE_CLKSRC_PLL_SYS _u(0x1) +#define CLOCKS_CLK_RTC_CTRL_AUXSRC_VALUE_ROSC_CLKSRC_PH _u(0x2) +#define CLOCKS_CLK_RTC_CTRL_AUXSRC_VALUE_XOSC_CLKSRC _u(0x3) +#define CLOCKS_CLK_RTC_CTRL_AUXSRC_VALUE_CLKSRC_GPIN0 _u(0x4) +#define CLOCKS_CLK_RTC_CTRL_AUXSRC_VALUE_CLKSRC_GPIN1 _u(0x5) +// ============================================================================= +// Register : CLOCKS_CLK_RTC_DIV +// Description : Clock divisor, can be changed on-the-fly +#define CLOCKS_CLK_RTC_DIV_OFFSET _u(0x00000070) +#define CLOCKS_CLK_RTC_DIV_BITS _u(0xffffffff) +#define CLOCKS_CLK_RTC_DIV_RESET _u(0x00000100) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_RTC_DIV_INT +// Description : Integer component of the divisor, 0 -> divide by 2^16 +#define CLOCKS_CLK_RTC_DIV_INT_RESET _u(0x000001) +#define CLOCKS_CLK_RTC_DIV_INT_BITS _u(0xffffff00) +#define CLOCKS_CLK_RTC_DIV_INT_MSB _u(31) +#define CLOCKS_CLK_RTC_DIV_INT_LSB _u(8) +#define CLOCKS_CLK_RTC_DIV_INT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_RTC_DIV_FRAC +// Description : Fractional component of the divisor +#define CLOCKS_CLK_RTC_DIV_FRAC_RESET _u(0x00) +#define CLOCKS_CLK_RTC_DIV_FRAC_BITS _u(0x000000ff) +#define CLOCKS_CLK_RTC_DIV_FRAC_MSB _u(7) +#define CLOCKS_CLK_RTC_DIV_FRAC_LSB _u(0) +#define CLOCKS_CLK_RTC_DIV_FRAC_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_CLK_RTC_SELECTED +// Description : Indicates which SRC is currently selected by the glitchless mux +// (one-hot). +// This slice does not have a glitchless mux (only the AUX_SRC +// field is present, not SRC) so this register is hardwired to +// 0x1. +#define CLOCKS_CLK_RTC_SELECTED_OFFSET _u(0x00000074) +#define CLOCKS_CLK_RTC_SELECTED_BITS _u(0xffffffff) +#define CLOCKS_CLK_RTC_SELECTED_RESET _u(0x00000001) +#define CLOCKS_CLK_RTC_SELECTED_MSB _u(31) +#define CLOCKS_CLK_RTC_SELECTED_LSB _u(0) +#define CLOCKS_CLK_RTC_SELECTED_ACCESS "RO" +// ============================================================================= +// Register : CLOCKS_CLK_SYS_RESUS_CTRL +// Description : None +#define CLOCKS_CLK_SYS_RESUS_CTRL_OFFSET _u(0x00000078) +#define CLOCKS_CLK_SYS_RESUS_CTRL_BITS _u(0x000111ff) +#define CLOCKS_CLK_SYS_RESUS_CTRL_RESET _u(0x000000ff) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_SYS_RESUS_CTRL_CLEAR +// Description : For clearing the resus after the fault that triggered it has +// been corrected +#define CLOCKS_CLK_SYS_RESUS_CTRL_CLEAR_RESET _u(0x0) +#define CLOCKS_CLK_SYS_RESUS_CTRL_CLEAR_BITS _u(0x00010000) +#define CLOCKS_CLK_SYS_RESUS_CTRL_CLEAR_MSB _u(16) +#define CLOCKS_CLK_SYS_RESUS_CTRL_CLEAR_LSB _u(16) +#define CLOCKS_CLK_SYS_RESUS_CTRL_CLEAR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_SYS_RESUS_CTRL_FRCE +// Description : Force a resus, for test purposes only +#define CLOCKS_CLK_SYS_RESUS_CTRL_FRCE_RESET _u(0x0) +#define CLOCKS_CLK_SYS_RESUS_CTRL_FRCE_BITS _u(0x00001000) +#define CLOCKS_CLK_SYS_RESUS_CTRL_FRCE_MSB _u(12) +#define CLOCKS_CLK_SYS_RESUS_CTRL_FRCE_LSB _u(12) +#define CLOCKS_CLK_SYS_RESUS_CTRL_FRCE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_SYS_RESUS_CTRL_ENABLE +// Description : Enable resus +#define CLOCKS_CLK_SYS_RESUS_CTRL_ENABLE_RESET _u(0x0) +#define CLOCKS_CLK_SYS_RESUS_CTRL_ENABLE_BITS _u(0x00000100) +#define CLOCKS_CLK_SYS_RESUS_CTRL_ENABLE_MSB _u(8) +#define CLOCKS_CLK_SYS_RESUS_CTRL_ENABLE_LSB _u(8) +#define CLOCKS_CLK_SYS_RESUS_CTRL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_SYS_RESUS_CTRL_TIMEOUT +// Description : This is expressed as a number of clk_ref cycles +// and must be >= 2x clk_ref_freq/min_clk_tst_freq +#define CLOCKS_CLK_SYS_RESUS_CTRL_TIMEOUT_RESET _u(0xff) +#define CLOCKS_CLK_SYS_RESUS_CTRL_TIMEOUT_BITS _u(0x000000ff) +#define CLOCKS_CLK_SYS_RESUS_CTRL_TIMEOUT_MSB _u(7) +#define CLOCKS_CLK_SYS_RESUS_CTRL_TIMEOUT_LSB _u(0) +#define CLOCKS_CLK_SYS_RESUS_CTRL_TIMEOUT_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_CLK_SYS_RESUS_STATUS +// Description : None +#define CLOCKS_CLK_SYS_RESUS_STATUS_OFFSET _u(0x0000007c) +#define CLOCKS_CLK_SYS_RESUS_STATUS_BITS _u(0x00000001) +#define CLOCKS_CLK_SYS_RESUS_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_CLK_SYS_RESUS_STATUS_RESUSSED +// Description : Clock has been resuscitated, correct the error then send +// ctrl_clear=1 +#define CLOCKS_CLK_SYS_RESUS_STATUS_RESUSSED_RESET _u(0x0) +#define CLOCKS_CLK_SYS_RESUS_STATUS_RESUSSED_BITS _u(0x00000001) +#define CLOCKS_CLK_SYS_RESUS_STATUS_RESUSSED_MSB _u(0) +#define CLOCKS_CLK_SYS_RESUS_STATUS_RESUSSED_LSB _u(0) +#define CLOCKS_CLK_SYS_RESUS_STATUS_RESUSSED_ACCESS "RO" +// ============================================================================= +// Register : CLOCKS_FC0_REF_KHZ +// Description : Reference clock frequency in kHz +#define CLOCKS_FC0_REF_KHZ_OFFSET _u(0x00000080) +#define CLOCKS_FC0_REF_KHZ_BITS _u(0x000fffff) +#define CLOCKS_FC0_REF_KHZ_RESET _u(0x00000000) +#define CLOCKS_FC0_REF_KHZ_MSB _u(19) +#define CLOCKS_FC0_REF_KHZ_LSB _u(0) +#define CLOCKS_FC0_REF_KHZ_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_FC0_MIN_KHZ +// Description : Minimum pass frequency in kHz. This is optional. Set to 0 if +// you are not using the pass/fail flags +#define CLOCKS_FC0_MIN_KHZ_OFFSET _u(0x00000084) +#define CLOCKS_FC0_MIN_KHZ_BITS _u(0x01ffffff) +#define CLOCKS_FC0_MIN_KHZ_RESET _u(0x00000000) +#define CLOCKS_FC0_MIN_KHZ_MSB _u(24) +#define CLOCKS_FC0_MIN_KHZ_LSB _u(0) +#define CLOCKS_FC0_MIN_KHZ_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_FC0_MAX_KHZ +// Description : Maximum pass frequency in kHz. This is optional. Set to +// 0x1ffffff if you are not using the pass/fail flags +#define CLOCKS_FC0_MAX_KHZ_OFFSET _u(0x00000088) +#define CLOCKS_FC0_MAX_KHZ_BITS _u(0x01ffffff) +#define CLOCKS_FC0_MAX_KHZ_RESET _u(0x01ffffff) +#define CLOCKS_FC0_MAX_KHZ_MSB _u(24) +#define CLOCKS_FC0_MAX_KHZ_LSB _u(0) +#define CLOCKS_FC0_MAX_KHZ_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_FC0_DELAY +// Description : Delays the start of frequency counting to allow the mux to +// settle +// Delay is measured in multiples of the reference clock period +#define CLOCKS_FC0_DELAY_OFFSET _u(0x0000008c) +#define CLOCKS_FC0_DELAY_BITS _u(0x00000007) +#define CLOCKS_FC0_DELAY_RESET _u(0x00000001) +#define CLOCKS_FC0_DELAY_MSB _u(2) +#define CLOCKS_FC0_DELAY_LSB _u(0) +#define CLOCKS_FC0_DELAY_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_FC0_INTERVAL +// Description : The test interval is 0.98us * 2**interval, but let's call it +// 1us * 2**interval +// The default gives a test interval of 250us +#define CLOCKS_FC0_INTERVAL_OFFSET _u(0x00000090) +#define CLOCKS_FC0_INTERVAL_BITS _u(0x0000000f) +#define CLOCKS_FC0_INTERVAL_RESET _u(0x00000008) +#define CLOCKS_FC0_INTERVAL_MSB _u(3) +#define CLOCKS_FC0_INTERVAL_LSB _u(0) +#define CLOCKS_FC0_INTERVAL_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_FC0_SRC +// Description : Clock sent to frequency counter, set to 0 when not required +// Writing to this register initiates the frequency count +// 0x00 -> NULL +// 0x01 -> pll_sys_clksrc_primary +// 0x02 -> pll_usb_clksrc_primary +// 0x03 -> rosc_clksrc +// 0x04 -> rosc_clksrc_ph +// 0x05 -> xosc_clksrc +// 0x06 -> clksrc_gpin0 +// 0x07 -> clksrc_gpin1 +// 0x08 -> clk_ref +// 0x09 -> clk_sys +// 0x0a -> clk_peri +// 0x0b -> clk_usb +// 0x0c -> clk_adc +// 0x0d -> clk_rtc +#define CLOCKS_FC0_SRC_OFFSET _u(0x00000094) +#define CLOCKS_FC0_SRC_BITS _u(0x000000ff) +#define CLOCKS_FC0_SRC_RESET _u(0x00000000) +#define CLOCKS_FC0_SRC_MSB _u(7) +#define CLOCKS_FC0_SRC_LSB _u(0) +#define CLOCKS_FC0_SRC_ACCESS "RW" +#define CLOCKS_FC0_SRC_VALUE_NULL _u(0x00) +#define CLOCKS_FC0_SRC_VALUE_PLL_SYS_CLKSRC_PRIMARY _u(0x01) +#define CLOCKS_FC0_SRC_VALUE_PLL_USB_CLKSRC_PRIMARY _u(0x02) +#define CLOCKS_FC0_SRC_VALUE_ROSC_CLKSRC _u(0x03) +#define CLOCKS_FC0_SRC_VALUE_ROSC_CLKSRC_PH _u(0x04) +#define CLOCKS_FC0_SRC_VALUE_XOSC_CLKSRC _u(0x05) +#define CLOCKS_FC0_SRC_VALUE_CLKSRC_GPIN0 _u(0x06) +#define CLOCKS_FC0_SRC_VALUE_CLKSRC_GPIN1 _u(0x07) +#define CLOCKS_FC0_SRC_VALUE_CLK_REF _u(0x08) +#define CLOCKS_FC0_SRC_VALUE_CLK_SYS _u(0x09) +#define CLOCKS_FC0_SRC_VALUE_CLK_PERI _u(0x0a) +#define CLOCKS_FC0_SRC_VALUE_CLK_USB _u(0x0b) +#define CLOCKS_FC0_SRC_VALUE_CLK_ADC _u(0x0c) +#define CLOCKS_FC0_SRC_VALUE_CLK_RTC _u(0x0d) +// ============================================================================= +// Register : CLOCKS_FC0_STATUS +// Description : Frequency counter status +#define CLOCKS_FC0_STATUS_OFFSET _u(0x00000098) +#define CLOCKS_FC0_STATUS_BITS _u(0x11111111) +#define CLOCKS_FC0_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_FC0_STATUS_DIED +// Description : Test clock stopped during test +#define CLOCKS_FC0_STATUS_DIED_RESET _u(0x0) +#define CLOCKS_FC0_STATUS_DIED_BITS _u(0x10000000) +#define CLOCKS_FC0_STATUS_DIED_MSB _u(28) +#define CLOCKS_FC0_STATUS_DIED_LSB _u(28) +#define CLOCKS_FC0_STATUS_DIED_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_FC0_STATUS_FAST +// Description : Test clock faster than expected, only valid when status_done=1 +#define CLOCKS_FC0_STATUS_FAST_RESET _u(0x0) +#define CLOCKS_FC0_STATUS_FAST_BITS _u(0x01000000) +#define CLOCKS_FC0_STATUS_FAST_MSB _u(24) +#define CLOCKS_FC0_STATUS_FAST_LSB _u(24) +#define CLOCKS_FC0_STATUS_FAST_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_FC0_STATUS_SLOW +// Description : Test clock slower than expected, only valid when status_done=1 +#define CLOCKS_FC0_STATUS_SLOW_RESET _u(0x0) +#define CLOCKS_FC0_STATUS_SLOW_BITS _u(0x00100000) +#define CLOCKS_FC0_STATUS_SLOW_MSB _u(20) +#define CLOCKS_FC0_STATUS_SLOW_LSB _u(20) +#define CLOCKS_FC0_STATUS_SLOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_FC0_STATUS_FAIL +// Description : Test failed +#define CLOCKS_FC0_STATUS_FAIL_RESET _u(0x0) +#define CLOCKS_FC0_STATUS_FAIL_BITS _u(0x00010000) +#define CLOCKS_FC0_STATUS_FAIL_MSB _u(16) +#define CLOCKS_FC0_STATUS_FAIL_LSB _u(16) +#define CLOCKS_FC0_STATUS_FAIL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_FC0_STATUS_WAITING +// Description : Waiting for test clock to start +#define CLOCKS_FC0_STATUS_WAITING_RESET _u(0x0) +#define CLOCKS_FC0_STATUS_WAITING_BITS _u(0x00001000) +#define CLOCKS_FC0_STATUS_WAITING_MSB _u(12) +#define CLOCKS_FC0_STATUS_WAITING_LSB _u(12) +#define CLOCKS_FC0_STATUS_WAITING_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_FC0_STATUS_RUNNING +// Description : Test running +#define CLOCKS_FC0_STATUS_RUNNING_RESET _u(0x0) +#define CLOCKS_FC0_STATUS_RUNNING_BITS _u(0x00000100) +#define CLOCKS_FC0_STATUS_RUNNING_MSB _u(8) +#define CLOCKS_FC0_STATUS_RUNNING_LSB _u(8) +#define CLOCKS_FC0_STATUS_RUNNING_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_FC0_STATUS_DONE +// Description : Test complete +#define CLOCKS_FC0_STATUS_DONE_RESET _u(0x0) +#define CLOCKS_FC0_STATUS_DONE_BITS _u(0x00000010) +#define CLOCKS_FC0_STATUS_DONE_MSB _u(4) +#define CLOCKS_FC0_STATUS_DONE_LSB _u(4) +#define CLOCKS_FC0_STATUS_DONE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_FC0_STATUS_PASS +// Description : Test passed +#define CLOCKS_FC0_STATUS_PASS_RESET _u(0x0) +#define CLOCKS_FC0_STATUS_PASS_BITS _u(0x00000001) +#define CLOCKS_FC0_STATUS_PASS_MSB _u(0) +#define CLOCKS_FC0_STATUS_PASS_LSB _u(0) +#define CLOCKS_FC0_STATUS_PASS_ACCESS "RO" +// ============================================================================= +// Register : CLOCKS_FC0_RESULT +// Description : Result of frequency measurement, only valid when status_done=1 +#define CLOCKS_FC0_RESULT_OFFSET _u(0x0000009c) +#define CLOCKS_FC0_RESULT_BITS _u(0x3fffffff) +#define CLOCKS_FC0_RESULT_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_FC0_RESULT_KHZ +// Description : None +#define CLOCKS_FC0_RESULT_KHZ_RESET _u(0x0000000) +#define CLOCKS_FC0_RESULT_KHZ_BITS _u(0x3fffffe0) +#define CLOCKS_FC0_RESULT_KHZ_MSB _u(29) +#define CLOCKS_FC0_RESULT_KHZ_LSB _u(5) +#define CLOCKS_FC0_RESULT_KHZ_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_FC0_RESULT_FRAC +// Description : None +#define CLOCKS_FC0_RESULT_FRAC_RESET _u(0x00) +#define CLOCKS_FC0_RESULT_FRAC_BITS _u(0x0000001f) +#define CLOCKS_FC0_RESULT_FRAC_MSB _u(4) +#define CLOCKS_FC0_RESULT_FRAC_LSB _u(0) +#define CLOCKS_FC0_RESULT_FRAC_ACCESS "RO" +// ============================================================================= +// Register : CLOCKS_WAKE_EN0 +// Description : enable clock in wake mode +#define CLOCKS_WAKE_EN0_OFFSET _u(0x000000a0) +#define CLOCKS_WAKE_EN0_BITS _u(0xffffffff) +#define CLOCKS_WAKE_EN0_RESET _u(0xffffffff) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_SRAM3 +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_SRAM3_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_SRAM3_BITS _u(0x80000000) +#define CLOCKS_WAKE_EN0_CLK_SYS_SRAM3_MSB _u(31) +#define CLOCKS_WAKE_EN0_CLK_SYS_SRAM3_LSB _u(31) +#define CLOCKS_WAKE_EN0_CLK_SYS_SRAM3_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_SRAM2 +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_SRAM2_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_SRAM2_BITS _u(0x40000000) +#define CLOCKS_WAKE_EN0_CLK_SYS_SRAM2_MSB _u(30) +#define CLOCKS_WAKE_EN0_CLK_SYS_SRAM2_LSB _u(30) +#define CLOCKS_WAKE_EN0_CLK_SYS_SRAM2_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_SRAM1 +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_SRAM1_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_SRAM1_BITS _u(0x20000000) +#define CLOCKS_WAKE_EN0_CLK_SYS_SRAM1_MSB _u(29) +#define CLOCKS_WAKE_EN0_CLK_SYS_SRAM1_LSB _u(29) +#define CLOCKS_WAKE_EN0_CLK_SYS_SRAM1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_SRAM0 +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_SRAM0_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_SRAM0_BITS _u(0x10000000) +#define CLOCKS_WAKE_EN0_CLK_SYS_SRAM0_MSB _u(28) +#define CLOCKS_WAKE_EN0_CLK_SYS_SRAM0_LSB _u(28) +#define CLOCKS_WAKE_EN0_CLK_SYS_SRAM0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_SPI1 +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_SPI1_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_SPI1_BITS _u(0x08000000) +#define CLOCKS_WAKE_EN0_CLK_SYS_SPI1_MSB _u(27) +#define CLOCKS_WAKE_EN0_CLK_SYS_SPI1_LSB _u(27) +#define CLOCKS_WAKE_EN0_CLK_SYS_SPI1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_PERI_SPI1 +// Description : None +#define CLOCKS_WAKE_EN0_CLK_PERI_SPI1_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_PERI_SPI1_BITS _u(0x04000000) +#define CLOCKS_WAKE_EN0_CLK_PERI_SPI1_MSB _u(26) +#define CLOCKS_WAKE_EN0_CLK_PERI_SPI1_LSB _u(26) +#define CLOCKS_WAKE_EN0_CLK_PERI_SPI1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_SPI0 +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_SPI0_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_SPI0_BITS _u(0x02000000) +#define CLOCKS_WAKE_EN0_CLK_SYS_SPI0_MSB _u(25) +#define CLOCKS_WAKE_EN0_CLK_SYS_SPI0_LSB _u(25) +#define CLOCKS_WAKE_EN0_CLK_SYS_SPI0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_PERI_SPI0 +// Description : None +#define CLOCKS_WAKE_EN0_CLK_PERI_SPI0_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_PERI_SPI0_BITS _u(0x01000000) +#define CLOCKS_WAKE_EN0_CLK_PERI_SPI0_MSB _u(24) +#define CLOCKS_WAKE_EN0_CLK_PERI_SPI0_LSB _u(24) +#define CLOCKS_WAKE_EN0_CLK_PERI_SPI0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_SIO +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_SIO_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_SIO_BITS _u(0x00800000) +#define CLOCKS_WAKE_EN0_CLK_SYS_SIO_MSB _u(23) +#define CLOCKS_WAKE_EN0_CLK_SYS_SIO_LSB _u(23) +#define CLOCKS_WAKE_EN0_CLK_SYS_SIO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_RTC +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_RTC_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_RTC_BITS _u(0x00400000) +#define CLOCKS_WAKE_EN0_CLK_SYS_RTC_MSB _u(22) +#define CLOCKS_WAKE_EN0_CLK_SYS_RTC_LSB _u(22) +#define CLOCKS_WAKE_EN0_CLK_SYS_RTC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_RTC_RTC +// Description : None +#define CLOCKS_WAKE_EN0_CLK_RTC_RTC_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_RTC_RTC_BITS _u(0x00200000) +#define CLOCKS_WAKE_EN0_CLK_RTC_RTC_MSB _u(21) +#define CLOCKS_WAKE_EN0_CLK_RTC_RTC_LSB _u(21) +#define CLOCKS_WAKE_EN0_CLK_RTC_RTC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_ROSC +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_ROSC_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_ROSC_BITS _u(0x00100000) +#define CLOCKS_WAKE_EN0_CLK_SYS_ROSC_MSB _u(20) +#define CLOCKS_WAKE_EN0_CLK_SYS_ROSC_LSB _u(20) +#define CLOCKS_WAKE_EN0_CLK_SYS_ROSC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_ROM +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_ROM_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_ROM_BITS _u(0x00080000) +#define CLOCKS_WAKE_EN0_CLK_SYS_ROM_MSB _u(19) +#define CLOCKS_WAKE_EN0_CLK_SYS_ROM_LSB _u(19) +#define CLOCKS_WAKE_EN0_CLK_SYS_ROM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_RESETS +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_RESETS_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_RESETS_BITS _u(0x00040000) +#define CLOCKS_WAKE_EN0_CLK_SYS_RESETS_MSB _u(18) +#define CLOCKS_WAKE_EN0_CLK_SYS_RESETS_LSB _u(18) +#define CLOCKS_WAKE_EN0_CLK_SYS_RESETS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_PWM +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_PWM_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_PWM_BITS _u(0x00020000) +#define CLOCKS_WAKE_EN0_CLK_SYS_PWM_MSB _u(17) +#define CLOCKS_WAKE_EN0_CLK_SYS_PWM_LSB _u(17) +#define CLOCKS_WAKE_EN0_CLK_SYS_PWM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_PSM +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_PSM_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_PSM_BITS _u(0x00010000) +#define CLOCKS_WAKE_EN0_CLK_SYS_PSM_MSB _u(16) +#define CLOCKS_WAKE_EN0_CLK_SYS_PSM_LSB _u(16) +#define CLOCKS_WAKE_EN0_CLK_SYS_PSM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_PLL_USB +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_PLL_USB_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_PLL_USB_BITS _u(0x00008000) +#define CLOCKS_WAKE_EN0_CLK_SYS_PLL_USB_MSB _u(15) +#define CLOCKS_WAKE_EN0_CLK_SYS_PLL_USB_LSB _u(15) +#define CLOCKS_WAKE_EN0_CLK_SYS_PLL_USB_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_PLL_SYS +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_PLL_SYS_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_PLL_SYS_BITS _u(0x00004000) +#define CLOCKS_WAKE_EN0_CLK_SYS_PLL_SYS_MSB _u(14) +#define CLOCKS_WAKE_EN0_CLK_SYS_PLL_SYS_LSB _u(14) +#define CLOCKS_WAKE_EN0_CLK_SYS_PLL_SYS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_PIO1 +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_PIO1_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_PIO1_BITS _u(0x00002000) +#define CLOCKS_WAKE_EN0_CLK_SYS_PIO1_MSB _u(13) +#define CLOCKS_WAKE_EN0_CLK_SYS_PIO1_LSB _u(13) +#define CLOCKS_WAKE_EN0_CLK_SYS_PIO1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_PIO0 +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_PIO0_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_PIO0_BITS _u(0x00001000) +#define CLOCKS_WAKE_EN0_CLK_SYS_PIO0_MSB _u(12) +#define CLOCKS_WAKE_EN0_CLK_SYS_PIO0_LSB _u(12) +#define CLOCKS_WAKE_EN0_CLK_SYS_PIO0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_PADS +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_PADS_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_PADS_BITS _u(0x00000800) +#define CLOCKS_WAKE_EN0_CLK_SYS_PADS_MSB _u(11) +#define CLOCKS_WAKE_EN0_CLK_SYS_PADS_LSB _u(11) +#define CLOCKS_WAKE_EN0_CLK_SYS_PADS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_VREG_AND_CHIP_RESET +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_VREG_AND_CHIP_RESET_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_VREG_AND_CHIP_RESET_BITS _u(0x00000400) +#define CLOCKS_WAKE_EN0_CLK_SYS_VREG_AND_CHIP_RESET_MSB _u(10) +#define CLOCKS_WAKE_EN0_CLK_SYS_VREG_AND_CHIP_RESET_LSB _u(10) +#define CLOCKS_WAKE_EN0_CLK_SYS_VREG_AND_CHIP_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_JTAG +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_JTAG_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_JTAG_BITS _u(0x00000200) +#define CLOCKS_WAKE_EN0_CLK_SYS_JTAG_MSB _u(9) +#define CLOCKS_WAKE_EN0_CLK_SYS_JTAG_LSB _u(9) +#define CLOCKS_WAKE_EN0_CLK_SYS_JTAG_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_IO +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_IO_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_IO_BITS _u(0x00000100) +#define CLOCKS_WAKE_EN0_CLK_SYS_IO_MSB _u(8) +#define CLOCKS_WAKE_EN0_CLK_SYS_IO_LSB _u(8) +#define CLOCKS_WAKE_EN0_CLK_SYS_IO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_I2C1 +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_I2C1_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_I2C1_BITS _u(0x00000080) +#define CLOCKS_WAKE_EN0_CLK_SYS_I2C1_MSB _u(7) +#define CLOCKS_WAKE_EN0_CLK_SYS_I2C1_LSB _u(7) +#define CLOCKS_WAKE_EN0_CLK_SYS_I2C1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_I2C0 +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_I2C0_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_I2C0_BITS _u(0x00000040) +#define CLOCKS_WAKE_EN0_CLK_SYS_I2C0_MSB _u(6) +#define CLOCKS_WAKE_EN0_CLK_SYS_I2C0_LSB _u(6) +#define CLOCKS_WAKE_EN0_CLK_SYS_I2C0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_DMA +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_DMA_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_DMA_BITS _u(0x00000020) +#define CLOCKS_WAKE_EN0_CLK_SYS_DMA_MSB _u(5) +#define CLOCKS_WAKE_EN0_CLK_SYS_DMA_LSB _u(5) +#define CLOCKS_WAKE_EN0_CLK_SYS_DMA_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_BUSFABRIC +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_BUSFABRIC_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_BUSFABRIC_BITS _u(0x00000010) +#define CLOCKS_WAKE_EN0_CLK_SYS_BUSFABRIC_MSB _u(4) +#define CLOCKS_WAKE_EN0_CLK_SYS_BUSFABRIC_LSB _u(4) +#define CLOCKS_WAKE_EN0_CLK_SYS_BUSFABRIC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_BUSCTRL +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_BUSCTRL_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_BUSCTRL_BITS _u(0x00000008) +#define CLOCKS_WAKE_EN0_CLK_SYS_BUSCTRL_MSB _u(3) +#define CLOCKS_WAKE_EN0_CLK_SYS_BUSCTRL_LSB _u(3) +#define CLOCKS_WAKE_EN0_CLK_SYS_BUSCTRL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_ADC +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_ADC_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_ADC_BITS _u(0x00000004) +#define CLOCKS_WAKE_EN0_CLK_SYS_ADC_MSB _u(2) +#define CLOCKS_WAKE_EN0_CLK_SYS_ADC_LSB _u(2) +#define CLOCKS_WAKE_EN0_CLK_SYS_ADC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_ADC_ADC +// Description : None +#define CLOCKS_WAKE_EN0_CLK_ADC_ADC_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_ADC_ADC_BITS _u(0x00000002) +#define CLOCKS_WAKE_EN0_CLK_ADC_ADC_MSB _u(1) +#define CLOCKS_WAKE_EN0_CLK_ADC_ADC_LSB _u(1) +#define CLOCKS_WAKE_EN0_CLK_ADC_ADC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN0_CLK_SYS_CLOCKS +// Description : None +#define CLOCKS_WAKE_EN0_CLK_SYS_CLOCKS_RESET _u(0x1) +#define CLOCKS_WAKE_EN0_CLK_SYS_CLOCKS_BITS _u(0x00000001) +#define CLOCKS_WAKE_EN0_CLK_SYS_CLOCKS_MSB _u(0) +#define CLOCKS_WAKE_EN0_CLK_SYS_CLOCKS_LSB _u(0) +#define CLOCKS_WAKE_EN0_CLK_SYS_CLOCKS_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_WAKE_EN1 +// Description : enable clock in wake mode +#define CLOCKS_WAKE_EN1_OFFSET _u(0x000000a4) +#define CLOCKS_WAKE_EN1_BITS _u(0x00007fff) +#define CLOCKS_WAKE_EN1_RESET _u(0x00007fff) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN1_CLK_SYS_XOSC +// Description : None +#define CLOCKS_WAKE_EN1_CLK_SYS_XOSC_RESET _u(0x1) +#define CLOCKS_WAKE_EN1_CLK_SYS_XOSC_BITS _u(0x00004000) +#define CLOCKS_WAKE_EN1_CLK_SYS_XOSC_MSB _u(14) +#define CLOCKS_WAKE_EN1_CLK_SYS_XOSC_LSB _u(14) +#define CLOCKS_WAKE_EN1_CLK_SYS_XOSC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN1_CLK_SYS_XIP +// Description : None +#define CLOCKS_WAKE_EN1_CLK_SYS_XIP_RESET _u(0x1) +#define CLOCKS_WAKE_EN1_CLK_SYS_XIP_BITS _u(0x00002000) +#define CLOCKS_WAKE_EN1_CLK_SYS_XIP_MSB _u(13) +#define CLOCKS_WAKE_EN1_CLK_SYS_XIP_LSB _u(13) +#define CLOCKS_WAKE_EN1_CLK_SYS_XIP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN1_CLK_SYS_WATCHDOG +// Description : None +#define CLOCKS_WAKE_EN1_CLK_SYS_WATCHDOG_RESET _u(0x1) +#define CLOCKS_WAKE_EN1_CLK_SYS_WATCHDOG_BITS _u(0x00001000) +#define CLOCKS_WAKE_EN1_CLK_SYS_WATCHDOG_MSB _u(12) +#define CLOCKS_WAKE_EN1_CLK_SYS_WATCHDOG_LSB _u(12) +#define CLOCKS_WAKE_EN1_CLK_SYS_WATCHDOG_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN1_CLK_USB_USBCTRL +// Description : None +#define CLOCKS_WAKE_EN1_CLK_USB_USBCTRL_RESET _u(0x1) +#define CLOCKS_WAKE_EN1_CLK_USB_USBCTRL_BITS _u(0x00000800) +#define CLOCKS_WAKE_EN1_CLK_USB_USBCTRL_MSB _u(11) +#define CLOCKS_WAKE_EN1_CLK_USB_USBCTRL_LSB _u(11) +#define CLOCKS_WAKE_EN1_CLK_USB_USBCTRL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN1_CLK_SYS_USBCTRL +// Description : None +#define CLOCKS_WAKE_EN1_CLK_SYS_USBCTRL_RESET _u(0x1) +#define CLOCKS_WAKE_EN1_CLK_SYS_USBCTRL_BITS _u(0x00000400) +#define CLOCKS_WAKE_EN1_CLK_SYS_USBCTRL_MSB _u(10) +#define CLOCKS_WAKE_EN1_CLK_SYS_USBCTRL_LSB _u(10) +#define CLOCKS_WAKE_EN1_CLK_SYS_USBCTRL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN1_CLK_SYS_UART1 +// Description : None +#define CLOCKS_WAKE_EN1_CLK_SYS_UART1_RESET _u(0x1) +#define CLOCKS_WAKE_EN1_CLK_SYS_UART1_BITS _u(0x00000200) +#define CLOCKS_WAKE_EN1_CLK_SYS_UART1_MSB _u(9) +#define CLOCKS_WAKE_EN1_CLK_SYS_UART1_LSB _u(9) +#define CLOCKS_WAKE_EN1_CLK_SYS_UART1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN1_CLK_PERI_UART1 +// Description : None +#define CLOCKS_WAKE_EN1_CLK_PERI_UART1_RESET _u(0x1) +#define CLOCKS_WAKE_EN1_CLK_PERI_UART1_BITS _u(0x00000100) +#define CLOCKS_WAKE_EN1_CLK_PERI_UART1_MSB _u(8) +#define CLOCKS_WAKE_EN1_CLK_PERI_UART1_LSB _u(8) +#define CLOCKS_WAKE_EN1_CLK_PERI_UART1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN1_CLK_SYS_UART0 +// Description : None +#define CLOCKS_WAKE_EN1_CLK_SYS_UART0_RESET _u(0x1) +#define CLOCKS_WAKE_EN1_CLK_SYS_UART0_BITS _u(0x00000080) +#define CLOCKS_WAKE_EN1_CLK_SYS_UART0_MSB _u(7) +#define CLOCKS_WAKE_EN1_CLK_SYS_UART0_LSB _u(7) +#define CLOCKS_WAKE_EN1_CLK_SYS_UART0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN1_CLK_PERI_UART0 +// Description : None +#define CLOCKS_WAKE_EN1_CLK_PERI_UART0_RESET _u(0x1) +#define CLOCKS_WAKE_EN1_CLK_PERI_UART0_BITS _u(0x00000040) +#define CLOCKS_WAKE_EN1_CLK_PERI_UART0_MSB _u(6) +#define CLOCKS_WAKE_EN1_CLK_PERI_UART0_LSB _u(6) +#define CLOCKS_WAKE_EN1_CLK_PERI_UART0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN1_CLK_SYS_TIMER +// Description : None +#define CLOCKS_WAKE_EN1_CLK_SYS_TIMER_RESET _u(0x1) +#define CLOCKS_WAKE_EN1_CLK_SYS_TIMER_BITS _u(0x00000020) +#define CLOCKS_WAKE_EN1_CLK_SYS_TIMER_MSB _u(5) +#define CLOCKS_WAKE_EN1_CLK_SYS_TIMER_LSB _u(5) +#define CLOCKS_WAKE_EN1_CLK_SYS_TIMER_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN1_CLK_SYS_TBMAN +// Description : None +#define CLOCKS_WAKE_EN1_CLK_SYS_TBMAN_RESET _u(0x1) +#define CLOCKS_WAKE_EN1_CLK_SYS_TBMAN_BITS _u(0x00000010) +#define CLOCKS_WAKE_EN1_CLK_SYS_TBMAN_MSB _u(4) +#define CLOCKS_WAKE_EN1_CLK_SYS_TBMAN_LSB _u(4) +#define CLOCKS_WAKE_EN1_CLK_SYS_TBMAN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN1_CLK_SYS_SYSINFO +// Description : None +#define CLOCKS_WAKE_EN1_CLK_SYS_SYSINFO_RESET _u(0x1) +#define CLOCKS_WAKE_EN1_CLK_SYS_SYSINFO_BITS _u(0x00000008) +#define CLOCKS_WAKE_EN1_CLK_SYS_SYSINFO_MSB _u(3) +#define CLOCKS_WAKE_EN1_CLK_SYS_SYSINFO_LSB _u(3) +#define CLOCKS_WAKE_EN1_CLK_SYS_SYSINFO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN1_CLK_SYS_SYSCFG +// Description : None +#define CLOCKS_WAKE_EN1_CLK_SYS_SYSCFG_RESET _u(0x1) +#define CLOCKS_WAKE_EN1_CLK_SYS_SYSCFG_BITS _u(0x00000004) +#define CLOCKS_WAKE_EN1_CLK_SYS_SYSCFG_MSB _u(2) +#define CLOCKS_WAKE_EN1_CLK_SYS_SYSCFG_LSB _u(2) +#define CLOCKS_WAKE_EN1_CLK_SYS_SYSCFG_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN1_CLK_SYS_SRAM5 +// Description : None +#define CLOCKS_WAKE_EN1_CLK_SYS_SRAM5_RESET _u(0x1) +#define CLOCKS_WAKE_EN1_CLK_SYS_SRAM5_BITS _u(0x00000002) +#define CLOCKS_WAKE_EN1_CLK_SYS_SRAM5_MSB _u(1) +#define CLOCKS_WAKE_EN1_CLK_SYS_SRAM5_LSB _u(1) +#define CLOCKS_WAKE_EN1_CLK_SYS_SRAM5_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_WAKE_EN1_CLK_SYS_SRAM4 +// Description : None +#define CLOCKS_WAKE_EN1_CLK_SYS_SRAM4_RESET _u(0x1) +#define CLOCKS_WAKE_EN1_CLK_SYS_SRAM4_BITS _u(0x00000001) +#define CLOCKS_WAKE_EN1_CLK_SYS_SRAM4_MSB _u(0) +#define CLOCKS_WAKE_EN1_CLK_SYS_SRAM4_LSB _u(0) +#define CLOCKS_WAKE_EN1_CLK_SYS_SRAM4_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_SLEEP_EN0 +// Description : enable clock in sleep mode +#define CLOCKS_SLEEP_EN0_OFFSET _u(0x000000a8) +#define CLOCKS_SLEEP_EN0_BITS _u(0xffffffff) +#define CLOCKS_SLEEP_EN0_RESET _u(0xffffffff) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_SRAM3 +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_SRAM3_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SRAM3_BITS _u(0x80000000) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SRAM3_MSB _u(31) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SRAM3_LSB _u(31) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SRAM3_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_SRAM2 +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_SRAM2_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SRAM2_BITS _u(0x40000000) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SRAM2_MSB _u(30) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SRAM2_LSB _u(30) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SRAM2_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_SRAM1 +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_SRAM1_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SRAM1_BITS _u(0x20000000) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SRAM1_MSB _u(29) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SRAM1_LSB _u(29) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SRAM1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_SRAM0 +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_SRAM0_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SRAM0_BITS _u(0x10000000) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SRAM0_MSB _u(28) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SRAM0_LSB _u(28) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SRAM0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_SPI1 +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_SPI1_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SPI1_BITS _u(0x08000000) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SPI1_MSB _u(27) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SPI1_LSB _u(27) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SPI1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_PERI_SPI1 +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_PERI_SPI1_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_PERI_SPI1_BITS _u(0x04000000) +#define CLOCKS_SLEEP_EN0_CLK_PERI_SPI1_MSB _u(26) +#define CLOCKS_SLEEP_EN0_CLK_PERI_SPI1_LSB _u(26) +#define CLOCKS_SLEEP_EN0_CLK_PERI_SPI1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_SPI0 +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_SPI0_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SPI0_BITS _u(0x02000000) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SPI0_MSB _u(25) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SPI0_LSB _u(25) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SPI0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_PERI_SPI0 +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_PERI_SPI0_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_PERI_SPI0_BITS _u(0x01000000) +#define CLOCKS_SLEEP_EN0_CLK_PERI_SPI0_MSB _u(24) +#define CLOCKS_SLEEP_EN0_CLK_PERI_SPI0_LSB _u(24) +#define CLOCKS_SLEEP_EN0_CLK_PERI_SPI0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_SIO +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_SIO_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SIO_BITS _u(0x00800000) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SIO_MSB _u(23) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SIO_LSB _u(23) +#define CLOCKS_SLEEP_EN0_CLK_SYS_SIO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_RTC +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_RTC_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_RTC_BITS _u(0x00400000) +#define CLOCKS_SLEEP_EN0_CLK_SYS_RTC_MSB _u(22) +#define CLOCKS_SLEEP_EN0_CLK_SYS_RTC_LSB _u(22) +#define CLOCKS_SLEEP_EN0_CLK_SYS_RTC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_RTC_RTC +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_RTC_RTC_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_RTC_RTC_BITS _u(0x00200000) +#define CLOCKS_SLEEP_EN0_CLK_RTC_RTC_MSB _u(21) +#define CLOCKS_SLEEP_EN0_CLK_RTC_RTC_LSB _u(21) +#define CLOCKS_SLEEP_EN0_CLK_RTC_RTC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_ROSC +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_ROSC_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_ROSC_BITS _u(0x00100000) +#define CLOCKS_SLEEP_EN0_CLK_SYS_ROSC_MSB _u(20) +#define CLOCKS_SLEEP_EN0_CLK_SYS_ROSC_LSB _u(20) +#define CLOCKS_SLEEP_EN0_CLK_SYS_ROSC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_ROM +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_ROM_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_ROM_BITS _u(0x00080000) +#define CLOCKS_SLEEP_EN0_CLK_SYS_ROM_MSB _u(19) +#define CLOCKS_SLEEP_EN0_CLK_SYS_ROM_LSB _u(19) +#define CLOCKS_SLEEP_EN0_CLK_SYS_ROM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_RESETS +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_RESETS_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_RESETS_BITS _u(0x00040000) +#define CLOCKS_SLEEP_EN0_CLK_SYS_RESETS_MSB _u(18) +#define CLOCKS_SLEEP_EN0_CLK_SYS_RESETS_LSB _u(18) +#define CLOCKS_SLEEP_EN0_CLK_SYS_RESETS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_PWM +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_PWM_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PWM_BITS _u(0x00020000) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PWM_MSB _u(17) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PWM_LSB _u(17) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PWM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_PSM +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_PSM_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PSM_BITS _u(0x00010000) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PSM_MSB _u(16) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PSM_LSB _u(16) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PSM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_PLL_USB +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_PLL_USB_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PLL_USB_BITS _u(0x00008000) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PLL_USB_MSB _u(15) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PLL_USB_LSB _u(15) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PLL_USB_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_PLL_SYS +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_PLL_SYS_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PLL_SYS_BITS _u(0x00004000) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PLL_SYS_MSB _u(14) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PLL_SYS_LSB _u(14) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PLL_SYS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_PIO1 +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_PIO1_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PIO1_BITS _u(0x00002000) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PIO1_MSB _u(13) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PIO1_LSB _u(13) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PIO1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_PIO0 +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_PIO0_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PIO0_BITS _u(0x00001000) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PIO0_MSB _u(12) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PIO0_LSB _u(12) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PIO0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_PADS +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_PADS_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PADS_BITS _u(0x00000800) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PADS_MSB _u(11) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PADS_LSB _u(11) +#define CLOCKS_SLEEP_EN0_CLK_SYS_PADS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_VREG_AND_CHIP_RESET +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_VREG_AND_CHIP_RESET_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_VREG_AND_CHIP_RESET_BITS _u(0x00000400) +#define CLOCKS_SLEEP_EN0_CLK_SYS_VREG_AND_CHIP_RESET_MSB _u(10) +#define CLOCKS_SLEEP_EN0_CLK_SYS_VREG_AND_CHIP_RESET_LSB _u(10) +#define CLOCKS_SLEEP_EN0_CLK_SYS_VREG_AND_CHIP_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_JTAG +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_JTAG_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_JTAG_BITS _u(0x00000200) +#define CLOCKS_SLEEP_EN0_CLK_SYS_JTAG_MSB _u(9) +#define CLOCKS_SLEEP_EN0_CLK_SYS_JTAG_LSB _u(9) +#define CLOCKS_SLEEP_EN0_CLK_SYS_JTAG_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_IO +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_IO_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_IO_BITS _u(0x00000100) +#define CLOCKS_SLEEP_EN0_CLK_SYS_IO_MSB _u(8) +#define CLOCKS_SLEEP_EN0_CLK_SYS_IO_LSB _u(8) +#define CLOCKS_SLEEP_EN0_CLK_SYS_IO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_I2C1 +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_I2C1_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_I2C1_BITS _u(0x00000080) +#define CLOCKS_SLEEP_EN0_CLK_SYS_I2C1_MSB _u(7) +#define CLOCKS_SLEEP_EN0_CLK_SYS_I2C1_LSB _u(7) +#define CLOCKS_SLEEP_EN0_CLK_SYS_I2C1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_I2C0 +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_I2C0_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_I2C0_BITS _u(0x00000040) +#define CLOCKS_SLEEP_EN0_CLK_SYS_I2C0_MSB _u(6) +#define CLOCKS_SLEEP_EN0_CLK_SYS_I2C0_LSB _u(6) +#define CLOCKS_SLEEP_EN0_CLK_SYS_I2C0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_DMA +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_DMA_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_DMA_BITS _u(0x00000020) +#define CLOCKS_SLEEP_EN0_CLK_SYS_DMA_MSB _u(5) +#define CLOCKS_SLEEP_EN0_CLK_SYS_DMA_LSB _u(5) +#define CLOCKS_SLEEP_EN0_CLK_SYS_DMA_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_BUSFABRIC +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_BUSFABRIC_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_BUSFABRIC_BITS _u(0x00000010) +#define CLOCKS_SLEEP_EN0_CLK_SYS_BUSFABRIC_MSB _u(4) +#define CLOCKS_SLEEP_EN0_CLK_SYS_BUSFABRIC_LSB _u(4) +#define CLOCKS_SLEEP_EN0_CLK_SYS_BUSFABRIC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_BUSCTRL +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_BUSCTRL_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_BUSCTRL_BITS _u(0x00000008) +#define CLOCKS_SLEEP_EN0_CLK_SYS_BUSCTRL_MSB _u(3) +#define CLOCKS_SLEEP_EN0_CLK_SYS_BUSCTRL_LSB _u(3) +#define CLOCKS_SLEEP_EN0_CLK_SYS_BUSCTRL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_ADC +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_ADC_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_ADC_BITS _u(0x00000004) +#define CLOCKS_SLEEP_EN0_CLK_SYS_ADC_MSB _u(2) +#define CLOCKS_SLEEP_EN0_CLK_SYS_ADC_LSB _u(2) +#define CLOCKS_SLEEP_EN0_CLK_SYS_ADC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_ADC_ADC +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_ADC_ADC_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_ADC_ADC_BITS _u(0x00000002) +#define CLOCKS_SLEEP_EN0_CLK_ADC_ADC_MSB _u(1) +#define CLOCKS_SLEEP_EN0_CLK_ADC_ADC_LSB _u(1) +#define CLOCKS_SLEEP_EN0_CLK_ADC_ADC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN0_CLK_SYS_CLOCKS +// Description : None +#define CLOCKS_SLEEP_EN0_CLK_SYS_CLOCKS_RESET _u(0x1) +#define CLOCKS_SLEEP_EN0_CLK_SYS_CLOCKS_BITS _u(0x00000001) +#define CLOCKS_SLEEP_EN0_CLK_SYS_CLOCKS_MSB _u(0) +#define CLOCKS_SLEEP_EN0_CLK_SYS_CLOCKS_LSB _u(0) +#define CLOCKS_SLEEP_EN0_CLK_SYS_CLOCKS_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_SLEEP_EN1 +// Description : enable clock in sleep mode +#define CLOCKS_SLEEP_EN1_OFFSET _u(0x000000ac) +#define CLOCKS_SLEEP_EN1_BITS _u(0x00007fff) +#define CLOCKS_SLEEP_EN1_RESET _u(0x00007fff) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN1_CLK_SYS_XOSC +// Description : None +#define CLOCKS_SLEEP_EN1_CLK_SYS_XOSC_RESET _u(0x1) +#define CLOCKS_SLEEP_EN1_CLK_SYS_XOSC_BITS _u(0x00004000) +#define CLOCKS_SLEEP_EN1_CLK_SYS_XOSC_MSB _u(14) +#define CLOCKS_SLEEP_EN1_CLK_SYS_XOSC_LSB _u(14) +#define CLOCKS_SLEEP_EN1_CLK_SYS_XOSC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN1_CLK_SYS_XIP +// Description : None +#define CLOCKS_SLEEP_EN1_CLK_SYS_XIP_RESET _u(0x1) +#define CLOCKS_SLEEP_EN1_CLK_SYS_XIP_BITS _u(0x00002000) +#define CLOCKS_SLEEP_EN1_CLK_SYS_XIP_MSB _u(13) +#define CLOCKS_SLEEP_EN1_CLK_SYS_XIP_LSB _u(13) +#define CLOCKS_SLEEP_EN1_CLK_SYS_XIP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN1_CLK_SYS_WATCHDOG +// Description : None +#define CLOCKS_SLEEP_EN1_CLK_SYS_WATCHDOG_RESET _u(0x1) +#define CLOCKS_SLEEP_EN1_CLK_SYS_WATCHDOG_BITS _u(0x00001000) +#define CLOCKS_SLEEP_EN1_CLK_SYS_WATCHDOG_MSB _u(12) +#define CLOCKS_SLEEP_EN1_CLK_SYS_WATCHDOG_LSB _u(12) +#define CLOCKS_SLEEP_EN1_CLK_SYS_WATCHDOG_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN1_CLK_USB_USBCTRL +// Description : None +#define CLOCKS_SLEEP_EN1_CLK_USB_USBCTRL_RESET _u(0x1) +#define CLOCKS_SLEEP_EN1_CLK_USB_USBCTRL_BITS _u(0x00000800) +#define CLOCKS_SLEEP_EN1_CLK_USB_USBCTRL_MSB _u(11) +#define CLOCKS_SLEEP_EN1_CLK_USB_USBCTRL_LSB _u(11) +#define CLOCKS_SLEEP_EN1_CLK_USB_USBCTRL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN1_CLK_SYS_USBCTRL +// Description : None +#define CLOCKS_SLEEP_EN1_CLK_SYS_USBCTRL_RESET _u(0x1) +#define CLOCKS_SLEEP_EN1_CLK_SYS_USBCTRL_BITS _u(0x00000400) +#define CLOCKS_SLEEP_EN1_CLK_SYS_USBCTRL_MSB _u(10) +#define CLOCKS_SLEEP_EN1_CLK_SYS_USBCTRL_LSB _u(10) +#define CLOCKS_SLEEP_EN1_CLK_SYS_USBCTRL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN1_CLK_SYS_UART1 +// Description : None +#define CLOCKS_SLEEP_EN1_CLK_SYS_UART1_RESET _u(0x1) +#define CLOCKS_SLEEP_EN1_CLK_SYS_UART1_BITS _u(0x00000200) +#define CLOCKS_SLEEP_EN1_CLK_SYS_UART1_MSB _u(9) +#define CLOCKS_SLEEP_EN1_CLK_SYS_UART1_LSB _u(9) +#define CLOCKS_SLEEP_EN1_CLK_SYS_UART1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN1_CLK_PERI_UART1 +// Description : None +#define CLOCKS_SLEEP_EN1_CLK_PERI_UART1_RESET _u(0x1) +#define CLOCKS_SLEEP_EN1_CLK_PERI_UART1_BITS _u(0x00000100) +#define CLOCKS_SLEEP_EN1_CLK_PERI_UART1_MSB _u(8) +#define CLOCKS_SLEEP_EN1_CLK_PERI_UART1_LSB _u(8) +#define CLOCKS_SLEEP_EN1_CLK_PERI_UART1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN1_CLK_SYS_UART0 +// Description : None +#define CLOCKS_SLEEP_EN1_CLK_SYS_UART0_RESET _u(0x1) +#define CLOCKS_SLEEP_EN1_CLK_SYS_UART0_BITS _u(0x00000080) +#define CLOCKS_SLEEP_EN1_CLK_SYS_UART0_MSB _u(7) +#define CLOCKS_SLEEP_EN1_CLK_SYS_UART0_LSB _u(7) +#define CLOCKS_SLEEP_EN1_CLK_SYS_UART0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN1_CLK_PERI_UART0 +// Description : None +#define CLOCKS_SLEEP_EN1_CLK_PERI_UART0_RESET _u(0x1) +#define CLOCKS_SLEEP_EN1_CLK_PERI_UART0_BITS _u(0x00000040) +#define CLOCKS_SLEEP_EN1_CLK_PERI_UART0_MSB _u(6) +#define CLOCKS_SLEEP_EN1_CLK_PERI_UART0_LSB _u(6) +#define CLOCKS_SLEEP_EN1_CLK_PERI_UART0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN1_CLK_SYS_TIMER +// Description : None +#define CLOCKS_SLEEP_EN1_CLK_SYS_TIMER_RESET _u(0x1) +#define CLOCKS_SLEEP_EN1_CLK_SYS_TIMER_BITS _u(0x00000020) +#define CLOCKS_SLEEP_EN1_CLK_SYS_TIMER_MSB _u(5) +#define CLOCKS_SLEEP_EN1_CLK_SYS_TIMER_LSB _u(5) +#define CLOCKS_SLEEP_EN1_CLK_SYS_TIMER_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN1_CLK_SYS_TBMAN +// Description : None +#define CLOCKS_SLEEP_EN1_CLK_SYS_TBMAN_RESET _u(0x1) +#define CLOCKS_SLEEP_EN1_CLK_SYS_TBMAN_BITS _u(0x00000010) +#define CLOCKS_SLEEP_EN1_CLK_SYS_TBMAN_MSB _u(4) +#define CLOCKS_SLEEP_EN1_CLK_SYS_TBMAN_LSB _u(4) +#define CLOCKS_SLEEP_EN1_CLK_SYS_TBMAN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN1_CLK_SYS_SYSINFO +// Description : None +#define CLOCKS_SLEEP_EN1_CLK_SYS_SYSINFO_RESET _u(0x1) +#define CLOCKS_SLEEP_EN1_CLK_SYS_SYSINFO_BITS _u(0x00000008) +#define CLOCKS_SLEEP_EN1_CLK_SYS_SYSINFO_MSB _u(3) +#define CLOCKS_SLEEP_EN1_CLK_SYS_SYSINFO_LSB _u(3) +#define CLOCKS_SLEEP_EN1_CLK_SYS_SYSINFO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN1_CLK_SYS_SYSCFG +// Description : None +#define CLOCKS_SLEEP_EN1_CLK_SYS_SYSCFG_RESET _u(0x1) +#define CLOCKS_SLEEP_EN1_CLK_SYS_SYSCFG_BITS _u(0x00000004) +#define CLOCKS_SLEEP_EN1_CLK_SYS_SYSCFG_MSB _u(2) +#define CLOCKS_SLEEP_EN1_CLK_SYS_SYSCFG_LSB _u(2) +#define CLOCKS_SLEEP_EN1_CLK_SYS_SYSCFG_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN1_CLK_SYS_SRAM5 +// Description : None +#define CLOCKS_SLEEP_EN1_CLK_SYS_SRAM5_RESET _u(0x1) +#define CLOCKS_SLEEP_EN1_CLK_SYS_SRAM5_BITS _u(0x00000002) +#define CLOCKS_SLEEP_EN1_CLK_SYS_SRAM5_MSB _u(1) +#define CLOCKS_SLEEP_EN1_CLK_SYS_SRAM5_LSB _u(1) +#define CLOCKS_SLEEP_EN1_CLK_SYS_SRAM5_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_SLEEP_EN1_CLK_SYS_SRAM4 +// Description : None +#define CLOCKS_SLEEP_EN1_CLK_SYS_SRAM4_RESET _u(0x1) +#define CLOCKS_SLEEP_EN1_CLK_SYS_SRAM4_BITS _u(0x00000001) +#define CLOCKS_SLEEP_EN1_CLK_SYS_SRAM4_MSB _u(0) +#define CLOCKS_SLEEP_EN1_CLK_SYS_SRAM4_LSB _u(0) +#define CLOCKS_SLEEP_EN1_CLK_SYS_SRAM4_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_ENABLED0 +// Description : indicates the state of the clock enable +#define CLOCKS_ENABLED0_OFFSET _u(0x000000b0) +#define CLOCKS_ENABLED0_BITS _u(0xffffffff) +#define CLOCKS_ENABLED0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_SRAM3 +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_SRAM3_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_SRAM3_BITS _u(0x80000000) +#define CLOCKS_ENABLED0_CLK_SYS_SRAM3_MSB _u(31) +#define CLOCKS_ENABLED0_CLK_SYS_SRAM3_LSB _u(31) +#define CLOCKS_ENABLED0_CLK_SYS_SRAM3_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_SRAM2 +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_SRAM2_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_SRAM2_BITS _u(0x40000000) +#define CLOCKS_ENABLED0_CLK_SYS_SRAM2_MSB _u(30) +#define CLOCKS_ENABLED0_CLK_SYS_SRAM2_LSB _u(30) +#define CLOCKS_ENABLED0_CLK_SYS_SRAM2_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_SRAM1 +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_SRAM1_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_SRAM1_BITS _u(0x20000000) +#define CLOCKS_ENABLED0_CLK_SYS_SRAM1_MSB _u(29) +#define CLOCKS_ENABLED0_CLK_SYS_SRAM1_LSB _u(29) +#define CLOCKS_ENABLED0_CLK_SYS_SRAM1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_SRAM0 +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_SRAM0_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_SRAM0_BITS _u(0x10000000) +#define CLOCKS_ENABLED0_CLK_SYS_SRAM0_MSB _u(28) +#define CLOCKS_ENABLED0_CLK_SYS_SRAM0_LSB _u(28) +#define CLOCKS_ENABLED0_CLK_SYS_SRAM0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_SPI1 +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_SPI1_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_SPI1_BITS _u(0x08000000) +#define CLOCKS_ENABLED0_CLK_SYS_SPI1_MSB _u(27) +#define CLOCKS_ENABLED0_CLK_SYS_SPI1_LSB _u(27) +#define CLOCKS_ENABLED0_CLK_SYS_SPI1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_PERI_SPI1 +// Description : None +#define CLOCKS_ENABLED0_CLK_PERI_SPI1_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_PERI_SPI1_BITS _u(0x04000000) +#define CLOCKS_ENABLED0_CLK_PERI_SPI1_MSB _u(26) +#define CLOCKS_ENABLED0_CLK_PERI_SPI1_LSB _u(26) +#define CLOCKS_ENABLED0_CLK_PERI_SPI1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_SPI0 +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_SPI0_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_SPI0_BITS _u(0x02000000) +#define CLOCKS_ENABLED0_CLK_SYS_SPI0_MSB _u(25) +#define CLOCKS_ENABLED0_CLK_SYS_SPI0_LSB _u(25) +#define CLOCKS_ENABLED0_CLK_SYS_SPI0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_PERI_SPI0 +// Description : None +#define CLOCKS_ENABLED0_CLK_PERI_SPI0_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_PERI_SPI0_BITS _u(0x01000000) +#define CLOCKS_ENABLED0_CLK_PERI_SPI0_MSB _u(24) +#define CLOCKS_ENABLED0_CLK_PERI_SPI0_LSB _u(24) +#define CLOCKS_ENABLED0_CLK_PERI_SPI0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_SIO +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_SIO_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_SIO_BITS _u(0x00800000) +#define CLOCKS_ENABLED0_CLK_SYS_SIO_MSB _u(23) +#define CLOCKS_ENABLED0_CLK_SYS_SIO_LSB _u(23) +#define CLOCKS_ENABLED0_CLK_SYS_SIO_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_RTC +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_RTC_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_RTC_BITS _u(0x00400000) +#define CLOCKS_ENABLED0_CLK_SYS_RTC_MSB _u(22) +#define CLOCKS_ENABLED0_CLK_SYS_RTC_LSB _u(22) +#define CLOCKS_ENABLED0_CLK_SYS_RTC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_RTC_RTC +// Description : None +#define CLOCKS_ENABLED0_CLK_RTC_RTC_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_RTC_RTC_BITS _u(0x00200000) +#define CLOCKS_ENABLED0_CLK_RTC_RTC_MSB _u(21) +#define CLOCKS_ENABLED0_CLK_RTC_RTC_LSB _u(21) +#define CLOCKS_ENABLED0_CLK_RTC_RTC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_ROSC +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_ROSC_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_ROSC_BITS _u(0x00100000) +#define CLOCKS_ENABLED0_CLK_SYS_ROSC_MSB _u(20) +#define CLOCKS_ENABLED0_CLK_SYS_ROSC_LSB _u(20) +#define CLOCKS_ENABLED0_CLK_SYS_ROSC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_ROM +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_ROM_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_ROM_BITS _u(0x00080000) +#define CLOCKS_ENABLED0_CLK_SYS_ROM_MSB _u(19) +#define CLOCKS_ENABLED0_CLK_SYS_ROM_LSB _u(19) +#define CLOCKS_ENABLED0_CLK_SYS_ROM_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_RESETS +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_RESETS_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_RESETS_BITS _u(0x00040000) +#define CLOCKS_ENABLED0_CLK_SYS_RESETS_MSB _u(18) +#define CLOCKS_ENABLED0_CLK_SYS_RESETS_LSB _u(18) +#define CLOCKS_ENABLED0_CLK_SYS_RESETS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_PWM +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_PWM_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_PWM_BITS _u(0x00020000) +#define CLOCKS_ENABLED0_CLK_SYS_PWM_MSB _u(17) +#define CLOCKS_ENABLED0_CLK_SYS_PWM_LSB _u(17) +#define CLOCKS_ENABLED0_CLK_SYS_PWM_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_PSM +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_PSM_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_PSM_BITS _u(0x00010000) +#define CLOCKS_ENABLED0_CLK_SYS_PSM_MSB _u(16) +#define CLOCKS_ENABLED0_CLK_SYS_PSM_LSB _u(16) +#define CLOCKS_ENABLED0_CLK_SYS_PSM_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_PLL_USB +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_PLL_USB_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_PLL_USB_BITS _u(0x00008000) +#define CLOCKS_ENABLED0_CLK_SYS_PLL_USB_MSB _u(15) +#define CLOCKS_ENABLED0_CLK_SYS_PLL_USB_LSB _u(15) +#define CLOCKS_ENABLED0_CLK_SYS_PLL_USB_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_PLL_SYS +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_PLL_SYS_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_PLL_SYS_BITS _u(0x00004000) +#define CLOCKS_ENABLED0_CLK_SYS_PLL_SYS_MSB _u(14) +#define CLOCKS_ENABLED0_CLK_SYS_PLL_SYS_LSB _u(14) +#define CLOCKS_ENABLED0_CLK_SYS_PLL_SYS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_PIO1 +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_PIO1_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_PIO1_BITS _u(0x00002000) +#define CLOCKS_ENABLED0_CLK_SYS_PIO1_MSB _u(13) +#define CLOCKS_ENABLED0_CLK_SYS_PIO1_LSB _u(13) +#define CLOCKS_ENABLED0_CLK_SYS_PIO1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_PIO0 +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_PIO0_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_PIO0_BITS _u(0x00001000) +#define CLOCKS_ENABLED0_CLK_SYS_PIO0_MSB _u(12) +#define CLOCKS_ENABLED0_CLK_SYS_PIO0_LSB _u(12) +#define CLOCKS_ENABLED0_CLK_SYS_PIO0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_PADS +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_PADS_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_PADS_BITS _u(0x00000800) +#define CLOCKS_ENABLED0_CLK_SYS_PADS_MSB _u(11) +#define CLOCKS_ENABLED0_CLK_SYS_PADS_LSB _u(11) +#define CLOCKS_ENABLED0_CLK_SYS_PADS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_VREG_AND_CHIP_RESET +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_VREG_AND_CHIP_RESET_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_VREG_AND_CHIP_RESET_BITS _u(0x00000400) +#define CLOCKS_ENABLED0_CLK_SYS_VREG_AND_CHIP_RESET_MSB _u(10) +#define CLOCKS_ENABLED0_CLK_SYS_VREG_AND_CHIP_RESET_LSB _u(10) +#define CLOCKS_ENABLED0_CLK_SYS_VREG_AND_CHIP_RESET_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_JTAG +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_JTAG_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_JTAG_BITS _u(0x00000200) +#define CLOCKS_ENABLED0_CLK_SYS_JTAG_MSB _u(9) +#define CLOCKS_ENABLED0_CLK_SYS_JTAG_LSB _u(9) +#define CLOCKS_ENABLED0_CLK_SYS_JTAG_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_IO +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_IO_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_IO_BITS _u(0x00000100) +#define CLOCKS_ENABLED0_CLK_SYS_IO_MSB _u(8) +#define CLOCKS_ENABLED0_CLK_SYS_IO_LSB _u(8) +#define CLOCKS_ENABLED0_CLK_SYS_IO_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_I2C1 +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_I2C1_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_I2C1_BITS _u(0x00000080) +#define CLOCKS_ENABLED0_CLK_SYS_I2C1_MSB _u(7) +#define CLOCKS_ENABLED0_CLK_SYS_I2C1_LSB _u(7) +#define CLOCKS_ENABLED0_CLK_SYS_I2C1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_I2C0 +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_I2C0_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_I2C0_BITS _u(0x00000040) +#define CLOCKS_ENABLED0_CLK_SYS_I2C0_MSB _u(6) +#define CLOCKS_ENABLED0_CLK_SYS_I2C0_LSB _u(6) +#define CLOCKS_ENABLED0_CLK_SYS_I2C0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_DMA +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_DMA_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_DMA_BITS _u(0x00000020) +#define CLOCKS_ENABLED0_CLK_SYS_DMA_MSB _u(5) +#define CLOCKS_ENABLED0_CLK_SYS_DMA_LSB _u(5) +#define CLOCKS_ENABLED0_CLK_SYS_DMA_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_BUSFABRIC +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_BUSFABRIC_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_BUSFABRIC_BITS _u(0x00000010) +#define CLOCKS_ENABLED0_CLK_SYS_BUSFABRIC_MSB _u(4) +#define CLOCKS_ENABLED0_CLK_SYS_BUSFABRIC_LSB _u(4) +#define CLOCKS_ENABLED0_CLK_SYS_BUSFABRIC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_BUSCTRL +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_BUSCTRL_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_BUSCTRL_BITS _u(0x00000008) +#define CLOCKS_ENABLED0_CLK_SYS_BUSCTRL_MSB _u(3) +#define CLOCKS_ENABLED0_CLK_SYS_BUSCTRL_LSB _u(3) +#define CLOCKS_ENABLED0_CLK_SYS_BUSCTRL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_ADC +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_ADC_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_ADC_BITS _u(0x00000004) +#define CLOCKS_ENABLED0_CLK_SYS_ADC_MSB _u(2) +#define CLOCKS_ENABLED0_CLK_SYS_ADC_LSB _u(2) +#define CLOCKS_ENABLED0_CLK_SYS_ADC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_ADC_ADC +// Description : None +#define CLOCKS_ENABLED0_CLK_ADC_ADC_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_ADC_ADC_BITS _u(0x00000002) +#define CLOCKS_ENABLED0_CLK_ADC_ADC_MSB _u(1) +#define CLOCKS_ENABLED0_CLK_ADC_ADC_LSB _u(1) +#define CLOCKS_ENABLED0_CLK_ADC_ADC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED0_CLK_SYS_CLOCKS +// Description : None +#define CLOCKS_ENABLED0_CLK_SYS_CLOCKS_RESET _u(0x0) +#define CLOCKS_ENABLED0_CLK_SYS_CLOCKS_BITS _u(0x00000001) +#define CLOCKS_ENABLED0_CLK_SYS_CLOCKS_MSB _u(0) +#define CLOCKS_ENABLED0_CLK_SYS_CLOCKS_LSB _u(0) +#define CLOCKS_ENABLED0_CLK_SYS_CLOCKS_ACCESS "RO" +// ============================================================================= +// Register : CLOCKS_ENABLED1 +// Description : indicates the state of the clock enable +#define CLOCKS_ENABLED1_OFFSET _u(0x000000b4) +#define CLOCKS_ENABLED1_BITS _u(0x00007fff) +#define CLOCKS_ENABLED1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED1_CLK_SYS_XOSC +// Description : None +#define CLOCKS_ENABLED1_CLK_SYS_XOSC_RESET _u(0x0) +#define CLOCKS_ENABLED1_CLK_SYS_XOSC_BITS _u(0x00004000) +#define CLOCKS_ENABLED1_CLK_SYS_XOSC_MSB _u(14) +#define CLOCKS_ENABLED1_CLK_SYS_XOSC_LSB _u(14) +#define CLOCKS_ENABLED1_CLK_SYS_XOSC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED1_CLK_SYS_XIP +// Description : None +#define CLOCKS_ENABLED1_CLK_SYS_XIP_RESET _u(0x0) +#define CLOCKS_ENABLED1_CLK_SYS_XIP_BITS _u(0x00002000) +#define CLOCKS_ENABLED1_CLK_SYS_XIP_MSB _u(13) +#define CLOCKS_ENABLED1_CLK_SYS_XIP_LSB _u(13) +#define CLOCKS_ENABLED1_CLK_SYS_XIP_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED1_CLK_SYS_WATCHDOG +// Description : None +#define CLOCKS_ENABLED1_CLK_SYS_WATCHDOG_RESET _u(0x0) +#define CLOCKS_ENABLED1_CLK_SYS_WATCHDOG_BITS _u(0x00001000) +#define CLOCKS_ENABLED1_CLK_SYS_WATCHDOG_MSB _u(12) +#define CLOCKS_ENABLED1_CLK_SYS_WATCHDOG_LSB _u(12) +#define CLOCKS_ENABLED1_CLK_SYS_WATCHDOG_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED1_CLK_USB_USBCTRL +// Description : None +#define CLOCKS_ENABLED1_CLK_USB_USBCTRL_RESET _u(0x0) +#define CLOCKS_ENABLED1_CLK_USB_USBCTRL_BITS _u(0x00000800) +#define CLOCKS_ENABLED1_CLK_USB_USBCTRL_MSB _u(11) +#define CLOCKS_ENABLED1_CLK_USB_USBCTRL_LSB _u(11) +#define CLOCKS_ENABLED1_CLK_USB_USBCTRL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED1_CLK_SYS_USBCTRL +// Description : None +#define CLOCKS_ENABLED1_CLK_SYS_USBCTRL_RESET _u(0x0) +#define CLOCKS_ENABLED1_CLK_SYS_USBCTRL_BITS _u(0x00000400) +#define CLOCKS_ENABLED1_CLK_SYS_USBCTRL_MSB _u(10) +#define CLOCKS_ENABLED1_CLK_SYS_USBCTRL_LSB _u(10) +#define CLOCKS_ENABLED1_CLK_SYS_USBCTRL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED1_CLK_SYS_UART1 +// Description : None +#define CLOCKS_ENABLED1_CLK_SYS_UART1_RESET _u(0x0) +#define CLOCKS_ENABLED1_CLK_SYS_UART1_BITS _u(0x00000200) +#define CLOCKS_ENABLED1_CLK_SYS_UART1_MSB _u(9) +#define CLOCKS_ENABLED1_CLK_SYS_UART1_LSB _u(9) +#define CLOCKS_ENABLED1_CLK_SYS_UART1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED1_CLK_PERI_UART1 +// Description : None +#define CLOCKS_ENABLED1_CLK_PERI_UART1_RESET _u(0x0) +#define CLOCKS_ENABLED1_CLK_PERI_UART1_BITS _u(0x00000100) +#define CLOCKS_ENABLED1_CLK_PERI_UART1_MSB _u(8) +#define CLOCKS_ENABLED1_CLK_PERI_UART1_LSB _u(8) +#define CLOCKS_ENABLED1_CLK_PERI_UART1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED1_CLK_SYS_UART0 +// Description : None +#define CLOCKS_ENABLED1_CLK_SYS_UART0_RESET _u(0x0) +#define CLOCKS_ENABLED1_CLK_SYS_UART0_BITS _u(0x00000080) +#define CLOCKS_ENABLED1_CLK_SYS_UART0_MSB _u(7) +#define CLOCKS_ENABLED1_CLK_SYS_UART0_LSB _u(7) +#define CLOCKS_ENABLED1_CLK_SYS_UART0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED1_CLK_PERI_UART0 +// Description : None +#define CLOCKS_ENABLED1_CLK_PERI_UART0_RESET _u(0x0) +#define CLOCKS_ENABLED1_CLK_PERI_UART0_BITS _u(0x00000040) +#define CLOCKS_ENABLED1_CLK_PERI_UART0_MSB _u(6) +#define CLOCKS_ENABLED1_CLK_PERI_UART0_LSB _u(6) +#define CLOCKS_ENABLED1_CLK_PERI_UART0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED1_CLK_SYS_TIMER +// Description : None +#define CLOCKS_ENABLED1_CLK_SYS_TIMER_RESET _u(0x0) +#define CLOCKS_ENABLED1_CLK_SYS_TIMER_BITS _u(0x00000020) +#define CLOCKS_ENABLED1_CLK_SYS_TIMER_MSB _u(5) +#define CLOCKS_ENABLED1_CLK_SYS_TIMER_LSB _u(5) +#define CLOCKS_ENABLED1_CLK_SYS_TIMER_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED1_CLK_SYS_TBMAN +// Description : None +#define CLOCKS_ENABLED1_CLK_SYS_TBMAN_RESET _u(0x0) +#define CLOCKS_ENABLED1_CLK_SYS_TBMAN_BITS _u(0x00000010) +#define CLOCKS_ENABLED1_CLK_SYS_TBMAN_MSB _u(4) +#define CLOCKS_ENABLED1_CLK_SYS_TBMAN_LSB _u(4) +#define CLOCKS_ENABLED1_CLK_SYS_TBMAN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED1_CLK_SYS_SYSINFO +// Description : None +#define CLOCKS_ENABLED1_CLK_SYS_SYSINFO_RESET _u(0x0) +#define CLOCKS_ENABLED1_CLK_SYS_SYSINFO_BITS _u(0x00000008) +#define CLOCKS_ENABLED1_CLK_SYS_SYSINFO_MSB _u(3) +#define CLOCKS_ENABLED1_CLK_SYS_SYSINFO_LSB _u(3) +#define CLOCKS_ENABLED1_CLK_SYS_SYSINFO_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED1_CLK_SYS_SYSCFG +// Description : None +#define CLOCKS_ENABLED1_CLK_SYS_SYSCFG_RESET _u(0x0) +#define CLOCKS_ENABLED1_CLK_SYS_SYSCFG_BITS _u(0x00000004) +#define CLOCKS_ENABLED1_CLK_SYS_SYSCFG_MSB _u(2) +#define CLOCKS_ENABLED1_CLK_SYS_SYSCFG_LSB _u(2) +#define CLOCKS_ENABLED1_CLK_SYS_SYSCFG_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED1_CLK_SYS_SRAM5 +// Description : None +#define CLOCKS_ENABLED1_CLK_SYS_SRAM5_RESET _u(0x0) +#define CLOCKS_ENABLED1_CLK_SYS_SRAM5_BITS _u(0x00000002) +#define CLOCKS_ENABLED1_CLK_SYS_SRAM5_MSB _u(1) +#define CLOCKS_ENABLED1_CLK_SYS_SRAM5_LSB _u(1) +#define CLOCKS_ENABLED1_CLK_SYS_SRAM5_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : CLOCKS_ENABLED1_CLK_SYS_SRAM4 +// Description : None +#define CLOCKS_ENABLED1_CLK_SYS_SRAM4_RESET _u(0x0) +#define CLOCKS_ENABLED1_CLK_SYS_SRAM4_BITS _u(0x00000001) +#define CLOCKS_ENABLED1_CLK_SYS_SRAM4_MSB _u(0) +#define CLOCKS_ENABLED1_CLK_SYS_SRAM4_LSB _u(0) +#define CLOCKS_ENABLED1_CLK_SYS_SRAM4_ACCESS "RO" +// ============================================================================= +// Register : CLOCKS_INTR +// Description : Raw Interrupts +#define CLOCKS_INTR_OFFSET _u(0x000000b8) +#define CLOCKS_INTR_BITS _u(0x00000001) +#define CLOCKS_INTR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_INTR_CLK_SYS_RESUS +// Description : None +#define CLOCKS_INTR_CLK_SYS_RESUS_RESET _u(0x0) +#define CLOCKS_INTR_CLK_SYS_RESUS_BITS _u(0x00000001) +#define CLOCKS_INTR_CLK_SYS_RESUS_MSB _u(0) +#define CLOCKS_INTR_CLK_SYS_RESUS_LSB _u(0) +#define CLOCKS_INTR_CLK_SYS_RESUS_ACCESS "RO" +// ============================================================================= +// Register : CLOCKS_INTE +// Description : Interrupt Enable +#define CLOCKS_INTE_OFFSET _u(0x000000bc) +#define CLOCKS_INTE_BITS _u(0x00000001) +#define CLOCKS_INTE_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_INTE_CLK_SYS_RESUS +// Description : None +#define CLOCKS_INTE_CLK_SYS_RESUS_RESET _u(0x0) +#define CLOCKS_INTE_CLK_SYS_RESUS_BITS _u(0x00000001) +#define CLOCKS_INTE_CLK_SYS_RESUS_MSB _u(0) +#define CLOCKS_INTE_CLK_SYS_RESUS_LSB _u(0) +#define CLOCKS_INTE_CLK_SYS_RESUS_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_INTF +// Description : Interrupt Force +#define CLOCKS_INTF_OFFSET _u(0x000000c0) +#define CLOCKS_INTF_BITS _u(0x00000001) +#define CLOCKS_INTF_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_INTF_CLK_SYS_RESUS +// Description : None +#define CLOCKS_INTF_CLK_SYS_RESUS_RESET _u(0x0) +#define CLOCKS_INTF_CLK_SYS_RESUS_BITS _u(0x00000001) +#define CLOCKS_INTF_CLK_SYS_RESUS_MSB _u(0) +#define CLOCKS_INTF_CLK_SYS_RESUS_LSB _u(0) +#define CLOCKS_INTF_CLK_SYS_RESUS_ACCESS "RW" +// ============================================================================= +// Register : CLOCKS_INTS +// Description : Interrupt status after masking & forcing +#define CLOCKS_INTS_OFFSET _u(0x000000c4) +#define CLOCKS_INTS_BITS _u(0x00000001) +#define CLOCKS_INTS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : CLOCKS_INTS_CLK_SYS_RESUS +// Description : None +#define CLOCKS_INTS_CLK_SYS_RESUS_RESET _u(0x0) +#define CLOCKS_INTS_CLK_SYS_RESUS_BITS _u(0x00000001) +#define CLOCKS_INTS_CLK_SYS_RESUS_MSB _u(0) +#define CLOCKS_INTS_CLK_SYS_RESUS_LSB _u(0) +#define CLOCKS_INTS_CLK_SYS_RESUS_ACCESS "RO" +// ============================================================================= +#endif // HARDWARE_REGS_CLOCKS_DEFINED diff --git a/arkanoid/pico/hardware/regs/dma.h b/arkanoid/pico/hardware/regs/dma.h new file mode 100644 index 0000000..042c3c1 --- /dev/null +++ b/arkanoid/pico/hardware/regs/dma.h @@ -0,0 +1,5313 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : DMA +// Version : 1 +// Bus type : apb +// Description : DMA with separate read and write masters +// ============================================================================= +#ifndef HARDWARE_REGS_DMA_DEFINED +#define HARDWARE_REGS_DMA_DEFINED +// ============================================================================= +// Register : DMA_CH0_READ_ADDR +// Description : DMA Channel 0 Read Address pointer +// This register updates automatically each time a read completes. +// The current value is the next address to be read by this +// channel. +#define DMA_CH0_READ_ADDR_OFFSET _u(0x00000000) +#define DMA_CH0_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH0_READ_ADDR_RESET _u(0x00000000) +#define DMA_CH0_READ_ADDR_MSB _u(31) +#define DMA_CH0_READ_ADDR_LSB _u(0) +#define DMA_CH0_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH0_WRITE_ADDR +// Description : DMA Channel 0 Write Address pointer +// This register updates automatically each time a write +// completes. The current value is the next address to be written +// by this channel. +#define DMA_CH0_WRITE_ADDR_OFFSET _u(0x00000004) +#define DMA_CH0_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH0_WRITE_ADDR_RESET _u(0x00000000) +#define DMA_CH0_WRITE_ADDR_MSB _u(31) +#define DMA_CH0_WRITE_ADDR_LSB _u(0) +#define DMA_CH0_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH0_TRANS_COUNT +// Description : DMA Channel 0 Transfer Count +// Program the number of bus transfers a channel will perform +// before halting. Note that, if transfers are larger than one +// byte in size, this is not equal to the number of bytes +// transferred (see CTRL_DATA_SIZE). +// +// When the channel is active, reading this register shows the +// number of transfers remaining, updating automatically each time +// a write transfer completes. +// +// Writing this register sets the RELOAD value for the transfer +// counter. Each time this channel is triggered, the RELOAD value +// is copied into the live transfer counter. The channel can be +// started multiple times, and will perform the same number of +// transfers each time, as programmed by most recent write. +// +// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT +// is used as a trigger, the written value is used immediately as +// the length of the new transfer sequence, as well as being +// written to RELOAD. +#define DMA_CH0_TRANS_COUNT_OFFSET _u(0x00000008) +#define DMA_CH0_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH0_TRANS_COUNT_RESET _u(0x00000000) +#define DMA_CH0_TRANS_COUNT_MSB _u(31) +#define DMA_CH0_TRANS_COUNT_LSB _u(0) +#define DMA_CH0_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH0_CTRL_TRIG +// Description : DMA Channel 0 Control and Status +#define DMA_CH0_CTRL_TRIG_OFFSET _u(0x0000000c) +#define DMA_CH0_CTRL_TRIG_BITS _u(0xe1ffffff) +#define DMA_CH0_CTRL_TRIG_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : DMA_CH0_CTRL_TRIG_AHB_ERROR +// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel +// halts when it encounters any bus error, and always raises its +// channel IRQ flag. +#define DMA_CH0_CTRL_TRIG_AHB_ERROR_RESET _u(0x0) +#define DMA_CH0_CTRL_TRIG_AHB_ERROR_BITS _u(0x80000000) +#define DMA_CH0_CTRL_TRIG_AHB_ERROR_MSB _u(31) +#define DMA_CH0_CTRL_TRIG_AHB_ERROR_LSB _u(31) +#define DMA_CH0_CTRL_TRIG_AHB_ERROR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH0_CTRL_TRIG_READ_ERROR +// Description : If 1, the channel received a read bus error. Write one to +// clear. +// READ_ADDR shows the approximate address where the bus error was +// encountered (will not to be earlier, or more than 3 transfers +// later) +#define DMA_CH0_CTRL_TRIG_READ_ERROR_RESET _u(0x0) +#define DMA_CH0_CTRL_TRIG_READ_ERROR_BITS _u(0x40000000) +#define DMA_CH0_CTRL_TRIG_READ_ERROR_MSB _u(30) +#define DMA_CH0_CTRL_TRIG_READ_ERROR_LSB _u(30) +#define DMA_CH0_CTRL_TRIG_READ_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH0_CTRL_TRIG_WRITE_ERROR +// Description : If 1, the channel received a write bus error. Write one to +// clear. +// WRITE_ADDR shows the approximate address where the bus error +// was encountered (will not to be earlier, or more than 5 +// transfers later) +#define DMA_CH0_CTRL_TRIG_WRITE_ERROR_RESET _u(0x0) +#define DMA_CH0_CTRL_TRIG_WRITE_ERROR_BITS _u(0x20000000) +#define DMA_CH0_CTRL_TRIG_WRITE_ERROR_MSB _u(29) +#define DMA_CH0_CTRL_TRIG_WRITE_ERROR_LSB _u(29) +#define DMA_CH0_CTRL_TRIG_WRITE_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH0_CTRL_TRIG_BUSY +// Description : This flag goes high when the channel starts a new transfer +// sequence, and low when the last transfer of that sequence +// completes. Clearing EN while BUSY is high pauses the channel, +// and BUSY will stay high while paused. +// +// To terminate a sequence early (and clear the BUSY flag), see +// CHAN_ABORT. +#define DMA_CH0_CTRL_TRIG_BUSY_RESET _u(0x0) +#define DMA_CH0_CTRL_TRIG_BUSY_BITS _u(0x01000000) +#define DMA_CH0_CTRL_TRIG_BUSY_MSB _u(24) +#define DMA_CH0_CTRL_TRIG_BUSY_LSB _u(24) +#define DMA_CH0_CTRL_TRIG_BUSY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH0_CTRL_TRIG_SNIFF_EN +// Description : If 1, this channel's data transfers are visible to the sniff +// hardware, and each transfer will advance the state of the +// checksum. This only applies if the sniff hardware is enabled, +// and has this channel selected. +// +// This allows checksum to be enabled or disabled on a +// per-control- block basis. +#define DMA_CH0_CTRL_TRIG_SNIFF_EN_RESET _u(0x0) +#define DMA_CH0_CTRL_TRIG_SNIFF_EN_BITS _u(0x00800000) +#define DMA_CH0_CTRL_TRIG_SNIFF_EN_MSB _u(23) +#define DMA_CH0_CTRL_TRIG_SNIFF_EN_LSB _u(23) +#define DMA_CH0_CTRL_TRIG_SNIFF_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH0_CTRL_TRIG_BSWAP +// Description : Apply byte-swap transformation to DMA data. +// For byte data, this has no effect. For halfword data, the two +// bytes of each halfword are swapped. For word data, the four +// bytes of each word are swapped to reverse order. +#define DMA_CH0_CTRL_TRIG_BSWAP_RESET _u(0x0) +#define DMA_CH0_CTRL_TRIG_BSWAP_BITS _u(0x00400000) +#define DMA_CH0_CTRL_TRIG_BSWAP_MSB _u(22) +#define DMA_CH0_CTRL_TRIG_BSWAP_LSB _u(22) +#define DMA_CH0_CTRL_TRIG_BSWAP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH0_CTRL_TRIG_IRQ_QUIET +// Description : In QUIET mode, the channel does not generate IRQs at the end of +// every transfer block. Instead, an IRQ is raised when NULL is +// written to a trigger register, indicating the end of a control +// block chain. +// +// This reduces the number of interrupts to be serviced by the CPU +// when transferring a DMA chain of many small control blocks. +#define DMA_CH0_CTRL_TRIG_IRQ_QUIET_RESET _u(0x0) +#define DMA_CH0_CTRL_TRIG_IRQ_QUIET_BITS _u(0x00200000) +#define DMA_CH0_CTRL_TRIG_IRQ_QUIET_MSB _u(21) +#define DMA_CH0_CTRL_TRIG_IRQ_QUIET_LSB _u(21) +#define DMA_CH0_CTRL_TRIG_IRQ_QUIET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH0_CTRL_TRIG_TREQ_SEL +// Description : Select a Transfer Request signal. +// The channel uses the transfer request signal to pace its data +// transfer rate. Sources for TREQ signals are internal (TIMERS) +// or external (DREQ, a Data Request from the system). +// 0x0 to 0x3a -> select DREQ n as TREQ +// 0x3b -> Select Timer 0 as TREQ +// 0x3c -> Select Timer 1 as TREQ +// 0x3d -> Select Timer 2 as TREQ (Optional) +// 0x3e -> Select Timer 3 as TREQ (Optional) +// 0x3f -> Permanent request, for unpaced transfers. +#define DMA_CH0_CTRL_TRIG_TREQ_SEL_RESET _u(0x00) +#define DMA_CH0_CTRL_TRIG_TREQ_SEL_BITS _u(0x001f8000) +#define DMA_CH0_CTRL_TRIG_TREQ_SEL_MSB _u(20) +#define DMA_CH0_CTRL_TRIG_TREQ_SEL_LSB _u(15) +#define DMA_CH0_CTRL_TRIG_TREQ_SEL_ACCESS "RW" +#define DMA_CH0_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 _u(0x3b) +#define DMA_CH0_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 _u(0x3c) +#define DMA_CH0_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 _u(0x3d) +#define DMA_CH0_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 _u(0x3e) +#define DMA_CH0_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT _u(0x3f) +// ----------------------------------------------------------------------------- +// Field : DMA_CH0_CTRL_TRIG_CHAIN_TO +// Description : When this channel completes, it will trigger the channel +// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this +// channel)_. +// Reset value is equal to channel number (0). +#define DMA_CH0_CTRL_TRIG_CHAIN_TO_RESET _u(0x0) +#define DMA_CH0_CTRL_TRIG_CHAIN_TO_BITS _u(0x00007800) +#define DMA_CH0_CTRL_TRIG_CHAIN_TO_MSB _u(14) +#define DMA_CH0_CTRL_TRIG_CHAIN_TO_LSB _u(11) +#define DMA_CH0_CTRL_TRIG_CHAIN_TO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH0_CTRL_TRIG_RING_SEL +// Description : Select whether RING_SIZE applies to read or write addresses. +// If 0, read addresses are wrapped on a (1 << RING_SIZE) +// boundary. If 1, write addresses are wrapped. +#define DMA_CH0_CTRL_TRIG_RING_SEL_RESET _u(0x0) +#define DMA_CH0_CTRL_TRIG_RING_SEL_BITS _u(0x00000400) +#define DMA_CH0_CTRL_TRIG_RING_SEL_MSB _u(10) +#define DMA_CH0_CTRL_TRIG_RING_SEL_LSB _u(10) +#define DMA_CH0_CTRL_TRIG_RING_SEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH0_CTRL_TRIG_RING_SIZE +// Description : Size of address wrap region. If 0, don't wrap. For values n > +// 0, only the lower n bits of the address will change. This wraps +// the address on a (1 << n) byte boundary, facilitating access to +// naturally-aligned ring buffers. +// +// Ring sizes between 2 and 32768 bytes are possible. This can +// apply to either read or write addresses, based on value of +// RING_SEL. +// 0x0 -> RING_NONE +#define DMA_CH0_CTRL_TRIG_RING_SIZE_RESET _u(0x0) +#define DMA_CH0_CTRL_TRIG_RING_SIZE_BITS _u(0x000003c0) +#define DMA_CH0_CTRL_TRIG_RING_SIZE_MSB _u(9) +#define DMA_CH0_CTRL_TRIG_RING_SIZE_LSB _u(6) +#define DMA_CH0_CTRL_TRIG_RING_SIZE_ACCESS "RW" +#define DMA_CH0_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE _u(0x0) +// ----------------------------------------------------------------------------- +// Field : DMA_CH0_CTRL_TRIG_INCR_WRITE +// Description : If 1, the write address increments with each transfer. If 0, +// each write is directed to the same, initial address. +// +// Generally this should be disabled for memory-to-peripheral +// transfers. +#define DMA_CH0_CTRL_TRIG_INCR_WRITE_RESET _u(0x0) +#define DMA_CH0_CTRL_TRIG_INCR_WRITE_BITS _u(0x00000020) +#define DMA_CH0_CTRL_TRIG_INCR_WRITE_MSB _u(5) +#define DMA_CH0_CTRL_TRIG_INCR_WRITE_LSB _u(5) +#define DMA_CH0_CTRL_TRIG_INCR_WRITE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH0_CTRL_TRIG_INCR_READ +// Description : If 1, the read address increments with each transfer. If 0, +// each read is directed to the same, initial address. +// +// Generally this should be disabled for peripheral-to-memory +// transfers. +#define DMA_CH0_CTRL_TRIG_INCR_READ_RESET _u(0x0) +#define DMA_CH0_CTRL_TRIG_INCR_READ_BITS _u(0x00000010) +#define DMA_CH0_CTRL_TRIG_INCR_READ_MSB _u(4) +#define DMA_CH0_CTRL_TRIG_INCR_READ_LSB _u(4) +#define DMA_CH0_CTRL_TRIG_INCR_READ_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH0_CTRL_TRIG_DATA_SIZE +// Description : Set the size of each bus transfer (byte/halfword/word). +// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) +// with each transfer. +// 0x0 -> SIZE_BYTE +// 0x1 -> SIZE_HALFWORD +// 0x2 -> SIZE_WORD +#define DMA_CH0_CTRL_TRIG_DATA_SIZE_RESET _u(0x0) +#define DMA_CH0_CTRL_TRIG_DATA_SIZE_BITS _u(0x0000000c) +#define DMA_CH0_CTRL_TRIG_DATA_SIZE_MSB _u(3) +#define DMA_CH0_CTRL_TRIG_DATA_SIZE_LSB _u(2) +#define DMA_CH0_CTRL_TRIG_DATA_SIZE_ACCESS "RW" +#define DMA_CH0_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE _u(0x0) +#define DMA_CH0_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD _u(0x1) +#define DMA_CH0_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD _u(0x2) +// ----------------------------------------------------------------------------- +// Field : DMA_CH0_CTRL_TRIG_HIGH_PRIORITY +// Description : HIGH_PRIORITY gives a channel preferential treatment in issue +// scheduling: in each scheduling round, all high priority +// channels are considered first, and then only a single low +// priority channel, before returning to the high priority +// channels. +// +// This only affects the order in which the DMA schedules +// channels. The DMA's bus priority is not changed. If the DMA is +// not saturated then a low priority channel will see no loss of +// throughput. +#define DMA_CH0_CTRL_TRIG_HIGH_PRIORITY_RESET _u(0x0) +#define DMA_CH0_CTRL_TRIG_HIGH_PRIORITY_BITS _u(0x00000002) +#define DMA_CH0_CTRL_TRIG_HIGH_PRIORITY_MSB _u(1) +#define DMA_CH0_CTRL_TRIG_HIGH_PRIORITY_LSB _u(1) +#define DMA_CH0_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH0_CTRL_TRIG_EN +// Description : DMA Channel Enable. +// When 1, the channel will respond to triggering events, which +// will cause it to become BUSY and start transferring data. When +// 0, the channel will ignore triggers, stop issuing transfers, +// and pause the current transfer sequence (i.e. BUSY will remain +// high if already high) +#define DMA_CH0_CTRL_TRIG_EN_RESET _u(0x0) +#define DMA_CH0_CTRL_TRIG_EN_BITS _u(0x00000001) +#define DMA_CH0_CTRL_TRIG_EN_MSB _u(0) +#define DMA_CH0_CTRL_TRIG_EN_LSB _u(0) +#define DMA_CH0_CTRL_TRIG_EN_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH0_AL1_CTRL +// Description : Alias for channel 0 CTRL register +#define DMA_CH0_AL1_CTRL_OFFSET _u(0x00000010) +#define DMA_CH0_AL1_CTRL_BITS _u(0xffffffff) +#define DMA_CH0_AL1_CTRL_RESET "-" +#define DMA_CH0_AL1_CTRL_MSB _u(31) +#define DMA_CH0_AL1_CTRL_LSB _u(0) +#define DMA_CH0_AL1_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH0_AL1_READ_ADDR +// Description : Alias for channel 0 READ_ADDR register +#define DMA_CH0_AL1_READ_ADDR_OFFSET _u(0x00000014) +#define DMA_CH0_AL1_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH0_AL1_READ_ADDR_RESET "-" +#define DMA_CH0_AL1_READ_ADDR_MSB _u(31) +#define DMA_CH0_AL1_READ_ADDR_LSB _u(0) +#define DMA_CH0_AL1_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH0_AL1_WRITE_ADDR +// Description : Alias for channel 0 WRITE_ADDR register +#define DMA_CH0_AL1_WRITE_ADDR_OFFSET _u(0x00000018) +#define DMA_CH0_AL1_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH0_AL1_WRITE_ADDR_RESET "-" +#define DMA_CH0_AL1_WRITE_ADDR_MSB _u(31) +#define DMA_CH0_AL1_WRITE_ADDR_LSB _u(0) +#define DMA_CH0_AL1_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH0_AL1_TRANS_COUNT_TRIG +// Description : Alias for channel 0 TRANS_COUNT register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH0_AL1_TRANS_COUNT_TRIG_OFFSET _u(0x0000001c) +#define DMA_CH0_AL1_TRANS_COUNT_TRIG_BITS _u(0xffffffff) +#define DMA_CH0_AL1_TRANS_COUNT_TRIG_RESET "-" +#define DMA_CH0_AL1_TRANS_COUNT_TRIG_MSB _u(31) +#define DMA_CH0_AL1_TRANS_COUNT_TRIG_LSB _u(0) +#define DMA_CH0_AL1_TRANS_COUNT_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH0_AL2_CTRL +// Description : Alias for channel 0 CTRL register +#define DMA_CH0_AL2_CTRL_OFFSET _u(0x00000020) +#define DMA_CH0_AL2_CTRL_BITS _u(0xffffffff) +#define DMA_CH0_AL2_CTRL_RESET "-" +#define DMA_CH0_AL2_CTRL_MSB _u(31) +#define DMA_CH0_AL2_CTRL_LSB _u(0) +#define DMA_CH0_AL2_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH0_AL2_TRANS_COUNT +// Description : Alias for channel 0 TRANS_COUNT register +#define DMA_CH0_AL2_TRANS_COUNT_OFFSET _u(0x00000024) +#define DMA_CH0_AL2_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH0_AL2_TRANS_COUNT_RESET "-" +#define DMA_CH0_AL2_TRANS_COUNT_MSB _u(31) +#define DMA_CH0_AL2_TRANS_COUNT_LSB _u(0) +#define DMA_CH0_AL2_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH0_AL2_READ_ADDR +// Description : Alias for channel 0 READ_ADDR register +#define DMA_CH0_AL2_READ_ADDR_OFFSET _u(0x00000028) +#define DMA_CH0_AL2_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH0_AL2_READ_ADDR_RESET "-" +#define DMA_CH0_AL2_READ_ADDR_MSB _u(31) +#define DMA_CH0_AL2_READ_ADDR_LSB _u(0) +#define DMA_CH0_AL2_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH0_AL2_WRITE_ADDR_TRIG +// Description : Alias for channel 0 WRITE_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH0_AL2_WRITE_ADDR_TRIG_OFFSET _u(0x0000002c) +#define DMA_CH0_AL2_WRITE_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH0_AL2_WRITE_ADDR_TRIG_RESET "-" +#define DMA_CH0_AL2_WRITE_ADDR_TRIG_MSB _u(31) +#define DMA_CH0_AL2_WRITE_ADDR_TRIG_LSB _u(0) +#define DMA_CH0_AL2_WRITE_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH0_AL3_CTRL +// Description : Alias for channel 0 CTRL register +#define DMA_CH0_AL3_CTRL_OFFSET _u(0x00000030) +#define DMA_CH0_AL3_CTRL_BITS _u(0xffffffff) +#define DMA_CH0_AL3_CTRL_RESET "-" +#define DMA_CH0_AL3_CTRL_MSB _u(31) +#define DMA_CH0_AL3_CTRL_LSB _u(0) +#define DMA_CH0_AL3_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH0_AL3_WRITE_ADDR +// Description : Alias for channel 0 WRITE_ADDR register +#define DMA_CH0_AL3_WRITE_ADDR_OFFSET _u(0x00000034) +#define DMA_CH0_AL3_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH0_AL3_WRITE_ADDR_RESET "-" +#define DMA_CH0_AL3_WRITE_ADDR_MSB _u(31) +#define DMA_CH0_AL3_WRITE_ADDR_LSB _u(0) +#define DMA_CH0_AL3_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH0_AL3_TRANS_COUNT +// Description : Alias for channel 0 TRANS_COUNT register +#define DMA_CH0_AL3_TRANS_COUNT_OFFSET _u(0x00000038) +#define DMA_CH0_AL3_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH0_AL3_TRANS_COUNT_RESET "-" +#define DMA_CH0_AL3_TRANS_COUNT_MSB _u(31) +#define DMA_CH0_AL3_TRANS_COUNT_LSB _u(0) +#define DMA_CH0_AL3_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH0_AL3_READ_ADDR_TRIG +// Description : Alias for channel 0 READ_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH0_AL3_READ_ADDR_TRIG_OFFSET _u(0x0000003c) +#define DMA_CH0_AL3_READ_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH0_AL3_READ_ADDR_TRIG_RESET "-" +#define DMA_CH0_AL3_READ_ADDR_TRIG_MSB _u(31) +#define DMA_CH0_AL3_READ_ADDR_TRIG_LSB _u(0) +#define DMA_CH0_AL3_READ_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH1_READ_ADDR +// Description : DMA Channel 1 Read Address pointer +// This register updates automatically each time a read completes. +// The current value is the next address to be read by this +// channel. +#define DMA_CH1_READ_ADDR_OFFSET _u(0x00000040) +#define DMA_CH1_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH1_READ_ADDR_RESET _u(0x00000000) +#define DMA_CH1_READ_ADDR_MSB _u(31) +#define DMA_CH1_READ_ADDR_LSB _u(0) +#define DMA_CH1_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH1_WRITE_ADDR +// Description : DMA Channel 1 Write Address pointer +// This register updates automatically each time a write +// completes. The current value is the next address to be written +// by this channel. +#define DMA_CH1_WRITE_ADDR_OFFSET _u(0x00000044) +#define DMA_CH1_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH1_WRITE_ADDR_RESET _u(0x00000000) +#define DMA_CH1_WRITE_ADDR_MSB _u(31) +#define DMA_CH1_WRITE_ADDR_LSB _u(0) +#define DMA_CH1_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH1_TRANS_COUNT +// Description : DMA Channel 1 Transfer Count +// Program the number of bus transfers a channel will perform +// before halting. Note that, if transfers are larger than one +// byte in size, this is not equal to the number of bytes +// transferred (see CTRL_DATA_SIZE). +// +// When the channel is active, reading this register shows the +// number of transfers remaining, updating automatically each time +// a write transfer completes. +// +// Writing this register sets the RELOAD value for the transfer +// counter. Each time this channel is triggered, the RELOAD value +// is copied into the live transfer counter. The channel can be +// started multiple times, and will perform the same number of +// transfers each time, as programmed by most recent write. +// +// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT +// is used as a trigger, the written value is used immediately as +// the length of the new transfer sequence, as well as being +// written to RELOAD. +#define DMA_CH1_TRANS_COUNT_OFFSET _u(0x00000048) +#define DMA_CH1_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH1_TRANS_COUNT_RESET _u(0x00000000) +#define DMA_CH1_TRANS_COUNT_MSB _u(31) +#define DMA_CH1_TRANS_COUNT_LSB _u(0) +#define DMA_CH1_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH1_CTRL_TRIG +// Description : DMA Channel 1 Control and Status +#define DMA_CH1_CTRL_TRIG_OFFSET _u(0x0000004c) +#define DMA_CH1_CTRL_TRIG_BITS _u(0xe1ffffff) +#define DMA_CH1_CTRL_TRIG_RESET _u(0x00000800) +// ----------------------------------------------------------------------------- +// Field : DMA_CH1_CTRL_TRIG_AHB_ERROR +// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel +// halts when it encounters any bus error, and always raises its +// channel IRQ flag. +#define DMA_CH1_CTRL_TRIG_AHB_ERROR_RESET _u(0x0) +#define DMA_CH1_CTRL_TRIG_AHB_ERROR_BITS _u(0x80000000) +#define DMA_CH1_CTRL_TRIG_AHB_ERROR_MSB _u(31) +#define DMA_CH1_CTRL_TRIG_AHB_ERROR_LSB _u(31) +#define DMA_CH1_CTRL_TRIG_AHB_ERROR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH1_CTRL_TRIG_READ_ERROR +// Description : If 1, the channel received a read bus error. Write one to +// clear. +// READ_ADDR shows the approximate address where the bus error was +// encountered (will not to be earlier, or more than 3 transfers +// later) +#define DMA_CH1_CTRL_TRIG_READ_ERROR_RESET _u(0x0) +#define DMA_CH1_CTRL_TRIG_READ_ERROR_BITS _u(0x40000000) +#define DMA_CH1_CTRL_TRIG_READ_ERROR_MSB _u(30) +#define DMA_CH1_CTRL_TRIG_READ_ERROR_LSB _u(30) +#define DMA_CH1_CTRL_TRIG_READ_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH1_CTRL_TRIG_WRITE_ERROR +// Description : If 1, the channel received a write bus error. Write one to +// clear. +// WRITE_ADDR shows the approximate address where the bus error +// was encountered (will not to be earlier, or more than 5 +// transfers later) +#define DMA_CH1_CTRL_TRIG_WRITE_ERROR_RESET _u(0x0) +#define DMA_CH1_CTRL_TRIG_WRITE_ERROR_BITS _u(0x20000000) +#define DMA_CH1_CTRL_TRIG_WRITE_ERROR_MSB _u(29) +#define DMA_CH1_CTRL_TRIG_WRITE_ERROR_LSB _u(29) +#define DMA_CH1_CTRL_TRIG_WRITE_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH1_CTRL_TRIG_BUSY +// Description : This flag goes high when the channel starts a new transfer +// sequence, and low when the last transfer of that sequence +// completes. Clearing EN while BUSY is high pauses the channel, +// and BUSY will stay high while paused. +// +// To terminate a sequence early (and clear the BUSY flag), see +// CHAN_ABORT. +#define DMA_CH1_CTRL_TRIG_BUSY_RESET _u(0x0) +#define DMA_CH1_CTRL_TRIG_BUSY_BITS _u(0x01000000) +#define DMA_CH1_CTRL_TRIG_BUSY_MSB _u(24) +#define DMA_CH1_CTRL_TRIG_BUSY_LSB _u(24) +#define DMA_CH1_CTRL_TRIG_BUSY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH1_CTRL_TRIG_SNIFF_EN +// Description : If 1, this channel's data transfers are visible to the sniff +// hardware, and each transfer will advance the state of the +// checksum. This only applies if the sniff hardware is enabled, +// and has this channel selected. +// +// This allows checksum to be enabled or disabled on a +// per-control- block basis. +#define DMA_CH1_CTRL_TRIG_SNIFF_EN_RESET _u(0x0) +#define DMA_CH1_CTRL_TRIG_SNIFF_EN_BITS _u(0x00800000) +#define DMA_CH1_CTRL_TRIG_SNIFF_EN_MSB _u(23) +#define DMA_CH1_CTRL_TRIG_SNIFF_EN_LSB _u(23) +#define DMA_CH1_CTRL_TRIG_SNIFF_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH1_CTRL_TRIG_BSWAP +// Description : Apply byte-swap transformation to DMA data. +// For byte data, this has no effect. For halfword data, the two +// bytes of each halfword are swapped. For word data, the four +// bytes of each word are swapped to reverse order. +#define DMA_CH1_CTRL_TRIG_BSWAP_RESET _u(0x0) +#define DMA_CH1_CTRL_TRIG_BSWAP_BITS _u(0x00400000) +#define DMA_CH1_CTRL_TRIG_BSWAP_MSB _u(22) +#define DMA_CH1_CTRL_TRIG_BSWAP_LSB _u(22) +#define DMA_CH1_CTRL_TRIG_BSWAP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH1_CTRL_TRIG_IRQ_QUIET +// Description : In QUIET mode, the channel does not generate IRQs at the end of +// every transfer block. Instead, an IRQ is raised when NULL is +// written to a trigger register, indicating the end of a control +// block chain. +// +// This reduces the number of interrupts to be serviced by the CPU +// when transferring a DMA chain of many small control blocks. +#define DMA_CH1_CTRL_TRIG_IRQ_QUIET_RESET _u(0x0) +#define DMA_CH1_CTRL_TRIG_IRQ_QUIET_BITS _u(0x00200000) +#define DMA_CH1_CTRL_TRIG_IRQ_QUIET_MSB _u(21) +#define DMA_CH1_CTRL_TRIG_IRQ_QUIET_LSB _u(21) +#define DMA_CH1_CTRL_TRIG_IRQ_QUIET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH1_CTRL_TRIG_TREQ_SEL +// Description : Select a Transfer Request signal. +// The channel uses the transfer request signal to pace its data +// transfer rate. Sources for TREQ signals are internal (TIMERS) +// or external (DREQ, a Data Request from the system). +// 0x0 to 0x3a -> select DREQ n as TREQ +// 0x3b -> Select Timer 0 as TREQ +// 0x3c -> Select Timer 1 as TREQ +// 0x3d -> Select Timer 2 as TREQ (Optional) +// 0x3e -> Select Timer 3 as TREQ (Optional) +// 0x3f -> Permanent request, for unpaced transfers. +#define DMA_CH1_CTRL_TRIG_TREQ_SEL_RESET _u(0x00) +#define DMA_CH1_CTRL_TRIG_TREQ_SEL_BITS _u(0x001f8000) +#define DMA_CH1_CTRL_TRIG_TREQ_SEL_MSB _u(20) +#define DMA_CH1_CTRL_TRIG_TREQ_SEL_LSB _u(15) +#define DMA_CH1_CTRL_TRIG_TREQ_SEL_ACCESS "RW" +#define DMA_CH1_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 _u(0x3b) +#define DMA_CH1_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 _u(0x3c) +#define DMA_CH1_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 _u(0x3d) +#define DMA_CH1_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 _u(0x3e) +#define DMA_CH1_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT _u(0x3f) +// ----------------------------------------------------------------------------- +// Field : DMA_CH1_CTRL_TRIG_CHAIN_TO +// Description : When this channel completes, it will trigger the channel +// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this +// channel)_. +// Reset value is equal to channel number (1). +#define DMA_CH1_CTRL_TRIG_CHAIN_TO_RESET _u(0x1) +#define DMA_CH1_CTRL_TRIG_CHAIN_TO_BITS _u(0x00007800) +#define DMA_CH1_CTRL_TRIG_CHAIN_TO_MSB _u(14) +#define DMA_CH1_CTRL_TRIG_CHAIN_TO_LSB _u(11) +#define DMA_CH1_CTRL_TRIG_CHAIN_TO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH1_CTRL_TRIG_RING_SEL +// Description : Select whether RING_SIZE applies to read or write addresses. +// If 0, read addresses are wrapped on a (1 << RING_SIZE) +// boundary. If 1, write addresses are wrapped. +#define DMA_CH1_CTRL_TRIG_RING_SEL_RESET _u(0x0) +#define DMA_CH1_CTRL_TRIG_RING_SEL_BITS _u(0x00000400) +#define DMA_CH1_CTRL_TRIG_RING_SEL_MSB _u(10) +#define DMA_CH1_CTRL_TRIG_RING_SEL_LSB _u(10) +#define DMA_CH1_CTRL_TRIG_RING_SEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH1_CTRL_TRIG_RING_SIZE +// Description : Size of address wrap region. If 0, don't wrap. For values n > +// 0, only the lower n bits of the address will change. This wraps +// the address on a (1 << n) byte boundary, facilitating access to +// naturally-aligned ring buffers. +// +// Ring sizes between 2 and 32768 bytes are possible. This can +// apply to either read or write addresses, based on value of +// RING_SEL. +// 0x0 -> RING_NONE +#define DMA_CH1_CTRL_TRIG_RING_SIZE_RESET _u(0x0) +#define DMA_CH1_CTRL_TRIG_RING_SIZE_BITS _u(0x000003c0) +#define DMA_CH1_CTRL_TRIG_RING_SIZE_MSB _u(9) +#define DMA_CH1_CTRL_TRIG_RING_SIZE_LSB _u(6) +#define DMA_CH1_CTRL_TRIG_RING_SIZE_ACCESS "RW" +#define DMA_CH1_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE _u(0x0) +// ----------------------------------------------------------------------------- +// Field : DMA_CH1_CTRL_TRIG_INCR_WRITE +// Description : If 1, the write address increments with each transfer. If 0, +// each write is directed to the same, initial address. +// +// Generally this should be disabled for memory-to-peripheral +// transfers. +#define DMA_CH1_CTRL_TRIG_INCR_WRITE_RESET _u(0x0) +#define DMA_CH1_CTRL_TRIG_INCR_WRITE_BITS _u(0x00000020) +#define DMA_CH1_CTRL_TRIG_INCR_WRITE_MSB _u(5) +#define DMA_CH1_CTRL_TRIG_INCR_WRITE_LSB _u(5) +#define DMA_CH1_CTRL_TRIG_INCR_WRITE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH1_CTRL_TRIG_INCR_READ +// Description : If 1, the read address increments with each transfer. If 0, +// each read is directed to the same, initial address. +// +// Generally this should be disabled for peripheral-to-memory +// transfers. +#define DMA_CH1_CTRL_TRIG_INCR_READ_RESET _u(0x0) +#define DMA_CH1_CTRL_TRIG_INCR_READ_BITS _u(0x00000010) +#define DMA_CH1_CTRL_TRIG_INCR_READ_MSB _u(4) +#define DMA_CH1_CTRL_TRIG_INCR_READ_LSB _u(4) +#define DMA_CH1_CTRL_TRIG_INCR_READ_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH1_CTRL_TRIG_DATA_SIZE +// Description : Set the size of each bus transfer (byte/halfword/word). +// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) +// with each transfer. +// 0x0 -> SIZE_BYTE +// 0x1 -> SIZE_HALFWORD +// 0x2 -> SIZE_WORD +#define DMA_CH1_CTRL_TRIG_DATA_SIZE_RESET _u(0x0) +#define DMA_CH1_CTRL_TRIG_DATA_SIZE_BITS _u(0x0000000c) +#define DMA_CH1_CTRL_TRIG_DATA_SIZE_MSB _u(3) +#define DMA_CH1_CTRL_TRIG_DATA_SIZE_LSB _u(2) +#define DMA_CH1_CTRL_TRIG_DATA_SIZE_ACCESS "RW" +#define DMA_CH1_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE _u(0x0) +#define DMA_CH1_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD _u(0x1) +#define DMA_CH1_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD _u(0x2) +// ----------------------------------------------------------------------------- +// Field : DMA_CH1_CTRL_TRIG_HIGH_PRIORITY +// Description : HIGH_PRIORITY gives a channel preferential treatment in issue +// scheduling: in each scheduling round, all high priority +// channels are considered first, and then only a single low +// priority channel, before returning to the high priority +// channels. +// +// This only affects the order in which the DMA schedules +// channels. The DMA's bus priority is not changed. If the DMA is +// not saturated then a low priority channel will see no loss of +// throughput. +#define DMA_CH1_CTRL_TRIG_HIGH_PRIORITY_RESET _u(0x0) +#define DMA_CH1_CTRL_TRIG_HIGH_PRIORITY_BITS _u(0x00000002) +#define DMA_CH1_CTRL_TRIG_HIGH_PRIORITY_MSB _u(1) +#define DMA_CH1_CTRL_TRIG_HIGH_PRIORITY_LSB _u(1) +#define DMA_CH1_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH1_CTRL_TRIG_EN +// Description : DMA Channel Enable. +// When 1, the channel will respond to triggering events, which +// will cause it to become BUSY and start transferring data. When +// 0, the channel will ignore triggers, stop issuing transfers, +// and pause the current transfer sequence (i.e. BUSY will remain +// high if already high) +#define DMA_CH1_CTRL_TRIG_EN_RESET _u(0x0) +#define DMA_CH1_CTRL_TRIG_EN_BITS _u(0x00000001) +#define DMA_CH1_CTRL_TRIG_EN_MSB _u(0) +#define DMA_CH1_CTRL_TRIG_EN_LSB _u(0) +#define DMA_CH1_CTRL_TRIG_EN_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH1_AL1_CTRL +// Description : Alias for channel 1 CTRL register +#define DMA_CH1_AL1_CTRL_OFFSET _u(0x00000050) +#define DMA_CH1_AL1_CTRL_BITS _u(0xffffffff) +#define DMA_CH1_AL1_CTRL_RESET "-" +#define DMA_CH1_AL1_CTRL_MSB _u(31) +#define DMA_CH1_AL1_CTRL_LSB _u(0) +#define DMA_CH1_AL1_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH1_AL1_READ_ADDR +// Description : Alias for channel 1 READ_ADDR register +#define DMA_CH1_AL1_READ_ADDR_OFFSET _u(0x00000054) +#define DMA_CH1_AL1_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH1_AL1_READ_ADDR_RESET "-" +#define DMA_CH1_AL1_READ_ADDR_MSB _u(31) +#define DMA_CH1_AL1_READ_ADDR_LSB _u(0) +#define DMA_CH1_AL1_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH1_AL1_WRITE_ADDR +// Description : Alias for channel 1 WRITE_ADDR register +#define DMA_CH1_AL1_WRITE_ADDR_OFFSET _u(0x00000058) +#define DMA_CH1_AL1_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH1_AL1_WRITE_ADDR_RESET "-" +#define DMA_CH1_AL1_WRITE_ADDR_MSB _u(31) +#define DMA_CH1_AL1_WRITE_ADDR_LSB _u(0) +#define DMA_CH1_AL1_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH1_AL1_TRANS_COUNT_TRIG +// Description : Alias for channel 1 TRANS_COUNT register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH1_AL1_TRANS_COUNT_TRIG_OFFSET _u(0x0000005c) +#define DMA_CH1_AL1_TRANS_COUNT_TRIG_BITS _u(0xffffffff) +#define DMA_CH1_AL1_TRANS_COUNT_TRIG_RESET "-" +#define DMA_CH1_AL1_TRANS_COUNT_TRIG_MSB _u(31) +#define DMA_CH1_AL1_TRANS_COUNT_TRIG_LSB _u(0) +#define DMA_CH1_AL1_TRANS_COUNT_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH1_AL2_CTRL +// Description : Alias for channel 1 CTRL register +#define DMA_CH1_AL2_CTRL_OFFSET _u(0x00000060) +#define DMA_CH1_AL2_CTRL_BITS _u(0xffffffff) +#define DMA_CH1_AL2_CTRL_RESET "-" +#define DMA_CH1_AL2_CTRL_MSB _u(31) +#define DMA_CH1_AL2_CTRL_LSB _u(0) +#define DMA_CH1_AL2_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH1_AL2_TRANS_COUNT +// Description : Alias for channel 1 TRANS_COUNT register +#define DMA_CH1_AL2_TRANS_COUNT_OFFSET _u(0x00000064) +#define DMA_CH1_AL2_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH1_AL2_TRANS_COUNT_RESET "-" +#define DMA_CH1_AL2_TRANS_COUNT_MSB _u(31) +#define DMA_CH1_AL2_TRANS_COUNT_LSB _u(0) +#define DMA_CH1_AL2_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH1_AL2_READ_ADDR +// Description : Alias for channel 1 READ_ADDR register +#define DMA_CH1_AL2_READ_ADDR_OFFSET _u(0x00000068) +#define DMA_CH1_AL2_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH1_AL2_READ_ADDR_RESET "-" +#define DMA_CH1_AL2_READ_ADDR_MSB _u(31) +#define DMA_CH1_AL2_READ_ADDR_LSB _u(0) +#define DMA_CH1_AL2_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH1_AL2_WRITE_ADDR_TRIG +// Description : Alias for channel 1 WRITE_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH1_AL2_WRITE_ADDR_TRIG_OFFSET _u(0x0000006c) +#define DMA_CH1_AL2_WRITE_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH1_AL2_WRITE_ADDR_TRIG_RESET "-" +#define DMA_CH1_AL2_WRITE_ADDR_TRIG_MSB _u(31) +#define DMA_CH1_AL2_WRITE_ADDR_TRIG_LSB _u(0) +#define DMA_CH1_AL2_WRITE_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH1_AL3_CTRL +// Description : Alias for channel 1 CTRL register +#define DMA_CH1_AL3_CTRL_OFFSET _u(0x00000070) +#define DMA_CH1_AL3_CTRL_BITS _u(0xffffffff) +#define DMA_CH1_AL3_CTRL_RESET "-" +#define DMA_CH1_AL3_CTRL_MSB _u(31) +#define DMA_CH1_AL3_CTRL_LSB _u(0) +#define DMA_CH1_AL3_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH1_AL3_WRITE_ADDR +// Description : Alias for channel 1 WRITE_ADDR register +#define DMA_CH1_AL3_WRITE_ADDR_OFFSET _u(0x00000074) +#define DMA_CH1_AL3_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH1_AL3_WRITE_ADDR_RESET "-" +#define DMA_CH1_AL3_WRITE_ADDR_MSB _u(31) +#define DMA_CH1_AL3_WRITE_ADDR_LSB _u(0) +#define DMA_CH1_AL3_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH1_AL3_TRANS_COUNT +// Description : Alias for channel 1 TRANS_COUNT register +#define DMA_CH1_AL3_TRANS_COUNT_OFFSET _u(0x00000078) +#define DMA_CH1_AL3_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH1_AL3_TRANS_COUNT_RESET "-" +#define DMA_CH1_AL3_TRANS_COUNT_MSB _u(31) +#define DMA_CH1_AL3_TRANS_COUNT_LSB _u(0) +#define DMA_CH1_AL3_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH1_AL3_READ_ADDR_TRIG +// Description : Alias for channel 1 READ_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH1_AL3_READ_ADDR_TRIG_OFFSET _u(0x0000007c) +#define DMA_CH1_AL3_READ_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH1_AL3_READ_ADDR_TRIG_RESET "-" +#define DMA_CH1_AL3_READ_ADDR_TRIG_MSB _u(31) +#define DMA_CH1_AL3_READ_ADDR_TRIG_LSB _u(0) +#define DMA_CH1_AL3_READ_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH2_READ_ADDR +// Description : DMA Channel 2 Read Address pointer +// This register updates automatically each time a read completes. +// The current value is the next address to be read by this +// channel. +#define DMA_CH2_READ_ADDR_OFFSET _u(0x00000080) +#define DMA_CH2_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH2_READ_ADDR_RESET _u(0x00000000) +#define DMA_CH2_READ_ADDR_MSB _u(31) +#define DMA_CH2_READ_ADDR_LSB _u(0) +#define DMA_CH2_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH2_WRITE_ADDR +// Description : DMA Channel 2 Write Address pointer +// This register updates automatically each time a write +// completes. The current value is the next address to be written +// by this channel. +#define DMA_CH2_WRITE_ADDR_OFFSET _u(0x00000084) +#define DMA_CH2_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH2_WRITE_ADDR_RESET _u(0x00000000) +#define DMA_CH2_WRITE_ADDR_MSB _u(31) +#define DMA_CH2_WRITE_ADDR_LSB _u(0) +#define DMA_CH2_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH2_TRANS_COUNT +// Description : DMA Channel 2 Transfer Count +// Program the number of bus transfers a channel will perform +// before halting. Note that, if transfers are larger than one +// byte in size, this is not equal to the number of bytes +// transferred (see CTRL_DATA_SIZE). +// +// When the channel is active, reading this register shows the +// number of transfers remaining, updating automatically each time +// a write transfer completes. +// +// Writing this register sets the RELOAD value for the transfer +// counter. Each time this channel is triggered, the RELOAD value +// is copied into the live transfer counter. The channel can be +// started multiple times, and will perform the same number of +// transfers each time, as programmed by most recent write. +// +// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT +// is used as a trigger, the written value is used immediately as +// the length of the new transfer sequence, as well as being +// written to RELOAD. +#define DMA_CH2_TRANS_COUNT_OFFSET _u(0x00000088) +#define DMA_CH2_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH2_TRANS_COUNT_RESET _u(0x00000000) +#define DMA_CH2_TRANS_COUNT_MSB _u(31) +#define DMA_CH2_TRANS_COUNT_LSB _u(0) +#define DMA_CH2_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH2_CTRL_TRIG +// Description : DMA Channel 2 Control and Status +#define DMA_CH2_CTRL_TRIG_OFFSET _u(0x0000008c) +#define DMA_CH2_CTRL_TRIG_BITS _u(0xe1ffffff) +#define DMA_CH2_CTRL_TRIG_RESET _u(0x00001000) +// ----------------------------------------------------------------------------- +// Field : DMA_CH2_CTRL_TRIG_AHB_ERROR +// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel +// halts when it encounters any bus error, and always raises its +// channel IRQ flag. +#define DMA_CH2_CTRL_TRIG_AHB_ERROR_RESET _u(0x0) +#define DMA_CH2_CTRL_TRIG_AHB_ERROR_BITS _u(0x80000000) +#define DMA_CH2_CTRL_TRIG_AHB_ERROR_MSB _u(31) +#define DMA_CH2_CTRL_TRIG_AHB_ERROR_LSB _u(31) +#define DMA_CH2_CTRL_TRIG_AHB_ERROR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH2_CTRL_TRIG_READ_ERROR +// Description : If 1, the channel received a read bus error. Write one to +// clear. +// READ_ADDR shows the approximate address where the bus error was +// encountered (will not to be earlier, or more than 3 transfers +// later) +#define DMA_CH2_CTRL_TRIG_READ_ERROR_RESET _u(0x0) +#define DMA_CH2_CTRL_TRIG_READ_ERROR_BITS _u(0x40000000) +#define DMA_CH2_CTRL_TRIG_READ_ERROR_MSB _u(30) +#define DMA_CH2_CTRL_TRIG_READ_ERROR_LSB _u(30) +#define DMA_CH2_CTRL_TRIG_READ_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH2_CTRL_TRIG_WRITE_ERROR +// Description : If 1, the channel received a write bus error. Write one to +// clear. +// WRITE_ADDR shows the approximate address where the bus error +// was encountered (will not to be earlier, or more than 5 +// transfers later) +#define DMA_CH2_CTRL_TRIG_WRITE_ERROR_RESET _u(0x0) +#define DMA_CH2_CTRL_TRIG_WRITE_ERROR_BITS _u(0x20000000) +#define DMA_CH2_CTRL_TRIG_WRITE_ERROR_MSB _u(29) +#define DMA_CH2_CTRL_TRIG_WRITE_ERROR_LSB _u(29) +#define DMA_CH2_CTRL_TRIG_WRITE_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH2_CTRL_TRIG_BUSY +// Description : This flag goes high when the channel starts a new transfer +// sequence, and low when the last transfer of that sequence +// completes. Clearing EN while BUSY is high pauses the channel, +// and BUSY will stay high while paused. +// +// To terminate a sequence early (and clear the BUSY flag), see +// CHAN_ABORT. +#define DMA_CH2_CTRL_TRIG_BUSY_RESET _u(0x0) +#define DMA_CH2_CTRL_TRIG_BUSY_BITS _u(0x01000000) +#define DMA_CH2_CTRL_TRIG_BUSY_MSB _u(24) +#define DMA_CH2_CTRL_TRIG_BUSY_LSB _u(24) +#define DMA_CH2_CTRL_TRIG_BUSY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH2_CTRL_TRIG_SNIFF_EN +// Description : If 1, this channel's data transfers are visible to the sniff +// hardware, and each transfer will advance the state of the +// checksum. This only applies if the sniff hardware is enabled, +// and has this channel selected. +// +// This allows checksum to be enabled or disabled on a +// per-control- block basis. +#define DMA_CH2_CTRL_TRIG_SNIFF_EN_RESET _u(0x0) +#define DMA_CH2_CTRL_TRIG_SNIFF_EN_BITS _u(0x00800000) +#define DMA_CH2_CTRL_TRIG_SNIFF_EN_MSB _u(23) +#define DMA_CH2_CTRL_TRIG_SNIFF_EN_LSB _u(23) +#define DMA_CH2_CTRL_TRIG_SNIFF_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH2_CTRL_TRIG_BSWAP +// Description : Apply byte-swap transformation to DMA data. +// For byte data, this has no effect. For halfword data, the two +// bytes of each halfword are swapped. For word data, the four +// bytes of each word are swapped to reverse order. +#define DMA_CH2_CTRL_TRIG_BSWAP_RESET _u(0x0) +#define DMA_CH2_CTRL_TRIG_BSWAP_BITS _u(0x00400000) +#define DMA_CH2_CTRL_TRIG_BSWAP_MSB _u(22) +#define DMA_CH2_CTRL_TRIG_BSWAP_LSB _u(22) +#define DMA_CH2_CTRL_TRIG_BSWAP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH2_CTRL_TRIG_IRQ_QUIET +// Description : In QUIET mode, the channel does not generate IRQs at the end of +// every transfer block. Instead, an IRQ is raised when NULL is +// written to a trigger register, indicating the end of a control +// block chain. +// +// This reduces the number of interrupts to be serviced by the CPU +// when transferring a DMA chain of many small control blocks. +#define DMA_CH2_CTRL_TRIG_IRQ_QUIET_RESET _u(0x0) +#define DMA_CH2_CTRL_TRIG_IRQ_QUIET_BITS _u(0x00200000) +#define DMA_CH2_CTRL_TRIG_IRQ_QUIET_MSB _u(21) +#define DMA_CH2_CTRL_TRIG_IRQ_QUIET_LSB _u(21) +#define DMA_CH2_CTRL_TRIG_IRQ_QUIET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH2_CTRL_TRIG_TREQ_SEL +// Description : Select a Transfer Request signal. +// The channel uses the transfer request signal to pace its data +// transfer rate. Sources for TREQ signals are internal (TIMERS) +// or external (DREQ, a Data Request from the system). +// 0x0 to 0x3a -> select DREQ n as TREQ +// 0x3b -> Select Timer 0 as TREQ +// 0x3c -> Select Timer 1 as TREQ +// 0x3d -> Select Timer 2 as TREQ (Optional) +// 0x3e -> Select Timer 3 as TREQ (Optional) +// 0x3f -> Permanent request, for unpaced transfers. +#define DMA_CH2_CTRL_TRIG_TREQ_SEL_RESET _u(0x00) +#define DMA_CH2_CTRL_TRIG_TREQ_SEL_BITS _u(0x001f8000) +#define DMA_CH2_CTRL_TRIG_TREQ_SEL_MSB _u(20) +#define DMA_CH2_CTRL_TRIG_TREQ_SEL_LSB _u(15) +#define DMA_CH2_CTRL_TRIG_TREQ_SEL_ACCESS "RW" +#define DMA_CH2_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 _u(0x3b) +#define DMA_CH2_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 _u(0x3c) +#define DMA_CH2_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 _u(0x3d) +#define DMA_CH2_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 _u(0x3e) +#define DMA_CH2_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT _u(0x3f) +// ----------------------------------------------------------------------------- +// Field : DMA_CH2_CTRL_TRIG_CHAIN_TO +// Description : When this channel completes, it will trigger the channel +// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this +// channel)_. +// Reset value is equal to channel number (2). +#define DMA_CH2_CTRL_TRIG_CHAIN_TO_RESET _u(0x2) +#define DMA_CH2_CTRL_TRIG_CHAIN_TO_BITS _u(0x00007800) +#define DMA_CH2_CTRL_TRIG_CHAIN_TO_MSB _u(14) +#define DMA_CH2_CTRL_TRIG_CHAIN_TO_LSB _u(11) +#define DMA_CH2_CTRL_TRIG_CHAIN_TO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH2_CTRL_TRIG_RING_SEL +// Description : Select whether RING_SIZE applies to read or write addresses. +// If 0, read addresses are wrapped on a (1 << RING_SIZE) +// boundary. If 1, write addresses are wrapped. +#define DMA_CH2_CTRL_TRIG_RING_SEL_RESET _u(0x0) +#define DMA_CH2_CTRL_TRIG_RING_SEL_BITS _u(0x00000400) +#define DMA_CH2_CTRL_TRIG_RING_SEL_MSB _u(10) +#define DMA_CH2_CTRL_TRIG_RING_SEL_LSB _u(10) +#define DMA_CH2_CTRL_TRIG_RING_SEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH2_CTRL_TRIG_RING_SIZE +// Description : Size of address wrap region. If 0, don't wrap. For values n > +// 0, only the lower n bits of the address will change. This wraps +// the address on a (1 << n) byte boundary, facilitating access to +// naturally-aligned ring buffers. +// +// Ring sizes between 2 and 32768 bytes are possible. This can +// apply to either read or write addresses, based on value of +// RING_SEL. +// 0x0 -> RING_NONE +#define DMA_CH2_CTRL_TRIG_RING_SIZE_RESET _u(0x0) +#define DMA_CH2_CTRL_TRIG_RING_SIZE_BITS _u(0x000003c0) +#define DMA_CH2_CTRL_TRIG_RING_SIZE_MSB _u(9) +#define DMA_CH2_CTRL_TRIG_RING_SIZE_LSB _u(6) +#define DMA_CH2_CTRL_TRIG_RING_SIZE_ACCESS "RW" +#define DMA_CH2_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE _u(0x0) +// ----------------------------------------------------------------------------- +// Field : DMA_CH2_CTRL_TRIG_INCR_WRITE +// Description : If 1, the write address increments with each transfer. If 0, +// each write is directed to the same, initial address. +// +// Generally this should be disabled for memory-to-peripheral +// transfers. +#define DMA_CH2_CTRL_TRIG_INCR_WRITE_RESET _u(0x0) +#define DMA_CH2_CTRL_TRIG_INCR_WRITE_BITS _u(0x00000020) +#define DMA_CH2_CTRL_TRIG_INCR_WRITE_MSB _u(5) +#define DMA_CH2_CTRL_TRIG_INCR_WRITE_LSB _u(5) +#define DMA_CH2_CTRL_TRIG_INCR_WRITE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH2_CTRL_TRIG_INCR_READ +// Description : If 1, the read address increments with each transfer. If 0, +// each read is directed to the same, initial address. +// +// Generally this should be disabled for peripheral-to-memory +// transfers. +#define DMA_CH2_CTRL_TRIG_INCR_READ_RESET _u(0x0) +#define DMA_CH2_CTRL_TRIG_INCR_READ_BITS _u(0x00000010) +#define DMA_CH2_CTRL_TRIG_INCR_READ_MSB _u(4) +#define DMA_CH2_CTRL_TRIG_INCR_READ_LSB _u(4) +#define DMA_CH2_CTRL_TRIG_INCR_READ_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH2_CTRL_TRIG_DATA_SIZE +// Description : Set the size of each bus transfer (byte/halfword/word). +// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) +// with each transfer. +// 0x0 -> SIZE_BYTE +// 0x1 -> SIZE_HALFWORD +// 0x2 -> SIZE_WORD +#define DMA_CH2_CTRL_TRIG_DATA_SIZE_RESET _u(0x0) +#define DMA_CH2_CTRL_TRIG_DATA_SIZE_BITS _u(0x0000000c) +#define DMA_CH2_CTRL_TRIG_DATA_SIZE_MSB _u(3) +#define DMA_CH2_CTRL_TRIG_DATA_SIZE_LSB _u(2) +#define DMA_CH2_CTRL_TRIG_DATA_SIZE_ACCESS "RW" +#define DMA_CH2_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE _u(0x0) +#define DMA_CH2_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD _u(0x1) +#define DMA_CH2_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD _u(0x2) +// ----------------------------------------------------------------------------- +// Field : DMA_CH2_CTRL_TRIG_HIGH_PRIORITY +// Description : HIGH_PRIORITY gives a channel preferential treatment in issue +// scheduling: in each scheduling round, all high priority +// channels are considered first, and then only a single low +// priority channel, before returning to the high priority +// channels. +// +// This only affects the order in which the DMA schedules +// channels. The DMA's bus priority is not changed. If the DMA is +// not saturated then a low priority channel will see no loss of +// throughput. +#define DMA_CH2_CTRL_TRIG_HIGH_PRIORITY_RESET _u(0x0) +#define DMA_CH2_CTRL_TRIG_HIGH_PRIORITY_BITS _u(0x00000002) +#define DMA_CH2_CTRL_TRIG_HIGH_PRIORITY_MSB _u(1) +#define DMA_CH2_CTRL_TRIG_HIGH_PRIORITY_LSB _u(1) +#define DMA_CH2_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH2_CTRL_TRIG_EN +// Description : DMA Channel Enable. +// When 1, the channel will respond to triggering events, which +// will cause it to become BUSY and start transferring data. When +// 0, the channel will ignore triggers, stop issuing transfers, +// and pause the current transfer sequence (i.e. BUSY will remain +// high if already high) +#define DMA_CH2_CTRL_TRIG_EN_RESET _u(0x0) +#define DMA_CH2_CTRL_TRIG_EN_BITS _u(0x00000001) +#define DMA_CH2_CTRL_TRIG_EN_MSB _u(0) +#define DMA_CH2_CTRL_TRIG_EN_LSB _u(0) +#define DMA_CH2_CTRL_TRIG_EN_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH2_AL1_CTRL +// Description : Alias for channel 2 CTRL register +#define DMA_CH2_AL1_CTRL_OFFSET _u(0x00000090) +#define DMA_CH2_AL1_CTRL_BITS _u(0xffffffff) +#define DMA_CH2_AL1_CTRL_RESET "-" +#define DMA_CH2_AL1_CTRL_MSB _u(31) +#define DMA_CH2_AL1_CTRL_LSB _u(0) +#define DMA_CH2_AL1_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH2_AL1_READ_ADDR +// Description : Alias for channel 2 READ_ADDR register +#define DMA_CH2_AL1_READ_ADDR_OFFSET _u(0x00000094) +#define DMA_CH2_AL1_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH2_AL1_READ_ADDR_RESET "-" +#define DMA_CH2_AL1_READ_ADDR_MSB _u(31) +#define DMA_CH2_AL1_READ_ADDR_LSB _u(0) +#define DMA_CH2_AL1_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH2_AL1_WRITE_ADDR +// Description : Alias for channel 2 WRITE_ADDR register +#define DMA_CH2_AL1_WRITE_ADDR_OFFSET _u(0x00000098) +#define DMA_CH2_AL1_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH2_AL1_WRITE_ADDR_RESET "-" +#define DMA_CH2_AL1_WRITE_ADDR_MSB _u(31) +#define DMA_CH2_AL1_WRITE_ADDR_LSB _u(0) +#define DMA_CH2_AL1_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH2_AL1_TRANS_COUNT_TRIG +// Description : Alias for channel 2 TRANS_COUNT register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH2_AL1_TRANS_COUNT_TRIG_OFFSET _u(0x0000009c) +#define DMA_CH2_AL1_TRANS_COUNT_TRIG_BITS _u(0xffffffff) +#define DMA_CH2_AL1_TRANS_COUNT_TRIG_RESET "-" +#define DMA_CH2_AL1_TRANS_COUNT_TRIG_MSB _u(31) +#define DMA_CH2_AL1_TRANS_COUNT_TRIG_LSB _u(0) +#define DMA_CH2_AL1_TRANS_COUNT_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH2_AL2_CTRL +// Description : Alias for channel 2 CTRL register +#define DMA_CH2_AL2_CTRL_OFFSET _u(0x000000a0) +#define DMA_CH2_AL2_CTRL_BITS _u(0xffffffff) +#define DMA_CH2_AL2_CTRL_RESET "-" +#define DMA_CH2_AL2_CTRL_MSB _u(31) +#define DMA_CH2_AL2_CTRL_LSB _u(0) +#define DMA_CH2_AL2_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH2_AL2_TRANS_COUNT +// Description : Alias for channel 2 TRANS_COUNT register +#define DMA_CH2_AL2_TRANS_COUNT_OFFSET _u(0x000000a4) +#define DMA_CH2_AL2_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH2_AL2_TRANS_COUNT_RESET "-" +#define DMA_CH2_AL2_TRANS_COUNT_MSB _u(31) +#define DMA_CH2_AL2_TRANS_COUNT_LSB _u(0) +#define DMA_CH2_AL2_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH2_AL2_READ_ADDR +// Description : Alias for channel 2 READ_ADDR register +#define DMA_CH2_AL2_READ_ADDR_OFFSET _u(0x000000a8) +#define DMA_CH2_AL2_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH2_AL2_READ_ADDR_RESET "-" +#define DMA_CH2_AL2_READ_ADDR_MSB _u(31) +#define DMA_CH2_AL2_READ_ADDR_LSB _u(0) +#define DMA_CH2_AL2_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH2_AL2_WRITE_ADDR_TRIG +// Description : Alias for channel 2 WRITE_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH2_AL2_WRITE_ADDR_TRIG_OFFSET _u(0x000000ac) +#define DMA_CH2_AL2_WRITE_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH2_AL2_WRITE_ADDR_TRIG_RESET "-" +#define DMA_CH2_AL2_WRITE_ADDR_TRIG_MSB _u(31) +#define DMA_CH2_AL2_WRITE_ADDR_TRIG_LSB _u(0) +#define DMA_CH2_AL2_WRITE_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH2_AL3_CTRL +// Description : Alias for channel 2 CTRL register +#define DMA_CH2_AL3_CTRL_OFFSET _u(0x000000b0) +#define DMA_CH2_AL3_CTRL_BITS _u(0xffffffff) +#define DMA_CH2_AL3_CTRL_RESET "-" +#define DMA_CH2_AL3_CTRL_MSB _u(31) +#define DMA_CH2_AL3_CTRL_LSB _u(0) +#define DMA_CH2_AL3_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH2_AL3_WRITE_ADDR +// Description : Alias for channel 2 WRITE_ADDR register +#define DMA_CH2_AL3_WRITE_ADDR_OFFSET _u(0x000000b4) +#define DMA_CH2_AL3_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH2_AL3_WRITE_ADDR_RESET "-" +#define DMA_CH2_AL3_WRITE_ADDR_MSB _u(31) +#define DMA_CH2_AL3_WRITE_ADDR_LSB _u(0) +#define DMA_CH2_AL3_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH2_AL3_TRANS_COUNT +// Description : Alias for channel 2 TRANS_COUNT register +#define DMA_CH2_AL3_TRANS_COUNT_OFFSET _u(0x000000b8) +#define DMA_CH2_AL3_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH2_AL3_TRANS_COUNT_RESET "-" +#define DMA_CH2_AL3_TRANS_COUNT_MSB _u(31) +#define DMA_CH2_AL3_TRANS_COUNT_LSB _u(0) +#define DMA_CH2_AL3_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH2_AL3_READ_ADDR_TRIG +// Description : Alias for channel 2 READ_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH2_AL3_READ_ADDR_TRIG_OFFSET _u(0x000000bc) +#define DMA_CH2_AL3_READ_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH2_AL3_READ_ADDR_TRIG_RESET "-" +#define DMA_CH2_AL3_READ_ADDR_TRIG_MSB _u(31) +#define DMA_CH2_AL3_READ_ADDR_TRIG_LSB _u(0) +#define DMA_CH2_AL3_READ_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH3_READ_ADDR +// Description : DMA Channel 3 Read Address pointer +// This register updates automatically each time a read completes. +// The current value is the next address to be read by this +// channel. +#define DMA_CH3_READ_ADDR_OFFSET _u(0x000000c0) +#define DMA_CH3_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH3_READ_ADDR_RESET _u(0x00000000) +#define DMA_CH3_READ_ADDR_MSB _u(31) +#define DMA_CH3_READ_ADDR_LSB _u(0) +#define DMA_CH3_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH3_WRITE_ADDR +// Description : DMA Channel 3 Write Address pointer +// This register updates automatically each time a write +// completes. The current value is the next address to be written +// by this channel. +#define DMA_CH3_WRITE_ADDR_OFFSET _u(0x000000c4) +#define DMA_CH3_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH3_WRITE_ADDR_RESET _u(0x00000000) +#define DMA_CH3_WRITE_ADDR_MSB _u(31) +#define DMA_CH3_WRITE_ADDR_LSB _u(0) +#define DMA_CH3_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH3_TRANS_COUNT +// Description : DMA Channel 3 Transfer Count +// Program the number of bus transfers a channel will perform +// before halting. Note that, if transfers are larger than one +// byte in size, this is not equal to the number of bytes +// transferred (see CTRL_DATA_SIZE). +// +// When the channel is active, reading this register shows the +// number of transfers remaining, updating automatically each time +// a write transfer completes. +// +// Writing this register sets the RELOAD value for the transfer +// counter. Each time this channel is triggered, the RELOAD value +// is copied into the live transfer counter. The channel can be +// started multiple times, and will perform the same number of +// transfers each time, as programmed by most recent write. +// +// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT +// is used as a trigger, the written value is used immediately as +// the length of the new transfer sequence, as well as being +// written to RELOAD. +#define DMA_CH3_TRANS_COUNT_OFFSET _u(0x000000c8) +#define DMA_CH3_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH3_TRANS_COUNT_RESET _u(0x00000000) +#define DMA_CH3_TRANS_COUNT_MSB _u(31) +#define DMA_CH3_TRANS_COUNT_LSB _u(0) +#define DMA_CH3_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH3_CTRL_TRIG +// Description : DMA Channel 3 Control and Status +#define DMA_CH3_CTRL_TRIG_OFFSET _u(0x000000cc) +#define DMA_CH3_CTRL_TRIG_BITS _u(0xe1ffffff) +#define DMA_CH3_CTRL_TRIG_RESET _u(0x00001800) +// ----------------------------------------------------------------------------- +// Field : DMA_CH3_CTRL_TRIG_AHB_ERROR +// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel +// halts when it encounters any bus error, and always raises its +// channel IRQ flag. +#define DMA_CH3_CTRL_TRIG_AHB_ERROR_RESET _u(0x0) +#define DMA_CH3_CTRL_TRIG_AHB_ERROR_BITS _u(0x80000000) +#define DMA_CH3_CTRL_TRIG_AHB_ERROR_MSB _u(31) +#define DMA_CH3_CTRL_TRIG_AHB_ERROR_LSB _u(31) +#define DMA_CH3_CTRL_TRIG_AHB_ERROR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH3_CTRL_TRIG_READ_ERROR +// Description : If 1, the channel received a read bus error. Write one to +// clear. +// READ_ADDR shows the approximate address where the bus error was +// encountered (will not to be earlier, or more than 3 transfers +// later) +#define DMA_CH3_CTRL_TRIG_READ_ERROR_RESET _u(0x0) +#define DMA_CH3_CTRL_TRIG_READ_ERROR_BITS _u(0x40000000) +#define DMA_CH3_CTRL_TRIG_READ_ERROR_MSB _u(30) +#define DMA_CH3_CTRL_TRIG_READ_ERROR_LSB _u(30) +#define DMA_CH3_CTRL_TRIG_READ_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH3_CTRL_TRIG_WRITE_ERROR +// Description : If 1, the channel received a write bus error. Write one to +// clear. +// WRITE_ADDR shows the approximate address where the bus error +// was encountered (will not to be earlier, or more than 5 +// transfers later) +#define DMA_CH3_CTRL_TRIG_WRITE_ERROR_RESET _u(0x0) +#define DMA_CH3_CTRL_TRIG_WRITE_ERROR_BITS _u(0x20000000) +#define DMA_CH3_CTRL_TRIG_WRITE_ERROR_MSB _u(29) +#define DMA_CH3_CTRL_TRIG_WRITE_ERROR_LSB _u(29) +#define DMA_CH3_CTRL_TRIG_WRITE_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH3_CTRL_TRIG_BUSY +// Description : This flag goes high when the channel starts a new transfer +// sequence, and low when the last transfer of that sequence +// completes. Clearing EN while BUSY is high pauses the channel, +// and BUSY will stay high while paused. +// +// To terminate a sequence early (and clear the BUSY flag), see +// CHAN_ABORT. +#define DMA_CH3_CTRL_TRIG_BUSY_RESET _u(0x0) +#define DMA_CH3_CTRL_TRIG_BUSY_BITS _u(0x01000000) +#define DMA_CH3_CTRL_TRIG_BUSY_MSB _u(24) +#define DMA_CH3_CTRL_TRIG_BUSY_LSB _u(24) +#define DMA_CH3_CTRL_TRIG_BUSY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH3_CTRL_TRIG_SNIFF_EN +// Description : If 1, this channel's data transfers are visible to the sniff +// hardware, and each transfer will advance the state of the +// checksum. This only applies if the sniff hardware is enabled, +// and has this channel selected. +// +// This allows checksum to be enabled or disabled on a +// per-control- block basis. +#define DMA_CH3_CTRL_TRIG_SNIFF_EN_RESET _u(0x0) +#define DMA_CH3_CTRL_TRIG_SNIFF_EN_BITS _u(0x00800000) +#define DMA_CH3_CTRL_TRIG_SNIFF_EN_MSB _u(23) +#define DMA_CH3_CTRL_TRIG_SNIFF_EN_LSB _u(23) +#define DMA_CH3_CTRL_TRIG_SNIFF_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH3_CTRL_TRIG_BSWAP +// Description : Apply byte-swap transformation to DMA data. +// For byte data, this has no effect. For halfword data, the two +// bytes of each halfword are swapped. For word data, the four +// bytes of each word are swapped to reverse order. +#define DMA_CH3_CTRL_TRIG_BSWAP_RESET _u(0x0) +#define DMA_CH3_CTRL_TRIG_BSWAP_BITS _u(0x00400000) +#define DMA_CH3_CTRL_TRIG_BSWAP_MSB _u(22) +#define DMA_CH3_CTRL_TRIG_BSWAP_LSB _u(22) +#define DMA_CH3_CTRL_TRIG_BSWAP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH3_CTRL_TRIG_IRQ_QUIET +// Description : In QUIET mode, the channel does not generate IRQs at the end of +// every transfer block. Instead, an IRQ is raised when NULL is +// written to a trigger register, indicating the end of a control +// block chain. +// +// This reduces the number of interrupts to be serviced by the CPU +// when transferring a DMA chain of many small control blocks. +#define DMA_CH3_CTRL_TRIG_IRQ_QUIET_RESET _u(0x0) +#define DMA_CH3_CTRL_TRIG_IRQ_QUIET_BITS _u(0x00200000) +#define DMA_CH3_CTRL_TRIG_IRQ_QUIET_MSB _u(21) +#define DMA_CH3_CTRL_TRIG_IRQ_QUIET_LSB _u(21) +#define DMA_CH3_CTRL_TRIG_IRQ_QUIET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH3_CTRL_TRIG_TREQ_SEL +// Description : Select a Transfer Request signal. +// The channel uses the transfer request signal to pace its data +// transfer rate. Sources for TREQ signals are internal (TIMERS) +// or external (DREQ, a Data Request from the system). +// 0x0 to 0x3a -> select DREQ n as TREQ +// 0x3b -> Select Timer 0 as TREQ +// 0x3c -> Select Timer 1 as TREQ +// 0x3d -> Select Timer 2 as TREQ (Optional) +// 0x3e -> Select Timer 3 as TREQ (Optional) +// 0x3f -> Permanent request, for unpaced transfers. +#define DMA_CH3_CTRL_TRIG_TREQ_SEL_RESET _u(0x00) +#define DMA_CH3_CTRL_TRIG_TREQ_SEL_BITS _u(0x001f8000) +#define DMA_CH3_CTRL_TRIG_TREQ_SEL_MSB _u(20) +#define DMA_CH3_CTRL_TRIG_TREQ_SEL_LSB _u(15) +#define DMA_CH3_CTRL_TRIG_TREQ_SEL_ACCESS "RW" +#define DMA_CH3_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 _u(0x3b) +#define DMA_CH3_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 _u(0x3c) +#define DMA_CH3_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 _u(0x3d) +#define DMA_CH3_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 _u(0x3e) +#define DMA_CH3_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT _u(0x3f) +// ----------------------------------------------------------------------------- +// Field : DMA_CH3_CTRL_TRIG_CHAIN_TO +// Description : When this channel completes, it will trigger the channel +// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this +// channel)_. +// Reset value is equal to channel number (3). +#define DMA_CH3_CTRL_TRIG_CHAIN_TO_RESET _u(0x3) +#define DMA_CH3_CTRL_TRIG_CHAIN_TO_BITS _u(0x00007800) +#define DMA_CH3_CTRL_TRIG_CHAIN_TO_MSB _u(14) +#define DMA_CH3_CTRL_TRIG_CHAIN_TO_LSB _u(11) +#define DMA_CH3_CTRL_TRIG_CHAIN_TO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH3_CTRL_TRIG_RING_SEL +// Description : Select whether RING_SIZE applies to read or write addresses. +// If 0, read addresses are wrapped on a (1 << RING_SIZE) +// boundary. If 1, write addresses are wrapped. +#define DMA_CH3_CTRL_TRIG_RING_SEL_RESET _u(0x0) +#define DMA_CH3_CTRL_TRIG_RING_SEL_BITS _u(0x00000400) +#define DMA_CH3_CTRL_TRIG_RING_SEL_MSB _u(10) +#define DMA_CH3_CTRL_TRIG_RING_SEL_LSB _u(10) +#define DMA_CH3_CTRL_TRIG_RING_SEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH3_CTRL_TRIG_RING_SIZE +// Description : Size of address wrap region. If 0, don't wrap. For values n > +// 0, only the lower n bits of the address will change. This wraps +// the address on a (1 << n) byte boundary, facilitating access to +// naturally-aligned ring buffers. +// +// Ring sizes between 2 and 32768 bytes are possible. This can +// apply to either read or write addresses, based on value of +// RING_SEL. +// 0x0 -> RING_NONE +#define DMA_CH3_CTRL_TRIG_RING_SIZE_RESET _u(0x0) +#define DMA_CH3_CTRL_TRIG_RING_SIZE_BITS _u(0x000003c0) +#define DMA_CH3_CTRL_TRIG_RING_SIZE_MSB _u(9) +#define DMA_CH3_CTRL_TRIG_RING_SIZE_LSB _u(6) +#define DMA_CH3_CTRL_TRIG_RING_SIZE_ACCESS "RW" +#define DMA_CH3_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE _u(0x0) +// ----------------------------------------------------------------------------- +// Field : DMA_CH3_CTRL_TRIG_INCR_WRITE +// Description : If 1, the write address increments with each transfer. If 0, +// each write is directed to the same, initial address. +// +// Generally this should be disabled for memory-to-peripheral +// transfers. +#define DMA_CH3_CTRL_TRIG_INCR_WRITE_RESET _u(0x0) +#define DMA_CH3_CTRL_TRIG_INCR_WRITE_BITS _u(0x00000020) +#define DMA_CH3_CTRL_TRIG_INCR_WRITE_MSB _u(5) +#define DMA_CH3_CTRL_TRIG_INCR_WRITE_LSB _u(5) +#define DMA_CH3_CTRL_TRIG_INCR_WRITE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH3_CTRL_TRIG_INCR_READ +// Description : If 1, the read address increments with each transfer. If 0, +// each read is directed to the same, initial address. +// +// Generally this should be disabled for peripheral-to-memory +// transfers. +#define DMA_CH3_CTRL_TRIG_INCR_READ_RESET _u(0x0) +#define DMA_CH3_CTRL_TRIG_INCR_READ_BITS _u(0x00000010) +#define DMA_CH3_CTRL_TRIG_INCR_READ_MSB _u(4) +#define DMA_CH3_CTRL_TRIG_INCR_READ_LSB _u(4) +#define DMA_CH3_CTRL_TRIG_INCR_READ_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH3_CTRL_TRIG_DATA_SIZE +// Description : Set the size of each bus transfer (byte/halfword/word). +// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) +// with each transfer. +// 0x0 -> SIZE_BYTE +// 0x1 -> SIZE_HALFWORD +// 0x2 -> SIZE_WORD +#define DMA_CH3_CTRL_TRIG_DATA_SIZE_RESET _u(0x0) +#define DMA_CH3_CTRL_TRIG_DATA_SIZE_BITS _u(0x0000000c) +#define DMA_CH3_CTRL_TRIG_DATA_SIZE_MSB _u(3) +#define DMA_CH3_CTRL_TRIG_DATA_SIZE_LSB _u(2) +#define DMA_CH3_CTRL_TRIG_DATA_SIZE_ACCESS "RW" +#define DMA_CH3_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE _u(0x0) +#define DMA_CH3_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD _u(0x1) +#define DMA_CH3_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD _u(0x2) +// ----------------------------------------------------------------------------- +// Field : DMA_CH3_CTRL_TRIG_HIGH_PRIORITY +// Description : HIGH_PRIORITY gives a channel preferential treatment in issue +// scheduling: in each scheduling round, all high priority +// channels are considered first, and then only a single low +// priority channel, before returning to the high priority +// channels. +// +// This only affects the order in which the DMA schedules +// channels. The DMA's bus priority is not changed. If the DMA is +// not saturated then a low priority channel will see no loss of +// throughput. +#define DMA_CH3_CTRL_TRIG_HIGH_PRIORITY_RESET _u(0x0) +#define DMA_CH3_CTRL_TRIG_HIGH_PRIORITY_BITS _u(0x00000002) +#define DMA_CH3_CTRL_TRIG_HIGH_PRIORITY_MSB _u(1) +#define DMA_CH3_CTRL_TRIG_HIGH_PRIORITY_LSB _u(1) +#define DMA_CH3_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH3_CTRL_TRIG_EN +// Description : DMA Channel Enable. +// When 1, the channel will respond to triggering events, which +// will cause it to become BUSY and start transferring data. When +// 0, the channel will ignore triggers, stop issuing transfers, +// and pause the current transfer sequence (i.e. BUSY will remain +// high if already high) +#define DMA_CH3_CTRL_TRIG_EN_RESET _u(0x0) +#define DMA_CH3_CTRL_TRIG_EN_BITS _u(0x00000001) +#define DMA_CH3_CTRL_TRIG_EN_MSB _u(0) +#define DMA_CH3_CTRL_TRIG_EN_LSB _u(0) +#define DMA_CH3_CTRL_TRIG_EN_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH3_AL1_CTRL +// Description : Alias for channel 3 CTRL register +#define DMA_CH3_AL1_CTRL_OFFSET _u(0x000000d0) +#define DMA_CH3_AL1_CTRL_BITS _u(0xffffffff) +#define DMA_CH3_AL1_CTRL_RESET "-" +#define DMA_CH3_AL1_CTRL_MSB _u(31) +#define DMA_CH3_AL1_CTRL_LSB _u(0) +#define DMA_CH3_AL1_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH3_AL1_READ_ADDR +// Description : Alias for channel 3 READ_ADDR register +#define DMA_CH3_AL1_READ_ADDR_OFFSET _u(0x000000d4) +#define DMA_CH3_AL1_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH3_AL1_READ_ADDR_RESET "-" +#define DMA_CH3_AL1_READ_ADDR_MSB _u(31) +#define DMA_CH3_AL1_READ_ADDR_LSB _u(0) +#define DMA_CH3_AL1_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH3_AL1_WRITE_ADDR +// Description : Alias for channel 3 WRITE_ADDR register +#define DMA_CH3_AL1_WRITE_ADDR_OFFSET _u(0x000000d8) +#define DMA_CH3_AL1_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH3_AL1_WRITE_ADDR_RESET "-" +#define DMA_CH3_AL1_WRITE_ADDR_MSB _u(31) +#define DMA_CH3_AL1_WRITE_ADDR_LSB _u(0) +#define DMA_CH3_AL1_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH3_AL1_TRANS_COUNT_TRIG +// Description : Alias for channel 3 TRANS_COUNT register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH3_AL1_TRANS_COUNT_TRIG_OFFSET _u(0x000000dc) +#define DMA_CH3_AL1_TRANS_COUNT_TRIG_BITS _u(0xffffffff) +#define DMA_CH3_AL1_TRANS_COUNT_TRIG_RESET "-" +#define DMA_CH3_AL1_TRANS_COUNT_TRIG_MSB _u(31) +#define DMA_CH3_AL1_TRANS_COUNT_TRIG_LSB _u(0) +#define DMA_CH3_AL1_TRANS_COUNT_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH3_AL2_CTRL +// Description : Alias for channel 3 CTRL register +#define DMA_CH3_AL2_CTRL_OFFSET _u(0x000000e0) +#define DMA_CH3_AL2_CTRL_BITS _u(0xffffffff) +#define DMA_CH3_AL2_CTRL_RESET "-" +#define DMA_CH3_AL2_CTRL_MSB _u(31) +#define DMA_CH3_AL2_CTRL_LSB _u(0) +#define DMA_CH3_AL2_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH3_AL2_TRANS_COUNT +// Description : Alias for channel 3 TRANS_COUNT register +#define DMA_CH3_AL2_TRANS_COUNT_OFFSET _u(0x000000e4) +#define DMA_CH3_AL2_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH3_AL2_TRANS_COUNT_RESET "-" +#define DMA_CH3_AL2_TRANS_COUNT_MSB _u(31) +#define DMA_CH3_AL2_TRANS_COUNT_LSB _u(0) +#define DMA_CH3_AL2_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH3_AL2_READ_ADDR +// Description : Alias for channel 3 READ_ADDR register +#define DMA_CH3_AL2_READ_ADDR_OFFSET _u(0x000000e8) +#define DMA_CH3_AL2_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH3_AL2_READ_ADDR_RESET "-" +#define DMA_CH3_AL2_READ_ADDR_MSB _u(31) +#define DMA_CH3_AL2_READ_ADDR_LSB _u(0) +#define DMA_CH3_AL2_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH3_AL2_WRITE_ADDR_TRIG +// Description : Alias for channel 3 WRITE_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH3_AL2_WRITE_ADDR_TRIG_OFFSET _u(0x000000ec) +#define DMA_CH3_AL2_WRITE_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH3_AL2_WRITE_ADDR_TRIG_RESET "-" +#define DMA_CH3_AL2_WRITE_ADDR_TRIG_MSB _u(31) +#define DMA_CH3_AL2_WRITE_ADDR_TRIG_LSB _u(0) +#define DMA_CH3_AL2_WRITE_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH3_AL3_CTRL +// Description : Alias for channel 3 CTRL register +#define DMA_CH3_AL3_CTRL_OFFSET _u(0x000000f0) +#define DMA_CH3_AL3_CTRL_BITS _u(0xffffffff) +#define DMA_CH3_AL3_CTRL_RESET "-" +#define DMA_CH3_AL3_CTRL_MSB _u(31) +#define DMA_CH3_AL3_CTRL_LSB _u(0) +#define DMA_CH3_AL3_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH3_AL3_WRITE_ADDR +// Description : Alias for channel 3 WRITE_ADDR register +#define DMA_CH3_AL3_WRITE_ADDR_OFFSET _u(0x000000f4) +#define DMA_CH3_AL3_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH3_AL3_WRITE_ADDR_RESET "-" +#define DMA_CH3_AL3_WRITE_ADDR_MSB _u(31) +#define DMA_CH3_AL3_WRITE_ADDR_LSB _u(0) +#define DMA_CH3_AL3_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH3_AL3_TRANS_COUNT +// Description : Alias for channel 3 TRANS_COUNT register +#define DMA_CH3_AL3_TRANS_COUNT_OFFSET _u(0x000000f8) +#define DMA_CH3_AL3_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH3_AL3_TRANS_COUNT_RESET "-" +#define DMA_CH3_AL3_TRANS_COUNT_MSB _u(31) +#define DMA_CH3_AL3_TRANS_COUNT_LSB _u(0) +#define DMA_CH3_AL3_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH3_AL3_READ_ADDR_TRIG +// Description : Alias for channel 3 READ_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH3_AL3_READ_ADDR_TRIG_OFFSET _u(0x000000fc) +#define DMA_CH3_AL3_READ_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH3_AL3_READ_ADDR_TRIG_RESET "-" +#define DMA_CH3_AL3_READ_ADDR_TRIG_MSB _u(31) +#define DMA_CH3_AL3_READ_ADDR_TRIG_LSB _u(0) +#define DMA_CH3_AL3_READ_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH4_READ_ADDR +// Description : DMA Channel 4 Read Address pointer +// This register updates automatically each time a read completes. +// The current value is the next address to be read by this +// channel. +#define DMA_CH4_READ_ADDR_OFFSET _u(0x00000100) +#define DMA_CH4_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH4_READ_ADDR_RESET _u(0x00000000) +#define DMA_CH4_READ_ADDR_MSB _u(31) +#define DMA_CH4_READ_ADDR_LSB _u(0) +#define DMA_CH4_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH4_WRITE_ADDR +// Description : DMA Channel 4 Write Address pointer +// This register updates automatically each time a write +// completes. The current value is the next address to be written +// by this channel. +#define DMA_CH4_WRITE_ADDR_OFFSET _u(0x00000104) +#define DMA_CH4_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH4_WRITE_ADDR_RESET _u(0x00000000) +#define DMA_CH4_WRITE_ADDR_MSB _u(31) +#define DMA_CH4_WRITE_ADDR_LSB _u(0) +#define DMA_CH4_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH4_TRANS_COUNT +// Description : DMA Channel 4 Transfer Count +// Program the number of bus transfers a channel will perform +// before halting. Note that, if transfers are larger than one +// byte in size, this is not equal to the number of bytes +// transferred (see CTRL_DATA_SIZE). +// +// When the channel is active, reading this register shows the +// number of transfers remaining, updating automatically each time +// a write transfer completes. +// +// Writing this register sets the RELOAD value for the transfer +// counter. Each time this channel is triggered, the RELOAD value +// is copied into the live transfer counter. The channel can be +// started multiple times, and will perform the same number of +// transfers each time, as programmed by most recent write. +// +// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT +// is used as a trigger, the written value is used immediately as +// the length of the new transfer sequence, as well as being +// written to RELOAD. +#define DMA_CH4_TRANS_COUNT_OFFSET _u(0x00000108) +#define DMA_CH4_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH4_TRANS_COUNT_RESET _u(0x00000000) +#define DMA_CH4_TRANS_COUNT_MSB _u(31) +#define DMA_CH4_TRANS_COUNT_LSB _u(0) +#define DMA_CH4_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH4_CTRL_TRIG +// Description : DMA Channel 4 Control and Status +#define DMA_CH4_CTRL_TRIG_OFFSET _u(0x0000010c) +#define DMA_CH4_CTRL_TRIG_BITS _u(0xe1ffffff) +#define DMA_CH4_CTRL_TRIG_RESET _u(0x00002000) +// ----------------------------------------------------------------------------- +// Field : DMA_CH4_CTRL_TRIG_AHB_ERROR +// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel +// halts when it encounters any bus error, and always raises its +// channel IRQ flag. +#define DMA_CH4_CTRL_TRIG_AHB_ERROR_RESET _u(0x0) +#define DMA_CH4_CTRL_TRIG_AHB_ERROR_BITS _u(0x80000000) +#define DMA_CH4_CTRL_TRIG_AHB_ERROR_MSB _u(31) +#define DMA_CH4_CTRL_TRIG_AHB_ERROR_LSB _u(31) +#define DMA_CH4_CTRL_TRIG_AHB_ERROR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH4_CTRL_TRIG_READ_ERROR +// Description : If 1, the channel received a read bus error. Write one to +// clear. +// READ_ADDR shows the approximate address where the bus error was +// encountered (will not to be earlier, or more than 3 transfers +// later) +#define DMA_CH4_CTRL_TRIG_READ_ERROR_RESET _u(0x0) +#define DMA_CH4_CTRL_TRIG_READ_ERROR_BITS _u(0x40000000) +#define DMA_CH4_CTRL_TRIG_READ_ERROR_MSB _u(30) +#define DMA_CH4_CTRL_TRIG_READ_ERROR_LSB _u(30) +#define DMA_CH4_CTRL_TRIG_READ_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH4_CTRL_TRIG_WRITE_ERROR +// Description : If 1, the channel received a write bus error. Write one to +// clear. +// WRITE_ADDR shows the approximate address where the bus error +// was encountered (will not to be earlier, or more than 5 +// transfers later) +#define DMA_CH4_CTRL_TRIG_WRITE_ERROR_RESET _u(0x0) +#define DMA_CH4_CTRL_TRIG_WRITE_ERROR_BITS _u(0x20000000) +#define DMA_CH4_CTRL_TRIG_WRITE_ERROR_MSB _u(29) +#define DMA_CH4_CTRL_TRIG_WRITE_ERROR_LSB _u(29) +#define DMA_CH4_CTRL_TRIG_WRITE_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH4_CTRL_TRIG_BUSY +// Description : This flag goes high when the channel starts a new transfer +// sequence, and low when the last transfer of that sequence +// completes. Clearing EN while BUSY is high pauses the channel, +// and BUSY will stay high while paused. +// +// To terminate a sequence early (and clear the BUSY flag), see +// CHAN_ABORT. +#define DMA_CH4_CTRL_TRIG_BUSY_RESET _u(0x0) +#define DMA_CH4_CTRL_TRIG_BUSY_BITS _u(0x01000000) +#define DMA_CH4_CTRL_TRIG_BUSY_MSB _u(24) +#define DMA_CH4_CTRL_TRIG_BUSY_LSB _u(24) +#define DMA_CH4_CTRL_TRIG_BUSY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH4_CTRL_TRIG_SNIFF_EN +// Description : If 1, this channel's data transfers are visible to the sniff +// hardware, and each transfer will advance the state of the +// checksum. This only applies if the sniff hardware is enabled, +// and has this channel selected. +// +// This allows checksum to be enabled or disabled on a +// per-control- block basis. +#define DMA_CH4_CTRL_TRIG_SNIFF_EN_RESET _u(0x0) +#define DMA_CH4_CTRL_TRIG_SNIFF_EN_BITS _u(0x00800000) +#define DMA_CH4_CTRL_TRIG_SNIFF_EN_MSB _u(23) +#define DMA_CH4_CTRL_TRIG_SNIFF_EN_LSB _u(23) +#define DMA_CH4_CTRL_TRIG_SNIFF_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH4_CTRL_TRIG_BSWAP +// Description : Apply byte-swap transformation to DMA data. +// For byte data, this has no effect. For halfword data, the two +// bytes of each halfword are swapped. For word data, the four +// bytes of each word are swapped to reverse order. +#define DMA_CH4_CTRL_TRIG_BSWAP_RESET _u(0x0) +#define DMA_CH4_CTRL_TRIG_BSWAP_BITS _u(0x00400000) +#define DMA_CH4_CTRL_TRIG_BSWAP_MSB _u(22) +#define DMA_CH4_CTRL_TRIG_BSWAP_LSB _u(22) +#define DMA_CH4_CTRL_TRIG_BSWAP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH4_CTRL_TRIG_IRQ_QUIET +// Description : In QUIET mode, the channel does not generate IRQs at the end of +// every transfer block. Instead, an IRQ is raised when NULL is +// written to a trigger register, indicating the end of a control +// block chain. +// +// This reduces the number of interrupts to be serviced by the CPU +// when transferring a DMA chain of many small control blocks. +#define DMA_CH4_CTRL_TRIG_IRQ_QUIET_RESET _u(0x0) +#define DMA_CH4_CTRL_TRIG_IRQ_QUIET_BITS _u(0x00200000) +#define DMA_CH4_CTRL_TRIG_IRQ_QUIET_MSB _u(21) +#define DMA_CH4_CTRL_TRIG_IRQ_QUIET_LSB _u(21) +#define DMA_CH4_CTRL_TRIG_IRQ_QUIET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH4_CTRL_TRIG_TREQ_SEL +// Description : Select a Transfer Request signal. +// The channel uses the transfer request signal to pace its data +// transfer rate. Sources for TREQ signals are internal (TIMERS) +// or external (DREQ, a Data Request from the system). +// 0x0 to 0x3a -> select DREQ n as TREQ +// 0x3b -> Select Timer 0 as TREQ +// 0x3c -> Select Timer 1 as TREQ +// 0x3d -> Select Timer 2 as TREQ (Optional) +// 0x3e -> Select Timer 3 as TREQ (Optional) +// 0x3f -> Permanent request, for unpaced transfers. +#define DMA_CH4_CTRL_TRIG_TREQ_SEL_RESET _u(0x00) +#define DMA_CH4_CTRL_TRIG_TREQ_SEL_BITS _u(0x001f8000) +#define DMA_CH4_CTRL_TRIG_TREQ_SEL_MSB _u(20) +#define DMA_CH4_CTRL_TRIG_TREQ_SEL_LSB _u(15) +#define DMA_CH4_CTRL_TRIG_TREQ_SEL_ACCESS "RW" +#define DMA_CH4_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 _u(0x3b) +#define DMA_CH4_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 _u(0x3c) +#define DMA_CH4_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 _u(0x3d) +#define DMA_CH4_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 _u(0x3e) +#define DMA_CH4_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT _u(0x3f) +// ----------------------------------------------------------------------------- +// Field : DMA_CH4_CTRL_TRIG_CHAIN_TO +// Description : When this channel completes, it will trigger the channel +// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this +// channel)_. +// Reset value is equal to channel number (4). +#define DMA_CH4_CTRL_TRIG_CHAIN_TO_RESET _u(0x4) +#define DMA_CH4_CTRL_TRIG_CHAIN_TO_BITS _u(0x00007800) +#define DMA_CH4_CTRL_TRIG_CHAIN_TO_MSB _u(14) +#define DMA_CH4_CTRL_TRIG_CHAIN_TO_LSB _u(11) +#define DMA_CH4_CTRL_TRIG_CHAIN_TO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH4_CTRL_TRIG_RING_SEL +// Description : Select whether RING_SIZE applies to read or write addresses. +// If 0, read addresses are wrapped on a (1 << RING_SIZE) +// boundary. If 1, write addresses are wrapped. +#define DMA_CH4_CTRL_TRIG_RING_SEL_RESET _u(0x0) +#define DMA_CH4_CTRL_TRIG_RING_SEL_BITS _u(0x00000400) +#define DMA_CH4_CTRL_TRIG_RING_SEL_MSB _u(10) +#define DMA_CH4_CTRL_TRIG_RING_SEL_LSB _u(10) +#define DMA_CH4_CTRL_TRIG_RING_SEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH4_CTRL_TRIG_RING_SIZE +// Description : Size of address wrap region. If 0, don't wrap. For values n > +// 0, only the lower n bits of the address will change. This wraps +// the address on a (1 << n) byte boundary, facilitating access to +// naturally-aligned ring buffers. +// +// Ring sizes between 2 and 32768 bytes are possible. This can +// apply to either read or write addresses, based on value of +// RING_SEL. +// 0x0 -> RING_NONE +#define DMA_CH4_CTRL_TRIG_RING_SIZE_RESET _u(0x0) +#define DMA_CH4_CTRL_TRIG_RING_SIZE_BITS _u(0x000003c0) +#define DMA_CH4_CTRL_TRIG_RING_SIZE_MSB _u(9) +#define DMA_CH4_CTRL_TRIG_RING_SIZE_LSB _u(6) +#define DMA_CH4_CTRL_TRIG_RING_SIZE_ACCESS "RW" +#define DMA_CH4_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE _u(0x0) +// ----------------------------------------------------------------------------- +// Field : DMA_CH4_CTRL_TRIG_INCR_WRITE +// Description : If 1, the write address increments with each transfer. If 0, +// each write is directed to the same, initial address. +// +// Generally this should be disabled for memory-to-peripheral +// transfers. +#define DMA_CH4_CTRL_TRIG_INCR_WRITE_RESET _u(0x0) +#define DMA_CH4_CTRL_TRIG_INCR_WRITE_BITS _u(0x00000020) +#define DMA_CH4_CTRL_TRIG_INCR_WRITE_MSB _u(5) +#define DMA_CH4_CTRL_TRIG_INCR_WRITE_LSB _u(5) +#define DMA_CH4_CTRL_TRIG_INCR_WRITE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH4_CTRL_TRIG_INCR_READ +// Description : If 1, the read address increments with each transfer. If 0, +// each read is directed to the same, initial address. +// +// Generally this should be disabled for peripheral-to-memory +// transfers. +#define DMA_CH4_CTRL_TRIG_INCR_READ_RESET _u(0x0) +#define DMA_CH4_CTRL_TRIG_INCR_READ_BITS _u(0x00000010) +#define DMA_CH4_CTRL_TRIG_INCR_READ_MSB _u(4) +#define DMA_CH4_CTRL_TRIG_INCR_READ_LSB _u(4) +#define DMA_CH4_CTRL_TRIG_INCR_READ_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH4_CTRL_TRIG_DATA_SIZE +// Description : Set the size of each bus transfer (byte/halfword/word). +// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) +// with each transfer. +// 0x0 -> SIZE_BYTE +// 0x1 -> SIZE_HALFWORD +// 0x2 -> SIZE_WORD +#define DMA_CH4_CTRL_TRIG_DATA_SIZE_RESET _u(0x0) +#define DMA_CH4_CTRL_TRIG_DATA_SIZE_BITS _u(0x0000000c) +#define DMA_CH4_CTRL_TRIG_DATA_SIZE_MSB _u(3) +#define DMA_CH4_CTRL_TRIG_DATA_SIZE_LSB _u(2) +#define DMA_CH4_CTRL_TRIG_DATA_SIZE_ACCESS "RW" +#define DMA_CH4_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE _u(0x0) +#define DMA_CH4_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD _u(0x1) +#define DMA_CH4_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD _u(0x2) +// ----------------------------------------------------------------------------- +// Field : DMA_CH4_CTRL_TRIG_HIGH_PRIORITY +// Description : HIGH_PRIORITY gives a channel preferential treatment in issue +// scheduling: in each scheduling round, all high priority +// channels are considered first, and then only a single low +// priority channel, before returning to the high priority +// channels. +// +// This only affects the order in which the DMA schedules +// channels. The DMA's bus priority is not changed. If the DMA is +// not saturated then a low priority channel will see no loss of +// throughput. +#define DMA_CH4_CTRL_TRIG_HIGH_PRIORITY_RESET _u(0x0) +#define DMA_CH4_CTRL_TRIG_HIGH_PRIORITY_BITS _u(0x00000002) +#define DMA_CH4_CTRL_TRIG_HIGH_PRIORITY_MSB _u(1) +#define DMA_CH4_CTRL_TRIG_HIGH_PRIORITY_LSB _u(1) +#define DMA_CH4_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH4_CTRL_TRIG_EN +// Description : DMA Channel Enable. +// When 1, the channel will respond to triggering events, which +// will cause it to become BUSY and start transferring data. When +// 0, the channel will ignore triggers, stop issuing transfers, +// and pause the current transfer sequence (i.e. BUSY will remain +// high if already high) +#define DMA_CH4_CTRL_TRIG_EN_RESET _u(0x0) +#define DMA_CH4_CTRL_TRIG_EN_BITS _u(0x00000001) +#define DMA_CH4_CTRL_TRIG_EN_MSB _u(0) +#define DMA_CH4_CTRL_TRIG_EN_LSB _u(0) +#define DMA_CH4_CTRL_TRIG_EN_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH4_AL1_CTRL +// Description : Alias for channel 4 CTRL register +#define DMA_CH4_AL1_CTRL_OFFSET _u(0x00000110) +#define DMA_CH4_AL1_CTRL_BITS _u(0xffffffff) +#define DMA_CH4_AL1_CTRL_RESET "-" +#define DMA_CH4_AL1_CTRL_MSB _u(31) +#define DMA_CH4_AL1_CTRL_LSB _u(0) +#define DMA_CH4_AL1_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH4_AL1_READ_ADDR +// Description : Alias for channel 4 READ_ADDR register +#define DMA_CH4_AL1_READ_ADDR_OFFSET _u(0x00000114) +#define DMA_CH4_AL1_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH4_AL1_READ_ADDR_RESET "-" +#define DMA_CH4_AL1_READ_ADDR_MSB _u(31) +#define DMA_CH4_AL1_READ_ADDR_LSB _u(0) +#define DMA_CH4_AL1_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH4_AL1_WRITE_ADDR +// Description : Alias for channel 4 WRITE_ADDR register +#define DMA_CH4_AL1_WRITE_ADDR_OFFSET _u(0x00000118) +#define DMA_CH4_AL1_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH4_AL1_WRITE_ADDR_RESET "-" +#define DMA_CH4_AL1_WRITE_ADDR_MSB _u(31) +#define DMA_CH4_AL1_WRITE_ADDR_LSB _u(0) +#define DMA_CH4_AL1_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH4_AL1_TRANS_COUNT_TRIG +// Description : Alias for channel 4 TRANS_COUNT register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH4_AL1_TRANS_COUNT_TRIG_OFFSET _u(0x0000011c) +#define DMA_CH4_AL1_TRANS_COUNT_TRIG_BITS _u(0xffffffff) +#define DMA_CH4_AL1_TRANS_COUNT_TRIG_RESET "-" +#define DMA_CH4_AL1_TRANS_COUNT_TRIG_MSB _u(31) +#define DMA_CH4_AL1_TRANS_COUNT_TRIG_LSB _u(0) +#define DMA_CH4_AL1_TRANS_COUNT_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH4_AL2_CTRL +// Description : Alias for channel 4 CTRL register +#define DMA_CH4_AL2_CTRL_OFFSET _u(0x00000120) +#define DMA_CH4_AL2_CTRL_BITS _u(0xffffffff) +#define DMA_CH4_AL2_CTRL_RESET "-" +#define DMA_CH4_AL2_CTRL_MSB _u(31) +#define DMA_CH4_AL2_CTRL_LSB _u(0) +#define DMA_CH4_AL2_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH4_AL2_TRANS_COUNT +// Description : Alias for channel 4 TRANS_COUNT register +#define DMA_CH4_AL2_TRANS_COUNT_OFFSET _u(0x00000124) +#define DMA_CH4_AL2_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH4_AL2_TRANS_COUNT_RESET "-" +#define DMA_CH4_AL2_TRANS_COUNT_MSB _u(31) +#define DMA_CH4_AL2_TRANS_COUNT_LSB _u(0) +#define DMA_CH4_AL2_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH4_AL2_READ_ADDR +// Description : Alias for channel 4 READ_ADDR register +#define DMA_CH4_AL2_READ_ADDR_OFFSET _u(0x00000128) +#define DMA_CH4_AL2_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH4_AL2_READ_ADDR_RESET "-" +#define DMA_CH4_AL2_READ_ADDR_MSB _u(31) +#define DMA_CH4_AL2_READ_ADDR_LSB _u(0) +#define DMA_CH4_AL2_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH4_AL2_WRITE_ADDR_TRIG +// Description : Alias for channel 4 WRITE_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH4_AL2_WRITE_ADDR_TRIG_OFFSET _u(0x0000012c) +#define DMA_CH4_AL2_WRITE_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH4_AL2_WRITE_ADDR_TRIG_RESET "-" +#define DMA_CH4_AL2_WRITE_ADDR_TRIG_MSB _u(31) +#define DMA_CH4_AL2_WRITE_ADDR_TRIG_LSB _u(0) +#define DMA_CH4_AL2_WRITE_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH4_AL3_CTRL +// Description : Alias for channel 4 CTRL register +#define DMA_CH4_AL3_CTRL_OFFSET _u(0x00000130) +#define DMA_CH4_AL3_CTRL_BITS _u(0xffffffff) +#define DMA_CH4_AL3_CTRL_RESET "-" +#define DMA_CH4_AL3_CTRL_MSB _u(31) +#define DMA_CH4_AL3_CTRL_LSB _u(0) +#define DMA_CH4_AL3_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH4_AL3_WRITE_ADDR +// Description : Alias for channel 4 WRITE_ADDR register +#define DMA_CH4_AL3_WRITE_ADDR_OFFSET _u(0x00000134) +#define DMA_CH4_AL3_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH4_AL3_WRITE_ADDR_RESET "-" +#define DMA_CH4_AL3_WRITE_ADDR_MSB _u(31) +#define DMA_CH4_AL3_WRITE_ADDR_LSB _u(0) +#define DMA_CH4_AL3_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH4_AL3_TRANS_COUNT +// Description : Alias for channel 4 TRANS_COUNT register +#define DMA_CH4_AL3_TRANS_COUNT_OFFSET _u(0x00000138) +#define DMA_CH4_AL3_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH4_AL3_TRANS_COUNT_RESET "-" +#define DMA_CH4_AL3_TRANS_COUNT_MSB _u(31) +#define DMA_CH4_AL3_TRANS_COUNT_LSB _u(0) +#define DMA_CH4_AL3_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH4_AL3_READ_ADDR_TRIG +// Description : Alias for channel 4 READ_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH4_AL3_READ_ADDR_TRIG_OFFSET _u(0x0000013c) +#define DMA_CH4_AL3_READ_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH4_AL3_READ_ADDR_TRIG_RESET "-" +#define DMA_CH4_AL3_READ_ADDR_TRIG_MSB _u(31) +#define DMA_CH4_AL3_READ_ADDR_TRIG_LSB _u(0) +#define DMA_CH4_AL3_READ_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH5_READ_ADDR +// Description : DMA Channel 5 Read Address pointer +// This register updates automatically each time a read completes. +// The current value is the next address to be read by this +// channel. +#define DMA_CH5_READ_ADDR_OFFSET _u(0x00000140) +#define DMA_CH5_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH5_READ_ADDR_RESET _u(0x00000000) +#define DMA_CH5_READ_ADDR_MSB _u(31) +#define DMA_CH5_READ_ADDR_LSB _u(0) +#define DMA_CH5_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH5_WRITE_ADDR +// Description : DMA Channel 5 Write Address pointer +// This register updates automatically each time a write +// completes. The current value is the next address to be written +// by this channel. +#define DMA_CH5_WRITE_ADDR_OFFSET _u(0x00000144) +#define DMA_CH5_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH5_WRITE_ADDR_RESET _u(0x00000000) +#define DMA_CH5_WRITE_ADDR_MSB _u(31) +#define DMA_CH5_WRITE_ADDR_LSB _u(0) +#define DMA_CH5_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH5_TRANS_COUNT +// Description : DMA Channel 5 Transfer Count +// Program the number of bus transfers a channel will perform +// before halting. Note that, if transfers are larger than one +// byte in size, this is not equal to the number of bytes +// transferred (see CTRL_DATA_SIZE). +// +// When the channel is active, reading this register shows the +// number of transfers remaining, updating automatically each time +// a write transfer completes. +// +// Writing this register sets the RELOAD value for the transfer +// counter. Each time this channel is triggered, the RELOAD value +// is copied into the live transfer counter. The channel can be +// started multiple times, and will perform the same number of +// transfers each time, as programmed by most recent write. +// +// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT +// is used as a trigger, the written value is used immediately as +// the length of the new transfer sequence, as well as being +// written to RELOAD. +#define DMA_CH5_TRANS_COUNT_OFFSET _u(0x00000148) +#define DMA_CH5_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH5_TRANS_COUNT_RESET _u(0x00000000) +#define DMA_CH5_TRANS_COUNT_MSB _u(31) +#define DMA_CH5_TRANS_COUNT_LSB _u(0) +#define DMA_CH5_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH5_CTRL_TRIG +// Description : DMA Channel 5 Control and Status +#define DMA_CH5_CTRL_TRIG_OFFSET _u(0x0000014c) +#define DMA_CH5_CTRL_TRIG_BITS _u(0xe1ffffff) +#define DMA_CH5_CTRL_TRIG_RESET _u(0x00002800) +// ----------------------------------------------------------------------------- +// Field : DMA_CH5_CTRL_TRIG_AHB_ERROR +// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel +// halts when it encounters any bus error, and always raises its +// channel IRQ flag. +#define DMA_CH5_CTRL_TRIG_AHB_ERROR_RESET _u(0x0) +#define DMA_CH5_CTRL_TRIG_AHB_ERROR_BITS _u(0x80000000) +#define DMA_CH5_CTRL_TRIG_AHB_ERROR_MSB _u(31) +#define DMA_CH5_CTRL_TRIG_AHB_ERROR_LSB _u(31) +#define DMA_CH5_CTRL_TRIG_AHB_ERROR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH5_CTRL_TRIG_READ_ERROR +// Description : If 1, the channel received a read bus error. Write one to +// clear. +// READ_ADDR shows the approximate address where the bus error was +// encountered (will not to be earlier, or more than 3 transfers +// later) +#define DMA_CH5_CTRL_TRIG_READ_ERROR_RESET _u(0x0) +#define DMA_CH5_CTRL_TRIG_READ_ERROR_BITS _u(0x40000000) +#define DMA_CH5_CTRL_TRIG_READ_ERROR_MSB _u(30) +#define DMA_CH5_CTRL_TRIG_READ_ERROR_LSB _u(30) +#define DMA_CH5_CTRL_TRIG_READ_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH5_CTRL_TRIG_WRITE_ERROR +// Description : If 1, the channel received a write bus error. Write one to +// clear. +// WRITE_ADDR shows the approximate address where the bus error +// was encountered (will not to be earlier, or more than 5 +// transfers later) +#define DMA_CH5_CTRL_TRIG_WRITE_ERROR_RESET _u(0x0) +#define DMA_CH5_CTRL_TRIG_WRITE_ERROR_BITS _u(0x20000000) +#define DMA_CH5_CTRL_TRIG_WRITE_ERROR_MSB _u(29) +#define DMA_CH5_CTRL_TRIG_WRITE_ERROR_LSB _u(29) +#define DMA_CH5_CTRL_TRIG_WRITE_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH5_CTRL_TRIG_BUSY +// Description : This flag goes high when the channel starts a new transfer +// sequence, and low when the last transfer of that sequence +// completes. Clearing EN while BUSY is high pauses the channel, +// and BUSY will stay high while paused. +// +// To terminate a sequence early (and clear the BUSY flag), see +// CHAN_ABORT. +#define DMA_CH5_CTRL_TRIG_BUSY_RESET _u(0x0) +#define DMA_CH5_CTRL_TRIG_BUSY_BITS _u(0x01000000) +#define DMA_CH5_CTRL_TRIG_BUSY_MSB _u(24) +#define DMA_CH5_CTRL_TRIG_BUSY_LSB _u(24) +#define DMA_CH5_CTRL_TRIG_BUSY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH5_CTRL_TRIG_SNIFF_EN +// Description : If 1, this channel's data transfers are visible to the sniff +// hardware, and each transfer will advance the state of the +// checksum. This only applies if the sniff hardware is enabled, +// and has this channel selected. +// +// This allows checksum to be enabled or disabled on a +// per-control- block basis. +#define DMA_CH5_CTRL_TRIG_SNIFF_EN_RESET _u(0x0) +#define DMA_CH5_CTRL_TRIG_SNIFF_EN_BITS _u(0x00800000) +#define DMA_CH5_CTRL_TRIG_SNIFF_EN_MSB _u(23) +#define DMA_CH5_CTRL_TRIG_SNIFF_EN_LSB _u(23) +#define DMA_CH5_CTRL_TRIG_SNIFF_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH5_CTRL_TRIG_BSWAP +// Description : Apply byte-swap transformation to DMA data. +// For byte data, this has no effect. For halfword data, the two +// bytes of each halfword are swapped. For word data, the four +// bytes of each word are swapped to reverse order. +#define DMA_CH5_CTRL_TRIG_BSWAP_RESET _u(0x0) +#define DMA_CH5_CTRL_TRIG_BSWAP_BITS _u(0x00400000) +#define DMA_CH5_CTRL_TRIG_BSWAP_MSB _u(22) +#define DMA_CH5_CTRL_TRIG_BSWAP_LSB _u(22) +#define DMA_CH5_CTRL_TRIG_BSWAP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH5_CTRL_TRIG_IRQ_QUIET +// Description : In QUIET mode, the channel does not generate IRQs at the end of +// every transfer block. Instead, an IRQ is raised when NULL is +// written to a trigger register, indicating the end of a control +// block chain. +// +// This reduces the number of interrupts to be serviced by the CPU +// when transferring a DMA chain of many small control blocks. +#define DMA_CH5_CTRL_TRIG_IRQ_QUIET_RESET _u(0x0) +#define DMA_CH5_CTRL_TRIG_IRQ_QUIET_BITS _u(0x00200000) +#define DMA_CH5_CTRL_TRIG_IRQ_QUIET_MSB _u(21) +#define DMA_CH5_CTRL_TRIG_IRQ_QUIET_LSB _u(21) +#define DMA_CH5_CTRL_TRIG_IRQ_QUIET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH5_CTRL_TRIG_TREQ_SEL +// Description : Select a Transfer Request signal. +// The channel uses the transfer request signal to pace its data +// transfer rate. Sources for TREQ signals are internal (TIMERS) +// or external (DREQ, a Data Request from the system). +// 0x0 to 0x3a -> select DREQ n as TREQ +// 0x3b -> Select Timer 0 as TREQ +// 0x3c -> Select Timer 1 as TREQ +// 0x3d -> Select Timer 2 as TREQ (Optional) +// 0x3e -> Select Timer 3 as TREQ (Optional) +// 0x3f -> Permanent request, for unpaced transfers. +#define DMA_CH5_CTRL_TRIG_TREQ_SEL_RESET _u(0x00) +#define DMA_CH5_CTRL_TRIG_TREQ_SEL_BITS _u(0x001f8000) +#define DMA_CH5_CTRL_TRIG_TREQ_SEL_MSB _u(20) +#define DMA_CH5_CTRL_TRIG_TREQ_SEL_LSB _u(15) +#define DMA_CH5_CTRL_TRIG_TREQ_SEL_ACCESS "RW" +#define DMA_CH5_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 _u(0x3b) +#define DMA_CH5_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 _u(0x3c) +#define DMA_CH5_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 _u(0x3d) +#define DMA_CH5_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 _u(0x3e) +#define DMA_CH5_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT _u(0x3f) +// ----------------------------------------------------------------------------- +// Field : DMA_CH5_CTRL_TRIG_CHAIN_TO +// Description : When this channel completes, it will trigger the channel +// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this +// channel)_. +// Reset value is equal to channel number (5). +#define DMA_CH5_CTRL_TRIG_CHAIN_TO_RESET _u(0x5) +#define DMA_CH5_CTRL_TRIG_CHAIN_TO_BITS _u(0x00007800) +#define DMA_CH5_CTRL_TRIG_CHAIN_TO_MSB _u(14) +#define DMA_CH5_CTRL_TRIG_CHAIN_TO_LSB _u(11) +#define DMA_CH5_CTRL_TRIG_CHAIN_TO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH5_CTRL_TRIG_RING_SEL +// Description : Select whether RING_SIZE applies to read or write addresses. +// If 0, read addresses are wrapped on a (1 << RING_SIZE) +// boundary. If 1, write addresses are wrapped. +#define DMA_CH5_CTRL_TRIG_RING_SEL_RESET _u(0x0) +#define DMA_CH5_CTRL_TRIG_RING_SEL_BITS _u(0x00000400) +#define DMA_CH5_CTRL_TRIG_RING_SEL_MSB _u(10) +#define DMA_CH5_CTRL_TRIG_RING_SEL_LSB _u(10) +#define DMA_CH5_CTRL_TRIG_RING_SEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH5_CTRL_TRIG_RING_SIZE +// Description : Size of address wrap region. If 0, don't wrap. For values n > +// 0, only the lower n bits of the address will change. This wraps +// the address on a (1 << n) byte boundary, facilitating access to +// naturally-aligned ring buffers. +// +// Ring sizes between 2 and 32768 bytes are possible. This can +// apply to either read or write addresses, based on value of +// RING_SEL. +// 0x0 -> RING_NONE +#define DMA_CH5_CTRL_TRIG_RING_SIZE_RESET _u(0x0) +#define DMA_CH5_CTRL_TRIG_RING_SIZE_BITS _u(0x000003c0) +#define DMA_CH5_CTRL_TRIG_RING_SIZE_MSB _u(9) +#define DMA_CH5_CTRL_TRIG_RING_SIZE_LSB _u(6) +#define DMA_CH5_CTRL_TRIG_RING_SIZE_ACCESS "RW" +#define DMA_CH5_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE _u(0x0) +// ----------------------------------------------------------------------------- +// Field : DMA_CH5_CTRL_TRIG_INCR_WRITE +// Description : If 1, the write address increments with each transfer. If 0, +// each write is directed to the same, initial address. +// +// Generally this should be disabled for memory-to-peripheral +// transfers. +#define DMA_CH5_CTRL_TRIG_INCR_WRITE_RESET _u(0x0) +#define DMA_CH5_CTRL_TRIG_INCR_WRITE_BITS _u(0x00000020) +#define DMA_CH5_CTRL_TRIG_INCR_WRITE_MSB _u(5) +#define DMA_CH5_CTRL_TRIG_INCR_WRITE_LSB _u(5) +#define DMA_CH5_CTRL_TRIG_INCR_WRITE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH5_CTRL_TRIG_INCR_READ +// Description : If 1, the read address increments with each transfer. If 0, +// each read is directed to the same, initial address. +// +// Generally this should be disabled for peripheral-to-memory +// transfers. +#define DMA_CH5_CTRL_TRIG_INCR_READ_RESET _u(0x0) +#define DMA_CH5_CTRL_TRIG_INCR_READ_BITS _u(0x00000010) +#define DMA_CH5_CTRL_TRIG_INCR_READ_MSB _u(4) +#define DMA_CH5_CTRL_TRIG_INCR_READ_LSB _u(4) +#define DMA_CH5_CTRL_TRIG_INCR_READ_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH5_CTRL_TRIG_DATA_SIZE +// Description : Set the size of each bus transfer (byte/halfword/word). +// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) +// with each transfer. +// 0x0 -> SIZE_BYTE +// 0x1 -> SIZE_HALFWORD +// 0x2 -> SIZE_WORD +#define DMA_CH5_CTRL_TRIG_DATA_SIZE_RESET _u(0x0) +#define DMA_CH5_CTRL_TRIG_DATA_SIZE_BITS _u(0x0000000c) +#define DMA_CH5_CTRL_TRIG_DATA_SIZE_MSB _u(3) +#define DMA_CH5_CTRL_TRIG_DATA_SIZE_LSB _u(2) +#define DMA_CH5_CTRL_TRIG_DATA_SIZE_ACCESS "RW" +#define DMA_CH5_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE _u(0x0) +#define DMA_CH5_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD _u(0x1) +#define DMA_CH5_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD _u(0x2) +// ----------------------------------------------------------------------------- +// Field : DMA_CH5_CTRL_TRIG_HIGH_PRIORITY +// Description : HIGH_PRIORITY gives a channel preferential treatment in issue +// scheduling: in each scheduling round, all high priority +// channels are considered first, and then only a single low +// priority channel, before returning to the high priority +// channels. +// +// This only affects the order in which the DMA schedules +// channels. The DMA's bus priority is not changed. If the DMA is +// not saturated then a low priority channel will see no loss of +// throughput. +#define DMA_CH5_CTRL_TRIG_HIGH_PRIORITY_RESET _u(0x0) +#define DMA_CH5_CTRL_TRIG_HIGH_PRIORITY_BITS _u(0x00000002) +#define DMA_CH5_CTRL_TRIG_HIGH_PRIORITY_MSB _u(1) +#define DMA_CH5_CTRL_TRIG_HIGH_PRIORITY_LSB _u(1) +#define DMA_CH5_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH5_CTRL_TRIG_EN +// Description : DMA Channel Enable. +// When 1, the channel will respond to triggering events, which +// will cause it to become BUSY and start transferring data. When +// 0, the channel will ignore triggers, stop issuing transfers, +// and pause the current transfer sequence (i.e. BUSY will remain +// high if already high) +#define DMA_CH5_CTRL_TRIG_EN_RESET _u(0x0) +#define DMA_CH5_CTRL_TRIG_EN_BITS _u(0x00000001) +#define DMA_CH5_CTRL_TRIG_EN_MSB _u(0) +#define DMA_CH5_CTRL_TRIG_EN_LSB _u(0) +#define DMA_CH5_CTRL_TRIG_EN_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH5_AL1_CTRL +// Description : Alias for channel 5 CTRL register +#define DMA_CH5_AL1_CTRL_OFFSET _u(0x00000150) +#define DMA_CH5_AL1_CTRL_BITS _u(0xffffffff) +#define DMA_CH5_AL1_CTRL_RESET "-" +#define DMA_CH5_AL1_CTRL_MSB _u(31) +#define DMA_CH5_AL1_CTRL_LSB _u(0) +#define DMA_CH5_AL1_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH5_AL1_READ_ADDR +// Description : Alias for channel 5 READ_ADDR register +#define DMA_CH5_AL1_READ_ADDR_OFFSET _u(0x00000154) +#define DMA_CH5_AL1_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH5_AL1_READ_ADDR_RESET "-" +#define DMA_CH5_AL1_READ_ADDR_MSB _u(31) +#define DMA_CH5_AL1_READ_ADDR_LSB _u(0) +#define DMA_CH5_AL1_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH5_AL1_WRITE_ADDR +// Description : Alias for channel 5 WRITE_ADDR register +#define DMA_CH5_AL1_WRITE_ADDR_OFFSET _u(0x00000158) +#define DMA_CH5_AL1_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH5_AL1_WRITE_ADDR_RESET "-" +#define DMA_CH5_AL1_WRITE_ADDR_MSB _u(31) +#define DMA_CH5_AL1_WRITE_ADDR_LSB _u(0) +#define DMA_CH5_AL1_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH5_AL1_TRANS_COUNT_TRIG +// Description : Alias for channel 5 TRANS_COUNT register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH5_AL1_TRANS_COUNT_TRIG_OFFSET _u(0x0000015c) +#define DMA_CH5_AL1_TRANS_COUNT_TRIG_BITS _u(0xffffffff) +#define DMA_CH5_AL1_TRANS_COUNT_TRIG_RESET "-" +#define DMA_CH5_AL1_TRANS_COUNT_TRIG_MSB _u(31) +#define DMA_CH5_AL1_TRANS_COUNT_TRIG_LSB _u(0) +#define DMA_CH5_AL1_TRANS_COUNT_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH5_AL2_CTRL +// Description : Alias for channel 5 CTRL register +#define DMA_CH5_AL2_CTRL_OFFSET _u(0x00000160) +#define DMA_CH5_AL2_CTRL_BITS _u(0xffffffff) +#define DMA_CH5_AL2_CTRL_RESET "-" +#define DMA_CH5_AL2_CTRL_MSB _u(31) +#define DMA_CH5_AL2_CTRL_LSB _u(0) +#define DMA_CH5_AL2_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH5_AL2_TRANS_COUNT +// Description : Alias for channel 5 TRANS_COUNT register +#define DMA_CH5_AL2_TRANS_COUNT_OFFSET _u(0x00000164) +#define DMA_CH5_AL2_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH5_AL2_TRANS_COUNT_RESET "-" +#define DMA_CH5_AL2_TRANS_COUNT_MSB _u(31) +#define DMA_CH5_AL2_TRANS_COUNT_LSB _u(0) +#define DMA_CH5_AL2_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH5_AL2_READ_ADDR +// Description : Alias for channel 5 READ_ADDR register +#define DMA_CH5_AL2_READ_ADDR_OFFSET _u(0x00000168) +#define DMA_CH5_AL2_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH5_AL2_READ_ADDR_RESET "-" +#define DMA_CH5_AL2_READ_ADDR_MSB _u(31) +#define DMA_CH5_AL2_READ_ADDR_LSB _u(0) +#define DMA_CH5_AL2_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH5_AL2_WRITE_ADDR_TRIG +// Description : Alias for channel 5 WRITE_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH5_AL2_WRITE_ADDR_TRIG_OFFSET _u(0x0000016c) +#define DMA_CH5_AL2_WRITE_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH5_AL2_WRITE_ADDR_TRIG_RESET "-" +#define DMA_CH5_AL2_WRITE_ADDR_TRIG_MSB _u(31) +#define DMA_CH5_AL2_WRITE_ADDR_TRIG_LSB _u(0) +#define DMA_CH5_AL2_WRITE_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH5_AL3_CTRL +// Description : Alias for channel 5 CTRL register +#define DMA_CH5_AL3_CTRL_OFFSET _u(0x00000170) +#define DMA_CH5_AL3_CTRL_BITS _u(0xffffffff) +#define DMA_CH5_AL3_CTRL_RESET "-" +#define DMA_CH5_AL3_CTRL_MSB _u(31) +#define DMA_CH5_AL3_CTRL_LSB _u(0) +#define DMA_CH5_AL3_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH5_AL3_WRITE_ADDR +// Description : Alias for channel 5 WRITE_ADDR register +#define DMA_CH5_AL3_WRITE_ADDR_OFFSET _u(0x00000174) +#define DMA_CH5_AL3_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH5_AL3_WRITE_ADDR_RESET "-" +#define DMA_CH5_AL3_WRITE_ADDR_MSB _u(31) +#define DMA_CH5_AL3_WRITE_ADDR_LSB _u(0) +#define DMA_CH5_AL3_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH5_AL3_TRANS_COUNT +// Description : Alias for channel 5 TRANS_COUNT register +#define DMA_CH5_AL3_TRANS_COUNT_OFFSET _u(0x00000178) +#define DMA_CH5_AL3_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH5_AL3_TRANS_COUNT_RESET "-" +#define DMA_CH5_AL3_TRANS_COUNT_MSB _u(31) +#define DMA_CH5_AL3_TRANS_COUNT_LSB _u(0) +#define DMA_CH5_AL3_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH5_AL3_READ_ADDR_TRIG +// Description : Alias for channel 5 READ_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH5_AL3_READ_ADDR_TRIG_OFFSET _u(0x0000017c) +#define DMA_CH5_AL3_READ_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH5_AL3_READ_ADDR_TRIG_RESET "-" +#define DMA_CH5_AL3_READ_ADDR_TRIG_MSB _u(31) +#define DMA_CH5_AL3_READ_ADDR_TRIG_LSB _u(0) +#define DMA_CH5_AL3_READ_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH6_READ_ADDR +// Description : DMA Channel 6 Read Address pointer +// This register updates automatically each time a read completes. +// The current value is the next address to be read by this +// channel. +#define DMA_CH6_READ_ADDR_OFFSET _u(0x00000180) +#define DMA_CH6_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH6_READ_ADDR_RESET _u(0x00000000) +#define DMA_CH6_READ_ADDR_MSB _u(31) +#define DMA_CH6_READ_ADDR_LSB _u(0) +#define DMA_CH6_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH6_WRITE_ADDR +// Description : DMA Channel 6 Write Address pointer +// This register updates automatically each time a write +// completes. The current value is the next address to be written +// by this channel. +#define DMA_CH6_WRITE_ADDR_OFFSET _u(0x00000184) +#define DMA_CH6_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH6_WRITE_ADDR_RESET _u(0x00000000) +#define DMA_CH6_WRITE_ADDR_MSB _u(31) +#define DMA_CH6_WRITE_ADDR_LSB _u(0) +#define DMA_CH6_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH6_TRANS_COUNT +// Description : DMA Channel 6 Transfer Count +// Program the number of bus transfers a channel will perform +// before halting. Note that, if transfers are larger than one +// byte in size, this is not equal to the number of bytes +// transferred (see CTRL_DATA_SIZE). +// +// When the channel is active, reading this register shows the +// number of transfers remaining, updating automatically each time +// a write transfer completes. +// +// Writing this register sets the RELOAD value for the transfer +// counter. Each time this channel is triggered, the RELOAD value +// is copied into the live transfer counter. The channel can be +// started multiple times, and will perform the same number of +// transfers each time, as programmed by most recent write. +// +// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT +// is used as a trigger, the written value is used immediately as +// the length of the new transfer sequence, as well as being +// written to RELOAD. +#define DMA_CH6_TRANS_COUNT_OFFSET _u(0x00000188) +#define DMA_CH6_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH6_TRANS_COUNT_RESET _u(0x00000000) +#define DMA_CH6_TRANS_COUNT_MSB _u(31) +#define DMA_CH6_TRANS_COUNT_LSB _u(0) +#define DMA_CH6_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH6_CTRL_TRIG +// Description : DMA Channel 6 Control and Status +#define DMA_CH6_CTRL_TRIG_OFFSET _u(0x0000018c) +#define DMA_CH6_CTRL_TRIG_BITS _u(0xe1ffffff) +#define DMA_CH6_CTRL_TRIG_RESET _u(0x00003000) +// ----------------------------------------------------------------------------- +// Field : DMA_CH6_CTRL_TRIG_AHB_ERROR +// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel +// halts when it encounters any bus error, and always raises its +// channel IRQ flag. +#define DMA_CH6_CTRL_TRIG_AHB_ERROR_RESET _u(0x0) +#define DMA_CH6_CTRL_TRIG_AHB_ERROR_BITS _u(0x80000000) +#define DMA_CH6_CTRL_TRIG_AHB_ERROR_MSB _u(31) +#define DMA_CH6_CTRL_TRIG_AHB_ERROR_LSB _u(31) +#define DMA_CH6_CTRL_TRIG_AHB_ERROR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH6_CTRL_TRIG_READ_ERROR +// Description : If 1, the channel received a read bus error. Write one to +// clear. +// READ_ADDR shows the approximate address where the bus error was +// encountered (will not to be earlier, or more than 3 transfers +// later) +#define DMA_CH6_CTRL_TRIG_READ_ERROR_RESET _u(0x0) +#define DMA_CH6_CTRL_TRIG_READ_ERROR_BITS _u(0x40000000) +#define DMA_CH6_CTRL_TRIG_READ_ERROR_MSB _u(30) +#define DMA_CH6_CTRL_TRIG_READ_ERROR_LSB _u(30) +#define DMA_CH6_CTRL_TRIG_READ_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH6_CTRL_TRIG_WRITE_ERROR +// Description : If 1, the channel received a write bus error. Write one to +// clear. +// WRITE_ADDR shows the approximate address where the bus error +// was encountered (will not to be earlier, or more than 5 +// transfers later) +#define DMA_CH6_CTRL_TRIG_WRITE_ERROR_RESET _u(0x0) +#define DMA_CH6_CTRL_TRIG_WRITE_ERROR_BITS _u(0x20000000) +#define DMA_CH6_CTRL_TRIG_WRITE_ERROR_MSB _u(29) +#define DMA_CH6_CTRL_TRIG_WRITE_ERROR_LSB _u(29) +#define DMA_CH6_CTRL_TRIG_WRITE_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH6_CTRL_TRIG_BUSY +// Description : This flag goes high when the channel starts a new transfer +// sequence, and low when the last transfer of that sequence +// completes. Clearing EN while BUSY is high pauses the channel, +// and BUSY will stay high while paused. +// +// To terminate a sequence early (and clear the BUSY flag), see +// CHAN_ABORT. +#define DMA_CH6_CTRL_TRIG_BUSY_RESET _u(0x0) +#define DMA_CH6_CTRL_TRIG_BUSY_BITS _u(0x01000000) +#define DMA_CH6_CTRL_TRIG_BUSY_MSB _u(24) +#define DMA_CH6_CTRL_TRIG_BUSY_LSB _u(24) +#define DMA_CH6_CTRL_TRIG_BUSY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH6_CTRL_TRIG_SNIFF_EN +// Description : If 1, this channel's data transfers are visible to the sniff +// hardware, and each transfer will advance the state of the +// checksum. This only applies if the sniff hardware is enabled, +// and has this channel selected. +// +// This allows checksum to be enabled or disabled on a +// per-control- block basis. +#define DMA_CH6_CTRL_TRIG_SNIFF_EN_RESET _u(0x0) +#define DMA_CH6_CTRL_TRIG_SNIFF_EN_BITS _u(0x00800000) +#define DMA_CH6_CTRL_TRIG_SNIFF_EN_MSB _u(23) +#define DMA_CH6_CTRL_TRIG_SNIFF_EN_LSB _u(23) +#define DMA_CH6_CTRL_TRIG_SNIFF_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH6_CTRL_TRIG_BSWAP +// Description : Apply byte-swap transformation to DMA data. +// For byte data, this has no effect. For halfword data, the two +// bytes of each halfword are swapped. For word data, the four +// bytes of each word are swapped to reverse order. +#define DMA_CH6_CTRL_TRIG_BSWAP_RESET _u(0x0) +#define DMA_CH6_CTRL_TRIG_BSWAP_BITS _u(0x00400000) +#define DMA_CH6_CTRL_TRIG_BSWAP_MSB _u(22) +#define DMA_CH6_CTRL_TRIG_BSWAP_LSB _u(22) +#define DMA_CH6_CTRL_TRIG_BSWAP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH6_CTRL_TRIG_IRQ_QUIET +// Description : In QUIET mode, the channel does not generate IRQs at the end of +// every transfer block. Instead, an IRQ is raised when NULL is +// written to a trigger register, indicating the end of a control +// block chain. +// +// This reduces the number of interrupts to be serviced by the CPU +// when transferring a DMA chain of many small control blocks. +#define DMA_CH6_CTRL_TRIG_IRQ_QUIET_RESET _u(0x0) +#define DMA_CH6_CTRL_TRIG_IRQ_QUIET_BITS _u(0x00200000) +#define DMA_CH6_CTRL_TRIG_IRQ_QUIET_MSB _u(21) +#define DMA_CH6_CTRL_TRIG_IRQ_QUIET_LSB _u(21) +#define DMA_CH6_CTRL_TRIG_IRQ_QUIET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH6_CTRL_TRIG_TREQ_SEL +// Description : Select a Transfer Request signal. +// The channel uses the transfer request signal to pace its data +// transfer rate. Sources for TREQ signals are internal (TIMERS) +// or external (DREQ, a Data Request from the system). +// 0x0 to 0x3a -> select DREQ n as TREQ +// 0x3b -> Select Timer 0 as TREQ +// 0x3c -> Select Timer 1 as TREQ +// 0x3d -> Select Timer 2 as TREQ (Optional) +// 0x3e -> Select Timer 3 as TREQ (Optional) +// 0x3f -> Permanent request, for unpaced transfers. +#define DMA_CH6_CTRL_TRIG_TREQ_SEL_RESET _u(0x00) +#define DMA_CH6_CTRL_TRIG_TREQ_SEL_BITS _u(0x001f8000) +#define DMA_CH6_CTRL_TRIG_TREQ_SEL_MSB _u(20) +#define DMA_CH6_CTRL_TRIG_TREQ_SEL_LSB _u(15) +#define DMA_CH6_CTRL_TRIG_TREQ_SEL_ACCESS "RW" +#define DMA_CH6_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 _u(0x3b) +#define DMA_CH6_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 _u(0x3c) +#define DMA_CH6_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 _u(0x3d) +#define DMA_CH6_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 _u(0x3e) +#define DMA_CH6_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT _u(0x3f) +// ----------------------------------------------------------------------------- +// Field : DMA_CH6_CTRL_TRIG_CHAIN_TO +// Description : When this channel completes, it will trigger the channel +// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this +// channel)_. +// Reset value is equal to channel number (6). +#define DMA_CH6_CTRL_TRIG_CHAIN_TO_RESET _u(0x6) +#define DMA_CH6_CTRL_TRIG_CHAIN_TO_BITS _u(0x00007800) +#define DMA_CH6_CTRL_TRIG_CHAIN_TO_MSB _u(14) +#define DMA_CH6_CTRL_TRIG_CHAIN_TO_LSB _u(11) +#define DMA_CH6_CTRL_TRIG_CHAIN_TO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH6_CTRL_TRIG_RING_SEL +// Description : Select whether RING_SIZE applies to read or write addresses. +// If 0, read addresses are wrapped on a (1 << RING_SIZE) +// boundary. If 1, write addresses are wrapped. +#define DMA_CH6_CTRL_TRIG_RING_SEL_RESET _u(0x0) +#define DMA_CH6_CTRL_TRIG_RING_SEL_BITS _u(0x00000400) +#define DMA_CH6_CTRL_TRIG_RING_SEL_MSB _u(10) +#define DMA_CH6_CTRL_TRIG_RING_SEL_LSB _u(10) +#define DMA_CH6_CTRL_TRIG_RING_SEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH6_CTRL_TRIG_RING_SIZE +// Description : Size of address wrap region. If 0, don't wrap. For values n > +// 0, only the lower n bits of the address will change. This wraps +// the address on a (1 << n) byte boundary, facilitating access to +// naturally-aligned ring buffers. +// +// Ring sizes between 2 and 32768 bytes are possible. This can +// apply to either read or write addresses, based on value of +// RING_SEL. +// 0x0 -> RING_NONE +#define DMA_CH6_CTRL_TRIG_RING_SIZE_RESET _u(0x0) +#define DMA_CH6_CTRL_TRIG_RING_SIZE_BITS _u(0x000003c0) +#define DMA_CH6_CTRL_TRIG_RING_SIZE_MSB _u(9) +#define DMA_CH6_CTRL_TRIG_RING_SIZE_LSB _u(6) +#define DMA_CH6_CTRL_TRIG_RING_SIZE_ACCESS "RW" +#define DMA_CH6_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE _u(0x0) +// ----------------------------------------------------------------------------- +// Field : DMA_CH6_CTRL_TRIG_INCR_WRITE +// Description : If 1, the write address increments with each transfer. If 0, +// each write is directed to the same, initial address. +// +// Generally this should be disabled for memory-to-peripheral +// transfers. +#define DMA_CH6_CTRL_TRIG_INCR_WRITE_RESET _u(0x0) +#define DMA_CH6_CTRL_TRIG_INCR_WRITE_BITS _u(0x00000020) +#define DMA_CH6_CTRL_TRIG_INCR_WRITE_MSB _u(5) +#define DMA_CH6_CTRL_TRIG_INCR_WRITE_LSB _u(5) +#define DMA_CH6_CTRL_TRIG_INCR_WRITE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH6_CTRL_TRIG_INCR_READ +// Description : If 1, the read address increments with each transfer. If 0, +// each read is directed to the same, initial address. +// +// Generally this should be disabled for peripheral-to-memory +// transfers. +#define DMA_CH6_CTRL_TRIG_INCR_READ_RESET _u(0x0) +#define DMA_CH6_CTRL_TRIG_INCR_READ_BITS _u(0x00000010) +#define DMA_CH6_CTRL_TRIG_INCR_READ_MSB _u(4) +#define DMA_CH6_CTRL_TRIG_INCR_READ_LSB _u(4) +#define DMA_CH6_CTRL_TRIG_INCR_READ_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH6_CTRL_TRIG_DATA_SIZE +// Description : Set the size of each bus transfer (byte/halfword/word). +// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) +// with each transfer. +// 0x0 -> SIZE_BYTE +// 0x1 -> SIZE_HALFWORD +// 0x2 -> SIZE_WORD +#define DMA_CH6_CTRL_TRIG_DATA_SIZE_RESET _u(0x0) +#define DMA_CH6_CTRL_TRIG_DATA_SIZE_BITS _u(0x0000000c) +#define DMA_CH6_CTRL_TRIG_DATA_SIZE_MSB _u(3) +#define DMA_CH6_CTRL_TRIG_DATA_SIZE_LSB _u(2) +#define DMA_CH6_CTRL_TRIG_DATA_SIZE_ACCESS "RW" +#define DMA_CH6_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE _u(0x0) +#define DMA_CH6_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD _u(0x1) +#define DMA_CH6_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD _u(0x2) +// ----------------------------------------------------------------------------- +// Field : DMA_CH6_CTRL_TRIG_HIGH_PRIORITY +// Description : HIGH_PRIORITY gives a channel preferential treatment in issue +// scheduling: in each scheduling round, all high priority +// channels are considered first, and then only a single low +// priority channel, before returning to the high priority +// channels. +// +// This only affects the order in which the DMA schedules +// channels. The DMA's bus priority is not changed. If the DMA is +// not saturated then a low priority channel will see no loss of +// throughput. +#define DMA_CH6_CTRL_TRIG_HIGH_PRIORITY_RESET _u(0x0) +#define DMA_CH6_CTRL_TRIG_HIGH_PRIORITY_BITS _u(0x00000002) +#define DMA_CH6_CTRL_TRIG_HIGH_PRIORITY_MSB _u(1) +#define DMA_CH6_CTRL_TRIG_HIGH_PRIORITY_LSB _u(1) +#define DMA_CH6_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH6_CTRL_TRIG_EN +// Description : DMA Channel Enable. +// When 1, the channel will respond to triggering events, which +// will cause it to become BUSY and start transferring data. When +// 0, the channel will ignore triggers, stop issuing transfers, +// and pause the current transfer sequence (i.e. BUSY will remain +// high if already high) +#define DMA_CH6_CTRL_TRIG_EN_RESET _u(0x0) +#define DMA_CH6_CTRL_TRIG_EN_BITS _u(0x00000001) +#define DMA_CH6_CTRL_TRIG_EN_MSB _u(0) +#define DMA_CH6_CTRL_TRIG_EN_LSB _u(0) +#define DMA_CH6_CTRL_TRIG_EN_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH6_AL1_CTRL +// Description : Alias for channel 6 CTRL register +#define DMA_CH6_AL1_CTRL_OFFSET _u(0x00000190) +#define DMA_CH6_AL1_CTRL_BITS _u(0xffffffff) +#define DMA_CH6_AL1_CTRL_RESET "-" +#define DMA_CH6_AL1_CTRL_MSB _u(31) +#define DMA_CH6_AL1_CTRL_LSB _u(0) +#define DMA_CH6_AL1_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH6_AL1_READ_ADDR +// Description : Alias for channel 6 READ_ADDR register +#define DMA_CH6_AL1_READ_ADDR_OFFSET _u(0x00000194) +#define DMA_CH6_AL1_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH6_AL1_READ_ADDR_RESET "-" +#define DMA_CH6_AL1_READ_ADDR_MSB _u(31) +#define DMA_CH6_AL1_READ_ADDR_LSB _u(0) +#define DMA_CH6_AL1_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH6_AL1_WRITE_ADDR +// Description : Alias for channel 6 WRITE_ADDR register +#define DMA_CH6_AL1_WRITE_ADDR_OFFSET _u(0x00000198) +#define DMA_CH6_AL1_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH6_AL1_WRITE_ADDR_RESET "-" +#define DMA_CH6_AL1_WRITE_ADDR_MSB _u(31) +#define DMA_CH6_AL1_WRITE_ADDR_LSB _u(0) +#define DMA_CH6_AL1_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH6_AL1_TRANS_COUNT_TRIG +// Description : Alias for channel 6 TRANS_COUNT register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH6_AL1_TRANS_COUNT_TRIG_OFFSET _u(0x0000019c) +#define DMA_CH6_AL1_TRANS_COUNT_TRIG_BITS _u(0xffffffff) +#define DMA_CH6_AL1_TRANS_COUNT_TRIG_RESET "-" +#define DMA_CH6_AL1_TRANS_COUNT_TRIG_MSB _u(31) +#define DMA_CH6_AL1_TRANS_COUNT_TRIG_LSB _u(0) +#define DMA_CH6_AL1_TRANS_COUNT_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH6_AL2_CTRL +// Description : Alias for channel 6 CTRL register +#define DMA_CH6_AL2_CTRL_OFFSET _u(0x000001a0) +#define DMA_CH6_AL2_CTRL_BITS _u(0xffffffff) +#define DMA_CH6_AL2_CTRL_RESET "-" +#define DMA_CH6_AL2_CTRL_MSB _u(31) +#define DMA_CH6_AL2_CTRL_LSB _u(0) +#define DMA_CH6_AL2_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH6_AL2_TRANS_COUNT +// Description : Alias for channel 6 TRANS_COUNT register +#define DMA_CH6_AL2_TRANS_COUNT_OFFSET _u(0x000001a4) +#define DMA_CH6_AL2_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH6_AL2_TRANS_COUNT_RESET "-" +#define DMA_CH6_AL2_TRANS_COUNT_MSB _u(31) +#define DMA_CH6_AL2_TRANS_COUNT_LSB _u(0) +#define DMA_CH6_AL2_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH6_AL2_READ_ADDR +// Description : Alias for channel 6 READ_ADDR register +#define DMA_CH6_AL2_READ_ADDR_OFFSET _u(0x000001a8) +#define DMA_CH6_AL2_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH6_AL2_READ_ADDR_RESET "-" +#define DMA_CH6_AL2_READ_ADDR_MSB _u(31) +#define DMA_CH6_AL2_READ_ADDR_LSB _u(0) +#define DMA_CH6_AL2_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH6_AL2_WRITE_ADDR_TRIG +// Description : Alias for channel 6 WRITE_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH6_AL2_WRITE_ADDR_TRIG_OFFSET _u(0x000001ac) +#define DMA_CH6_AL2_WRITE_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH6_AL2_WRITE_ADDR_TRIG_RESET "-" +#define DMA_CH6_AL2_WRITE_ADDR_TRIG_MSB _u(31) +#define DMA_CH6_AL2_WRITE_ADDR_TRIG_LSB _u(0) +#define DMA_CH6_AL2_WRITE_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH6_AL3_CTRL +// Description : Alias for channel 6 CTRL register +#define DMA_CH6_AL3_CTRL_OFFSET _u(0x000001b0) +#define DMA_CH6_AL3_CTRL_BITS _u(0xffffffff) +#define DMA_CH6_AL3_CTRL_RESET "-" +#define DMA_CH6_AL3_CTRL_MSB _u(31) +#define DMA_CH6_AL3_CTRL_LSB _u(0) +#define DMA_CH6_AL3_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH6_AL3_WRITE_ADDR +// Description : Alias for channel 6 WRITE_ADDR register +#define DMA_CH6_AL3_WRITE_ADDR_OFFSET _u(0x000001b4) +#define DMA_CH6_AL3_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH6_AL3_WRITE_ADDR_RESET "-" +#define DMA_CH6_AL3_WRITE_ADDR_MSB _u(31) +#define DMA_CH6_AL3_WRITE_ADDR_LSB _u(0) +#define DMA_CH6_AL3_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH6_AL3_TRANS_COUNT +// Description : Alias for channel 6 TRANS_COUNT register +#define DMA_CH6_AL3_TRANS_COUNT_OFFSET _u(0x000001b8) +#define DMA_CH6_AL3_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH6_AL3_TRANS_COUNT_RESET "-" +#define DMA_CH6_AL3_TRANS_COUNT_MSB _u(31) +#define DMA_CH6_AL3_TRANS_COUNT_LSB _u(0) +#define DMA_CH6_AL3_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH6_AL3_READ_ADDR_TRIG +// Description : Alias for channel 6 READ_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH6_AL3_READ_ADDR_TRIG_OFFSET _u(0x000001bc) +#define DMA_CH6_AL3_READ_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH6_AL3_READ_ADDR_TRIG_RESET "-" +#define DMA_CH6_AL3_READ_ADDR_TRIG_MSB _u(31) +#define DMA_CH6_AL3_READ_ADDR_TRIG_LSB _u(0) +#define DMA_CH6_AL3_READ_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH7_READ_ADDR +// Description : DMA Channel 7 Read Address pointer +// This register updates automatically each time a read completes. +// The current value is the next address to be read by this +// channel. +#define DMA_CH7_READ_ADDR_OFFSET _u(0x000001c0) +#define DMA_CH7_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH7_READ_ADDR_RESET _u(0x00000000) +#define DMA_CH7_READ_ADDR_MSB _u(31) +#define DMA_CH7_READ_ADDR_LSB _u(0) +#define DMA_CH7_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH7_WRITE_ADDR +// Description : DMA Channel 7 Write Address pointer +// This register updates automatically each time a write +// completes. The current value is the next address to be written +// by this channel. +#define DMA_CH7_WRITE_ADDR_OFFSET _u(0x000001c4) +#define DMA_CH7_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH7_WRITE_ADDR_RESET _u(0x00000000) +#define DMA_CH7_WRITE_ADDR_MSB _u(31) +#define DMA_CH7_WRITE_ADDR_LSB _u(0) +#define DMA_CH7_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH7_TRANS_COUNT +// Description : DMA Channel 7 Transfer Count +// Program the number of bus transfers a channel will perform +// before halting. Note that, if transfers are larger than one +// byte in size, this is not equal to the number of bytes +// transferred (see CTRL_DATA_SIZE). +// +// When the channel is active, reading this register shows the +// number of transfers remaining, updating automatically each time +// a write transfer completes. +// +// Writing this register sets the RELOAD value for the transfer +// counter. Each time this channel is triggered, the RELOAD value +// is copied into the live transfer counter. The channel can be +// started multiple times, and will perform the same number of +// transfers each time, as programmed by most recent write. +// +// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT +// is used as a trigger, the written value is used immediately as +// the length of the new transfer sequence, as well as being +// written to RELOAD. +#define DMA_CH7_TRANS_COUNT_OFFSET _u(0x000001c8) +#define DMA_CH7_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH7_TRANS_COUNT_RESET _u(0x00000000) +#define DMA_CH7_TRANS_COUNT_MSB _u(31) +#define DMA_CH7_TRANS_COUNT_LSB _u(0) +#define DMA_CH7_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH7_CTRL_TRIG +// Description : DMA Channel 7 Control and Status +#define DMA_CH7_CTRL_TRIG_OFFSET _u(0x000001cc) +#define DMA_CH7_CTRL_TRIG_BITS _u(0xe1ffffff) +#define DMA_CH7_CTRL_TRIG_RESET _u(0x00003800) +// ----------------------------------------------------------------------------- +// Field : DMA_CH7_CTRL_TRIG_AHB_ERROR +// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel +// halts when it encounters any bus error, and always raises its +// channel IRQ flag. +#define DMA_CH7_CTRL_TRIG_AHB_ERROR_RESET _u(0x0) +#define DMA_CH7_CTRL_TRIG_AHB_ERROR_BITS _u(0x80000000) +#define DMA_CH7_CTRL_TRIG_AHB_ERROR_MSB _u(31) +#define DMA_CH7_CTRL_TRIG_AHB_ERROR_LSB _u(31) +#define DMA_CH7_CTRL_TRIG_AHB_ERROR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH7_CTRL_TRIG_READ_ERROR +// Description : If 1, the channel received a read bus error. Write one to +// clear. +// READ_ADDR shows the approximate address where the bus error was +// encountered (will not to be earlier, or more than 3 transfers +// later) +#define DMA_CH7_CTRL_TRIG_READ_ERROR_RESET _u(0x0) +#define DMA_CH7_CTRL_TRIG_READ_ERROR_BITS _u(0x40000000) +#define DMA_CH7_CTRL_TRIG_READ_ERROR_MSB _u(30) +#define DMA_CH7_CTRL_TRIG_READ_ERROR_LSB _u(30) +#define DMA_CH7_CTRL_TRIG_READ_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH7_CTRL_TRIG_WRITE_ERROR +// Description : If 1, the channel received a write bus error. Write one to +// clear. +// WRITE_ADDR shows the approximate address where the bus error +// was encountered (will not to be earlier, or more than 5 +// transfers later) +#define DMA_CH7_CTRL_TRIG_WRITE_ERROR_RESET _u(0x0) +#define DMA_CH7_CTRL_TRIG_WRITE_ERROR_BITS _u(0x20000000) +#define DMA_CH7_CTRL_TRIG_WRITE_ERROR_MSB _u(29) +#define DMA_CH7_CTRL_TRIG_WRITE_ERROR_LSB _u(29) +#define DMA_CH7_CTRL_TRIG_WRITE_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH7_CTRL_TRIG_BUSY +// Description : This flag goes high when the channel starts a new transfer +// sequence, and low when the last transfer of that sequence +// completes. Clearing EN while BUSY is high pauses the channel, +// and BUSY will stay high while paused. +// +// To terminate a sequence early (and clear the BUSY flag), see +// CHAN_ABORT. +#define DMA_CH7_CTRL_TRIG_BUSY_RESET _u(0x0) +#define DMA_CH7_CTRL_TRIG_BUSY_BITS _u(0x01000000) +#define DMA_CH7_CTRL_TRIG_BUSY_MSB _u(24) +#define DMA_CH7_CTRL_TRIG_BUSY_LSB _u(24) +#define DMA_CH7_CTRL_TRIG_BUSY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH7_CTRL_TRIG_SNIFF_EN +// Description : If 1, this channel's data transfers are visible to the sniff +// hardware, and each transfer will advance the state of the +// checksum. This only applies if the sniff hardware is enabled, +// and has this channel selected. +// +// This allows checksum to be enabled or disabled on a +// per-control- block basis. +#define DMA_CH7_CTRL_TRIG_SNIFF_EN_RESET _u(0x0) +#define DMA_CH7_CTRL_TRIG_SNIFF_EN_BITS _u(0x00800000) +#define DMA_CH7_CTRL_TRIG_SNIFF_EN_MSB _u(23) +#define DMA_CH7_CTRL_TRIG_SNIFF_EN_LSB _u(23) +#define DMA_CH7_CTRL_TRIG_SNIFF_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH7_CTRL_TRIG_BSWAP +// Description : Apply byte-swap transformation to DMA data. +// For byte data, this has no effect. For halfword data, the two +// bytes of each halfword are swapped. For word data, the four +// bytes of each word are swapped to reverse order. +#define DMA_CH7_CTRL_TRIG_BSWAP_RESET _u(0x0) +#define DMA_CH7_CTRL_TRIG_BSWAP_BITS _u(0x00400000) +#define DMA_CH7_CTRL_TRIG_BSWAP_MSB _u(22) +#define DMA_CH7_CTRL_TRIG_BSWAP_LSB _u(22) +#define DMA_CH7_CTRL_TRIG_BSWAP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH7_CTRL_TRIG_IRQ_QUIET +// Description : In QUIET mode, the channel does not generate IRQs at the end of +// every transfer block. Instead, an IRQ is raised when NULL is +// written to a trigger register, indicating the end of a control +// block chain. +// +// This reduces the number of interrupts to be serviced by the CPU +// when transferring a DMA chain of many small control blocks. +#define DMA_CH7_CTRL_TRIG_IRQ_QUIET_RESET _u(0x0) +#define DMA_CH7_CTRL_TRIG_IRQ_QUIET_BITS _u(0x00200000) +#define DMA_CH7_CTRL_TRIG_IRQ_QUIET_MSB _u(21) +#define DMA_CH7_CTRL_TRIG_IRQ_QUIET_LSB _u(21) +#define DMA_CH7_CTRL_TRIG_IRQ_QUIET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH7_CTRL_TRIG_TREQ_SEL +// Description : Select a Transfer Request signal. +// The channel uses the transfer request signal to pace its data +// transfer rate. Sources for TREQ signals are internal (TIMERS) +// or external (DREQ, a Data Request from the system). +// 0x0 to 0x3a -> select DREQ n as TREQ +// 0x3b -> Select Timer 0 as TREQ +// 0x3c -> Select Timer 1 as TREQ +// 0x3d -> Select Timer 2 as TREQ (Optional) +// 0x3e -> Select Timer 3 as TREQ (Optional) +// 0x3f -> Permanent request, for unpaced transfers. +#define DMA_CH7_CTRL_TRIG_TREQ_SEL_RESET _u(0x00) +#define DMA_CH7_CTRL_TRIG_TREQ_SEL_BITS _u(0x001f8000) +#define DMA_CH7_CTRL_TRIG_TREQ_SEL_MSB _u(20) +#define DMA_CH7_CTRL_TRIG_TREQ_SEL_LSB _u(15) +#define DMA_CH7_CTRL_TRIG_TREQ_SEL_ACCESS "RW" +#define DMA_CH7_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 _u(0x3b) +#define DMA_CH7_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 _u(0x3c) +#define DMA_CH7_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 _u(0x3d) +#define DMA_CH7_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 _u(0x3e) +#define DMA_CH7_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT _u(0x3f) +// ----------------------------------------------------------------------------- +// Field : DMA_CH7_CTRL_TRIG_CHAIN_TO +// Description : When this channel completes, it will trigger the channel +// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this +// channel)_. +// Reset value is equal to channel number (7). +#define DMA_CH7_CTRL_TRIG_CHAIN_TO_RESET _u(0x7) +#define DMA_CH7_CTRL_TRIG_CHAIN_TO_BITS _u(0x00007800) +#define DMA_CH7_CTRL_TRIG_CHAIN_TO_MSB _u(14) +#define DMA_CH7_CTRL_TRIG_CHAIN_TO_LSB _u(11) +#define DMA_CH7_CTRL_TRIG_CHAIN_TO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH7_CTRL_TRIG_RING_SEL +// Description : Select whether RING_SIZE applies to read or write addresses. +// If 0, read addresses are wrapped on a (1 << RING_SIZE) +// boundary. If 1, write addresses are wrapped. +#define DMA_CH7_CTRL_TRIG_RING_SEL_RESET _u(0x0) +#define DMA_CH7_CTRL_TRIG_RING_SEL_BITS _u(0x00000400) +#define DMA_CH7_CTRL_TRIG_RING_SEL_MSB _u(10) +#define DMA_CH7_CTRL_TRIG_RING_SEL_LSB _u(10) +#define DMA_CH7_CTRL_TRIG_RING_SEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH7_CTRL_TRIG_RING_SIZE +// Description : Size of address wrap region. If 0, don't wrap. For values n > +// 0, only the lower n bits of the address will change. This wraps +// the address on a (1 << n) byte boundary, facilitating access to +// naturally-aligned ring buffers. +// +// Ring sizes between 2 and 32768 bytes are possible. This can +// apply to either read or write addresses, based on value of +// RING_SEL. +// 0x0 -> RING_NONE +#define DMA_CH7_CTRL_TRIG_RING_SIZE_RESET _u(0x0) +#define DMA_CH7_CTRL_TRIG_RING_SIZE_BITS _u(0x000003c0) +#define DMA_CH7_CTRL_TRIG_RING_SIZE_MSB _u(9) +#define DMA_CH7_CTRL_TRIG_RING_SIZE_LSB _u(6) +#define DMA_CH7_CTRL_TRIG_RING_SIZE_ACCESS "RW" +#define DMA_CH7_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE _u(0x0) +// ----------------------------------------------------------------------------- +// Field : DMA_CH7_CTRL_TRIG_INCR_WRITE +// Description : If 1, the write address increments with each transfer. If 0, +// each write is directed to the same, initial address. +// +// Generally this should be disabled for memory-to-peripheral +// transfers. +#define DMA_CH7_CTRL_TRIG_INCR_WRITE_RESET _u(0x0) +#define DMA_CH7_CTRL_TRIG_INCR_WRITE_BITS _u(0x00000020) +#define DMA_CH7_CTRL_TRIG_INCR_WRITE_MSB _u(5) +#define DMA_CH7_CTRL_TRIG_INCR_WRITE_LSB _u(5) +#define DMA_CH7_CTRL_TRIG_INCR_WRITE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH7_CTRL_TRIG_INCR_READ +// Description : If 1, the read address increments with each transfer. If 0, +// each read is directed to the same, initial address. +// +// Generally this should be disabled for peripheral-to-memory +// transfers. +#define DMA_CH7_CTRL_TRIG_INCR_READ_RESET _u(0x0) +#define DMA_CH7_CTRL_TRIG_INCR_READ_BITS _u(0x00000010) +#define DMA_CH7_CTRL_TRIG_INCR_READ_MSB _u(4) +#define DMA_CH7_CTRL_TRIG_INCR_READ_LSB _u(4) +#define DMA_CH7_CTRL_TRIG_INCR_READ_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH7_CTRL_TRIG_DATA_SIZE +// Description : Set the size of each bus transfer (byte/halfword/word). +// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) +// with each transfer. +// 0x0 -> SIZE_BYTE +// 0x1 -> SIZE_HALFWORD +// 0x2 -> SIZE_WORD +#define DMA_CH7_CTRL_TRIG_DATA_SIZE_RESET _u(0x0) +#define DMA_CH7_CTRL_TRIG_DATA_SIZE_BITS _u(0x0000000c) +#define DMA_CH7_CTRL_TRIG_DATA_SIZE_MSB _u(3) +#define DMA_CH7_CTRL_TRIG_DATA_SIZE_LSB _u(2) +#define DMA_CH7_CTRL_TRIG_DATA_SIZE_ACCESS "RW" +#define DMA_CH7_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE _u(0x0) +#define DMA_CH7_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD _u(0x1) +#define DMA_CH7_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD _u(0x2) +// ----------------------------------------------------------------------------- +// Field : DMA_CH7_CTRL_TRIG_HIGH_PRIORITY +// Description : HIGH_PRIORITY gives a channel preferential treatment in issue +// scheduling: in each scheduling round, all high priority +// channels are considered first, and then only a single low +// priority channel, before returning to the high priority +// channels. +// +// This only affects the order in which the DMA schedules +// channels. The DMA's bus priority is not changed. If the DMA is +// not saturated then a low priority channel will see no loss of +// throughput. +#define DMA_CH7_CTRL_TRIG_HIGH_PRIORITY_RESET _u(0x0) +#define DMA_CH7_CTRL_TRIG_HIGH_PRIORITY_BITS _u(0x00000002) +#define DMA_CH7_CTRL_TRIG_HIGH_PRIORITY_MSB _u(1) +#define DMA_CH7_CTRL_TRIG_HIGH_PRIORITY_LSB _u(1) +#define DMA_CH7_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH7_CTRL_TRIG_EN +// Description : DMA Channel Enable. +// When 1, the channel will respond to triggering events, which +// will cause it to become BUSY and start transferring data. When +// 0, the channel will ignore triggers, stop issuing transfers, +// and pause the current transfer sequence (i.e. BUSY will remain +// high if already high) +#define DMA_CH7_CTRL_TRIG_EN_RESET _u(0x0) +#define DMA_CH7_CTRL_TRIG_EN_BITS _u(0x00000001) +#define DMA_CH7_CTRL_TRIG_EN_MSB _u(0) +#define DMA_CH7_CTRL_TRIG_EN_LSB _u(0) +#define DMA_CH7_CTRL_TRIG_EN_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH7_AL1_CTRL +// Description : Alias for channel 7 CTRL register +#define DMA_CH7_AL1_CTRL_OFFSET _u(0x000001d0) +#define DMA_CH7_AL1_CTRL_BITS _u(0xffffffff) +#define DMA_CH7_AL1_CTRL_RESET "-" +#define DMA_CH7_AL1_CTRL_MSB _u(31) +#define DMA_CH7_AL1_CTRL_LSB _u(0) +#define DMA_CH7_AL1_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH7_AL1_READ_ADDR +// Description : Alias for channel 7 READ_ADDR register +#define DMA_CH7_AL1_READ_ADDR_OFFSET _u(0x000001d4) +#define DMA_CH7_AL1_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH7_AL1_READ_ADDR_RESET "-" +#define DMA_CH7_AL1_READ_ADDR_MSB _u(31) +#define DMA_CH7_AL1_READ_ADDR_LSB _u(0) +#define DMA_CH7_AL1_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH7_AL1_WRITE_ADDR +// Description : Alias for channel 7 WRITE_ADDR register +#define DMA_CH7_AL1_WRITE_ADDR_OFFSET _u(0x000001d8) +#define DMA_CH7_AL1_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH7_AL1_WRITE_ADDR_RESET "-" +#define DMA_CH7_AL1_WRITE_ADDR_MSB _u(31) +#define DMA_CH7_AL1_WRITE_ADDR_LSB _u(0) +#define DMA_CH7_AL1_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH7_AL1_TRANS_COUNT_TRIG +// Description : Alias for channel 7 TRANS_COUNT register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH7_AL1_TRANS_COUNT_TRIG_OFFSET _u(0x000001dc) +#define DMA_CH7_AL1_TRANS_COUNT_TRIG_BITS _u(0xffffffff) +#define DMA_CH7_AL1_TRANS_COUNT_TRIG_RESET "-" +#define DMA_CH7_AL1_TRANS_COUNT_TRIG_MSB _u(31) +#define DMA_CH7_AL1_TRANS_COUNT_TRIG_LSB _u(0) +#define DMA_CH7_AL1_TRANS_COUNT_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH7_AL2_CTRL +// Description : Alias for channel 7 CTRL register +#define DMA_CH7_AL2_CTRL_OFFSET _u(0x000001e0) +#define DMA_CH7_AL2_CTRL_BITS _u(0xffffffff) +#define DMA_CH7_AL2_CTRL_RESET "-" +#define DMA_CH7_AL2_CTRL_MSB _u(31) +#define DMA_CH7_AL2_CTRL_LSB _u(0) +#define DMA_CH7_AL2_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH7_AL2_TRANS_COUNT +// Description : Alias for channel 7 TRANS_COUNT register +#define DMA_CH7_AL2_TRANS_COUNT_OFFSET _u(0x000001e4) +#define DMA_CH7_AL2_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH7_AL2_TRANS_COUNT_RESET "-" +#define DMA_CH7_AL2_TRANS_COUNT_MSB _u(31) +#define DMA_CH7_AL2_TRANS_COUNT_LSB _u(0) +#define DMA_CH7_AL2_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH7_AL2_READ_ADDR +// Description : Alias for channel 7 READ_ADDR register +#define DMA_CH7_AL2_READ_ADDR_OFFSET _u(0x000001e8) +#define DMA_CH7_AL2_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH7_AL2_READ_ADDR_RESET "-" +#define DMA_CH7_AL2_READ_ADDR_MSB _u(31) +#define DMA_CH7_AL2_READ_ADDR_LSB _u(0) +#define DMA_CH7_AL2_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH7_AL2_WRITE_ADDR_TRIG +// Description : Alias for channel 7 WRITE_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH7_AL2_WRITE_ADDR_TRIG_OFFSET _u(0x000001ec) +#define DMA_CH7_AL2_WRITE_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH7_AL2_WRITE_ADDR_TRIG_RESET "-" +#define DMA_CH7_AL2_WRITE_ADDR_TRIG_MSB _u(31) +#define DMA_CH7_AL2_WRITE_ADDR_TRIG_LSB _u(0) +#define DMA_CH7_AL2_WRITE_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH7_AL3_CTRL +// Description : Alias for channel 7 CTRL register +#define DMA_CH7_AL3_CTRL_OFFSET _u(0x000001f0) +#define DMA_CH7_AL3_CTRL_BITS _u(0xffffffff) +#define DMA_CH7_AL3_CTRL_RESET "-" +#define DMA_CH7_AL3_CTRL_MSB _u(31) +#define DMA_CH7_AL3_CTRL_LSB _u(0) +#define DMA_CH7_AL3_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH7_AL3_WRITE_ADDR +// Description : Alias for channel 7 WRITE_ADDR register +#define DMA_CH7_AL3_WRITE_ADDR_OFFSET _u(0x000001f4) +#define DMA_CH7_AL3_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH7_AL3_WRITE_ADDR_RESET "-" +#define DMA_CH7_AL3_WRITE_ADDR_MSB _u(31) +#define DMA_CH7_AL3_WRITE_ADDR_LSB _u(0) +#define DMA_CH7_AL3_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH7_AL3_TRANS_COUNT +// Description : Alias for channel 7 TRANS_COUNT register +#define DMA_CH7_AL3_TRANS_COUNT_OFFSET _u(0x000001f8) +#define DMA_CH7_AL3_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH7_AL3_TRANS_COUNT_RESET "-" +#define DMA_CH7_AL3_TRANS_COUNT_MSB _u(31) +#define DMA_CH7_AL3_TRANS_COUNT_LSB _u(0) +#define DMA_CH7_AL3_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH7_AL3_READ_ADDR_TRIG +// Description : Alias for channel 7 READ_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH7_AL3_READ_ADDR_TRIG_OFFSET _u(0x000001fc) +#define DMA_CH7_AL3_READ_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH7_AL3_READ_ADDR_TRIG_RESET "-" +#define DMA_CH7_AL3_READ_ADDR_TRIG_MSB _u(31) +#define DMA_CH7_AL3_READ_ADDR_TRIG_LSB _u(0) +#define DMA_CH7_AL3_READ_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH8_READ_ADDR +// Description : DMA Channel 8 Read Address pointer +// This register updates automatically each time a read completes. +// The current value is the next address to be read by this +// channel. +#define DMA_CH8_READ_ADDR_OFFSET _u(0x00000200) +#define DMA_CH8_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH8_READ_ADDR_RESET _u(0x00000000) +#define DMA_CH8_READ_ADDR_MSB _u(31) +#define DMA_CH8_READ_ADDR_LSB _u(0) +#define DMA_CH8_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH8_WRITE_ADDR +// Description : DMA Channel 8 Write Address pointer +// This register updates automatically each time a write +// completes. The current value is the next address to be written +// by this channel. +#define DMA_CH8_WRITE_ADDR_OFFSET _u(0x00000204) +#define DMA_CH8_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH8_WRITE_ADDR_RESET _u(0x00000000) +#define DMA_CH8_WRITE_ADDR_MSB _u(31) +#define DMA_CH8_WRITE_ADDR_LSB _u(0) +#define DMA_CH8_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH8_TRANS_COUNT +// Description : DMA Channel 8 Transfer Count +// Program the number of bus transfers a channel will perform +// before halting. Note that, if transfers are larger than one +// byte in size, this is not equal to the number of bytes +// transferred (see CTRL_DATA_SIZE). +// +// When the channel is active, reading this register shows the +// number of transfers remaining, updating automatically each time +// a write transfer completes. +// +// Writing this register sets the RELOAD value for the transfer +// counter. Each time this channel is triggered, the RELOAD value +// is copied into the live transfer counter. The channel can be +// started multiple times, and will perform the same number of +// transfers each time, as programmed by most recent write. +// +// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT +// is used as a trigger, the written value is used immediately as +// the length of the new transfer sequence, as well as being +// written to RELOAD. +#define DMA_CH8_TRANS_COUNT_OFFSET _u(0x00000208) +#define DMA_CH8_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH8_TRANS_COUNT_RESET _u(0x00000000) +#define DMA_CH8_TRANS_COUNT_MSB _u(31) +#define DMA_CH8_TRANS_COUNT_LSB _u(0) +#define DMA_CH8_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH8_CTRL_TRIG +// Description : DMA Channel 8 Control and Status +#define DMA_CH8_CTRL_TRIG_OFFSET _u(0x0000020c) +#define DMA_CH8_CTRL_TRIG_BITS _u(0xe1ffffff) +#define DMA_CH8_CTRL_TRIG_RESET _u(0x00004000) +// ----------------------------------------------------------------------------- +// Field : DMA_CH8_CTRL_TRIG_AHB_ERROR +// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel +// halts when it encounters any bus error, and always raises its +// channel IRQ flag. +#define DMA_CH8_CTRL_TRIG_AHB_ERROR_RESET _u(0x0) +#define DMA_CH8_CTRL_TRIG_AHB_ERROR_BITS _u(0x80000000) +#define DMA_CH8_CTRL_TRIG_AHB_ERROR_MSB _u(31) +#define DMA_CH8_CTRL_TRIG_AHB_ERROR_LSB _u(31) +#define DMA_CH8_CTRL_TRIG_AHB_ERROR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH8_CTRL_TRIG_READ_ERROR +// Description : If 1, the channel received a read bus error. Write one to +// clear. +// READ_ADDR shows the approximate address where the bus error was +// encountered (will not to be earlier, or more than 3 transfers +// later) +#define DMA_CH8_CTRL_TRIG_READ_ERROR_RESET _u(0x0) +#define DMA_CH8_CTRL_TRIG_READ_ERROR_BITS _u(0x40000000) +#define DMA_CH8_CTRL_TRIG_READ_ERROR_MSB _u(30) +#define DMA_CH8_CTRL_TRIG_READ_ERROR_LSB _u(30) +#define DMA_CH8_CTRL_TRIG_READ_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH8_CTRL_TRIG_WRITE_ERROR +// Description : If 1, the channel received a write bus error. Write one to +// clear. +// WRITE_ADDR shows the approximate address where the bus error +// was encountered (will not to be earlier, or more than 5 +// transfers later) +#define DMA_CH8_CTRL_TRIG_WRITE_ERROR_RESET _u(0x0) +#define DMA_CH8_CTRL_TRIG_WRITE_ERROR_BITS _u(0x20000000) +#define DMA_CH8_CTRL_TRIG_WRITE_ERROR_MSB _u(29) +#define DMA_CH8_CTRL_TRIG_WRITE_ERROR_LSB _u(29) +#define DMA_CH8_CTRL_TRIG_WRITE_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH8_CTRL_TRIG_BUSY +// Description : This flag goes high when the channel starts a new transfer +// sequence, and low when the last transfer of that sequence +// completes. Clearing EN while BUSY is high pauses the channel, +// and BUSY will stay high while paused. +// +// To terminate a sequence early (and clear the BUSY flag), see +// CHAN_ABORT. +#define DMA_CH8_CTRL_TRIG_BUSY_RESET _u(0x0) +#define DMA_CH8_CTRL_TRIG_BUSY_BITS _u(0x01000000) +#define DMA_CH8_CTRL_TRIG_BUSY_MSB _u(24) +#define DMA_CH8_CTRL_TRIG_BUSY_LSB _u(24) +#define DMA_CH8_CTRL_TRIG_BUSY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH8_CTRL_TRIG_SNIFF_EN +// Description : If 1, this channel's data transfers are visible to the sniff +// hardware, and each transfer will advance the state of the +// checksum. This only applies if the sniff hardware is enabled, +// and has this channel selected. +// +// This allows checksum to be enabled or disabled on a +// per-control- block basis. +#define DMA_CH8_CTRL_TRIG_SNIFF_EN_RESET _u(0x0) +#define DMA_CH8_CTRL_TRIG_SNIFF_EN_BITS _u(0x00800000) +#define DMA_CH8_CTRL_TRIG_SNIFF_EN_MSB _u(23) +#define DMA_CH8_CTRL_TRIG_SNIFF_EN_LSB _u(23) +#define DMA_CH8_CTRL_TRIG_SNIFF_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH8_CTRL_TRIG_BSWAP +// Description : Apply byte-swap transformation to DMA data. +// For byte data, this has no effect. For halfword data, the two +// bytes of each halfword are swapped. For word data, the four +// bytes of each word are swapped to reverse order. +#define DMA_CH8_CTRL_TRIG_BSWAP_RESET _u(0x0) +#define DMA_CH8_CTRL_TRIG_BSWAP_BITS _u(0x00400000) +#define DMA_CH8_CTRL_TRIG_BSWAP_MSB _u(22) +#define DMA_CH8_CTRL_TRIG_BSWAP_LSB _u(22) +#define DMA_CH8_CTRL_TRIG_BSWAP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH8_CTRL_TRIG_IRQ_QUIET +// Description : In QUIET mode, the channel does not generate IRQs at the end of +// every transfer block. Instead, an IRQ is raised when NULL is +// written to a trigger register, indicating the end of a control +// block chain. +// +// This reduces the number of interrupts to be serviced by the CPU +// when transferring a DMA chain of many small control blocks. +#define DMA_CH8_CTRL_TRIG_IRQ_QUIET_RESET _u(0x0) +#define DMA_CH8_CTRL_TRIG_IRQ_QUIET_BITS _u(0x00200000) +#define DMA_CH8_CTRL_TRIG_IRQ_QUIET_MSB _u(21) +#define DMA_CH8_CTRL_TRIG_IRQ_QUIET_LSB _u(21) +#define DMA_CH8_CTRL_TRIG_IRQ_QUIET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH8_CTRL_TRIG_TREQ_SEL +// Description : Select a Transfer Request signal. +// The channel uses the transfer request signal to pace its data +// transfer rate. Sources for TREQ signals are internal (TIMERS) +// or external (DREQ, a Data Request from the system). +// 0x0 to 0x3a -> select DREQ n as TREQ +// 0x3b -> Select Timer 0 as TREQ +// 0x3c -> Select Timer 1 as TREQ +// 0x3d -> Select Timer 2 as TREQ (Optional) +// 0x3e -> Select Timer 3 as TREQ (Optional) +// 0x3f -> Permanent request, for unpaced transfers. +#define DMA_CH8_CTRL_TRIG_TREQ_SEL_RESET _u(0x00) +#define DMA_CH8_CTRL_TRIG_TREQ_SEL_BITS _u(0x001f8000) +#define DMA_CH8_CTRL_TRIG_TREQ_SEL_MSB _u(20) +#define DMA_CH8_CTRL_TRIG_TREQ_SEL_LSB _u(15) +#define DMA_CH8_CTRL_TRIG_TREQ_SEL_ACCESS "RW" +#define DMA_CH8_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 _u(0x3b) +#define DMA_CH8_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 _u(0x3c) +#define DMA_CH8_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 _u(0x3d) +#define DMA_CH8_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 _u(0x3e) +#define DMA_CH8_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT _u(0x3f) +// ----------------------------------------------------------------------------- +// Field : DMA_CH8_CTRL_TRIG_CHAIN_TO +// Description : When this channel completes, it will trigger the channel +// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this +// channel)_. +// Reset value is equal to channel number (8). +#define DMA_CH8_CTRL_TRIG_CHAIN_TO_RESET _u(0x8) +#define DMA_CH8_CTRL_TRIG_CHAIN_TO_BITS _u(0x00007800) +#define DMA_CH8_CTRL_TRIG_CHAIN_TO_MSB _u(14) +#define DMA_CH8_CTRL_TRIG_CHAIN_TO_LSB _u(11) +#define DMA_CH8_CTRL_TRIG_CHAIN_TO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH8_CTRL_TRIG_RING_SEL +// Description : Select whether RING_SIZE applies to read or write addresses. +// If 0, read addresses are wrapped on a (1 << RING_SIZE) +// boundary. If 1, write addresses are wrapped. +#define DMA_CH8_CTRL_TRIG_RING_SEL_RESET _u(0x0) +#define DMA_CH8_CTRL_TRIG_RING_SEL_BITS _u(0x00000400) +#define DMA_CH8_CTRL_TRIG_RING_SEL_MSB _u(10) +#define DMA_CH8_CTRL_TRIG_RING_SEL_LSB _u(10) +#define DMA_CH8_CTRL_TRIG_RING_SEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH8_CTRL_TRIG_RING_SIZE +// Description : Size of address wrap region. If 0, don't wrap. For values n > +// 0, only the lower n bits of the address will change. This wraps +// the address on a (1 << n) byte boundary, facilitating access to +// naturally-aligned ring buffers. +// +// Ring sizes between 2 and 32768 bytes are possible. This can +// apply to either read or write addresses, based on value of +// RING_SEL. +// 0x0 -> RING_NONE +#define DMA_CH8_CTRL_TRIG_RING_SIZE_RESET _u(0x0) +#define DMA_CH8_CTRL_TRIG_RING_SIZE_BITS _u(0x000003c0) +#define DMA_CH8_CTRL_TRIG_RING_SIZE_MSB _u(9) +#define DMA_CH8_CTRL_TRIG_RING_SIZE_LSB _u(6) +#define DMA_CH8_CTRL_TRIG_RING_SIZE_ACCESS "RW" +#define DMA_CH8_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE _u(0x0) +// ----------------------------------------------------------------------------- +// Field : DMA_CH8_CTRL_TRIG_INCR_WRITE +// Description : If 1, the write address increments with each transfer. If 0, +// each write is directed to the same, initial address. +// +// Generally this should be disabled for memory-to-peripheral +// transfers. +#define DMA_CH8_CTRL_TRIG_INCR_WRITE_RESET _u(0x0) +#define DMA_CH8_CTRL_TRIG_INCR_WRITE_BITS _u(0x00000020) +#define DMA_CH8_CTRL_TRIG_INCR_WRITE_MSB _u(5) +#define DMA_CH8_CTRL_TRIG_INCR_WRITE_LSB _u(5) +#define DMA_CH8_CTRL_TRIG_INCR_WRITE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH8_CTRL_TRIG_INCR_READ +// Description : If 1, the read address increments with each transfer. If 0, +// each read is directed to the same, initial address. +// +// Generally this should be disabled for peripheral-to-memory +// transfers. +#define DMA_CH8_CTRL_TRIG_INCR_READ_RESET _u(0x0) +#define DMA_CH8_CTRL_TRIG_INCR_READ_BITS _u(0x00000010) +#define DMA_CH8_CTRL_TRIG_INCR_READ_MSB _u(4) +#define DMA_CH8_CTRL_TRIG_INCR_READ_LSB _u(4) +#define DMA_CH8_CTRL_TRIG_INCR_READ_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH8_CTRL_TRIG_DATA_SIZE +// Description : Set the size of each bus transfer (byte/halfword/word). +// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) +// with each transfer. +// 0x0 -> SIZE_BYTE +// 0x1 -> SIZE_HALFWORD +// 0x2 -> SIZE_WORD +#define DMA_CH8_CTRL_TRIG_DATA_SIZE_RESET _u(0x0) +#define DMA_CH8_CTRL_TRIG_DATA_SIZE_BITS _u(0x0000000c) +#define DMA_CH8_CTRL_TRIG_DATA_SIZE_MSB _u(3) +#define DMA_CH8_CTRL_TRIG_DATA_SIZE_LSB _u(2) +#define DMA_CH8_CTRL_TRIG_DATA_SIZE_ACCESS "RW" +#define DMA_CH8_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE _u(0x0) +#define DMA_CH8_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD _u(0x1) +#define DMA_CH8_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD _u(0x2) +// ----------------------------------------------------------------------------- +// Field : DMA_CH8_CTRL_TRIG_HIGH_PRIORITY +// Description : HIGH_PRIORITY gives a channel preferential treatment in issue +// scheduling: in each scheduling round, all high priority +// channels are considered first, and then only a single low +// priority channel, before returning to the high priority +// channels. +// +// This only affects the order in which the DMA schedules +// channels. The DMA's bus priority is not changed. If the DMA is +// not saturated then a low priority channel will see no loss of +// throughput. +#define DMA_CH8_CTRL_TRIG_HIGH_PRIORITY_RESET _u(0x0) +#define DMA_CH8_CTRL_TRIG_HIGH_PRIORITY_BITS _u(0x00000002) +#define DMA_CH8_CTRL_TRIG_HIGH_PRIORITY_MSB _u(1) +#define DMA_CH8_CTRL_TRIG_HIGH_PRIORITY_LSB _u(1) +#define DMA_CH8_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH8_CTRL_TRIG_EN +// Description : DMA Channel Enable. +// When 1, the channel will respond to triggering events, which +// will cause it to become BUSY and start transferring data. When +// 0, the channel will ignore triggers, stop issuing transfers, +// and pause the current transfer sequence (i.e. BUSY will remain +// high if already high) +#define DMA_CH8_CTRL_TRIG_EN_RESET _u(0x0) +#define DMA_CH8_CTRL_TRIG_EN_BITS _u(0x00000001) +#define DMA_CH8_CTRL_TRIG_EN_MSB _u(0) +#define DMA_CH8_CTRL_TRIG_EN_LSB _u(0) +#define DMA_CH8_CTRL_TRIG_EN_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH8_AL1_CTRL +// Description : Alias for channel 8 CTRL register +#define DMA_CH8_AL1_CTRL_OFFSET _u(0x00000210) +#define DMA_CH8_AL1_CTRL_BITS _u(0xffffffff) +#define DMA_CH8_AL1_CTRL_RESET "-" +#define DMA_CH8_AL1_CTRL_MSB _u(31) +#define DMA_CH8_AL1_CTRL_LSB _u(0) +#define DMA_CH8_AL1_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH8_AL1_READ_ADDR +// Description : Alias for channel 8 READ_ADDR register +#define DMA_CH8_AL1_READ_ADDR_OFFSET _u(0x00000214) +#define DMA_CH8_AL1_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH8_AL1_READ_ADDR_RESET "-" +#define DMA_CH8_AL1_READ_ADDR_MSB _u(31) +#define DMA_CH8_AL1_READ_ADDR_LSB _u(0) +#define DMA_CH8_AL1_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH8_AL1_WRITE_ADDR +// Description : Alias for channel 8 WRITE_ADDR register +#define DMA_CH8_AL1_WRITE_ADDR_OFFSET _u(0x00000218) +#define DMA_CH8_AL1_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH8_AL1_WRITE_ADDR_RESET "-" +#define DMA_CH8_AL1_WRITE_ADDR_MSB _u(31) +#define DMA_CH8_AL1_WRITE_ADDR_LSB _u(0) +#define DMA_CH8_AL1_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH8_AL1_TRANS_COUNT_TRIG +// Description : Alias for channel 8 TRANS_COUNT register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH8_AL1_TRANS_COUNT_TRIG_OFFSET _u(0x0000021c) +#define DMA_CH8_AL1_TRANS_COUNT_TRIG_BITS _u(0xffffffff) +#define DMA_CH8_AL1_TRANS_COUNT_TRIG_RESET "-" +#define DMA_CH8_AL1_TRANS_COUNT_TRIG_MSB _u(31) +#define DMA_CH8_AL1_TRANS_COUNT_TRIG_LSB _u(0) +#define DMA_CH8_AL1_TRANS_COUNT_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH8_AL2_CTRL +// Description : Alias for channel 8 CTRL register +#define DMA_CH8_AL2_CTRL_OFFSET _u(0x00000220) +#define DMA_CH8_AL2_CTRL_BITS _u(0xffffffff) +#define DMA_CH8_AL2_CTRL_RESET "-" +#define DMA_CH8_AL2_CTRL_MSB _u(31) +#define DMA_CH8_AL2_CTRL_LSB _u(0) +#define DMA_CH8_AL2_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH8_AL2_TRANS_COUNT +// Description : Alias for channel 8 TRANS_COUNT register +#define DMA_CH8_AL2_TRANS_COUNT_OFFSET _u(0x00000224) +#define DMA_CH8_AL2_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH8_AL2_TRANS_COUNT_RESET "-" +#define DMA_CH8_AL2_TRANS_COUNT_MSB _u(31) +#define DMA_CH8_AL2_TRANS_COUNT_LSB _u(0) +#define DMA_CH8_AL2_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH8_AL2_READ_ADDR +// Description : Alias for channel 8 READ_ADDR register +#define DMA_CH8_AL2_READ_ADDR_OFFSET _u(0x00000228) +#define DMA_CH8_AL2_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH8_AL2_READ_ADDR_RESET "-" +#define DMA_CH8_AL2_READ_ADDR_MSB _u(31) +#define DMA_CH8_AL2_READ_ADDR_LSB _u(0) +#define DMA_CH8_AL2_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH8_AL2_WRITE_ADDR_TRIG +// Description : Alias for channel 8 WRITE_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH8_AL2_WRITE_ADDR_TRIG_OFFSET _u(0x0000022c) +#define DMA_CH8_AL2_WRITE_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH8_AL2_WRITE_ADDR_TRIG_RESET "-" +#define DMA_CH8_AL2_WRITE_ADDR_TRIG_MSB _u(31) +#define DMA_CH8_AL2_WRITE_ADDR_TRIG_LSB _u(0) +#define DMA_CH8_AL2_WRITE_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH8_AL3_CTRL +// Description : Alias for channel 8 CTRL register +#define DMA_CH8_AL3_CTRL_OFFSET _u(0x00000230) +#define DMA_CH8_AL3_CTRL_BITS _u(0xffffffff) +#define DMA_CH8_AL3_CTRL_RESET "-" +#define DMA_CH8_AL3_CTRL_MSB _u(31) +#define DMA_CH8_AL3_CTRL_LSB _u(0) +#define DMA_CH8_AL3_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH8_AL3_WRITE_ADDR +// Description : Alias for channel 8 WRITE_ADDR register +#define DMA_CH8_AL3_WRITE_ADDR_OFFSET _u(0x00000234) +#define DMA_CH8_AL3_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH8_AL3_WRITE_ADDR_RESET "-" +#define DMA_CH8_AL3_WRITE_ADDR_MSB _u(31) +#define DMA_CH8_AL3_WRITE_ADDR_LSB _u(0) +#define DMA_CH8_AL3_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH8_AL3_TRANS_COUNT +// Description : Alias for channel 8 TRANS_COUNT register +#define DMA_CH8_AL3_TRANS_COUNT_OFFSET _u(0x00000238) +#define DMA_CH8_AL3_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH8_AL3_TRANS_COUNT_RESET "-" +#define DMA_CH8_AL3_TRANS_COUNT_MSB _u(31) +#define DMA_CH8_AL3_TRANS_COUNT_LSB _u(0) +#define DMA_CH8_AL3_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH8_AL3_READ_ADDR_TRIG +// Description : Alias for channel 8 READ_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH8_AL3_READ_ADDR_TRIG_OFFSET _u(0x0000023c) +#define DMA_CH8_AL3_READ_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH8_AL3_READ_ADDR_TRIG_RESET "-" +#define DMA_CH8_AL3_READ_ADDR_TRIG_MSB _u(31) +#define DMA_CH8_AL3_READ_ADDR_TRIG_LSB _u(0) +#define DMA_CH8_AL3_READ_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH9_READ_ADDR +// Description : DMA Channel 9 Read Address pointer +// This register updates automatically each time a read completes. +// The current value is the next address to be read by this +// channel. +#define DMA_CH9_READ_ADDR_OFFSET _u(0x00000240) +#define DMA_CH9_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH9_READ_ADDR_RESET _u(0x00000000) +#define DMA_CH9_READ_ADDR_MSB _u(31) +#define DMA_CH9_READ_ADDR_LSB _u(0) +#define DMA_CH9_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH9_WRITE_ADDR +// Description : DMA Channel 9 Write Address pointer +// This register updates automatically each time a write +// completes. The current value is the next address to be written +// by this channel. +#define DMA_CH9_WRITE_ADDR_OFFSET _u(0x00000244) +#define DMA_CH9_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH9_WRITE_ADDR_RESET _u(0x00000000) +#define DMA_CH9_WRITE_ADDR_MSB _u(31) +#define DMA_CH9_WRITE_ADDR_LSB _u(0) +#define DMA_CH9_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH9_TRANS_COUNT +// Description : DMA Channel 9 Transfer Count +// Program the number of bus transfers a channel will perform +// before halting. Note that, if transfers are larger than one +// byte in size, this is not equal to the number of bytes +// transferred (see CTRL_DATA_SIZE). +// +// When the channel is active, reading this register shows the +// number of transfers remaining, updating automatically each time +// a write transfer completes. +// +// Writing this register sets the RELOAD value for the transfer +// counter. Each time this channel is triggered, the RELOAD value +// is copied into the live transfer counter. The channel can be +// started multiple times, and will perform the same number of +// transfers each time, as programmed by most recent write. +// +// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT +// is used as a trigger, the written value is used immediately as +// the length of the new transfer sequence, as well as being +// written to RELOAD. +#define DMA_CH9_TRANS_COUNT_OFFSET _u(0x00000248) +#define DMA_CH9_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH9_TRANS_COUNT_RESET _u(0x00000000) +#define DMA_CH9_TRANS_COUNT_MSB _u(31) +#define DMA_CH9_TRANS_COUNT_LSB _u(0) +#define DMA_CH9_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH9_CTRL_TRIG +// Description : DMA Channel 9 Control and Status +#define DMA_CH9_CTRL_TRIG_OFFSET _u(0x0000024c) +#define DMA_CH9_CTRL_TRIG_BITS _u(0xe1ffffff) +#define DMA_CH9_CTRL_TRIG_RESET _u(0x00004800) +// ----------------------------------------------------------------------------- +// Field : DMA_CH9_CTRL_TRIG_AHB_ERROR +// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel +// halts when it encounters any bus error, and always raises its +// channel IRQ flag. +#define DMA_CH9_CTRL_TRIG_AHB_ERROR_RESET _u(0x0) +#define DMA_CH9_CTRL_TRIG_AHB_ERROR_BITS _u(0x80000000) +#define DMA_CH9_CTRL_TRIG_AHB_ERROR_MSB _u(31) +#define DMA_CH9_CTRL_TRIG_AHB_ERROR_LSB _u(31) +#define DMA_CH9_CTRL_TRIG_AHB_ERROR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH9_CTRL_TRIG_READ_ERROR +// Description : If 1, the channel received a read bus error. Write one to +// clear. +// READ_ADDR shows the approximate address where the bus error was +// encountered (will not to be earlier, or more than 3 transfers +// later) +#define DMA_CH9_CTRL_TRIG_READ_ERROR_RESET _u(0x0) +#define DMA_CH9_CTRL_TRIG_READ_ERROR_BITS _u(0x40000000) +#define DMA_CH9_CTRL_TRIG_READ_ERROR_MSB _u(30) +#define DMA_CH9_CTRL_TRIG_READ_ERROR_LSB _u(30) +#define DMA_CH9_CTRL_TRIG_READ_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH9_CTRL_TRIG_WRITE_ERROR +// Description : If 1, the channel received a write bus error. Write one to +// clear. +// WRITE_ADDR shows the approximate address where the bus error +// was encountered (will not to be earlier, or more than 5 +// transfers later) +#define DMA_CH9_CTRL_TRIG_WRITE_ERROR_RESET _u(0x0) +#define DMA_CH9_CTRL_TRIG_WRITE_ERROR_BITS _u(0x20000000) +#define DMA_CH9_CTRL_TRIG_WRITE_ERROR_MSB _u(29) +#define DMA_CH9_CTRL_TRIG_WRITE_ERROR_LSB _u(29) +#define DMA_CH9_CTRL_TRIG_WRITE_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH9_CTRL_TRIG_BUSY +// Description : This flag goes high when the channel starts a new transfer +// sequence, and low when the last transfer of that sequence +// completes. Clearing EN while BUSY is high pauses the channel, +// and BUSY will stay high while paused. +// +// To terminate a sequence early (and clear the BUSY flag), see +// CHAN_ABORT. +#define DMA_CH9_CTRL_TRIG_BUSY_RESET _u(0x0) +#define DMA_CH9_CTRL_TRIG_BUSY_BITS _u(0x01000000) +#define DMA_CH9_CTRL_TRIG_BUSY_MSB _u(24) +#define DMA_CH9_CTRL_TRIG_BUSY_LSB _u(24) +#define DMA_CH9_CTRL_TRIG_BUSY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH9_CTRL_TRIG_SNIFF_EN +// Description : If 1, this channel's data transfers are visible to the sniff +// hardware, and each transfer will advance the state of the +// checksum. This only applies if the sniff hardware is enabled, +// and has this channel selected. +// +// This allows checksum to be enabled or disabled on a +// per-control- block basis. +#define DMA_CH9_CTRL_TRIG_SNIFF_EN_RESET _u(0x0) +#define DMA_CH9_CTRL_TRIG_SNIFF_EN_BITS _u(0x00800000) +#define DMA_CH9_CTRL_TRIG_SNIFF_EN_MSB _u(23) +#define DMA_CH9_CTRL_TRIG_SNIFF_EN_LSB _u(23) +#define DMA_CH9_CTRL_TRIG_SNIFF_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH9_CTRL_TRIG_BSWAP +// Description : Apply byte-swap transformation to DMA data. +// For byte data, this has no effect. For halfword data, the two +// bytes of each halfword are swapped. For word data, the four +// bytes of each word are swapped to reverse order. +#define DMA_CH9_CTRL_TRIG_BSWAP_RESET _u(0x0) +#define DMA_CH9_CTRL_TRIG_BSWAP_BITS _u(0x00400000) +#define DMA_CH9_CTRL_TRIG_BSWAP_MSB _u(22) +#define DMA_CH9_CTRL_TRIG_BSWAP_LSB _u(22) +#define DMA_CH9_CTRL_TRIG_BSWAP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH9_CTRL_TRIG_IRQ_QUIET +// Description : In QUIET mode, the channel does not generate IRQs at the end of +// every transfer block. Instead, an IRQ is raised when NULL is +// written to a trigger register, indicating the end of a control +// block chain. +// +// This reduces the number of interrupts to be serviced by the CPU +// when transferring a DMA chain of many small control blocks. +#define DMA_CH9_CTRL_TRIG_IRQ_QUIET_RESET _u(0x0) +#define DMA_CH9_CTRL_TRIG_IRQ_QUIET_BITS _u(0x00200000) +#define DMA_CH9_CTRL_TRIG_IRQ_QUIET_MSB _u(21) +#define DMA_CH9_CTRL_TRIG_IRQ_QUIET_LSB _u(21) +#define DMA_CH9_CTRL_TRIG_IRQ_QUIET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH9_CTRL_TRIG_TREQ_SEL +// Description : Select a Transfer Request signal. +// The channel uses the transfer request signal to pace its data +// transfer rate. Sources for TREQ signals are internal (TIMERS) +// or external (DREQ, a Data Request from the system). +// 0x0 to 0x3a -> select DREQ n as TREQ +// 0x3b -> Select Timer 0 as TREQ +// 0x3c -> Select Timer 1 as TREQ +// 0x3d -> Select Timer 2 as TREQ (Optional) +// 0x3e -> Select Timer 3 as TREQ (Optional) +// 0x3f -> Permanent request, for unpaced transfers. +#define DMA_CH9_CTRL_TRIG_TREQ_SEL_RESET _u(0x00) +#define DMA_CH9_CTRL_TRIG_TREQ_SEL_BITS _u(0x001f8000) +#define DMA_CH9_CTRL_TRIG_TREQ_SEL_MSB _u(20) +#define DMA_CH9_CTRL_TRIG_TREQ_SEL_LSB _u(15) +#define DMA_CH9_CTRL_TRIG_TREQ_SEL_ACCESS "RW" +#define DMA_CH9_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 _u(0x3b) +#define DMA_CH9_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 _u(0x3c) +#define DMA_CH9_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 _u(0x3d) +#define DMA_CH9_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 _u(0x3e) +#define DMA_CH9_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT _u(0x3f) +// ----------------------------------------------------------------------------- +// Field : DMA_CH9_CTRL_TRIG_CHAIN_TO +// Description : When this channel completes, it will trigger the channel +// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this +// channel)_. +// Reset value is equal to channel number (9). +#define DMA_CH9_CTRL_TRIG_CHAIN_TO_RESET _u(0x9) +#define DMA_CH9_CTRL_TRIG_CHAIN_TO_BITS _u(0x00007800) +#define DMA_CH9_CTRL_TRIG_CHAIN_TO_MSB _u(14) +#define DMA_CH9_CTRL_TRIG_CHAIN_TO_LSB _u(11) +#define DMA_CH9_CTRL_TRIG_CHAIN_TO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH9_CTRL_TRIG_RING_SEL +// Description : Select whether RING_SIZE applies to read or write addresses. +// If 0, read addresses are wrapped on a (1 << RING_SIZE) +// boundary. If 1, write addresses are wrapped. +#define DMA_CH9_CTRL_TRIG_RING_SEL_RESET _u(0x0) +#define DMA_CH9_CTRL_TRIG_RING_SEL_BITS _u(0x00000400) +#define DMA_CH9_CTRL_TRIG_RING_SEL_MSB _u(10) +#define DMA_CH9_CTRL_TRIG_RING_SEL_LSB _u(10) +#define DMA_CH9_CTRL_TRIG_RING_SEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH9_CTRL_TRIG_RING_SIZE +// Description : Size of address wrap region. If 0, don't wrap. For values n > +// 0, only the lower n bits of the address will change. This wraps +// the address on a (1 << n) byte boundary, facilitating access to +// naturally-aligned ring buffers. +// +// Ring sizes between 2 and 32768 bytes are possible. This can +// apply to either read or write addresses, based on value of +// RING_SEL. +// 0x0 -> RING_NONE +#define DMA_CH9_CTRL_TRIG_RING_SIZE_RESET _u(0x0) +#define DMA_CH9_CTRL_TRIG_RING_SIZE_BITS _u(0x000003c0) +#define DMA_CH9_CTRL_TRIG_RING_SIZE_MSB _u(9) +#define DMA_CH9_CTRL_TRIG_RING_SIZE_LSB _u(6) +#define DMA_CH9_CTRL_TRIG_RING_SIZE_ACCESS "RW" +#define DMA_CH9_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE _u(0x0) +// ----------------------------------------------------------------------------- +// Field : DMA_CH9_CTRL_TRIG_INCR_WRITE +// Description : If 1, the write address increments with each transfer. If 0, +// each write is directed to the same, initial address. +// +// Generally this should be disabled for memory-to-peripheral +// transfers. +#define DMA_CH9_CTRL_TRIG_INCR_WRITE_RESET _u(0x0) +#define DMA_CH9_CTRL_TRIG_INCR_WRITE_BITS _u(0x00000020) +#define DMA_CH9_CTRL_TRIG_INCR_WRITE_MSB _u(5) +#define DMA_CH9_CTRL_TRIG_INCR_WRITE_LSB _u(5) +#define DMA_CH9_CTRL_TRIG_INCR_WRITE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH9_CTRL_TRIG_INCR_READ +// Description : If 1, the read address increments with each transfer. If 0, +// each read is directed to the same, initial address. +// +// Generally this should be disabled for peripheral-to-memory +// transfers. +#define DMA_CH9_CTRL_TRIG_INCR_READ_RESET _u(0x0) +#define DMA_CH9_CTRL_TRIG_INCR_READ_BITS _u(0x00000010) +#define DMA_CH9_CTRL_TRIG_INCR_READ_MSB _u(4) +#define DMA_CH9_CTRL_TRIG_INCR_READ_LSB _u(4) +#define DMA_CH9_CTRL_TRIG_INCR_READ_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH9_CTRL_TRIG_DATA_SIZE +// Description : Set the size of each bus transfer (byte/halfword/word). +// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) +// with each transfer. +// 0x0 -> SIZE_BYTE +// 0x1 -> SIZE_HALFWORD +// 0x2 -> SIZE_WORD +#define DMA_CH9_CTRL_TRIG_DATA_SIZE_RESET _u(0x0) +#define DMA_CH9_CTRL_TRIG_DATA_SIZE_BITS _u(0x0000000c) +#define DMA_CH9_CTRL_TRIG_DATA_SIZE_MSB _u(3) +#define DMA_CH9_CTRL_TRIG_DATA_SIZE_LSB _u(2) +#define DMA_CH9_CTRL_TRIG_DATA_SIZE_ACCESS "RW" +#define DMA_CH9_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE _u(0x0) +#define DMA_CH9_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD _u(0x1) +#define DMA_CH9_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD _u(0x2) +// ----------------------------------------------------------------------------- +// Field : DMA_CH9_CTRL_TRIG_HIGH_PRIORITY +// Description : HIGH_PRIORITY gives a channel preferential treatment in issue +// scheduling: in each scheduling round, all high priority +// channels are considered first, and then only a single low +// priority channel, before returning to the high priority +// channels. +// +// This only affects the order in which the DMA schedules +// channels. The DMA's bus priority is not changed. If the DMA is +// not saturated then a low priority channel will see no loss of +// throughput. +#define DMA_CH9_CTRL_TRIG_HIGH_PRIORITY_RESET _u(0x0) +#define DMA_CH9_CTRL_TRIG_HIGH_PRIORITY_BITS _u(0x00000002) +#define DMA_CH9_CTRL_TRIG_HIGH_PRIORITY_MSB _u(1) +#define DMA_CH9_CTRL_TRIG_HIGH_PRIORITY_LSB _u(1) +#define DMA_CH9_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH9_CTRL_TRIG_EN +// Description : DMA Channel Enable. +// When 1, the channel will respond to triggering events, which +// will cause it to become BUSY and start transferring data. When +// 0, the channel will ignore triggers, stop issuing transfers, +// and pause the current transfer sequence (i.e. BUSY will remain +// high if already high) +#define DMA_CH9_CTRL_TRIG_EN_RESET _u(0x0) +#define DMA_CH9_CTRL_TRIG_EN_BITS _u(0x00000001) +#define DMA_CH9_CTRL_TRIG_EN_MSB _u(0) +#define DMA_CH9_CTRL_TRIG_EN_LSB _u(0) +#define DMA_CH9_CTRL_TRIG_EN_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH9_AL1_CTRL +// Description : Alias for channel 9 CTRL register +#define DMA_CH9_AL1_CTRL_OFFSET _u(0x00000250) +#define DMA_CH9_AL1_CTRL_BITS _u(0xffffffff) +#define DMA_CH9_AL1_CTRL_RESET "-" +#define DMA_CH9_AL1_CTRL_MSB _u(31) +#define DMA_CH9_AL1_CTRL_LSB _u(0) +#define DMA_CH9_AL1_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH9_AL1_READ_ADDR +// Description : Alias for channel 9 READ_ADDR register +#define DMA_CH9_AL1_READ_ADDR_OFFSET _u(0x00000254) +#define DMA_CH9_AL1_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH9_AL1_READ_ADDR_RESET "-" +#define DMA_CH9_AL1_READ_ADDR_MSB _u(31) +#define DMA_CH9_AL1_READ_ADDR_LSB _u(0) +#define DMA_CH9_AL1_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH9_AL1_WRITE_ADDR +// Description : Alias for channel 9 WRITE_ADDR register +#define DMA_CH9_AL1_WRITE_ADDR_OFFSET _u(0x00000258) +#define DMA_CH9_AL1_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH9_AL1_WRITE_ADDR_RESET "-" +#define DMA_CH9_AL1_WRITE_ADDR_MSB _u(31) +#define DMA_CH9_AL1_WRITE_ADDR_LSB _u(0) +#define DMA_CH9_AL1_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH9_AL1_TRANS_COUNT_TRIG +// Description : Alias for channel 9 TRANS_COUNT register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH9_AL1_TRANS_COUNT_TRIG_OFFSET _u(0x0000025c) +#define DMA_CH9_AL1_TRANS_COUNT_TRIG_BITS _u(0xffffffff) +#define DMA_CH9_AL1_TRANS_COUNT_TRIG_RESET "-" +#define DMA_CH9_AL1_TRANS_COUNT_TRIG_MSB _u(31) +#define DMA_CH9_AL1_TRANS_COUNT_TRIG_LSB _u(0) +#define DMA_CH9_AL1_TRANS_COUNT_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH9_AL2_CTRL +// Description : Alias for channel 9 CTRL register +#define DMA_CH9_AL2_CTRL_OFFSET _u(0x00000260) +#define DMA_CH9_AL2_CTRL_BITS _u(0xffffffff) +#define DMA_CH9_AL2_CTRL_RESET "-" +#define DMA_CH9_AL2_CTRL_MSB _u(31) +#define DMA_CH9_AL2_CTRL_LSB _u(0) +#define DMA_CH9_AL2_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH9_AL2_TRANS_COUNT +// Description : Alias for channel 9 TRANS_COUNT register +#define DMA_CH9_AL2_TRANS_COUNT_OFFSET _u(0x00000264) +#define DMA_CH9_AL2_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH9_AL2_TRANS_COUNT_RESET "-" +#define DMA_CH9_AL2_TRANS_COUNT_MSB _u(31) +#define DMA_CH9_AL2_TRANS_COUNT_LSB _u(0) +#define DMA_CH9_AL2_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH9_AL2_READ_ADDR +// Description : Alias for channel 9 READ_ADDR register +#define DMA_CH9_AL2_READ_ADDR_OFFSET _u(0x00000268) +#define DMA_CH9_AL2_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH9_AL2_READ_ADDR_RESET "-" +#define DMA_CH9_AL2_READ_ADDR_MSB _u(31) +#define DMA_CH9_AL2_READ_ADDR_LSB _u(0) +#define DMA_CH9_AL2_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH9_AL2_WRITE_ADDR_TRIG +// Description : Alias for channel 9 WRITE_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH9_AL2_WRITE_ADDR_TRIG_OFFSET _u(0x0000026c) +#define DMA_CH9_AL2_WRITE_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH9_AL2_WRITE_ADDR_TRIG_RESET "-" +#define DMA_CH9_AL2_WRITE_ADDR_TRIG_MSB _u(31) +#define DMA_CH9_AL2_WRITE_ADDR_TRIG_LSB _u(0) +#define DMA_CH9_AL2_WRITE_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH9_AL3_CTRL +// Description : Alias for channel 9 CTRL register +#define DMA_CH9_AL3_CTRL_OFFSET _u(0x00000270) +#define DMA_CH9_AL3_CTRL_BITS _u(0xffffffff) +#define DMA_CH9_AL3_CTRL_RESET "-" +#define DMA_CH9_AL3_CTRL_MSB _u(31) +#define DMA_CH9_AL3_CTRL_LSB _u(0) +#define DMA_CH9_AL3_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH9_AL3_WRITE_ADDR +// Description : Alias for channel 9 WRITE_ADDR register +#define DMA_CH9_AL3_WRITE_ADDR_OFFSET _u(0x00000274) +#define DMA_CH9_AL3_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH9_AL3_WRITE_ADDR_RESET "-" +#define DMA_CH9_AL3_WRITE_ADDR_MSB _u(31) +#define DMA_CH9_AL3_WRITE_ADDR_LSB _u(0) +#define DMA_CH9_AL3_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH9_AL3_TRANS_COUNT +// Description : Alias for channel 9 TRANS_COUNT register +#define DMA_CH9_AL3_TRANS_COUNT_OFFSET _u(0x00000278) +#define DMA_CH9_AL3_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH9_AL3_TRANS_COUNT_RESET "-" +#define DMA_CH9_AL3_TRANS_COUNT_MSB _u(31) +#define DMA_CH9_AL3_TRANS_COUNT_LSB _u(0) +#define DMA_CH9_AL3_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH9_AL3_READ_ADDR_TRIG +// Description : Alias for channel 9 READ_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH9_AL3_READ_ADDR_TRIG_OFFSET _u(0x0000027c) +#define DMA_CH9_AL3_READ_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH9_AL3_READ_ADDR_TRIG_RESET "-" +#define DMA_CH9_AL3_READ_ADDR_TRIG_MSB _u(31) +#define DMA_CH9_AL3_READ_ADDR_TRIG_LSB _u(0) +#define DMA_CH9_AL3_READ_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH10_READ_ADDR +// Description : DMA Channel 10 Read Address pointer +// This register updates automatically each time a read completes. +// The current value is the next address to be read by this +// channel. +#define DMA_CH10_READ_ADDR_OFFSET _u(0x00000280) +#define DMA_CH10_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH10_READ_ADDR_RESET _u(0x00000000) +#define DMA_CH10_READ_ADDR_MSB _u(31) +#define DMA_CH10_READ_ADDR_LSB _u(0) +#define DMA_CH10_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH10_WRITE_ADDR +// Description : DMA Channel 10 Write Address pointer +// This register updates automatically each time a write +// completes. The current value is the next address to be written +// by this channel. +#define DMA_CH10_WRITE_ADDR_OFFSET _u(0x00000284) +#define DMA_CH10_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH10_WRITE_ADDR_RESET _u(0x00000000) +#define DMA_CH10_WRITE_ADDR_MSB _u(31) +#define DMA_CH10_WRITE_ADDR_LSB _u(0) +#define DMA_CH10_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH10_TRANS_COUNT +// Description : DMA Channel 10 Transfer Count +// Program the number of bus transfers a channel will perform +// before halting. Note that, if transfers are larger than one +// byte in size, this is not equal to the number of bytes +// transferred (see CTRL_DATA_SIZE). +// +// When the channel is active, reading this register shows the +// number of transfers remaining, updating automatically each time +// a write transfer completes. +// +// Writing this register sets the RELOAD value for the transfer +// counter. Each time this channel is triggered, the RELOAD value +// is copied into the live transfer counter. The channel can be +// started multiple times, and will perform the same number of +// transfers each time, as programmed by most recent write. +// +// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT +// is used as a trigger, the written value is used immediately as +// the length of the new transfer sequence, as well as being +// written to RELOAD. +#define DMA_CH10_TRANS_COUNT_OFFSET _u(0x00000288) +#define DMA_CH10_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH10_TRANS_COUNT_RESET _u(0x00000000) +#define DMA_CH10_TRANS_COUNT_MSB _u(31) +#define DMA_CH10_TRANS_COUNT_LSB _u(0) +#define DMA_CH10_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH10_CTRL_TRIG +// Description : DMA Channel 10 Control and Status +#define DMA_CH10_CTRL_TRIG_OFFSET _u(0x0000028c) +#define DMA_CH10_CTRL_TRIG_BITS _u(0xe1ffffff) +#define DMA_CH10_CTRL_TRIG_RESET _u(0x00005000) +// ----------------------------------------------------------------------------- +// Field : DMA_CH10_CTRL_TRIG_AHB_ERROR +// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel +// halts when it encounters any bus error, and always raises its +// channel IRQ flag. +#define DMA_CH10_CTRL_TRIG_AHB_ERROR_RESET _u(0x0) +#define DMA_CH10_CTRL_TRIG_AHB_ERROR_BITS _u(0x80000000) +#define DMA_CH10_CTRL_TRIG_AHB_ERROR_MSB _u(31) +#define DMA_CH10_CTRL_TRIG_AHB_ERROR_LSB _u(31) +#define DMA_CH10_CTRL_TRIG_AHB_ERROR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH10_CTRL_TRIG_READ_ERROR +// Description : If 1, the channel received a read bus error. Write one to +// clear. +// READ_ADDR shows the approximate address where the bus error was +// encountered (will not to be earlier, or more than 3 transfers +// later) +#define DMA_CH10_CTRL_TRIG_READ_ERROR_RESET _u(0x0) +#define DMA_CH10_CTRL_TRIG_READ_ERROR_BITS _u(0x40000000) +#define DMA_CH10_CTRL_TRIG_READ_ERROR_MSB _u(30) +#define DMA_CH10_CTRL_TRIG_READ_ERROR_LSB _u(30) +#define DMA_CH10_CTRL_TRIG_READ_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH10_CTRL_TRIG_WRITE_ERROR +// Description : If 1, the channel received a write bus error. Write one to +// clear. +// WRITE_ADDR shows the approximate address where the bus error +// was encountered (will not to be earlier, or more than 5 +// transfers later) +#define DMA_CH10_CTRL_TRIG_WRITE_ERROR_RESET _u(0x0) +#define DMA_CH10_CTRL_TRIG_WRITE_ERROR_BITS _u(0x20000000) +#define DMA_CH10_CTRL_TRIG_WRITE_ERROR_MSB _u(29) +#define DMA_CH10_CTRL_TRIG_WRITE_ERROR_LSB _u(29) +#define DMA_CH10_CTRL_TRIG_WRITE_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH10_CTRL_TRIG_BUSY +// Description : This flag goes high when the channel starts a new transfer +// sequence, and low when the last transfer of that sequence +// completes. Clearing EN while BUSY is high pauses the channel, +// and BUSY will stay high while paused. +// +// To terminate a sequence early (and clear the BUSY flag), see +// CHAN_ABORT. +#define DMA_CH10_CTRL_TRIG_BUSY_RESET _u(0x0) +#define DMA_CH10_CTRL_TRIG_BUSY_BITS _u(0x01000000) +#define DMA_CH10_CTRL_TRIG_BUSY_MSB _u(24) +#define DMA_CH10_CTRL_TRIG_BUSY_LSB _u(24) +#define DMA_CH10_CTRL_TRIG_BUSY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH10_CTRL_TRIG_SNIFF_EN +// Description : If 1, this channel's data transfers are visible to the sniff +// hardware, and each transfer will advance the state of the +// checksum. This only applies if the sniff hardware is enabled, +// and has this channel selected. +// +// This allows checksum to be enabled or disabled on a +// per-control- block basis. +#define DMA_CH10_CTRL_TRIG_SNIFF_EN_RESET _u(0x0) +#define DMA_CH10_CTRL_TRIG_SNIFF_EN_BITS _u(0x00800000) +#define DMA_CH10_CTRL_TRIG_SNIFF_EN_MSB _u(23) +#define DMA_CH10_CTRL_TRIG_SNIFF_EN_LSB _u(23) +#define DMA_CH10_CTRL_TRIG_SNIFF_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH10_CTRL_TRIG_BSWAP +// Description : Apply byte-swap transformation to DMA data. +// For byte data, this has no effect. For halfword data, the two +// bytes of each halfword are swapped. For word data, the four +// bytes of each word are swapped to reverse order. +#define DMA_CH10_CTRL_TRIG_BSWAP_RESET _u(0x0) +#define DMA_CH10_CTRL_TRIG_BSWAP_BITS _u(0x00400000) +#define DMA_CH10_CTRL_TRIG_BSWAP_MSB _u(22) +#define DMA_CH10_CTRL_TRIG_BSWAP_LSB _u(22) +#define DMA_CH10_CTRL_TRIG_BSWAP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH10_CTRL_TRIG_IRQ_QUIET +// Description : In QUIET mode, the channel does not generate IRQs at the end of +// every transfer block. Instead, an IRQ is raised when NULL is +// written to a trigger register, indicating the end of a control +// block chain. +// +// This reduces the number of interrupts to be serviced by the CPU +// when transferring a DMA chain of many small control blocks. +#define DMA_CH10_CTRL_TRIG_IRQ_QUIET_RESET _u(0x0) +#define DMA_CH10_CTRL_TRIG_IRQ_QUIET_BITS _u(0x00200000) +#define DMA_CH10_CTRL_TRIG_IRQ_QUIET_MSB _u(21) +#define DMA_CH10_CTRL_TRIG_IRQ_QUIET_LSB _u(21) +#define DMA_CH10_CTRL_TRIG_IRQ_QUIET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH10_CTRL_TRIG_TREQ_SEL +// Description : Select a Transfer Request signal. +// The channel uses the transfer request signal to pace its data +// transfer rate. Sources for TREQ signals are internal (TIMERS) +// or external (DREQ, a Data Request from the system). +// 0x0 to 0x3a -> select DREQ n as TREQ +// 0x3b -> Select Timer 0 as TREQ +// 0x3c -> Select Timer 1 as TREQ +// 0x3d -> Select Timer 2 as TREQ (Optional) +// 0x3e -> Select Timer 3 as TREQ (Optional) +// 0x3f -> Permanent request, for unpaced transfers. +#define DMA_CH10_CTRL_TRIG_TREQ_SEL_RESET _u(0x00) +#define DMA_CH10_CTRL_TRIG_TREQ_SEL_BITS _u(0x001f8000) +#define DMA_CH10_CTRL_TRIG_TREQ_SEL_MSB _u(20) +#define DMA_CH10_CTRL_TRIG_TREQ_SEL_LSB _u(15) +#define DMA_CH10_CTRL_TRIG_TREQ_SEL_ACCESS "RW" +#define DMA_CH10_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 _u(0x3b) +#define DMA_CH10_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 _u(0x3c) +#define DMA_CH10_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 _u(0x3d) +#define DMA_CH10_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 _u(0x3e) +#define DMA_CH10_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT _u(0x3f) +// ----------------------------------------------------------------------------- +// Field : DMA_CH10_CTRL_TRIG_CHAIN_TO +// Description : When this channel completes, it will trigger the channel +// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this +// channel)_. +// Reset value is equal to channel number (10). +#define DMA_CH10_CTRL_TRIG_CHAIN_TO_RESET _u(0xa) +#define DMA_CH10_CTRL_TRIG_CHAIN_TO_BITS _u(0x00007800) +#define DMA_CH10_CTRL_TRIG_CHAIN_TO_MSB _u(14) +#define DMA_CH10_CTRL_TRIG_CHAIN_TO_LSB _u(11) +#define DMA_CH10_CTRL_TRIG_CHAIN_TO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH10_CTRL_TRIG_RING_SEL +// Description : Select whether RING_SIZE applies to read or write addresses. +// If 0, read addresses are wrapped on a (1 << RING_SIZE) +// boundary. If 1, write addresses are wrapped. +#define DMA_CH10_CTRL_TRIG_RING_SEL_RESET _u(0x0) +#define DMA_CH10_CTRL_TRIG_RING_SEL_BITS _u(0x00000400) +#define DMA_CH10_CTRL_TRIG_RING_SEL_MSB _u(10) +#define DMA_CH10_CTRL_TRIG_RING_SEL_LSB _u(10) +#define DMA_CH10_CTRL_TRIG_RING_SEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH10_CTRL_TRIG_RING_SIZE +// Description : Size of address wrap region. If 0, don't wrap. For values n > +// 0, only the lower n bits of the address will change. This wraps +// the address on a (1 << n) byte boundary, facilitating access to +// naturally-aligned ring buffers. +// +// Ring sizes between 2 and 32768 bytes are possible. This can +// apply to either read or write addresses, based on value of +// RING_SEL. +// 0x0 -> RING_NONE +#define DMA_CH10_CTRL_TRIG_RING_SIZE_RESET _u(0x0) +#define DMA_CH10_CTRL_TRIG_RING_SIZE_BITS _u(0x000003c0) +#define DMA_CH10_CTRL_TRIG_RING_SIZE_MSB _u(9) +#define DMA_CH10_CTRL_TRIG_RING_SIZE_LSB _u(6) +#define DMA_CH10_CTRL_TRIG_RING_SIZE_ACCESS "RW" +#define DMA_CH10_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE _u(0x0) +// ----------------------------------------------------------------------------- +// Field : DMA_CH10_CTRL_TRIG_INCR_WRITE +// Description : If 1, the write address increments with each transfer. If 0, +// each write is directed to the same, initial address. +// +// Generally this should be disabled for memory-to-peripheral +// transfers. +#define DMA_CH10_CTRL_TRIG_INCR_WRITE_RESET _u(0x0) +#define DMA_CH10_CTRL_TRIG_INCR_WRITE_BITS _u(0x00000020) +#define DMA_CH10_CTRL_TRIG_INCR_WRITE_MSB _u(5) +#define DMA_CH10_CTRL_TRIG_INCR_WRITE_LSB _u(5) +#define DMA_CH10_CTRL_TRIG_INCR_WRITE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH10_CTRL_TRIG_INCR_READ +// Description : If 1, the read address increments with each transfer. If 0, +// each read is directed to the same, initial address. +// +// Generally this should be disabled for peripheral-to-memory +// transfers. +#define DMA_CH10_CTRL_TRIG_INCR_READ_RESET _u(0x0) +#define DMA_CH10_CTRL_TRIG_INCR_READ_BITS _u(0x00000010) +#define DMA_CH10_CTRL_TRIG_INCR_READ_MSB _u(4) +#define DMA_CH10_CTRL_TRIG_INCR_READ_LSB _u(4) +#define DMA_CH10_CTRL_TRIG_INCR_READ_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH10_CTRL_TRIG_DATA_SIZE +// Description : Set the size of each bus transfer (byte/halfword/word). +// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) +// with each transfer. +// 0x0 -> SIZE_BYTE +// 0x1 -> SIZE_HALFWORD +// 0x2 -> SIZE_WORD +#define DMA_CH10_CTRL_TRIG_DATA_SIZE_RESET _u(0x0) +#define DMA_CH10_CTRL_TRIG_DATA_SIZE_BITS _u(0x0000000c) +#define DMA_CH10_CTRL_TRIG_DATA_SIZE_MSB _u(3) +#define DMA_CH10_CTRL_TRIG_DATA_SIZE_LSB _u(2) +#define DMA_CH10_CTRL_TRIG_DATA_SIZE_ACCESS "RW" +#define DMA_CH10_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE _u(0x0) +#define DMA_CH10_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD _u(0x1) +#define DMA_CH10_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD _u(0x2) +// ----------------------------------------------------------------------------- +// Field : DMA_CH10_CTRL_TRIG_HIGH_PRIORITY +// Description : HIGH_PRIORITY gives a channel preferential treatment in issue +// scheduling: in each scheduling round, all high priority +// channels are considered first, and then only a single low +// priority channel, before returning to the high priority +// channels. +// +// This only affects the order in which the DMA schedules +// channels. The DMA's bus priority is not changed. If the DMA is +// not saturated then a low priority channel will see no loss of +// throughput. +#define DMA_CH10_CTRL_TRIG_HIGH_PRIORITY_RESET _u(0x0) +#define DMA_CH10_CTRL_TRIG_HIGH_PRIORITY_BITS _u(0x00000002) +#define DMA_CH10_CTRL_TRIG_HIGH_PRIORITY_MSB _u(1) +#define DMA_CH10_CTRL_TRIG_HIGH_PRIORITY_LSB _u(1) +#define DMA_CH10_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH10_CTRL_TRIG_EN +// Description : DMA Channel Enable. +// When 1, the channel will respond to triggering events, which +// will cause it to become BUSY and start transferring data. When +// 0, the channel will ignore triggers, stop issuing transfers, +// and pause the current transfer sequence (i.e. BUSY will remain +// high if already high) +#define DMA_CH10_CTRL_TRIG_EN_RESET _u(0x0) +#define DMA_CH10_CTRL_TRIG_EN_BITS _u(0x00000001) +#define DMA_CH10_CTRL_TRIG_EN_MSB _u(0) +#define DMA_CH10_CTRL_TRIG_EN_LSB _u(0) +#define DMA_CH10_CTRL_TRIG_EN_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH10_AL1_CTRL +// Description : Alias for channel 10 CTRL register +#define DMA_CH10_AL1_CTRL_OFFSET _u(0x00000290) +#define DMA_CH10_AL1_CTRL_BITS _u(0xffffffff) +#define DMA_CH10_AL1_CTRL_RESET "-" +#define DMA_CH10_AL1_CTRL_MSB _u(31) +#define DMA_CH10_AL1_CTRL_LSB _u(0) +#define DMA_CH10_AL1_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH10_AL1_READ_ADDR +// Description : Alias for channel 10 READ_ADDR register +#define DMA_CH10_AL1_READ_ADDR_OFFSET _u(0x00000294) +#define DMA_CH10_AL1_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH10_AL1_READ_ADDR_RESET "-" +#define DMA_CH10_AL1_READ_ADDR_MSB _u(31) +#define DMA_CH10_AL1_READ_ADDR_LSB _u(0) +#define DMA_CH10_AL1_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH10_AL1_WRITE_ADDR +// Description : Alias for channel 10 WRITE_ADDR register +#define DMA_CH10_AL1_WRITE_ADDR_OFFSET _u(0x00000298) +#define DMA_CH10_AL1_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH10_AL1_WRITE_ADDR_RESET "-" +#define DMA_CH10_AL1_WRITE_ADDR_MSB _u(31) +#define DMA_CH10_AL1_WRITE_ADDR_LSB _u(0) +#define DMA_CH10_AL1_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH10_AL1_TRANS_COUNT_TRIG +// Description : Alias for channel 10 TRANS_COUNT register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH10_AL1_TRANS_COUNT_TRIG_OFFSET _u(0x0000029c) +#define DMA_CH10_AL1_TRANS_COUNT_TRIG_BITS _u(0xffffffff) +#define DMA_CH10_AL1_TRANS_COUNT_TRIG_RESET "-" +#define DMA_CH10_AL1_TRANS_COUNT_TRIG_MSB _u(31) +#define DMA_CH10_AL1_TRANS_COUNT_TRIG_LSB _u(0) +#define DMA_CH10_AL1_TRANS_COUNT_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH10_AL2_CTRL +// Description : Alias for channel 10 CTRL register +#define DMA_CH10_AL2_CTRL_OFFSET _u(0x000002a0) +#define DMA_CH10_AL2_CTRL_BITS _u(0xffffffff) +#define DMA_CH10_AL2_CTRL_RESET "-" +#define DMA_CH10_AL2_CTRL_MSB _u(31) +#define DMA_CH10_AL2_CTRL_LSB _u(0) +#define DMA_CH10_AL2_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH10_AL2_TRANS_COUNT +// Description : Alias for channel 10 TRANS_COUNT register +#define DMA_CH10_AL2_TRANS_COUNT_OFFSET _u(0x000002a4) +#define DMA_CH10_AL2_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH10_AL2_TRANS_COUNT_RESET "-" +#define DMA_CH10_AL2_TRANS_COUNT_MSB _u(31) +#define DMA_CH10_AL2_TRANS_COUNT_LSB _u(0) +#define DMA_CH10_AL2_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH10_AL2_READ_ADDR +// Description : Alias for channel 10 READ_ADDR register +#define DMA_CH10_AL2_READ_ADDR_OFFSET _u(0x000002a8) +#define DMA_CH10_AL2_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH10_AL2_READ_ADDR_RESET "-" +#define DMA_CH10_AL2_READ_ADDR_MSB _u(31) +#define DMA_CH10_AL2_READ_ADDR_LSB _u(0) +#define DMA_CH10_AL2_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH10_AL2_WRITE_ADDR_TRIG +// Description : Alias for channel 10 WRITE_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH10_AL2_WRITE_ADDR_TRIG_OFFSET _u(0x000002ac) +#define DMA_CH10_AL2_WRITE_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH10_AL2_WRITE_ADDR_TRIG_RESET "-" +#define DMA_CH10_AL2_WRITE_ADDR_TRIG_MSB _u(31) +#define DMA_CH10_AL2_WRITE_ADDR_TRIG_LSB _u(0) +#define DMA_CH10_AL2_WRITE_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH10_AL3_CTRL +// Description : Alias for channel 10 CTRL register +#define DMA_CH10_AL3_CTRL_OFFSET _u(0x000002b0) +#define DMA_CH10_AL3_CTRL_BITS _u(0xffffffff) +#define DMA_CH10_AL3_CTRL_RESET "-" +#define DMA_CH10_AL3_CTRL_MSB _u(31) +#define DMA_CH10_AL3_CTRL_LSB _u(0) +#define DMA_CH10_AL3_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH10_AL3_WRITE_ADDR +// Description : Alias for channel 10 WRITE_ADDR register +#define DMA_CH10_AL3_WRITE_ADDR_OFFSET _u(0x000002b4) +#define DMA_CH10_AL3_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH10_AL3_WRITE_ADDR_RESET "-" +#define DMA_CH10_AL3_WRITE_ADDR_MSB _u(31) +#define DMA_CH10_AL3_WRITE_ADDR_LSB _u(0) +#define DMA_CH10_AL3_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH10_AL3_TRANS_COUNT +// Description : Alias for channel 10 TRANS_COUNT register +#define DMA_CH10_AL3_TRANS_COUNT_OFFSET _u(0x000002b8) +#define DMA_CH10_AL3_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH10_AL3_TRANS_COUNT_RESET "-" +#define DMA_CH10_AL3_TRANS_COUNT_MSB _u(31) +#define DMA_CH10_AL3_TRANS_COUNT_LSB _u(0) +#define DMA_CH10_AL3_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH10_AL3_READ_ADDR_TRIG +// Description : Alias for channel 10 READ_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH10_AL3_READ_ADDR_TRIG_OFFSET _u(0x000002bc) +#define DMA_CH10_AL3_READ_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH10_AL3_READ_ADDR_TRIG_RESET "-" +#define DMA_CH10_AL3_READ_ADDR_TRIG_MSB _u(31) +#define DMA_CH10_AL3_READ_ADDR_TRIG_LSB _u(0) +#define DMA_CH10_AL3_READ_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH11_READ_ADDR +// Description : DMA Channel 11 Read Address pointer +// This register updates automatically each time a read completes. +// The current value is the next address to be read by this +// channel. +#define DMA_CH11_READ_ADDR_OFFSET _u(0x000002c0) +#define DMA_CH11_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH11_READ_ADDR_RESET _u(0x00000000) +#define DMA_CH11_READ_ADDR_MSB _u(31) +#define DMA_CH11_READ_ADDR_LSB _u(0) +#define DMA_CH11_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH11_WRITE_ADDR +// Description : DMA Channel 11 Write Address pointer +// This register updates automatically each time a write +// completes. The current value is the next address to be written +// by this channel. +#define DMA_CH11_WRITE_ADDR_OFFSET _u(0x000002c4) +#define DMA_CH11_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH11_WRITE_ADDR_RESET _u(0x00000000) +#define DMA_CH11_WRITE_ADDR_MSB _u(31) +#define DMA_CH11_WRITE_ADDR_LSB _u(0) +#define DMA_CH11_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH11_TRANS_COUNT +// Description : DMA Channel 11 Transfer Count +// Program the number of bus transfers a channel will perform +// before halting. Note that, if transfers are larger than one +// byte in size, this is not equal to the number of bytes +// transferred (see CTRL_DATA_SIZE). +// +// When the channel is active, reading this register shows the +// number of transfers remaining, updating automatically each time +// a write transfer completes. +// +// Writing this register sets the RELOAD value for the transfer +// counter. Each time this channel is triggered, the RELOAD value +// is copied into the live transfer counter. The channel can be +// started multiple times, and will perform the same number of +// transfers each time, as programmed by most recent write. +// +// The RELOAD value can be observed at CHx_DBG_TCR. If TRANS_COUNT +// is used as a trigger, the written value is used immediately as +// the length of the new transfer sequence, as well as being +// written to RELOAD. +#define DMA_CH11_TRANS_COUNT_OFFSET _u(0x000002c8) +#define DMA_CH11_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH11_TRANS_COUNT_RESET _u(0x00000000) +#define DMA_CH11_TRANS_COUNT_MSB _u(31) +#define DMA_CH11_TRANS_COUNT_LSB _u(0) +#define DMA_CH11_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH11_CTRL_TRIG +// Description : DMA Channel 11 Control and Status +#define DMA_CH11_CTRL_TRIG_OFFSET _u(0x000002cc) +#define DMA_CH11_CTRL_TRIG_BITS _u(0xe1ffffff) +#define DMA_CH11_CTRL_TRIG_RESET _u(0x00005800) +// ----------------------------------------------------------------------------- +// Field : DMA_CH11_CTRL_TRIG_AHB_ERROR +// Description : Logical OR of the READ_ERROR and WRITE_ERROR flags. The channel +// halts when it encounters any bus error, and always raises its +// channel IRQ flag. +#define DMA_CH11_CTRL_TRIG_AHB_ERROR_RESET _u(0x0) +#define DMA_CH11_CTRL_TRIG_AHB_ERROR_BITS _u(0x80000000) +#define DMA_CH11_CTRL_TRIG_AHB_ERROR_MSB _u(31) +#define DMA_CH11_CTRL_TRIG_AHB_ERROR_LSB _u(31) +#define DMA_CH11_CTRL_TRIG_AHB_ERROR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH11_CTRL_TRIG_READ_ERROR +// Description : If 1, the channel received a read bus error. Write one to +// clear. +// READ_ADDR shows the approximate address where the bus error was +// encountered (will not to be earlier, or more than 3 transfers +// later) +#define DMA_CH11_CTRL_TRIG_READ_ERROR_RESET _u(0x0) +#define DMA_CH11_CTRL_TRIG_READ_ERROR_BITS _u(0x40000000) +#define DMA_CH11_CTRL_TRIG_READ_ERROR_MSB _u(30) +#define DMA_CH11_CTRL_TRIG_READ_ERROR_LSB _u(30) +#define DMA_CH11_CTRL_TRIG_READ_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH11_CTRL_TRIG_WRITE_ERROR +// Description : If 1, the channel received a write bus error. Write one to +// clear. +// WRITE_ADDR shows the approximate address where the bus error +// was encountered (will not to be earlier, or more than 5 +// transfers later) +#define DMA_CH11_CTRL_TRIG_WRITE_ERROR_RESET _u(0x0) +#define DMA_CH11_CTRL_TRIG_WRITE_ERROR_BITS _u(0x20000000) +#define DMA_CH11_CTRL_TRIG_WRITE_ERROR_MSB _u(29) +#define DMA_CH11_CTRL_TRIG_WRITE_ERROR_LSB _u(29) +#define DMA_CH11_CTRL_TRIG_WRITE_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : DMA_CH11_CTRL_TRIG_BUSY +// Description : This flag goes high when the channel starts a new transfer +// sequence, and low when the last transfer of that sequence +// completes. Clearing EN while BUSY is high pauses the channel, +// and BUSY will stay high while paused. +// +// To terminate a sequence early (and clear the BUSY flag), see +// CHAN_ABORT. +#define DMA_CH11_CTRL_TRIG_BUSY_RESET _u(0x0) +#define DMA_CH11_CTRL_TRIG_BUSY_BITS _u(0x01000000) +#define DMA_CH11_CTRL_TRIG_BUSY_MSB _u(24) +#define DMA_CH11_CTRL_TRIG_BUSY_LSB _u(24) +#define DMA_CH11_CTRL_TRIG_BUSY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_CH11_CTRL_TRIG_SNIFF_EN +// Description : If 1, this channel's data transfers are visible to the sniff +// hardware, and each transfer will advance the state of the +// checksum. This only applies if the sniff hardware is enabled, +// and has this channel selected. +// +// This allows checksum to be enabled or disabled on a +// per-control- block basis. +#define DMA_CH11_CTRL_TRIG_SNIFF_EN_RESET _u(0x0) +#define DMA_CH11_CTRL_TRIG_SNIFF_EN_BITS _u(0x00800000) +#define DMA_CH11_CTRL_TRIG_SNIFF_EN_MSB _u(23) +#define DMA_CH11_CTRL_TRIG_SNIFF_EN_LSB _u(23) +#define DMA_CH11_CTRL_TRIG_SNIFF_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH11_CTRL_TRIG_BSWAP +// Description : Apply byte-swap transformation to DMA data. +// For byte data, this has no effect. For halfword data, the two +// bytes of each halfword are swapped. For word data, the four +// bytes of each word are swapped to reverse order. +#define DMA_CH11_CTRL_TRIG_BSWAP_RESET _u(0x0) +#define DMA_CH11_CTRL_TRIG_BSWAP_BITS _u(0x00400000) +#define DMA_CH11_CTRL_TRIG_BSWAP_MSB _u(22) +#define DMA_CH11_CTRL_TRIG_BSWAP_LSB _u(22) +#define DMA_CH11_CTRL_TRIG_BSWAP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH11_CTRL_TRIG_IRQ_QUIET +// Description : In QUIET mode, the channel does not generate IRQs at the end of +// every transfer block. Instead, an IRQ is raised when NULL is +// written to a trigger register, indicating the end of a control +// block chain. +// +// This reduces the number of interrupts to be serviced by the CPU +// when transferring a DMA chain of many small control blocks. +#define DMA_CH11_CTRL_TRIG_IRQ_QUIET_RESET _u(0x0) +#define DMA_CH11_CTRL_TRIG_IRQ_QUIET_BITS _u(0x00200000) +#define DMA_CH11_CTRL_TRIG_IRQ_QUIET_MSB _u(21) +#define DMA_CH11_CTRL_TRIG_IRQ_QUIET_LSB _u(21) +#define DMA_CH11_CTRL_TRIG_IRQ_QUIET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH11_CTRL_TRIG_TREQ_SEL +// Description : Select a Transfer Request signal. +// The channel uses the transfer request signal to pace its data +// transfer rate. Sources for TREQ signals are internal (TIMERS) +// or external (DREQ, a Data Request from the system). +// 0x0 to 0x3a -> select DREQ n as TREQ +// 0x3b -> Select Timer 0 as TREQ +// 0x3c -> Select Timer 1 as TREQ +// 0x3d -> Select Timer 2 as TREQ (Optional) +// 0x3e -> Select Timer 3 as TREQ (Optional) +// 0x3f -> Permanent request, for unpaced transfers. +#define DMA_CH11_CTRL_TRIG_TREQ_SEL_RESET _u(0x00) +#define DMA_CH11_CTRL_TRIG_TREQ_SEL_BITS _u(0x001f8000) +#define DMA_CH11_CTRL_TRIG_TREQ_SEL_MSB _u(20) +#define DMA_CH11_CTRL_TRIG_TREQ_SEL_LSB _u(15) +#define DMA_CH11_CTRL_TRIG_TREQ_SEL_ACCESS "RW" +#define DMA_CH11_CTRL_TRIG_TREQ_SEL_VALUE_TIMER0 _u(0x3b) +#define DMA_CH11_CTRL_TRIG_TREQ_SEL_VALUE_TIMER1 _u(0x3c) +#define DMA_CH11_CTRL_TRIG_TREQ_SEL_VALUE_TIMER2 _u(0x3d) +#define DMA_CH11_CTRL_TRIG_TREQ_SEL_VALUE_TIMER3 _u(0x3e) +#define DMA_CH11_CTRL_TRIG_TREQ_SEL_VALUE_PERMANENT _u(0x3f) +// ----------------------------------------------------------------------------- +// Field : DMA_CH11_CTRL_TRIG_CHAIN_TO +// Description : When this channel completes, it will trigger the channel +// indicated by CHAIN_TO. Disable by setting CHAIN_TO = _(this +// channel)_. +// Reset value is equal to channel number (11). +#define DMA_CH11_CTRL_TRIG_CHAIN_TO_RESET _u(0xb) +#define DMA_CH11_CTRL_TRIG_CHAIN_TO_BITS _u(0x00007800) +#define DMA_CH11_CTRL_TRIG_CHAIN_TO_MSB _u(14) +#define DMA_CH11_CTRL_TRIG_CHAIN_TO_LSB _u(11) +#define DMA_CH11_CTRL_TRIG_CHAIN_TO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH11_CTRL_TRIG_RING_SEL +// Description : Select whether RING_SIZE applies to read or write addresses. +// If 0, read addresses are wrapped on a (1 << RING_SIZE) +// boundary. If 1, write addresses are wrapped. +#define DMA_CH11_CTRL_TRIG_RING_SEL_RESET _u(0x0) +#define DMA_CH11_CTRL_TRIG_RING_SEL_BITS _u(0x00000400) +#define DMA_CH11_CTRL_TRIG_RING_SEL_MSB _u(10) +#define DMA_CH11_CTRL_TRIG_RING_SEL_LSB _u(10) +#define DMA_CH11_CTRL_TRIG_RING_SEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH11_CTRL_TRIG_RING_SIZE +// Description : Size of address wrap region. If 0, don't wrap. For values n > +// 0, only the lower n bits of the address will change. This wraps +// the address on a (1 << n) byte boundary, facilitating access to +// naturally-aligned ring buffers. +// +// Ring sizes between 2 and 32768 bytes are possible. This can +// apply to either read or write addresses, based on value of +// RING_SEL. +// 0x0 -> RING_NONE +#define DMA_CH11_CTRL_TRIG_RING_SIZE_RESET _u(0x0) +#define DMA_CH11_CTRL_TRIG_RING_SIZE_BITS _u(0x000003c0) +#define DMA_CH11_CTRL_TRIG_RING_SIZE_MSB _u(9) +#define DMA_CH11_CTRL_TRIG_RING_SIZE_LSB _u(6) +#define DMA_CH11_CTRL_TRIG_RING_SIZE_ACCESS "RW" +#define DMA_CH11_CTRL_TRIG_RING_SIZE_VALUE_RING_NONE _u(0x0) +// ----------------------------------------------------------------------------- +// Field : DMA_CH11_CTRL_TRIG_INCR_WRITE +// Description : If 1, the write address increments with each transfer. If 0, +// each write is directed to the same, initial address. +// +// Generally this should be disabled for memory-to-peripheral +// transfers. +#define DMA_CH11_CTRL_TRIG_INCR_WRITE_RESET _u(0x0) +#define DMA_CH11_CTRL_TRIG_INCR_WRITE_BITS _u(0x00000020) +#define DMA_CH11_CTRL_TRIG_INCR_WRITE_MSB _u(5) +#define DMA_CH11_CTRL_TRIG_INCR_WRITE_LSB _u(5) +#define DMA_CH11_CTRL_TRIG_INCR_WRITE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH11_CTRL_TRIG_INCR_READ +// Description : If 1, the read address increments with each transfer. If 0, +// each read is directed to the same, initial address. +// +// Generally this should be disabled for peripheral-to-memory +// transfers. +#define DMA_CH11_CTRL_TRIG_INCR_READ_RESET _u(0x0) +#define DMA_CH11_CTRL_TRIG_INCR_READ_BITS _u(0x00000010) +#define DMA_CH11_CTRL_TRIG_INCR_READ_MSB _u(4) +#define DMA_CH11_CTRL_TRIG_INCR_READ_LSB _u(4) +#define DMA_CH11_CTRL_TRIG_INCR_READ_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH11_CTRL_TRIG_DATA_SIZE +// Description : Set the size of each bus transfer (byte/halfword/word). +// READ_ADDR and WRITE_ADDR advance by this amount (1/2/4 bytes) +// with each transfer. +// 0x0 -> SIZE_BYTE +// 0x1 -> SIZE_HALFWORD +// 0x2 -> SIZE_WORD +#define DMA_CH11_CTRL_TRIG_DATA_SIZE_RESET _u(0x0) +#define DMA_CH11_CTRL_TRIG_DATA_SIZE_BITS _u(0x0000000c) +#define DMA_CH11_CTRL_TRIG_DATA_SIZE_MSB _u(3) +#define DMA_CH11_CTRL_TRIG_DATA_SIZE_LSB _u(2) +#define DMA_CH11_CTRL_TRIG_DATA_SIZE_ACCESS "RW" +#define DMA_CH11_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_BYTE _u(0x0) +#define DMA_CH11_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_HALFWORD _u(0x1) +#define DMA_CH11_CTRL_TRIG_DATA_SIZE_VALUE_SIZE_WORD _u(0x2) +// ----------------------------------------------------------------------------- +// Field : DMA_CH11_CTRL_TRIG_HIGH_PRIORITY +// Description : HIGH_PRIORITY gives a channel preferential treatment in issue +// scheduling: in each scheduling round, all high priority +// channels are considered first, and then only a single low +// priority channel, before returning to the high priority +// channels. +// +// This only affects the order in which the DMA schedules +// channels. The DMA's bus priority is not changed. If the DMA is +// not saturated then a low priority channel will see no loss of +// throughput. +#define DMA_CH11_CTRL_TRIG_HIGH_PRIORITY_RESET _u(0x0) +#define DMA_CH11_CTRL_TRIG_HIGH_PRIORITY_BITS _u(0x00000002) +#define DMA_CH11_CTRL_TRIG_HIGH_PRIORITY_MSB _u(1) +#define DMA_CH11_CTRL_TRIG_HIGH_PRIORITY_LSB _u(1) +#define DMA_CH11_CTRL_TRIG_HIGH_PRIORITY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_CH11_CTRL_TRIG_EN +// Description : DMA Channel Enable. +// When 1, the channel will respond to triggering events, which +// will cause it to become BUSY and start transferring data. When +// 0, the channel will ignore triggers, stop issuing transfers, +// and pause the current transfer sequence (i.e. BUSY will remain +// high if already high) +#define DMA_CH11_CTRL_TRIG_EN_RESET _u(0x0) +#define DMA_CH11_CTRL_TRIG_EN_BITS _u(0x00000001) +#define DMA_CH11_CTRL_TRIG_EN_MSB _u(0) +#define DMA_CH11_CTRL_TRIG_EN_LSB _u(0) +#define DMA_CH11_CTRL_TRIG_EN_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH11_AL1_CTRL +// Description : Alias for channel 11 CTRL register +#define DMA_CH11_AL1_CTRL_OFFSET _u(0x000002d0) +#define DMA_CH11_AL1_CTRL_BITS _u(0xffffffff) +#define DMA_CH11_AL1_CTRL_RESET "-" +#define DMA_CH11_AL1_CTRL_MSB _u(31) +#define DMA_CH11_AL1_CTRL_LSB _u(0) +#define DMA_CH11_AL1_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH11_AL1_READ_ADDR +// Description : Alias for channel 11 READ_ADDR register +#define DMA_CH11_AL1_READ_ADDR_OFFSET _u(0x000002d4) +#define DMA_CH11_AL1_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH11_AL1_READ_ADDR_RESET "-" +#define DMA_CH11_AL1_READ_ADDR_MSB _u(31) +#define DMA_CH11_AL1_READ_ADDR_LSB _u(0) +#define DMA_CH11_AL1_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH11_AL1_WRITE_ADDR +// Description : Alias for channel 11 WRITE_ADDR register +#define DMA_CH11_AL1_WRITE_ADDR_OFFSET _u(0x000002d8) +#define DMA_CH11_AL1_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH11_AL1_WRITE_ADDR_RESET "-" +#define DMA_CH11_AL1_WRITE_ADDR_MSB _u(31) +#define DMA_CH11_AL1_WRITE_ADDR_LSB _u(0) +#define DMA_CH11_AL1_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH11_AL1_TRANS_COUNT_TRIG +// Description : Alias for channel 11 TRANS_COUNT register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH11_AL1_TRANS_COUNT_TRIG_OFFSET _u(0x000002dc) +#define DMA_CH11_AL1_TRANS_COUNT_TRIG_BITS _u(0xffffffff) +#define DMA_CH11_AL1_TRANS_COUNT_TRIG_RESET "-" +#define DMA_CH11_AL1_TRANS_COUNT_TRIG_MSB _u(31) +#define DMA_CH11_AL1_TRANS_COUNT_TRIG_LSB _u(0) +#define DMA_CH11_AL1_TRANS_COUNT_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH11_AL2_CTRL +// Description : Alias for channel 11 CTRL register +#define DMA_CH11_AL2_CTRL_OFFSET _u(0x000002e0) +#define DMA_CH11_AL2_CTRL_BITS _u(0xffffffff) +#define DMA_CH11_AL2_CTRL_RESET "-" +#define DMA_CH11_AL2_CTRL_MSB _u(31) +#define DMA_CH11_AL2_CTRL_LSB _u(0) +#define DMA_CH11_AL2_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH11_AL2_TRANS_COUNT +// Description : Alias for channel 11 TRANS_COUNT register +#define DMA_CH11_AL2_TRANS_COUNT_OFFSET _u(0x000002e4) +#define DMA_CH11_AL2_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH11_AL2_TRANS_COUNT_RESET "-" +#define DMA_CH11_AL2_TRANS_COUNT_MSB _u(31) +#define DMA_CH11_AL2_TRANS_COUNT_LSB _u(0) +#define DMA_CH11_AL2_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH11_AL2_READ_ADDR +// Description : Alias for channel 11 READ_ADDR register +#define DMA_CH11_AL2_READ_ADDR_OFFSET _u(0x000002e8) +#define DMA_CH11_AL2_READ_ADDR_BITS _u(0xffffffff) +#define DMA_CH11_AL2_READ_ADDR_RESET "-" +#define DMA_CH11_AL2_READ_ADDR_MSB _u(31) +#define DMA_CH11_AL2_READ_ADDR_LSB _u(0) +#define DMA_CH11_AL2_READ_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH11_AL2_WRITE_ADDR_TRIG +// Description : Alias for channel 11 WRITE_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH11_AL2_WRITE_ADDR_TRIG_OFFSET _u(0x000002ec) +#define DMA_CH11_AL2_WRITE_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH11_AL2_WRITE_ADDR_TRIG_RESET "-" +#define DMA_CH11_AL2_WRITE_ADDR_TRIG_MSB _u(31) +#define DMA_CH11_AL2_WRITE_ADDR_TRIG_LSB _u(0) +#define DMA_CH11_AL2_WRITE_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH11_AL3_CTRL +// Description : Alias for channel 11 CTRL register +#define DMA_CH11_AL3_CTRL_OFFSET _u(0x000002f0) +#define DMA_CH11_AL3_CTRL_BITS _u(0xffffffff) +#define DMA_CH11_AL3_CTRL_RESET "-" +#define DMA_CH11_AL3_CTRL_MSB _u(31) +#define DMA_CH11_AL3_CTRL_LSB _u(0) +#define DMA_CH11_AL3_CTRL_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH11_AL3_WRITE_ADDR +// Description : Alias for channel 11 WRITE_ADDR register +#define DMA_CH11_AL3_WRITE_ADDR_OFFSET _u(0x000002f4) +#define DMA_CH11_AL3_WRITE_ADDR_BITS _u(0xffffffff) +#define DMA_CH11_AL3_WRITE_ADDR_RESET "-" +#define DMA_CH11_AL3_WRITE_ADDR_MSB _u(31) +#define DMA_CH11_AL3_WRITE_ADDR_LSB _u(0) +#define DMA_CH11_AL3_WRITE_ADDR_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH11_AL3_TRANS_COUNT +// Description : Alias for channel 11 TRANS_COUNT register +#define DMA_CH11_AL3_TRANS_COUNT_OFFSET _u(0x000002f8) +#define DMA_CH11_AL3_TRANS_COUNT_BITS _u(0xffffffff) +#define DMA_CH11_AL3_TRANS_COUNT_RESET "-" +#define DMA_CH11_AL3_TRANS_COUNT_MSB _u(31) +#define DMA_CH11_AL3_TRANS_COUNT_LSB _u(0) +#define DMA_CH11_AL3_TRANS_COUNT_ACCESS "RW" +// ============================================================================= +// Register : DMA_CH11_AL3_READ_ADDR_TRIG +// Description : Alias for channel 11 READ_ADDR register +// This is a trigger register (0xc). Writing a nonzero value will +// reload the channel counter and start the channel. +#define DMA_CH11_AL3_READ_ADDR_TRIG_OFFSET _u(0x000002fc) +#define DMA_CH11_AL3_READ_ADDR_TRIG_BITS _u(0xffffffff) +#define DMA_CH11_AL3_READ_ADDR_TRIG_RESET "-" +#define DMA_CH11_AL3_READ_ADDR_TRIG_MSB _u(31) +#define DMA_CH11_AL3_READ_ADDR_TRIG_LSB _u(0) +#define DMA_CH11_AL3_READ_ADDR_TRIG_ACCESS "RW" +// ============================================================================= +// Register : DMA_INTR +// Description : Interrupt Status (raw) +// Raw interrupt status for DMA Channels 0..15. Bit n corresponds +// to channel n. Ignores any masking or forcing. Channel +// interrupts can be cleared by writing a bit mask to INTR, INTS0 +// or INTS1. +// +// Channel interrupts can be routed to either of two system-level +// IRQs based on INTE0 and INTE1. +// +// This can be used vector different channel interrupts to +// different ISRs: this might be done to allow NVIC IRQ preemption +// for more time-critical channels, or to spread IRQ load across +// different cores. +// +// It is also valid to ignore this behaviour and just use +// INTE0/INTS0/IRQ 0. +#define DMA_INTR_OFFSET _u(0x00000400) +#define DMA_INTR_BITS _u(0x0000ffff) +#define DMA_INTR_RESET _u(0x00000000) +#define DMA_INTR_MSB _u(15) +#define DMA_INTR_LSB _u(0) +#define DMA_INTR_ACCESS "RO" +// ============================================================================= +// Register : DMA_INTE0 +// Description : Interrupt Enables for IRQ 0 +// Set bit n to pass interrupts from channel n to DMA IRQ 0. +#define DMA_INTE0_OFFSET _u(0x00000404) +#define DMA_INTE0_BITS _u(0x0000ffff) +#define DMA_INTE0_RESET _u(0x00000000) +#define DMA_INTE0_MSB _u(15) +#define DMA_INTE0_LSB _u(0) +#define DMA_INTE0_ACCESS "RW" +// ============================================================================= +// Register : DMA_INTF0 +// Description : Force Interrupts +// Write 1s to force the corresponding bits in INTE0. The +// interrupt remains asserted until INTF0 is cleared. +#define DMA_INTF0_OFFSET _u(0x00000408) +#define DMA_INTF0_BITS _u(0x0000ffff) +#define DMA_INTF0_RESET _u(0x00000000) +#define DMA_INTF0_MSB _u(15) +#define DMA_INTF0_LSB _u(0) +#define DMA_INTF0_ACCESS "RW" +// ============================================================================= +// Register : DMA_INTS0 +// Description : Interrupt Status for IRQ 0 +// Indicates active channel interrupt requests which are currently +// causing IRQ 0 to be asserted. +// Channel interrupts can be cleared by writing a bit mask here. +#define DMA_INTS0_OFFSET _u(0x0000040c) +#define DMA_INTS0_BITS _u(0x0000ffff) +#define DMA_INTS0_RESET _u(0x00000000) +#define DMA_INTS0_MSB _u(15) +#define DMA_INTS0_LSB _u(0) +#define DMA_INTS0_ACCESS "WC" +// ============================================================================= +// Register : DMA_INTE1 +// Description : Interrupt Enables for IRQ 1 +// Set bit n to pass interrupts from channel n to DMA IRQ 1. +#define DMA_INTE1_OFFSET _u(0x00000414) +#define DMA_INTE1_BITS _u(0x0000ffff) +#define DMA_INTE1_RESET _u(0x00000000) +#define DMA_INTE1_MSB _u(15) +#define DMA_INTE1_LSB _u(0) +#define DMA_INTE1_ACCESS "RW" +// ============================================================================= +// Register : DMA_INTF1 +// Description : Force Interrupts for IRQ 1 +// Write 1s to force the corresponding bits in INTE0. The +// interrupt remains asserted until INTF0 is cleared. +#define DMA_INTF1_OFFSET _u(0x00000418) +#define DMA_INTF1_BITS _u(0x0000ffff) +#define DMA_INTF1_RESET _u(0x00000000) +#define DMA_INTF1_MSB _u(15) +#define DMA_INTF1_LSB _u(0) +#define DMA_INTF1_ACCESS "RW" +// ============================================================================= +// Register : DMA_INTS1 +// Description : Interrupt Status (masked) for IRQ 1 +// Indicates active channel interrupt requests which are currently +// causing IRQ 1 to be asserted. +// Channel interrupts can be cleared by writing a bit mask here. +#define DMA_INTS1_OFFSET _u(0x0000041c) +#define DMA_INTS1_BITS _u(0x0000ffff) +#define DMA_INTS1_RESET _u(0x00000000) +#define DMA_INTS1_MSB _u(15) +#define DMA_INTS1_LSB _u(0) +#define DMA_INTS1_ACCESS "WC" +// ============================================================================= +// Register : DMA_TIMER0 +// Description : Pacing (X/Y) Fractional Timer +// The pacing timer produces TREQ assertions at a rate set by +// ((X/Y) * sys_clk). This equation is evaluated every sys_clk +// cycles and therefore can only generate TREQs at a rate of 1 per +// sys_clk (i.e. permanent TREQ) or less. +#define DMA_TIMER0_OFFSET _u(0x00000420) +#define DMA_TIMER0_BITS _u(0xffffffff) +#define DMA_TIMER0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : DMA_TIMER0_X +// Description : Pacing Timer Dividend. Specifies the X value for the (X/Y) +// fractional timer. +#define DMA_TIMER0_X_RESET _u(0x0000) +#define DMA_TIMER0_X_BITS _u(0xffff0000) +#define DMA_TIMER0_X_MSB _u(31) +#define DMA_TIMER0_X_LSB _u(16) +#define DMA_TIMER0_X_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_TIMER0_Y +// Description : Pacing Timer Divisor. Specifies the Y value for the (X/Y) +// fractional timer. +#define DMA_TIMER0_Y_RESET _u(0x0000) +#define DMA_TIMER0_Y_BITS _u(0x0000ffff) +#define DMA_TIMER0_Y_MSB _u(15) +#define DMA_TIMER0_Y_LSB _u(0) +#define DMA_TIMER0_Y_ACCESS "RW" +// ============================================================================= +// Register : DMA_TIMER1 +// Description : Pacing (X/Y) Fractional Timer +// The pacing timer produces TREQ assertions at a rate set by +// ((X/Y) * sys_clk). This equation is evaluated every sys_clk +// cycles and therefore can only generate TREQs at a rate of 1 per +// sys_clk (i.e. permanent TREQ) or less. +#define DMA_TIMER1_OFFSET _u(0x00000424) +#define DMA_TIMER1_BITS _u(0xffffffff) +#define DMA_TIMER1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : DMA_TIMER1_X +// Description : Pacing Timer Dividend. Specifies the X value for the (X/Y) +// fractional timer. +#define DMA_TIMER1_X_RESET _u(0x0000) +#define DMA_TIMER1_X_BITS _u(0xffff0000) +#define DMA_TIMER1_X_MSB _u(31) +#define DMA_TIMER1_X_LSB _u(16) +#define DMA_TIMER1_X_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_TIMER1_Y +// Description : Pacing Timer Divisor. Specifies the Y value for the (X/Y) +// fractional timer. +#define DMA_TIMER1_Y_RESET _u(0x0000) +#define DMA_TIMER1_Y_BITS _u(0x0000ffff) +#define DMA_TIMER1_Y_MSB _u(15) +#define DMA_TIMER1_Y_LSB _u(0) +#define DMA_TIMER1_Y_ACCESS "RW" +// ============================================================================= +// Register : DMA_TIMER2 +// Description : Pacing (X/Y) Fractional Timer +// The pacing timer produces TREQ assertions at a rate set by +// ((X/Y) * sys_clk). This equation is evaluated every sys_clk +// cycles and therefore can only generate TREQs at a rate of 1 per +// sys_clk (i.e. permanent TREQ) or less. +#define DMA_TIMER2_OFFSET _u(0x00000428) +#define DMA_TIMER2_BITS _u(0xffffffff) +#define DMA_TIMER2_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : DMA_TIMER2_X +// Description : Pacing Timer Dividend. Specifies the X value for the (X/Y) +// fractional timer. +#define DMA_TIMER2_X_RESET _u(0x0000) +#define DMA_TIMER2_X_BITS _u(0xffff0000) +#define DMA_TIMER2_X_MSB _u(31) +#define DMA_TIMER2_X_LSB _u(16) +#define DMA_TIMER2_X_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_TIMER2_Y +// Description : Pacing Timer Divisor. Specifies the Y value for the (X/Y) +// fractional timer. +#define DMA_TIMER2_Y_RESET _u(0x0000) +#define DMA_TIMER2_Y_BITS _u(0x0000ffff) +#define DMA_TIMER2_Y_MSB _u(15) +#define DMA_TIMER2_Y_LSB _u(0) +#define DMA_TIMER2_Y_ACCESS "RW" +// ============================================================================= +// Register : DMA_TIMER3 +// Description : Pacing (X/Y) Fractional Timer +// The pacing timer produces TREQ assertions at a rate set by +// ((X/Y) * sys_clk). This equation is evaluated every sys_clk +// cycles and therefore can only generate TREQs at a rate of 1 per +// sys_clk (i.e. permanent TREQ) or less. +#define DMA_TIMER3_OFFSET _u(0x0000042c) +#define DMA_TIMER3_BITS _u(0xffffffff) +#define DMA_TIMER3_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : DMA_TIMER3_X +// Description : Pacing Timer Dividend. Specifies the X value for the (X/Y) +// fractional timer. +#define DMA_TIMER3_X_RESET _u(0x0000) +#define DMA_TIMER3_X_BITS _u(0xffff0000) +#define DMA_TIMER3_X_MSB _u(31) +#define DMA_TIMER3_X_LSB _u(16) +#define DMA_TIMER3_X_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_TIMER3_Y +// Description : Pacing Timer Divisor. Specifies the Y value for the (X/Y) +// fractional timer. +#define DMA_TIMER3_Y_RESET _u(0x0000) +#define DMA_TIMER3_Y_BITS _u(0x0000ffff) +#define DMA_TIMER3_Y_MSB _u(15) +#define DMA_TIMER3_Y_LSB _u(0) +#define DMA_TIMER3_Y_ACCESS "RW" +// ============================================================================= +// Register : DMA_MULTI_CHAN_TRIGGER +// Description : Trigger one or more channels simultaneously +// Each bit in this register corresponds to a DMA channel. Writing +// a 1 to the relevant bit is the same as writing to that +// channel's trigger register; the channel will start if it is +// currently enabled and not already busy. +#define DMA_MULTI_CHAN_TRIGGER_OFFSET _u(0x00000430) +#define DMA_MULTI_CHAN_TRIGGER_BITS _u(0x0000ffff) +#define DMA_MULTI_CHAN_TRIGGER_RESET _u(0x00000000) +#define DMA_MULTI_CHAN_TRIGGER_MSB _u(15) +#define DMA_MULTI_CHAN_TRIGGER_LSB _u(0) +#define DMA_MULTI_CHAN_TRIGGER_ACCESS "SC" +// ============================================================================= +// Register : DMA_SNIFF_CTRL +// Description : Sniffer Control +#define DMA_SNIFF_CTRL_OFFSET _u(0x00000434) +#define DMA_SNIFF_CTRL_BITS _u(0x00000fff) +#define DMA_SNIFF_CTRL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : DMA_SNIFF_CTRL_OUT_INV +// Description : If set, the result appears inverted (bitwise complement) when +// read. This does not affect the way the checksum is calculated; +// the result is transformed on-the-fly between the result +// register and the bus. +#define DMA_SNIFF_CTRL_OUT_INV_RESET _u(0x0) +#define DMA_SNIFF_CTRL_OUT_INV_BITS _u(0x00000800) +#define DMA_SNIFF_CTRL_OUT_INV_MSB _u(11) +#define DMA_SNIFF_CTRL_OUT_INV_LSB _u(11) +#define DMA_SNIFF_CTRL_OUT_INV_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_SNIFF_CTRL_OUT_REV +// Description : If set, the result appears bit-reversed when read. This does +// not affect the way the checksum is calculated; the result is +// transformed on-the-fly between the result register and the bus. +#define DMA_SNIFF_CTRL_OUT_REV_RESET _u(0x0) +#define DMA_SNIFF_CTRL_OUT_REV_BITS _u(0x00000400) +#define DMA_SNIFF_CTRL_OUT_REV_MSB _u(10) +#define DMA_SNIFF_CTRL_OUT_REV_LSB _u(10) +#define DMA_SNIFF_CTRL_OUT_REV_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_SNIFF_CTRL_BSWAP +// Description : Locally perform a byte reverse on the sniffed data, before +// feeding into checksum. +// +// Note that the sniff hardware is downstream of the DMA channel +// byteswap performed in the read master: if channel CTRL_BSWAP +// and SNIFF_CTRL_BSWAP are both enabled, their effects cancel +// from the sniffer's point of view. +#define DMA_SNIFF_CTRL_BSWAP_RESET _u(0x0) +#define DMA_SNIFF_CTRL_BSWAP_BITS _u(0x00000200) +#define DMA_SNIFF_CTRL_BSWAP_MSB _u(9) +#define DMA_SNIFF_CTRL_BSWAP_LSB _u(9) +#define DMA_SNIFF_CTRL_BSWAP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_SNIFF_CTRL_CALC +// Description : 0x0 -> Calculate a CRC-32 (IEEE802.3 polynomial) +// 0x1 -> Calculate a CRC-32 (IEEE802.3 polynomial) with bit +// reversed data +// 0x2 -> Calculate a CRC-16-CCITT +// 0x3 -> Calculate a CRC-16-CCITT with bit reversed data +// 0xe -> XOR reduction over all data. == 1 if the total 1 +// population count is odd. +// 0xf -> Calculate a simple 32-bit checksum (addition with a 32 +// bit accumulator) +#define DMA_SNIFF_CTRL_CALC_RESET _u(0x0) +#define DMA_SNIFF_CTRL_CALC_BITS _u(0x000001e0) +#define DMA_SNIFF_CTRL_CALC_MSB _u(8) +#define DMA_SNIFF_CTRL_CALC_LSB _u(5) +#define DMA_SNIFF_CTRL_CALC_ACCESS "RW" +#define DMA_SNIFF_CTRL_CALC_VALUE_CRC32 _u(0x0) +#define DMA_SNIFF_CTRL_CALC_VALUE_CRC32R _u(0x1) +#define DMA_SNIFF_CTRL_CALC_VALUE_CRC16 _u(0x2) +#define DMA_SNIFF_CTRL_CALC_VALUE_CRC16R _u(0x3) +#define DMA_SNIFF_CTRL_CALC_VALUE_EVEN _u(0xe) +#define DMA_SNIFF_CTRL_CALC_VALUE_SUM _u(0xf) +// ----------------------------------------------------------------------------- +// Field : DMA_SNIFF_CTRL_DMACH +// Description : DMA channel for Sniffer to observe +#define DMA_SNIFF_CTRL_DMACH_RESET _u(0x0) +#define DMA_SNIFF_CTRL_DMACH_BITS _u(0x0000001e) +#define DMA_SNIFF_CTRL_DMACH_MSB _u(4) +#define DMA_SNIFF_CTRL_DMACH_LSB _u(1) +#define DMA_SNIFF_CTRL_DMACH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : DMA_SNIFF_CTRL_EN +// Description : Enable sniffer +#define DMA_SNIFF_CTRL_EN_RESET _u(0x0) +#define DMA_SNIFF_CTRL_EN_BITS _u(0x00000001) +#define DMA_SNIFF_CTRL_EN_MSB _u(0) +#define DMA_SNIFF_CTRL_EN_LSB _u(0) +#define DMA_SNIFF_CTRL_EN_ACCESS "RW" +// ============================================================================= +// Register : DMA_SNIFF_DATA +// Description : Data accumulator for sniff hardware +// Write an initial seed value here before starting a DMA transfer +// on the channel indicated by SNIFF_CTRL_DMACH. The hardware will +// update this register each time it observes a read from the +// indicated channel. Once the channel completes, the final result +// can be read from this register. +#define DMA_SNIFF_DATA_OFFSET _u(0x00000438) +#define DMA_SNIFF_DATA_BITS _u(0xffffffff) +#define DMA_SNIFF_DATA_RESET _u(0x00000000) +#define DMA_SNIFF_DATA_MSB _u(31) +#define DMA_SNIFF_DATA_LSB _u(0) +#define DMA_SNIFF_DATA_ACCESS "RW" +// ============================================================================= +// Register : DMA_FIFO_LEVELS +// Description : Debug RAF, WAF, TDF levels +#define DMA_FIFO_LEVELS_OFFSET _u(0x00000440) +#define DMA_FIFO_LEVELS_BITS _u(0x00ffffff) +#define DMA_FIFO_LEVELS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : DMA_FIFO_LEVELS_RAF_LVL +// Description : Current Read-Address-FIFO fill level +#define DMA_FIFO_LEVELS_RAF_LVL_RESET _u(0x00) +#define DMA_FIFO_LEVELS_RAF_LVL_BITS _u(0x00ff0000) +#define DMA_FIFO_LEVELS_RAF_LVL_MSB _u(23) +#define DMA_FIFO_LEVELS_RAF_LVL_LSB _u(16) +#define DMA_FIFO_LEVELS_RAF_LVL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_FIFO_LEVELS_WAF_LVL +// Description : Current Write-Address-FIFO fill level +#define DMA_FIFO_LEVELS_WAF_LVL_RESET _u(0x00) +#define DMA_FIFO_LEVELS_WAF_LVL_BITS _u(0x0000ff00) +#define DMA_FIFO_LEVELS_WAF_LVL_MSB _u(15) +#define DMA_FIFO_LEVELS_WAF_LVL_LSB _u(8) +#define DMA_FIFO_LEVELS_WAF_LVL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : DMA_FIFO_LEVELS_TDF_LVL +// Description : Current Transfer-Data-FIFO fill level +#define DMA_FIFO_LEVELS_TDF_LVL_RESET _u(0x00) +#define DMA_FIFO_LEVELS_TDF_LVL_BITS _u(0x000000ff) +#define DMA_FIFO_LEVELS_TDF_LVL_MSB _u(7) +#define DMA_FIFO_LEVELS_TDF_LVL_LSB _u(0) +#define DMA_FIFO_LEVELS_TDF_LVL_ACCESS "RO" +// ============================================================================= +// Register : DMA_CHAN_ABORT +// Description : Abort an in-progress transfer sequence on one or more channels +// Each bit corresponds to a channel. Writing a 1 aborts whatever +// transfer sequence is in progress on that channel. The bit will +// remain high until any in-flight transfers have been flushed +// through the address and data FIFOs. +// +// After writing, this register must be polled until it returns +// all-zero. Until this point, it is unsafe to restart the +// channel. +#define DMA_CHAN_ABORT_OFFSET _u(0x00000444) +#define DMA_CHAN_ABORT_BITS _u(0x0000ffff) +#define DMA_CHAN_ABORT_RESET _u(0x00000000) +#define DMA_CHAN_ABORT_MSB _u(15) +#define DMA_CHAN_ABORT_LSB _u(0) +#define DMA_CHAN_ABORT_ACCESS "SC" +// ============================================================================= +// Register : DMA_N_CHANNELS +// Description : The number of channels this DMA instance is equipped with. This +// DMA supports up to 16 hardware channels, but can be configured +// with as few as one, to minimise silicon area. +#define DMA_N_CHANNELS_OFFSET _u(0x00000448) +#define DMA_N_CHANNELS_BITS _u(0x0000001f) +#define DMA_N_CHANNELS_RESET "-" +#define DMA_N_CHANNELS_MSB _u(4) +#define DMA_N_CHANNELS_LSB _u(0) +#define DMA_N_CHANNELS_ACCESS "RO" +// ============================================================================= +// Register : DMA_CH0_DBG_CTDREQ +// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA +// expects it can perform on the peripheral without +// overflow/underflow. Write any value: clears the counter, and +// cause channel to re-initiate DREQ handshake. +#define DMA_CH0_DBG_CTDREQ_OFFSET _u(0x00000800) +#define DMA_CH0_DBG_CTDREQ_BITS _u(0x0000003f) +#define DMA_CH0_DBG_CTDREQ_RESET _u(0x00000000) +#define DMA_CH0_DBG_CTDREQ_MSB _u(5) +#define DMA_CH0_DBG_CTDREQ_LSB _u(0) +#define DMA_CH0_DBG_CTDREQ_ACCESS "WC" +// ============================================================================= +// Register : DMA_CH0_DBG_TCR +// Description : Read to get channel TRANS_COUNT reload value, i.e. the length +// of the next transfer +#define DMA_CH0_DBG_TCR_OFFSET _u(0x00000804) +#define DMA_CH0_DBG_TCR_BITS _u(0xffffffff) +#define DMA_CH0_DBG_TCR_RESET _u(0x00000000) +#define DMA_CH0_DBG_TCR_MSB _u(31) +#define DMA_CH0_DBG_TCR_LSB _u(0) +#define DMA_CH0_DBG_TCR_ACCESS "RO" +// ============================================================================= +// Register : DMA_CH1_DBG_CTDREQ +// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA +// expects it can perform on the peripheral without +// overflow/underflow. Write any value: clears the counter, and +// cause channel to re-initiate DREQ handshake. +#define DMA_CH1_DBG_CTDREQ_OFFSET _u(0x00000840) +#define DMA_CH1_DBG_CTDREQ_BITS _u(0x0000003f) +#define DMA_CH1_DBG_CTDREQ_RESET _u(0x00000000) +#define DMA_CH1_DBG_CTDREQ_MSB _u(5) +#define DMA_CH1_DBG_CTDREQ_LSB _u(0) +#define DMA_CH1_DBG_CTDREQ_ACCESS "WC" +// ============================================================================= +// Register : DMA_CH1_DBG_TCR +// Description : Read to get channel TRANS_COUNT reload value, i.e. the length +// of the next transfer +#define DMA_CH1_DBG_TCR_OFFSET _u(0x00000844) +#define DMA_CH1_DBG_TCR_BITS _u(0xffffffff) +#define DMA_CH1_DBG_TCR_RESET _u(0x00000000) +#define DMA_CH1_DBG_TCR_MSB _u(31) +#define DMA_CH1_DBG_TCR_LSB _u(0) +#define DMA_CH1_DBG_TCR_ACCESS "RO" +// ============================================================================= +// Register : DMA_CH2_DBG_CTDREQ +// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA +// expects it can perform on the peripheral without +// overflow/underflow. Write any value: clears the counter, and +// cause channel to re-initiate DREQ handshake. +#define DMA_CH2_DBG_CTDREQ_OFFSET _u(0x00000880) +#define DMA_CH2_DBG_CTDREQ_BITS _u(0x0000003f) +#define DMA_CH2_DBG_CTDREQ_RESET _u(0x00000000) +#define DMA_CH2_DBG_CTDREQ_MSB _u(5) +#define DMA_CH2_DBG_CTDREQ_LSB _u(0) +#define DMA_CH2_DBG_CTDREQ_ACCESS "WC" +// ============================================================================= +// Register : DMA_CH2_DBG_TCR +// Description : Read to get channel TRANS_COUNT reload value, i.e. the length +// of the next transfer +#define DMA_CH2_DBG_TCR_OFFSET _u(0x00000884) +#define DMA_CH2_DBG_TCR_BITS _u(0xffffffff) +#define DMA_CH2_DBG_TCR_RESET _u(0x00000000) +#define DMA_CH2_DBG_TCR_MSB _u(31) +#define DMA_CH2_DBG_TCR_LSB _u(0) +#define DMA_CH2_DBG_TCR_ACCESS "RO" +// ============================================================================= +// Register : DMA_CH3_DBG_CTDREQ +// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA +// expects it can perform on the peripheral without +// overflow/underflow. Write any value: clears the counter, and +// cause channel to re-initiate DREQ handshake. +#define DMA_CH3_DBG_CTDREQ_OFFSET _u(0x000008c0) +#define DMA_CH3_DBG_CTDREQ_BITS _u(0x0000003f) +#define DMA_CH3_DBG_CTDREQ_RESET _u(0x00000000) +#define DMA_CH3_DBG_CTDREQ_MSB _u(5) +#define DMA_CH3_DBG_CTDREQ_LSB _u(0) +#define DMA_CH3_DBG_CTDREQ_ACCESS "WC" +// ============================================================================= +// Register : DMA_CH3_DBG_TCR +// Description : Read to get channel TRANS_COUNT reload value, i.e. the length +// of the next transfer +#define DMA_CH3_DBG_TCR_OFFSET _u(0x000008c4) +#define DMA_CH3_DBG_TCR_BITS _u(0xffffffff) +#define DMA_CH3_DBG_TCR_RESET _u(0x00000000) +#define DMA_CH3_DBG_TCR_MSB _u(31) +#define DMA_CH3_DBG_TCR_LSB _u(0) +#define DMA_CH3_DBG_TCR_ACCESS "RO" +// ============================================================================= +// Register : DMA_CH4_DBG_CTDREQ +// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA +// expects it can perform on the peripheral without +// overflow/underflow. Write any value: clears the counter, and +// cause channel to re-initiate DREQ handshake. +#define DMA_CH4_DBG_CTDREQ_OFFSET _u(0x00000900) +#define DMA_CH4_DBG_CTDREQ_BITS _u(0x0000003f) +#define DMA_CH4_DBG_CTDREQ_RESET _u(0x00000000) +#define DMA_CH4_DBG_CTDREQ_MSB _u(5) +#define DMA_CH4_DBG_CTDREQ_LSB _u(0) +#define DMA_CH4_DBG_CTDREQ_ACCESS "WC" +// ============================================================================= +// Register : DMA_CH4_DBG_TCR +// Description : Read to get channel TRANS_COUNT reload value, i.e. the length +// of the next transfer +#define DMA_CH4_DBG_TCR_OFFSET _u(0x00000904) +#define DMA_CH4_DBG_TCR_BITS _u(0xffffffff) +#define DMA_CH4_DBG_TCR_RESET _u(0x00000000) +#define DMA_CH4_DBG_TCR_MSB _u(31) +#define DMA_CH4_DBG_TCR_LSB _u(0) +#define DMA_CH4_DBG_TCR_ACCESS "RO" +// ============================================================================= +// Register : DMA_CH5_DBG_CTDREQ +// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA +// expects it can perform on the peripheral without +// overflow/underflow. Write any value: clears the counter, and +// cause channel to re-initiate DREQ handshake. +#define DMA_CH5_DBG_CTDREQ_OFFSET _u(0x00000940) +#define DMA_CH5_DBG_CTDREQ_BITS _u(0x0000003f) +#define DMA_CH5_DBG_CTDREQ_RESET _u(0x00000000) +#define DMA_CH5_DBG_CTDREQ_MSB _u(5) +#define DMA_CH5_DBG_CTDREQ_LSB _u(0) +#define DMA_CH5_DBG_CTDREQ_ACCESS "WC" +// ============================================================================= +// Register : DMA_CH5_DBG_TCR +// Description : Read to get channel TRANS_COUNT reload value, i.e. the length +// of the next transfer +#define DMA_CH5_DBG_TCR_OFFSET _u(0x00000944) +#define DMA_CH5_DBG_TCR_BITS _u(0xffffffff) +#define DMA_CH5_DBG_TCR_RESET _u(0x00000000) +#define DMA_CH5_DBG_TCR_MSB _u(31) +#define DMA_CH5_DBG_TCR_LSB _u(0) +#define DMA_CH5_DBG_TCR_ACCESS "RO" +// ============================================================================= +// Register : DMA_CH6_DBG_CTDREQ +// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA +// expects it can perform on the peripheral without +// overflow/underflow. Write any value: clears the counter, and +// cause channel to re-initiate DREQ handshake. +#define DMA_CH6_DBG_CTDREQ_OFFSET _u(0x00000980) +#define DMA_CH6_DBG_CTDREQ_BITS _u(0x0000003f) +#define DMA_CH6_DBG_CTDREQ_RESET _u(0x00000000) +#define DMA_CH6_DBG_CTDREQ_MSB _u(5) +#define DMA_CH6_DBG_CTDREQ_LSB _u(0) +#define DMA_CH6_DBG_CTDREQ_ACCESS "WC" +// ============================================================================= +// Register : DMA_CH6_DBG_TCR +// Description : Read to get channel TRANS_COUNT reload value, i.e. the length +// of the next transfer +#define DMA_CH6_DBG_TCR_OFFSET _u(0x00000984) +#define DMA_CH6_DBG_TCR_BITS _u(0xffffffff) +#define DMA_CH6_DBG_TCR_RESET _u(0x00000000) +#define DMA_CH6_DBG_TCR_MSB _u(31) +#define DMA_CH6_DBG_TCR_LSB _u(0) +#define DMA_CH6_DBG_TCR_ACCESS "RO" +// ============================================================================= +// Register : DMA_CH7_DBG_CTDREQ +// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA +// expects it can perform on the peripheral without +// overflow/underflow. Write any value: clears the counter, and +// cause channel to re-initiate DREQ handshake. +#define DMA_CH7_DBG_CTDREQ_OFFSET _u(0x000009c0) +#define DMA_CH7_DBG_CTDREQ_BITS _u(0x0000003f) +#define DMA_CH7_DBG_CTDREQ_RESET _u(0x00000000) +#define DMA_CH7_DBG_CTDREQ_MSB _u(5) +#define DMA_CH7_DBG_CTDREQ_LSB _u(0) +#define DMA_CH7_DBG_CTDREQ_ACCESS "WC" +// ============================================================================= +// Register : DMA_CH7_DBG_TCR +// Description : Read to get channel TRANS_COUNT reload value, i.e. the length +// of the next transfer +#define DMA_CH7_DBG_TCR_OFFSET _u(0x000009c4) +#define DMA_CH7_DBG_TCR_BITS _u(0xffffffff) +#define DMA_CH7_DBG_TCR_RESET _u(0x00000000) +#define DMA_CH7_DBG_TCR_MSB _u(31) +#define DMA_CH7_DBG_TCR_LSB _u(0) +#define DMA_CH7_DBG_TCR_ACCESS "RO" +// ============================================================================= +// Register : DMA_CH8_DBG_CTDREQ +// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA +// expects it can perform on the peripheral without +// overflow/underflow. Write any value: clears the counter, and +// cause channel to re-initiate DREQ handshake. +#define DMA_CH8_DBG_CTDREQ_OFFSET _u(0x00000a00) +#define DMA_CH8_DBG_CTDREQ_BITS _u(0x0000003f) +#define DMA_CH8_DBG_CTDREQ_RESET _u(0x00000000) +#define DMA_CH8_DBG_CTDREQ_MSB _u(5) +#define DMA_CH8_DBG_CTDREQ_LSB _u(0) +#define DMA_CH8_DBG_CTDREQ_ACCESS "WC" +// ============================================================================= +// Register : DMA_CH8_DBG_TCR +// Description : Read to get channel TRANS_COUNT reload value, i.e. the length +// of the next transfer +#define DMA_CH8_DBG_TCR_OFFSET _u(0x00000a04) +#define DMA_CH8_DBG_TCR_BITS _u(0xffffffff) +#define DMA_CH8_DBG_TCR_RESET _u(0x00000000) +#define DMA_CH8_DBG_TCR_MSB _u(31) +#define DMA_CH8_DBG_TCR_LSB _u(0) +#define DMA_CH8_DBG_TCR_ACCESS "RO" +// ============================================================================= +// Register : DMA_CH9_DBG_CTDREQ +// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA +// expects it can perform on the peripheral without +// overflow/underflow. Write any value: clears the counter, and +// cause channel to re-initiate DREQ handshake. +#define DMA_CH9_DBG_CTDREQ_OFFSET _u(0x00000a40) +#define DMA_CH9_DBG_CTDREQ_BITS _u(0x0000003f) +#define DMA_CH9_DBG_CTDREQ_RESET _u(0x00000000) +#define DMA_CH9_DBG_CTDREQ_MSB _u(5) +#define DMA_CH9_DBG_CTDREQ_LSB _u(0) +#define DMA_CH9_DBG_CTDREQ_ACCESS "WC" +// ============================================================================= +// Register : DMA_CH9_DBG_TCR +// Description : Read to get channel TRANS_COUNT reload value, i.e. the length +// of the next transfer +#define DMA_CH9_DBG_TCR_OFFSET _u(0x00000a44) +#define DMA_CH9_DBG_TCR_BITS _u(0xffffffff) +#define DMA_CH9_DBG_TCR_RESET _u(0x00000000) +#define DMA_CH9_DBG_TCR_MSB _u(31) +#define DMA_CH9_DBG_TCR_LSB _u(0) +#define DMA_CH9_DBG_TCR_ACCESS "RO" +// ============================================================================= +// Register : DMA_CH10_DBG_CTDREQ +// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA +// expects it can perform on the peripheral without +// overflow/underflow. Write any value: clears the counter, and +// cause channel to re-initiate DREQ handshake. +#define DMA_CH10_DBG_CTDREQ_OFFSET _u(0x00000a80) +#define DMA_CH10_DBG_CTDREQ_BITS _u(0x0000003f) +#define DMA_CH10_DBG_CTDREQ_RESET _u(0x00000000) +#define DMA_CH10_DBG_CTDREQ_MSB _u(5) +#define DMA_CH10_DBG_CTDREQ_LSB _u(0) +#define DMA_CH10_DBG_CTDREQ_ACCESS "WC" +// ============================================================================= +// Register : DMA_CH10_DBG_TCR +// Description : Read to get channel TRANS_COUNT reload value, i.e. the length +// of the next transfer +#define DMA_CH10_DBG_TCR_OFFSET _u(0x00000a84) +#define DMA_CH10_DBG_TCR_BITS _u(0xffffffff) +#define DMA_CH10_DBG_TCR_RESET _u(0x00000000) +#define DMA_CH10_DBG_TCR_MSB _u(31) +#define DMA_CH10_DBG_TCR_LSB _u(0) +#define DMA_CH10_DBG_TCR_ACCESS "RO" +// ============================================================================= +// Register : DMA_CH11_DBG_CTDREQ +// Description : Read: get channel DREQ counter (i.e. how many accesses the DMA +// expects it can perform on the peripheral without +// overflow/underflow. Write any value: clears the counter, and +// cause channel to re-initiate DREQ handshake. +#define DMA_CH11_DBG_CTDREQ_OFFSET _u(0x00000ac0) +#define DMA_CH11_DBG_CTDREQ_BITS _u(0x0000003f) +#define DMA_CH11_DBG_CTDREQ_RESET _u(0x00000000) +#define DMA_CH11_DBG_CTDREQ_MSB _u(5) +#define DMA_CH11_DBG_CTDREQ_LSB _u(0) +#define DMA_CH11_DBG_CTDREQ_ACCESS "WC" +// ============================================================================= +// Register : DMA_CH11_DBG_TCR +// Description : Read to get channel TRANS_COUNT reload value, i.e. the length +// of the next transfer +#define DMA_CH11_DBG_TCR_OFFSET _u(0x00000ac4) +#define DMA_CH11_DBG_TCR_BITS _u(0xffffffff) +#define DMA_CH11_DBG_TCR_RESET _u(0x00000000) +#define DMA_CH11_DBG_TCR_MSB _u(31) +#define DMA_CH11_DBG_TCR_LSB _u(0) +#define DMA_CH11_DBG_TCR_ACCESS "RO" +// ============================================================================= +#endif // HARDWARE_REGS_DMA_DEFINED diff --git a/arkanoid/pico/hardware/regs/dreq.h b/arkanoid/pico/hardware/regs/dreq.h new file mode 100644 index 0000000..9de9dd5 --- /dev/null +++ b/arkanoid/pico/hardware/regs/dreq.h @@ -0,0 +1,50 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +#ifndef _DREQ_H_ +#define _DREQ_H_ + +#define DREQ_PIO0_TX0 0x0 +#define DREQ_PIO0_TX1 0x1 +#define DREQ_PIO0_TX2 0x2 +#define DREQ_PIO0_TX3 0x3 +#define DREQ_PIO0_RX0 0x4 +#define DREQ_PIO0_RX1 0x5 +#define DREQ_PIO0_RX2 0x6 +#define DREQ_PIO0_RX3 0x7 +#define DREQ_PIO1_TX0 0x8 +#define DREQ_PIO1_TX1 0x9 +#define DREQ_PIO1_TX2 0xa +#define DREQ_PIO1_TX3 0xb +#define DREQ_PIO1_RX0 0xc +#define DREQ_PIO1_RX1 0xd +#define DREQ_PIO1_RX2 0xe +#define DREQ_PIO1_RX3 0xf +#define DREQ_SPI0_TX 0x10 +#define DREQ_SPI0_RX 0x11 +#define DREQ_SPI1_TX 0x12 +#define DREQ_SPI1_RX 0x13 +#define DREQ_UART0_TX 0x14 +#define DREQ_UART0_RX 0x15 +#define DREQ_UART1_TX 0x16 +#define DREQ_UART1_RX 0x17 +#define DREQ_PWM_WRAP0 0x18 +#define DREQ_PWM_WRAP1 0x19 +#define DREQ_PWM_WRAP2 0x1a +#define DREQ_PWM_WRAP3 0x1b +#define DREQ_PWM_WRAP4 0x1c +#define DREQ_PWM_WRAP5 0x1d +#define DREQ_PWM_WRAP6 0x1e +#define DREQ_PWM_WRAP7 0x1f +#define DREQ_I2C0_TX 0x20 +#define DREQ_I2C0_RX 0x21 +#define DREQ_I2C1_TX 0x22 +#define DREQ_I2C1_RX 0x23 +#define DREQ_ADC 0x24 +#define DREQ_XIP_STREAM 0x25 +#define DREQ_XIP_SSITX 0x26 +#define DREQ_XIP_SSIRX 0x27 + +#endif // _DREQ_H_ diff --git a/arkanoid/pico/hardware/regs/i2c.h b/arkanoid/pico/hardware/regs/i2c.h new file mode 100644 index 0000000..dcddb06 --- /dev/null +++ b/arkanoid/pico/hardware/regs/i2c.h @@ -0,0 +1,2713 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : I2C +// Version : 1 +// Bus type : apb +// Description : DW_apb_i2c address block +// +// List of configuration constants for the Synopsys I2C +// hardware (you may see references to these in I2C register +// header; these are *fixed* values, set at hardware design +// time): +// +// IC_ULTRA_FAST_MODE ................ 0x0 +// IC_UFM_TBUF_CNT_DEFAULT ........... 0x8 +// IC_UFM_SCL_LOW_COUNT .............. 0x0008 +// IC_UFM_SCL_HIGH_COUNT ............. 0x0006 +// IC_TX_TL .......................... 0x0 +// IC_TX_CMD_BLOCK ................... 0x1 +// IC_HAS_DMA ........................ 0x1 +// IC_HAS_ASYNC_FIFO ................. 0x0 +// IC_SMBUS_ARP ...................... 0x0 +// IC_FIRST_DATA_BYTE_STATUS ......... 0x1 +// IC_INTR_IO ........................ 0x1 +// IC_MASTER_MODE .................... 0x1 +// IC_DEFAULT_ACK_GENERAL_CALL ....... 0x1 +// IC_INTR_POL ....................... 0x1 +// IC_OPTIONAL_SAR ................... 0x0 +// IC_DEFAULT_TAR_SLAVE_ADDR ......... 0x055 +// IC_DEFAULT_SLAVE_ADDR ............. 0x055 +// IC_DEFAULT_HS_SPKLEN .............. 0x1 +// IC_FS_SCL_HIGH_COUNT .............. 0x0006 +// IC_HS_SCL_LOW_COUNT ............... 0x0008 +// IC_DEVICE_ID_VALUE ................ 0x0 +// IC_10BITADDR_MASTER ............... 0x0 +// IC_CLK_FREQ_OPTIMIZATION .......... 0x0 +// IC_DEFAULT_FS_SPKLEN .............. 0x7 +// IC_ADD_ENCODED_PARAMS ............. 0x0 +// IC_DEFAULT_SDA_HOLD ............... 0x000001 +// IC_DEFAULT_SDA_SETUP .............. 0x64 +// IC_AVOID_RX_FIFO_FLUSH_ON_TX_ABRT . 0x0 +// IC_CLOCK_PERIOD ................... 100 +// IC_EMPTYFIFO_HOLD_MASTER_EN ....... 1 +// IC_RESTART_EN ..................... 0x1 +// IC_TX_CMD_BLOCK_DEFAULT ........... 0x0 +// IC_BUS_CLEAR_FEATURE .............. 0x0 +// IC_CAP_LOADING .................... 100 +// IC_FS_SCL_LOW_COUNT ............... 0x000d +// APB_DATA_WIDTH .................... 32 +// IC_SDA_STUCK_TIMEOUT_DEFAULT ...... 0xffffffff +// IC_SLV_DATA_NACK_ONLY ............. 0x1 +// IC_10BITADDR_SLAVE ................ 0x0 +// IC_CLK_TYPE ....................... 0x0 +// IC_SMBUS_UDID_MSB ................. 0x0 +// IC_SMBUS_SUSPEND_ALERT ............ 0x0 +// IC_HS_SCL_HIGH_COUNT .............. 0x0006 +// IC_SLV_RESTART_DET_EN ............. 0x1 +// IC_SMBUS .......................... 0x0 +// IC_OPTIONAL_SAR_DEFAULT ........... 0x0 +// IC_PERSISTANT_SLV_ADDR_DEFAULT .... 0x0 +// IC_USE_COUNTS ..................... 0x0 +// IC_RX_BUFFER_DEPTH ................ 16 +// IC_SCL_STUCK_TIMEOUT_DEFAULT ...... 0xffffffff +// IC_RX_FULL_HLD_BUS_EN ............. 0x1 +// IC_SLAVE_DISABLE .................. 0x1 +// IC_RX_TL .......................... 0x0 +// IC_DEVICE_ID ...................... 0x0 +// IC_HC_COUNT_VALUES ................ 0x0 +// I2C_DYNAMIC_TAR_UPDATE ............ 0 +// IC_SMBUS_CLK_LOW_MEXT_DEFAULT ..... 0xffffffff +// IC_SMBUS_CLK_LOW_SEXT_DEFAULT ..... 0xffffffff +// IC_HS_MASTER_CODE ................. 0x1 +// IC_SMBUS_RST_IDLE_CNT_DEFAULT ..... 0xffff +// IC_SMBUS_UDID_LSB_DEFAULT ......... 0xffffffff +// IC_SS_SCL_HIGH_COUNT .............. 0x0028 +// IC_SS_SCL_LOW_COUNT ............... 0x002f +// IC_MAX_SPEED_MODE ................. 0x2 +// IC_STAT_FOR_CLK_STRETCH ........... 0x0 +// IC_STOP_DET_IF_MASTER_ACTIVE ...... 0x0 +// IC_DEFAULT_UFM_SPKLEN ............. 0x1 +// IC_TX_BUFFER_DEPTH ................ 16 +// ============================================================================= +#ifndef HARDWARE_REGS_I2C_DEFINED +#define HARDWARE_REGS_I2C_DEFINED +// ============================================================================= +// Register : I2C_IC_CON +// Description : I2C Control Register. This register can be written only when +// the DW_apb_i2c is disabled, which corresponds to the +// IC_ENABLE[0] register being set to 0. Writes at other times +// have no effect. +// +// Read/Write Access: - bit 10 is read only. - bit 11 is read only +// - bit 16 is read only - bit 17 is read only - bits 18 and 19 +// are read only. +#define I2C_IC_CON_OFFSET _u(0x00000000) +#define I2C_IC_CON_BITS _u(0x000007ff) +#define I2C_IC_CON_RESET _u(0x00000065) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CON_STOP_DET_IF_MASTER_ACTIVE +// Description : Master issues the STOP_DET interrupt irrespective of whether +// master is active or not +#define I2C_IC_CON_STOP_DET_IF_MASTER_ACTIVE_RESET _u(0x0) +#define I2C_IC_CON_STOP_DET_IF_MASTER_ACTIVE_BITS _u(0x00000400) +#define I2C_IC_CON_STOP_DET_IF_MASTER_ACTIVE_MSB _u(10) +#define I2C_IC_CON_STOP_DET_IF_MASTER_ACTIVE_LSB _u(10) +#define I2C_IC_CON_STOP_DET_IF_MASTER_ACTIVE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CON_RX_FIFO_FULL_HLD_CTRL +// Description : This bit controls whether DW_apb_i2c should hold the bus when +// the Rx FIFO is physically full to its RX_BUFFER_DEPTH, as +// described in the IC_RX_FULL_HLD_BUS_EN parameter. +// +// Reset value: 0x0. +// 0x0 -> Overflow when RX_FIFO is full +// 0x1 -> Hold bus when RX_FIFO is full +#define I2C_IC_CON_RX_FIFO_FULL_HLD_CTRL_RESET _u(0x0) +#define I2C_IC_CON_RX_FIFO_FULL_HLD_CTRL_BITS _u(0x00000200) +#define I2C_IC_CON_RX_FIFO_FULL_HLD_CTRL_MSB _u(9) +#define I2C_IC_CON_RX_FIFO_FULL_HLD_CTRL_LSB _u(9) +#define I2C_IC_CON_RX_FIFO_FULL_HLD_CTRL_ACCESS "RW" +#define I2C_IC_CON_RX_FIFO_FULL_HLD_CTRL_VALUE_DISABLED _u(0x0) +#define I2C_IC_CON_RX_FIFO_FULL_HLD_CTRL_VALUE_ENABLED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CON_TX_EMPTY_CTRL +// Description : This bit controls the generation of the TX_EMPTY interrupt, as +// described in the IC_RAW_INTR_STAT register. +// +// Reset value: 0x0. +// 0x0 -> Default behaviour of TX_EMPTY interrupt +// 0x1 -> Controlled generation of TX_EMPTY interrupt +#define I2C_IC_CON_TX_EMPTY_CTRL_RESET _u(0x0) +#define I2C_IC_CON_TX_EMPTY_CTRL_BITS _u(0x00000100) +#define I2C_IC_CON_TX_EMPTY_CTRL_MSB _u(8) +#define I2C_IC_CON_TX_EMPTY_CTRL_LSB _u(8) +#define I2C_IC_CON_TX_EMPTY_CTRL_ACCESS "RW" +#define I2C_IC_CON_TX_EMPTY_CTRL_VALUE_DISABLED _u(0x0) +#define I2C_IC_CON_TX_EMPTY_CTRL_VALUE_ENABLED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CON_STOP_DET_IFADDRESSED +// Description : In slave mode: - 1'b1: issues the STOP_DET interrupt only when +// it is addressed. - 1'b0: issues the STOP_DET irrespective of +// whether it's addressed or not. Reset value: 0x0 +// +// NOTE: During a general call address, this slave does not issue +// the STOP_DET interrupt if STOP_DET_IF_ADDRESSED = 1'b1, even if +// the slave responds to the general call address by generating +// ACK. The STOP_DET interrupt is generated only when the +// transmitted address matches the slave address (SAR). +// 0x0 -> slave issues STOP_DET intr always +// 0x1 -> slave issues STOP_DET intr only if addressed +#define I2C_IC_CON_STOP_DET_IFADDRESSED_RESET _u(0x0) +#define I2C_IC_CON_STOP_DET_IFADDRESSED_BITS _u(0x00000080) +#define I2C_IC_CON_STOP_DET_IFADDRESSED_MSB _u(7) +#define I2C_IC_CON_STOP_DET_IFADDRESSED_LSB _u(7) +#define I2C_IC_CON_STOP_DET_IFADDRESSED_ACCESS "RW" +#define I2C_IC_CON_STOP_DET_IFADDRESSED_VALUE_DISABLED _u(0x0) +#define I2C_IC_CON_STOP_DET_IFADDRESSED_VALUE_ENABLED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CON_IC_SLAVE_DISABLE +// Description : This bit controls whether I2C has its slave disabled, which +// means once the presetn signal is applied, then this bit is set +// and the slave is disabled. +// +// If this bit is set (slave is disabled), DW_apb_i2c functions +// only as a master and does not perform any action that requires +// a slave. +// +// NOTE: Software should ensure that if this bit is written with +// 0, then bit 0 should also be written with a 0. +// 0x0 -> Slave mode is enabled +// 0x1 -> Slave mode is disabled +#define I2C_IC_CON_IC_SLAVE_DISABLE_RESET _u(0x1) +#define I2C_IC_CON_IC_SLAVE_DISABLE_BITS _u(0x00000040) +#define I2C_IC_CON_IC_SLAVE_DISABLE_MSB _u(6) +#define I2C_IC_CON_IC_SLAVE_DISABLE_LSB _u(6) +#define I2C_IC_CON_IC_SLAVE_DISABLE_ACCESS "RW" +#define I2C_IC_CON_IC_SLAVE_DISABLE_VALUE_SLAVE_ENABLED _u(0x0) +#define I2C_IC_CON_IC_SLAVE_DISABLE_VALUE_SLAVE_DISABLED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CON_IC_RESTART_EN +// Description : Determines whether RESTART conditions may be sent when acting +// as a master. Some older slaves do not support handling RESTART +// conditions; however, RESTART conditions are used in several +// DW_apb_i2c operations. When RESTART is disabled, the master is +// prohibited from performing the following functions: - Sending a +// START BYTE - Performing any high-speed mode operation - +// High-speed mode operation - Performing direction changes in +// combined format mode - Performing a read operation with a +// 10-bit address By replacing RESTART condition followed by a +// STOP and a subsequent START condition, split operations are +// broken down into multiple DW_apb_i2c transfers. If the above +// operations are performed, it will result in setting bit 6 +// (TX_ABRT) of the IC_RAW_INTR_STAT register. +// +// Reset value: ENABLED +// 0x0 -> Master restart disabled +// 0x1 -> Master restart enabled +#define I2C_IC_CON_IC_RESTART_EN_RESET _u(0x1) +#define I2C_IC_CON_IC_RESTART_EN_BITS _u(0x00000020) +#define I2C_IC_CON_IC_RESTART_EN_MSB _u(5) +#define I2C_IC_CON_IC_RESTART_EN_LSB _u(5) +#define I2C_IC_CON_IC_RESTART_EN_ACCESS "RW" +#define I2C_IC_CON_IC_RESTART_EN_VALUE_DISABLED _u(0x0) +#define I2C_IC_CON_IC_RESTART_EN_VALUE_ENABLED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CON_IC_10BITADDR_MASTER +// Description : Controls whether the DW_apb_i2c starts its transfers in 7- or +// 10-bit addressing mode when acting as a master. - 0: 7-bit +// addressing - 1: 10-bit addressing +// 0x0 -> Master 7Bit addressing mode +// 0x1 -> Master 10Bit addressing mode +#define I2C_IC_CON_IC_10BITADDR_MASTER_RESET _u(0x0) +#define I2C_IC_CON_IC_10BITADDR_MASTER_BITS _u(0x00000010) +#define I2C_IC_CON_IC_10BITADDR_MASTER_MSB _u(4) +#define I2C_IC_CON_IC_10BITADDR_MASTER_LSB _u(4) +#define I2C_IC_CON_IC_10BITADDR_MASTER_ACCESS "RW" +#define I2C_IC_CON_IC_10BITADDR_MASTER_VALUE_ADDR_7BITS _u(0x0) +#define I2C_IC_CON_IC_10BITADDR_MASTER_VALUE_ADDR_10BITS _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CON_IC_10BITADDR_SLAVE +// Description : When acting as a slave, this bit controls whether the +// DW_apb_i2c responds to 7- or 10-bit addresses. - 0: 7-bit +// addressing. The DW_apb_i2c ignores transactions that involve +// 10-bit addressing; for 7-bit addressing, only the lower 7 bits +// of the IC_SAR register are compared. - 1: 10-bit addressing. +// The DW_apb_i2c responds to only 10-bit addressing transfers +// that match the full 10 bits of the IC_SAR register. +// 0x0 -> Slave 7Bit addressing +// 0x1 -> Slave 10Bit addressing +#define I2C_IC_CON_IC_10BITADDR_SLAVE_RESET _u(0x0) +#define I2C_IC_CON_IC_10BITADDR_SLAVE_BITS _u(0x00000008) +#define I2C_IC_CON_IC_10BITADDR_SLAVE_MSB _u(3) +#define I2C_IC_CON_IC_10BITADDR_SLAVE_LSB _u(3) +#define I2C_IC_CON_IC_10BITADDR_SLAVE_ACCESS "RW" +#define I2C_IC_CON_IC_10BITADDR_SLAVE_VALUE_ADDR_7BITS _u(0x0) +#define I2C_IC_CON_IC_10BITADDR_SLAVE_VALUE_ADDR_10BITS _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CON_SPEED +// Description : These bits control at which speed the DW_apb_i2c operates; its +// setting is relevant only if one is operating the DW_apb_i2c in +// master mode. Hardware protects against illegal values being +// programmed by software. These bits must be programmed +// appropriately for slave mode also, as it is used to capture +// correct value of spike filter as per the speed mode. +// +// This register should be programmed only with a value in the +// range of 1 to IC_MAX_SPEED_MODE; otherwise, hardware updates +// this register with the value of IC_MAX_SPEED_MODE. +// +// 1: standard mode (100 kbit/s) +// +// 2: fast mode (<=400 kbit/s) or fast mode plus (<=1000Kbit/s) +// +// 3: high speed mode (3.4 Mbit/s) +// +// Note: This field is not applicable when IC_ULTRA_FAST_MODE=1 +// 0x1 -> Standard Speed mode of operation +// 0x2 -> Fast or Fast Plus mode of operation +// 0x3 -> High Speed mode of operation +#define I2C_IC_CON_SPEED_RESET _u(0x2) +#define I2C_IC_CON_SPEED_BITS _u(0x00000006) +#define I2C_IC_CON_SPEED_MSB _u(2) +#define I2C_IC_CON_SPEED_LSB _u(1) +#define I2C_IC_CON_SPEED_ACCESS "RW" +#define I2C_IC_CON_SPEED_VALUE_STANDARD _u(0x1) +#define I2C_IC_CON_SPEED_VALUE_FAST _u(0x2) +#define I2C_IC_CON_SPEED_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CON_MASTER_MODE +// Description : This bit controls whether the DW_apb_i2c master is enabled. +// +// NOTE: Software should ensure that if this bit is written with +// '1' then bit 6 should also be written with a '1'. +// 0x0 -> Master mode is disabled +// 0x1 -> Master mode is enabled +#define I2C_IC_CON_MASTER_MODE_RESET _u(0x1) +#define I2C_IC_CON_MASTER_MODE_BITS _u(0x00000001) +#define I2C_IC_CON_MASTER_MODE_MSB _u(0) +#define I2C_IC_CON_MASTER_MODE_LSB _u(0) +#define I2C_IC_CON_MASTER_MODE_ACCESS "RW" +#define I2C_IC_CON_MASTER_MODE_VALUE_DISABLED _u(0x0) +#define I2C_IC_CON_MASTER_MODE_VALUE_ENABLED _u(0x1) +// ============================================================================= +// Register : I2C_IC_TAR +// Description : I2C Target Address Register +// +// This register is 12 bits wide, and bits 31:12 are reserved. +// This register can be written to only when IC_ENABLE[0] is set +// to 0. +// +// Note: If the software or application is aware that the +// DW_apb_i2c is not using the TAR address for the pending +// commands in the Tx FIFO, then it is possible to update the TAR +// address even while the Tx FIFO has entries (IC_STATUS[2]= 0). - +// It is not necessary to perform any write to this register if +// DW_apb_i2c is enabled as an I2C slave only. +#define I2C_IC_TAR_OFFSET _u(0x00000004) +#define I2C_IC_TAR_BITS _u(0x00000fff) +#define I2C_IC_TAR_RESET _u(0x00000055) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TAR_SPECIAL +// Description : This bit indicates whether software performs a Device-ID or +// General Call or START BYTE command. - 0: ignore bit 10 +// GC_OR_START and use IC_TAR normally - 1: perform special I2C +// command as specified in Device_ID or GC_OR_START bit Reset +// value: 0x0 +// 0x0 -> Disables programming of GENERAL_CALL or START_BYTE +// transmission +// 0x1 -> Enables programming of GENERAL_CALL or START_BYTE +// transmission +#define I2C_IC_TAR_SPECIAL_RESET _u(0x0) +#define I2C_IC_TAR_SPECIAL_BITS _u(0x00000800) +#define I2C_IC_TAR_SPECIAL_MSB _u(11) +#define I2C_IC_TAR_SPECIAL_LSB _u(11) +#define I2C_IC_TAR_SPECIAL_ACCESS "RW" +#define I2C_IC_TAR_SPECIAL_VALUE_DISABLED _u(0x0) +#define I2C_IC_TAR_SPECIAL_VALUE_ENABLED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TAR_GC_OR_START +// Description : If bit 11 (SPECIAL) is set to 1 and bit 13(Device-ID) is set to +// 0, then this bit indicates whether a General Call or START byte +// command is to be performed by the DW_apb_i2c. - 0: General Call +// Address - after issuing a General Call, only writes may be +// performed. Attempting to issue a read command results in +// setting bit 6 (TX_ABRT) of the IC_RAW_INTR_STAT register. The +// DW_apb_i2c remains in General Call mode until the SPECIAL bit +// value (bit 11) is cleared. - 1: START BYTE Reset value: 0x0 +// 0x0 -> GENERAL_CALL byte transmission +// 0x1 -> START byte transmission +#define I2C_IC_TAR_GC_OR_START_RESET _u(0x0) +#define I2C_IC_TAR_GC_OR_START_BITS _u(0x00000400) +#define I2C_IC_TAR_GC_OR_START_MSB _u(10) +#define I2C_IC_TAR_GC_OR_START_LSB _u(10) +#define I2C_IC_TAR_GC_OR_START_ACCESS "RW" +#define I2C_IC_TAR_GC_OR_START_VALUE_GENERAL_CALL _u(0x0) +#define I2C_IC_TAR_GC_OR_START_VALUE_START_BYTE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TAR_IC_TAR +// Description : This is the target address for any master transaction. When +// transmitting a General Call, these bits are ignored. To +// generate a START BYTE, the CPU needs to write only once into +// these bits. +// +// If the IC_TAR and IC_SAR are the same, loopback exists but the +// FIFOs are shared between master and slave, so full loopback is +// not feasible. Only one direction loopback mode is supported +// (simplex), not duplex. A master cannot transmit to itself; it +// can transmit to only a slave. +#define I2C_IC_TAR_IC_TAR_RESET _u(0x055) +#define I2C_IC_TAR_IC_TAR_BITS _u(0x000003ff) +#define I2C_IC_TAR_IC_TAR_MSB _u(9) +#define I2C_IC_TAR_IC_TAR_LSB _u(0) +#define I2C_IC_TAR_IC_TAR_ACCESS "RW" +// ============================================================================= +// Register : I2C_IC_SAR +// Description : I2C Slave Address Register +#define I2C_IC_SAR_OFFSET _u(0x00000008) +#define I2C_IC_SAR_BITS _u(0x000003ff) +#define I2C_IC_SAR_RESET _u(0x00000055) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_SAR_IC_SAR +// Description : The IC_SAR holds the slave address when the I2C is operating as +// a slave. For 7-bit addressing, only IC_SAR[6:0] is used. +// +// This register can be written only when the I2C interface is +// disabled, which corresponds to the IC_ENABLE[0] register being +// set to 0. Writes at other times have no effect. +// +// Note: The default values cannot be any of the reserved address +// locations: that is, 0x00 to 0x07, or 0x78 to 0x7f. The correct +// operation of the device is not guaranteed if you program the +// IC_SAR or IC_TAR to a reserved value. Refer to +// <<table_I2C_firstbyte_bit_defs>> for a complete list of these +// reserved values. +#define I2C_IC_SAR_IC_SAR_RESET _u(0x055) +#define I2C_IC_SAR_IC_SAR_BITS _u(0x000003ff) +#define I2C_IC_SAR_IC_SAR_MSB _u(9) +#define I2C_IC_SAR_IC_SAR_LSB _u(0) +#define I2C_IC_SAR_IC_SAR_ACCESS "RW" +// ============================================================================= +// Register : I2C_IC_DATA_CMD +// Description : I2C Rx/Tx Data Buffer and Command Register; this is the +// register the CPU writes to when filling the TX FIFO and the CPU +// reads from when retrieving bytes from RX FIFO. +// +// The size of the register changes as follows: +// +// Write: - 11 bits when IC_EMPTYFIFO_HOLD_MASTER_EN=1 - 9 bits +// when IC_EMPTYFIFO_HOLD_MASTER_EN=0 Read: - 12 bits when +// IC_FIRST_DATA_BYTE_STATUS = 1 - 8 bits when +// IC_FIRST_DATA_BYTE_STATUS = 0 Note: In order for the DW_apb_i2c +// to continue acknowledging reads, a read command should be +// written for every byte that is to be received; otherwise the +// DW_apb_i2c will stop acknowledging. +#define I2C_IC_DATA_CMD_OFFSET _u(0x00000010) +#define I2C_IC_DATA_CMD_BITS _u(0x00000fff) +#define I2C_IC_DATA_CMD_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_DATA_CMD_FIRST_DATA_BYTE +// Description : Indicates the first data byte received after the address phase +// for receive transfer in Master receiver or Slave receiver mode. +// +// Reset value : 0x0 +// +// NOTE: In case of APB_DATA_WIDTH=8, +// +// 1. The user has to perform two APB Reads to IC_DATA_CMD in +// order to get status on 11 bit. +// +// 2. In order to read the 11 bit, the user has to perform the +// first data byte read [7:0] (offset 0x10) and then perform the +// second read [15:8] (offset 0x11) in order to know the status of +// 11 bit (whether the data received in previous read is a first +// data byte or not). +// +// 3. The 11th bit is an optional read field, user can ignore 2nd +// byte read [15:8] (offset 0x11) if not interested in +// FIRST_DATA_BYTE status. +// 0x0 -> Sequential data byte received +// 0x1 -> Non sequential data byte received +#define I2C_IC_DATA_CMD_FIRST_DATA_BYTE_RESET _u(0x0) +#define I2C_IC_DATA_CMD_FIRST_DATA_BYTE_BITS _u(0x00000800) +#define I2C_IC_DATA_CMD_FIRST_DATA_BYTE_MSB _u(11) +#define I2C_IC_DATA_CMD_FIRST_DATA_BYTE_LSB _u(11) +#define I2C_IC_DATA_CMD_FIRST_DATA_BYTE_ACCESS "RO" +#define I2C_IC_DATA_CMD_FIRST_DATA_BYTE_VALUE_INACTIVE _u(0x0) +#define I2C_IC_DATA_CMD_FIRST_DATA_BYTE_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_DATA_CMD_RESTART +// Description : This bit controls whether a RESTART is issued before the byte +// is sent or received. +// +// 1 - If IC_RESTART_EN is 1, a RESTART is issued before the data +// is sent/received (according to the value of CMD), regardless of +// whether or not the transfer direction is changing from the +// previous command; if IC_RESTART_EN is 0, a STOP followed by a +// START is issued instead. +// +// 0 - If IC_RESTART_EN is 1, a RESTART is issued only if the +// transfer direction is changing from the previous command; if +// IC_RESTART_EN is 0, a STOP followed by a START is issued +// instead. +// +// Reset value: 0x0 +// 0x0 -> Don't Issue RESTART before this command +// 0x1 -> Issue RESTART before this command +#define I2C_IC_DATA_CMD_RESTART_RESET _u(0x0) +#define I2C_IC_DATA_CMD_RESTART_BITS _u(0x00000400) +#define I2C_IC_DATA_CMD_RESTART_MSB _u(10) +#define I2C_IC_DATA_CMD_RESTART_LSB _u(10) +#define I2C_IC_DATA_CMD_RESTART_ACCESS "SC" +#define I2C_IC_DATA_CMD_RESTART_VALUE_DISABLE _u(0x0) +#define I2C_IC_DATA_CMD_RESTART_VALUE_ENABLE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_DATA_CMD_STOP +// Description : This bit controls whether a STOP is issued after the byte is +// sent or received. +// +// - 1 - STOP is issued after this byte, regardless of whether or +// not the Tx FIFO is empty. If the Tx FIFO is not empty, the +// master immediately tries to start a new transfer by issuing a +// START and arbitrating for the bus. - 0 - STOP is not issued +// after this byte, regardless of whether or not the Tx FIFO is +// empty. If the Tx FIFO is not empty, the master continues the +// current transfer by sending/receiving data bytes according to +// the value of the CMD bit. If the Tx FIFO is empty, the master +// holds the SCL line low and stalls the bus until a new command +// is available in the Tx FIFO. Reset value: 0x0 +// 0x0 -> Don't Issue STOP after this command +// 0x1 -> Issue STOP after this command +#define I2C_IC_DATA_CMD_STOP_RESET _u(0x0) +#define I2C_IC_DATA_CMD_STOP_BITS _u(0x00000200) +#define I2C_IC_DATA_CMD_STOP_MSB _u(9) +#define I2C_IC_DATA_CMD_STOP_LSB _u(9) +#define I2C_IC_DATA_CMD_STOP_ACCESS "SC" +#define I2C_IC_DATA_CMD_STOP_VALUE_DISABLE _u(0x0) +#define I2C_IC_DATA_CMD_STOP_VALUE_ENABLE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_DATA_CMD_CMD +// Description : This bit controls whether a read or a write is performed. This +// bit does not control the direction when the DW_apb_i2con acts +// as a slave. It controls only the direction when it acts as a +// master. +// +// When a command is entered in the TX FIFO, this bit +// distinguishes the write and read commands. In slave-receiver +// mode, this bit is a 'don't care' because writes to this +// register are not required. In slave-transmitter mode, a '0' +// indicates that the data in IC_DATA_CMD is to be transmitted. +// +// When programming this bit, you should remember the following: +// attempting to perform a read operation after a General Call +// command has been sent results in a TX_ABRT interrupt (bit 6 of +// the IC_RAW_INTR_STAT register), unless bit 11 (SPECIAL) in the +// IC_TAR register has been cleared. If a '1' is written to this +// bit after receiving a RD_REQ interrupt, then a TX_ABRT +// interrupt occurs. +// +// Reset value: 0x0 +// 0x0 -> Master Write Command +// 0x1 -> Master Read Command +#define I2C_IC_DATA_CMD_CMD_RESET _u(0x0) +#define I2C_IC_DATA_CMD_CMD_BITS _u(0x00000100) +#define I2C_IC_DATA_CMD_CMD_MSB _u(8) +#define I2C_IC_DATA_CMD_CMD_LSB _u(8) +#define I2C_IC_DATA_CMD_CMD_ACCESS "SC" +#define I2C_IC_DATA_CMD_CMD_VALUE_WRITE _u(0x0) +#define I2C_IC_DATA_CMD_CMD_VALUE_READ _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_DATA_CMD_DAT +// Description : This register contains the data to be transmitted or received +// on the I2C bus. If you are writing to this register and want to +// perform a read, bits 7:0 (DAT) are ignored by the DW_apb_i2c. +// However, when you read this register, these bits return the +// value of data received on the DW_apb_i2c interface. +// +// Reset value: 0x0 +#define I2C_IC_DATA_CMD_DAT_RESET _u(0x00) +#define I2C_IC_DATA_CMD_DAT_BITS _u(0x000000ff) +#define I2C_IC_DATA_CMD_DAT_MSB _u(7) +#define I2C_IC_DATA_CMD_DAT_LSB _u(0) +#define I2C_IC_DATA_CMD_DAT_ACCESS "RW" +// ============================================================================= +// Register : I2C_IC_SS_SCL_HCNT +// Description : Standard Speed I2C Clock SCL High Count Register +#define I2C_IC_SS_SCL_HCNT_OFFSET _u(0x00000014) +#define I2C_IC_SS_SCL_HCNT_BITS _u(0x0000ffff) +#define I2C_IC_SS_SCL_HCNT_RESET _u(0x00000028) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_SS_SCL_HCNT_IC_SS_SCL_HCNT +// Description : This register must be set before any I2C bus transaction can +// take place to ensure proper I/O timing. This register sets the +// SCL clock high-period count for standard speed. For more +// information, refer to 'IC_CLK Frequency Configuration'. +// +// This register can be written only when the I2C interface is +// disabled which corresponds to the IC_ENABLE[0] register being +// set to 0. Writes at other times have no effect. +// +// The minimum valid value is 6; hardware prevents values less +// than this being written, and if attempted results in 6 being +// set. For designs with APB_DATA_WIDTH = 8, the order of +// programming is important to ensure the correct operation of the +// DW_apb_i2c. The lower byte must be programmed first. Then the +// upper byte is programmed. +// +// NOTE: This register must not be programmed to a value higher +// than 65525, because DW_apb_i2c uses a 16-bit counter to flag an +// I2C bus idle condition when this counter reaches a value of +// IC_SS_SCL_HCNT + 10. +#define I2C_IC_SS_SCL_HCNT_IC_SS_SCL_HCNT_RESET _u(0x0028) +#define I2C_IC_SS_SCL_HCNT_IC_SS_SCL_HCNT_BITS _u(0x0000ffff) +#define I2C_IC_SS_SCL_HCNT_IC_SS_SCL_HCNT_MSB _u(15) +#define I2C_IC_SS_SCL_HCNT_IC_SS_SCL_HCNT_LSB _u(0) +#define I2C_IC_SS_SCL_HCNT_IC_SS_SCL_HCNT_ACCESS "RW" +// ============================================================================= +// Register : I2C_IC_SS_SCL_LCNT +// Description : Standard Speed I2C Clock SCL Low Count Register +#define I2C_IC_SS_SCL_LCNT_OFFSET _u(0x00000018) +#define I2C_IC_SS_SCL_LCNT_BITS _u(0x0000ffff) +#define I2C_IC_SS_SCL_LCNT_RESET _u(0x0000002f) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_SS_SCL_LCNT_IC_SS_SCL_LCNT +// Description : This register must be set before any I2C bus transaction can +// take place to ensure proper I/O timing. This register sets the +// SCL clock low period count for standard speed. For more +// information, refer to 'IC_CLK Frequency Configuration' +// +// This register can be written only when the I2C interface is +// disabled which corresponds to the IC_ENABLE[0] register being +// set to 0. Writes at other times have no effect. +// +// The minimum valid value is 8; hardware prevents values less +// than this being written, and if attempted, results in 8 being +// set. For designs with APB_DATA_WIDTH = 8, the order of +// programming is important to ensure the correct operation of +// DW_apb_i2c. The lower byte must be programmed first, and then +// the upper byte is programmed. +#define I2C_IC_SS_SCL_LCNT_IC_SS_SCL_LCNT_RESET _u(0x002f) +#define I2C_IC_SS_SCL_LCNT_IC_SS_SCL_LCNT_BITS _u(0x0000ffff) +#define I2C_IC_SS_SCL_LCNT_IC_SS_SCL_LCNT_MSB _u(15) +#define I2C_IC_SS_SCL_LCNT_IC_SS_SCL_LCNT_LSB _u(0) +#define I2C_IC_SS_SCL_LCNT_IC_SS_SCL_LCNT_ACCESS "RW" +// ============================================================================= +// Register : I2C_IC_FS_SCL_HCNT +// Description : Fast Mode or Fast Mode Plus I2C Clock SCL High Count Register +#define I2C_IC_FS_SCL_HCNT_OFFSET _u(0x0000001c) +#define I2C_IC_FS_SCL_HCNT_BITS _u(0x0000ffff) +#define I2C_IC_FS_SCL_HCNT_RESET _u(0x00000006) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_FS_SCL_HCNT_IC_FS_SCL_HCNT +// Description : This register must be set before any I2C bus transaction can +// take place to ensure proper I/O timing. This register sets the +// SCL clock high-period count for fast mode or fast mode plus. It +// is used in high-speed mode to send the Master Code and START +// BYTE or General CALL. For more information, refer to 'IC_CLK +// Frequency Configuration'. +// +// This register goes away and becomes read-only returning 0s if +// IC_MAX_SPEED_MODE = standard. This register can be written only +// when the I2C interface is disabled, which corresponds to the +// IC_ENABLE[0] register being set to 0. Writes at other times +// have no effect. +// +// The minimum valid value is 6; hardware prevents values less +// than this being written, and if attempted results in 6 being +// set. For designs with APB_DATA_WIDTH == 8 the order of +// programming is important to ensure the correct operation of the +// DW_apb_i2c. The lower byte must be programmed first. Then the +// upper byte is programmed. +#define I2C_IC_FS_SCL_HCNT_IC_FS_SCL_HCNT_RESET _u(0x0006) +#define I2C_IC_FS_SCL_HCNT_IC_FS_SCL_HCNT_BITS _u(0x0000ffff) +#define I2C_IC_FS_SCL_HCNT_IC_FS_SCL_HCNT_MSB _u(15) +#define I2C_IC_FS_SCL_HCNT_IC_FS_SCL_HCNT_LSB _u(0) +#define I2C_IC_FS_SCL_HCNT_IC_FS_SCL_HCNT_ACCESS "RW" +// ============================================================================= +// Register : I2C_IC_FS_SCL_LCNT +// Description : Fast Mode or Fast Mode Plus I2C Clock SCL Low Count Register +#define I2C_IC_FS_SCL_LCNT_OFFSET _u(0x00000020) +#define I2C_IC_FS_SCL_LCNT_BITS _u(0x0000ffff) +#define I2C_IC_FS_SCL_LCNT_RESET _u(0x0000000d) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_FS_SCL_LCNT_IC_FS_SCL_LCNT +// Description : This register must be set before any I2C bus transaction can +// take place to ensure proper I/O timing. This register sets the +// SCL clock low period count for fast speed. It is used in +// high-speed mode to send the Master Code and START BYTE or +// General CALL. For more information, refer to 'IC_CLK Frequency +// Configuration'. +// +// This register goes away and becomes read-only returning 0s if +// IC_MAX_SPEED_MODE = standard. +// +// This register can be written only when the I2C interface is +// disabled, which corresponds to the IC_ENABLE[0] register being +// set to 0. Writes at other times have no effect. +// +// The minimum valid value is 8; hardware prevents values less +// than this being written, and if attempted results in 8 being +// set. For designs with APB_DATA_WIDTH = 8 the order of +// programming is important to ensure the correct operation of the +// DW_apb_i2c. The lower byte must be programmed first. Then the +// upper byte is programmed. If the value is less than 8 then the +// count value gets changed to 8. +#define I2C_IC_FS_SCL_LCNT_IC_FS_SCL_LCNT_RESET _u(0x000d) +#define I2C_IC_FS_SCL_LCNT_IC_FS_SCL_LCNT_BITS _u(0x0000ffff) +#define I2C_IC_FS_SCL_LCNT_IC_FS_SCL_LCNT_MSB _u(15) +#define I2C_IC_FS_SCL_LCNT_IC_FS_SCL_LCNT_LSB _u(0) +#define I2C_IC_FS_SCL_LCNT_IC_FS_SCL_LCNT_ACCESS "RW" +// ============================================================================= +// Register : I2C_IC_INTR_STAT +// Description : I2C Interrupt Status Register +// +// Each bit in this register has a corresponding mask bit in the +// IC_INTR_MASK register. These bits are cleared by reading the +// matching interrupt clear register. The unmasked raw versions of +// these bits are available in the IC_RAW_INTR_STAT register. +#define I2C_IC_INTR_STAT_OFFSET _u(0x0000002c) +#define I2C_IC_INTR_STAT_BITS _u(0x00001fff) +#define I2C_IC_INTR_STAT_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_STAT_R_RESTART_DET +// Description : See IC_RAW_INTR_STAT for a detailed description of +// R_RESTART_DET bit. +// +// Reset value: 0x0 +// 0x0 -> R_RESTART_DET interrupt is inactive +// 0x1 -> R_RESTART_DET interrupt is active +#define I2C_IC_INTR_STAT_R_RESTART_DET_RESET _u(0x0) +#define I2C_IC_INTR_STAT_R_RESTART_DET_BITS _u(0x00001000) +#define I2C_IC_INTR_STAT_R_RESTART_DET_MSB _u(12) +#define I2C_IC_INTR_STAT_R_RESTART_DET_LSB _u(12) +#define I2C_IC_INTR_STAT_R_RESTART_DET_ACCESS "RO" +#define I2C_IC_INTR_STAT_R_RESTART_DET_VALUE_INACTIVE _u(0x0) +#define I2C_IC_INTR_STAT_R_RESTART_DET_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_STAT_R_GEN_CALL +// Description : See IC_RAW_INTR_STAT for a detailed description of R_GEN_CALL +// bit. +// +// Reset value: 0x0 +// 0x0 -> R_GEN_CALL interrupt is inactive +// 0x1 -> R_GEN_CALL interrupt is active +#define I2C_IC_INTR_STAT_R_GEN_CALL_RESET _u(0x0) +#define I2C_IC_INTR_STAT_R_GEN_CALL_BITS _u(0x00000800) +#define I2C_IC_INTR_STAT_R_GEN_CALL_MSB _u(11) +#define I2C_IC_INTR_STAT_R_GEN_CALL_LSB _u(11) +#define I2C_IC_INTR_STAT_R_GEN_CALL_ACCESS "RO" +#define I2C_IC_INTR_STAT_R_GEN_CALL_VALUE_INACTIVE _u(0x0) +#define I2C_IC_INTR_STAT_R_GEN_CALL_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_STAT_R_START_DET +// Description : See IC_RAW_INTR_STAT for a detailed description of R_START_DET +// bit. +// +// Reset value: 0x0 +// 0x0 -> R_START_DET interrupt is inactive +// 0x1 -> R_START_DET interrupt is active +#define I2C_IC_INTR_STAT_R_START_DET_RESET _u(0x0) +#define I2C_IC_INTR_STAT_R_START_DET_BITS _u(0x00000400) +#define I2C_IC_INTR_STAT_R_START_DET_MSB _u(10) +#define I2C_IC_INTR_STAT_R_START_DET_LSB _u(10) +#define I2C_IC_INTR_STAT_R_START_DET_ACCESS "RO" +#define I2C_IC_INTR_STAT_R_START_DET_VALUE_INACTIVE _u(0x0) +#define I2C_IC_INTR_STAT_R_START_DET_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_STAT_R_STOP_DET +// Description : See IC_RAW_INTR_STAT for a detailed description of R_STOP_DET +// bit. +// +// Reset value: 0x0 +// 0x0 -> R_STOP_DET interrupt is inactive +// 0x1 -> R_STOP_DET interrupt is active +#define I2C_IC_INTR_STAT_R_STOP_DET_RESET _u(0x0) +#define I2C_IC_INTR_STAT_R_STOP_DET_BITS _u(0x00000200) +#define I2C_IC_INTR_STAT_R_STOP_DET_MSB _u(9) +#define I2C_IC_INTR_STAT_R_STOP_DET_LSB _u(9) +#define I2C_IC_INTR_STAT_R_STOP_DET_ACCESS "RO" +#define I2C_IC_INTR_STAT_R_STOP_DET_VALUE_INACTIVE _u(0x0) +#define I2C_IC_INTR_STAT_R_STOP_DET_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_STAT_R_ACTIVITY +// Description : See IC_RAW_INTR_STAT for a detailed description of R_ACTIVITY +// bit. +// +// Reset value: 0x0 +// 0x0 -> R_ACTIVITY interrupt is inactive +// 0x1 -> R_ACTIVITY interrupt is active +#define I2C_IC_INTR_STAT_R_ACTIVITY_RESET _u(0x0) +#define I2C_IC_INTR_STAT_R_ACTIVITY_BITS _u(0x00000100) +#define I2C_IC_INTR_STAT_R_ACTIVITY_MSB _u(8) +#define I2C_IC_INTR_STAT_R_ACTIVITY_LSB _u(8) +#define I2C_IC_INTR_STAT_R_ACTIVITY_ACCESS "RO" +#define I2C_IC_INTR_STAT_R_ACTIVITY_VALUE_INACTIVE _u(0x0) +#define I2C_IC_INTR_STAT_R_ACTIVITY_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_STAT_R_RX_DONE +// Description : See IC_RAW_INTR_STAT for a detailed description of R_RX_DONE +// bit. +// +// Reset value: 0x0 +// 0x0 -> R_RX_DONE interrupt is inactive +// 0x1 -> R_RX_DONE interrupt is active +#define I2C_IC_INTR_STAT_R_RX_DONE_RESET _u(0x0) +#define I2C_IC_INTR_STAT_R_RX_DONE_BITS _u(0x00000080) +#define I2C_IC_INTR_STAT_R_RX_DONE_MSB _u(7) +#define I2C_IC_INTR_STAT_R_RX_DONE_LSB _u(7) +#define I2C_IC_INTR_STAT_R_RX_DONE_ACCESS "RO" +#define I2C_IC_INTR_STAT_R_RX_DONE_VALUE_INACTIVE _u(0x0) +#define I2C_IC_INTR_STAT_R_RX_DONE_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_STAT_R_TX_ABRT +// Description : See IC_RAW_INTR_STAT for a detailed description of R_TX_ABRT +// bit. +// +// Reset value: 0x0 +// 0x0 -> R_TX_ABRT interrupt is inactive +// 0x1 -> R_TX_ABRT interrupt is active +#define I2C_IC_INTR_STAT_R_TX_ABRT_RESET _u(0x0) +#define I2C_IC_INTR_STAT_R_TX_ABRT_BITS _u(0x00000040) +#define I2C_IC_INTR_STAT_R_TX_ABRT_MSB _u(6) +#define I2C_IC_INTR_STAT_R_TX_ABRT_LSB _u(6) +#define I2C_IC_INTR_STAT_R_TX_ABRT_ACCESS "RO" +#define I2C_IC_INTR_STAT_R_TX_ABRT_VALUE_INACTIVE _u(0x0) +#define I2C_IC_INTR_STAT_R_TX_ABRT_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_STAT_R_RD_REQ +// Description : See IC_RAW_INTR_STAT for a detailed description of R_RD_REQ +// bit. +// +// Reset value: 0x0 +// 0x0 -> R_RD_REQ interrupt is inactive +// 0x1 -> R_RD_REQ interrupt is active +#define I2C_IC_INTR_STAT_R_RD_REQ_RESET _u(0x0) +#define I2C_IC_INTR_STAT_R_RD_REQ_BITS _u(0x00000020) +#define I2C_IC_INTR_STAT_R_RD_REQ_MSB _u(5) +#define I2C_IC_INTR_STAT_R_RD_REQ_LSB _u(5) +#define I2C_IC_INTR_STAT_R_RD_REQ_ACCESS "RO" +#define I2C_IC_INTR_STAT_R_RD_REQ_VALUE_INACTIVE _u(0x0) +#define I2C_IC_INTR_STAT_R_RD_REQ_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_STAT_R_TX_EMPTY +// Description : See IC_RAW_INTR_STAT for a detailed description of R_TX_EMPTY +// bit. +// +// Reset value: 0x0 +// 0x0 -> R_TX_EMPTY interrupt is inactive +// 0x1 -> R_TX_EMPTY interrupt is active +#define I2C_IC_INTR_STAT_R_TX_EMPTY_RESET _u(0x0) +#define I2C_IC_INTR_STAT_R_TX_EMPTY_BITS _u(0x00000010) +#define I2C_IC_INTR_STAT_R_TX_EMPTY_MSB _u(4) +#define I2C_IC_INTR_STAT_R_TX_EMPTY_LSB _u(4) +#define I2C_IC_INTR_STAT_R_TX_EMPTY_ACCESS "RO" +#define I2C_IC_INTR_STAT_R_TX_EMPTY_VALUE_INACTIVE _u(0x0) +#define I2C_IC_INTR_STAT_R_TX_EMPTY_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_STAT_R_TX_OVER +// Description : See IC_RAW_INTR_STAT for a detailed description of R_TX_OVER +// bit. +// +// Reset value: 0x0 +// 0x0 -> R_TX_OVER interrupt is inactive +// 0x1 -> R_TX_OVER interrupt is active +#define I2C_IC_INTR_STAT_R_TX_OVER_RESET _u(0x0) +#define I2C_IC_INTR_STAT_R_TX_OVER_BITS _u(0x00000008) +#define I2C_IC_INTR_STAT_R_TX_OVER_MSB _u(3) +#define I2C_IC_INTR_STAT_R_TX_OVER_LSB _u(3) +#define I2C_IC_INTR_STAT_R_TX_OVER_ACCESS "RO" +#define I2C_IC_INTR_STAT_R_TX_OVER_VALUE_INACTIVE _u(0x0) +#define I2C_IC_INTR_STAT_R_TX_OVER_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_STAT_R_RX_FULL +// Description : See IC_RAW_INTR_STAT for a detailed description of R_RX_FULL +// bit. +// +// Reset value: 0x0 +// 0x0 -> R_RX_FULL interrupt is inactive +// 0x1 -> R_RX_FULL interrupt is active +#define I2C_IC_INTR_STAT_R_RX_FULL_RESET _u(0x0) +#define I2C_IC_INTR_STAT_R_RX_FULL_BITS _u(0x00000004) +#define I2C_IC_INTR_STAT_R_RX_FULL_MSB _u(2) +#define I2C_IC_INTR_STAT_R_RX_FULL_LSB _u(2) +#define I2C_IC_INTR_STAT_R_RX_FULL_ACCESS "RO" +#define I2C_IC_INTR_STAT_R_RX_FULL_VALUE_INACTIVE _u(0x0) +#define I2C_IC_INTR_STAT_R_RX_FULL_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_STAT_R_RX_OVER +// Description : See IC_RAW_INTR_STAT for a detailed description of R_RX_OVER +// bit. +// +// Reset value: 0x0 +// 0x0 -> R_RX_OVER interrupt is inactive +// 0x1 -> R_RX_OVER interrupt is active +#define I2C_IC_INTR_STAT_R_RX_OVER_RESET _u(0x0) +#define I2C_IC_INTR_STAT_R_RX_OVER_BITS _u(0x00000002) +#define I2C_IC_INTR_STAT_R_RX_OVER_MSB _u(1) +#define I2C_IC_INTR_STAT_R_RX_OVER_LSB _u(1) +#define I2C_IC_INTR_STAT_R_RX_OVER_ACCESS "RO" +#define I2C_IC_INTR_STAT_R_RX_OVER_VALUE_INACTIVE _u(0x0) +#define I2C_IC_INTR_STAT_R_RX_OVER_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_STAT_R_RX_UNDER +// Description : See IC_RAW_INTR_STAT for a detailed description of R_RX_UNDER +// bit. +// +// Reset value: 0x0 +// 0x0 -> RX_UNDER interrupt is inactive +// 0x1 -> RX_UNDER interrupt is active +#define I2C_IC_INTR_STAT_R_RX_UNDER_RESET _u(0x0) +#define I2C_IC_INTR_STAT_R_RX_UNDER_BITS _u(0x00000001) +#define I2C_IC_INTR_STAT_R_RX_UNDER_MSB _u(0) +#define I2C_IC_INTR_STAT_R_RX_UNDER_LSB _u(0) +#define I2C_IC_INTR_STAT_R_RX_UNDER_ACCESS "RO" +#define I2C_IC_INTR_STAT_R_RX_UNDER_VALUE_INACTIVE _u(0x0) +#define I2C_IC_INTR_STAT_R_RX_UNDER_VALUE_ACTIVE _u(0x1) +// ============================================================================= +// Register : I2C_IC_INTR_MASK +// Description : I2C Interrupt Mask Register. +// +// These bits mask their corresponding interrupt status bits. This +// register is active low; a value of 0 masks the interrupt, +// whereas a value of 1 unmasks the interrupt. +#define I2C_IC_INTR_MASK_OFFSET _u(0x00000030) +#define I2C_IC_INTR_MASK_BITS _u(0x00001fff) +#define I2C_IC_INTR_MASK_RESET _u(0x000008ff) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_MASK_M_RESTART_DET +// Description : This bit masks the R_RESTART_DET interrupt in IC_INTR_STAT +// register. +// +// Reset value: 0x0 +// 0x0 -> RESTART_DET interrupt is masked +// 0x1 -> RESTART_DET interrupt is unmasked +#define I2C_IC_INTR_MASK_M_RESTART_DET_RESET _u(0x0) +#define I2C_IC_INTR_MASK_M_RESTART_DET_BITS _u(0x00001000) +#define I2C_IC_INTR_MASK_M_RESTART_DET_MSB _u(12) +#define I2C_IC_INTR_MASK_M_RESTART_DET_LSB _u(12) +#define I2C_IC_INTR_MASK_M_RESTART_DET_ACCESS "RW" +#define I2C_IC_INTR_MASK_M_RESTART_DET_VALUE_ENABLED _u(0x0) +#define I2C_IC_INTR_MASK_M_RESTART_DET_VALUE_DISABLED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_MASK_M_GEN_CALL +// Description : This bit masks the R_GEN_CALL interrupt in IC_INTR_STAT +// register. +// +// Reset value: 0x1 +// 0x0 -> GEN_CALL interrupt is masked +// 0x1 -> GEN_CALL interrupt is unmasked +#define I2C_IC_INTR_MASK_M_GEN_CALL_RESET _u(0x1) +#define I2C_IC_INTR_MASK_M_GEN_CALL_BITS _u(0x00000800) +#define I2C_IC_INTR_MASK_M_GEN_CALL_MSB _u(11) +#define I2C_IC_INTR_MASK_M_GEN_CALL_LSB _u(11) +#define I2C_IC_INTR_MASK_M_GEN_CALL_ACCESS "RW" +#define I2C_IC_INTR_MASK_M_GEN_CALL_VALUE_ENABLED _u(0x0) +#define I2C_IC_INTR_MASK_M_GEN_CALL_VALUE_DISABLED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_MASK_M_START_DET +// Description : This bit masks the R_START_DET interrupt in IC_INTR_STAT +// register. +// +// Reset value: 0x0 +// 0x0 -> START_DET interrupt is masked +// 0x1 -> START_DET interrupt is unmasked +#define I2C_IC_INTR_MASK_M_START_DET_RESET _u(0x0) +#define I2C_IC_INTR_MASK_M_START_DET_BITS _u(0x00000400) +#define I2C_IC_INTR_MASK_M_START_DET_MSB _u(10) +#define I2C_IC_INTR_MASK_M_START_DET_LSB _u(10) +#define I2C_IC_INTR_MASK_M_START_DET_ACCESS "RW" +#define I2C_IC_INTR_MASK_M_START_DET_VALUE_ENABLED _u(0x0) +#define I2C_IC_INTR_MASK_M_START_DET_VALUE_DISABLED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_MASK_M_STOP_DET +// Description : This bit masks the R_STOP_DET interrupt in IC_INTR_STAT +// register. +// +// Reset value: 0x0 +// 0x0 -> STOP_DET interrupt is masked +// 0x1 -> STOP_DET interrupt is unmasked +#define I2C_IC_INTR_MASK_M_STOP_DET_RESET _u(0x0) +#define I2C_IC_INTR_MASK_M_STOP_DET_BITS _u(0x00000200) +#define I2C_IC_INTR_MASK_M_STOP_DET_MSB _u(9) +#define I2C_IC_INTR_MASK_M_STOP_DET_LSB _u(9) +#define I2C_IC_INTR_MASK_M_STOP_DET_ACCESS "RW" +#define I2C_IC_INTR_MASK_M_STOP_DET_VALUE_ENABLED _u(0x0) +#define I2C_IC_INTR_MASK_M_STOP_DET_VALUE_DISABLED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_MASK_M_ACTIVITY +// Description : This bit masks the R_ACTIVITY interrupt in IC_INTR_STAT +// register. +// +// Reset value: 0x0 +// 0x0 -> ACTIVITY interrupt is masked +// 0x1 -> ACTIVITY interrupt is unmasked +#define I2C_IC_INTR_MASK_M_ACTIVITY_RESET _u(0x0) +#define I2C_IC_INTR_MASK_M_ACTIVITY_BITS _u(0x00000100) +#define I2C_IC_INTR_MASK_M_ACTIVITY_MSB _u(8) +#define I2C_IC_INTR_MASK_M_ACTIVITY_LSB _u(8) +#define I2C_IC_INTR_MASK_M_ACTIVITY_ACCESS "RW" +#define I2C_IC_INTR_MASK_M_ACTIVITY_VALUE_ENABLED _u(0x0) +#define I2C_IC_INTR_MASK_M_ACTIVITY_VALUE_DISABLED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_MASK_M_RX_DONE +// Description : This bit masks the R_RX_DONE interrupt in IC_INTR_STAT +// register. +// +// Reset value: 0x1 +// 0x0 -> RX_DONE interrupt is masked +// 0x1 -> RX_DONE interrupt is unmasked +#define I2C_IC_INTR_MASK_M_RX_DONE_RESET _u(0x1) +#define I2C_IC_INTR_MASK_M_RX_DONE_BITS _u(0x00000080) +#define I2C_IC_INTR_MASK_M_RX_DONE_MSB _u(7) +#define I2C_IC_INTR_MASK_M_RX_DONE_LSB _u(7) +#define I2C_IC_INTR_MASK_M_RX_DONE_ACCESS "RW" +#define I2C_IC_INTR_MASK_M_RX_DONE_VALUE_ENABLED _u(0x0) +#define I2C_IC_INTR_MASK_M_RX_DONE_VALUE_DISABLED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_MASK_M_TX_ABRT +// Description : This bit masks the R_TX_ABRT interrupt in IC_INTR_STAT +// register. +// +// Reset value: 0x1 +// 0x0 -> TX_ABORT interrupt is masked +// 0x1 -> TX_ABORT interrupt is unmasked +#define I2C_IC_INTR_MASK_M_TX_ABRT_RESET _u(0x1) +#define I2C_IC_INTR_MASK_M_TX_ABRT_BITS _u(0x00000040) +#define I2C_IC_INTR_MASK_M_TX_ABRT_MSB _u(6) +#define I2C_IC_INTR_MASK_M_TX_ABRT_LSB _u(6) +#define I2C_IC_INTR_MASK_M_TX_ABRT_ACCESS "RW" +#define I2C_IC_INTR_MASK_M_TX_ABRT_VALUE_ENABLED _u(0x0) +#define I2C_IC_INTR_MASK_M_TX_ABRT_VALUE_DISABLED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_MASK_M_RD_REQ +// Description : This bit masks the R_RD_REQ interrupt in IC_INTR_STAT register. +// +// Reset value: 0x1 +// 0x0 -> RD_REQ interrupt is masked +// 0x1 -> RD_REQ interrupt is unmasked +#define I2C_IC_INTR_MASK_M_RD_REQ_RESET _u(0x1) +#define I2C_IC_INTR_MASK_M_RD_REQ_BITS _u(0x00000020) +#define I2C_IC_INTR_MASK_M_RD_REQ_MSB _u(5) +#define I2C_IC_INTR_MASK_M_RD_REQ_LSB _u(5) +#define I2C_IC_INTR_MASK_M_RD_REQ_ACCESS "RW" +#define I2C_IC_INTR_MASK_M_RD_REQ_VALUE_ENABLED _u(0x0) +#define I2C_IC_INTR_MASK_M_RD_REQ_VALUE_DISABLED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_MASK_M_TX_EMPTY +// Description : This bit masks the R_TX_EMPTY interrupt in IC_INTR_STAT +// register. +// +// Reset value: 0x1 +// 0x0 -> TX_EMPTY interrupt is masked +// 0x1 -> TX_EMPTY interrupt is unmasked +#define I2C_IC_INTR_MASK_M_TX_EMPTY_RESET _u(0x1) +#define I2C_IC_INTR_MASK_M_TX_EMPTY_BITS _u(0x00000010) +#define I2C_IC_INTR_MASK_M_TX_EMPTY_MSB _u(4) +#define I2C_IC_INTR_MASK_M_TX_EMPTY_LSB _u(4) +#define I2C_IC_INTR_MASK_M_TX_EMPTY_ACCESS "RW" +#define I2C_IC_INTR_MASK_M_TX_EMPTY_VALUE_ENABLED _u(0x0) +#define I2C_IC_INTR_MASK_M_TX_EMPTY_VALUE_DISABLED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_MASK_M_TX_OVER +// Description : This bit masks the R_TX_OVER interrupt in IC_INTR_STAT +// register. +// +// Reset value: 0x1 +// 0x0 -> TX_OVER interrupt is masked +// 0x1 -> TX_OVER interrupt is unmasked +#define I2C_IC_INTR_MASK_M_TX_OVER_RESET _u(0x1) +#define I2C_IC_INTR_MASK_M_TX_OVER_BITS _u(0x00000008) +#define I2C_IC_INTR_MASK_M_TX_OVER_MSB _u(3) +#define I2C_IC_INTR_MASK_M_TX_OVER_LSB _u(3) +#define I2C_IC_INTR_MASK_M_TX_OVER_ACCESS "RW" +#define I2C_IC_INTR_MASK_M_TX_OVER_VALUE_ENABLED _u(0x0) +#define I2C_IC_INTR_MASK_M_TX_OVER_VALUE_DISABLED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_MASK_M_RX_FULL +// Description : This bit masks the R_RX_FULL interrupt in IC_INTR_STAT +// register. +// +// Reset value: 0x1 +// 0x0 -> RX_FULL interrupt is masked +// 0x1 -> RX_FULL interrupt is unmasked +#define I2C_IC_INTR_MASK_M_RX_FULL_RESET _u(0x1) +#define I2C_IC_INTR_MASK_M_RX_FULL_BITS _u(0x00000004) +#define I2C_IC_INTR_MASK_M_RX_FULL_MSB _u(2) +#define I2C_IC_INTR_MASK_M_RX_FULL_LSB _u(2) +#define I2C_IC_INTR_MASK_M_RX_FULL_ACCESS "RW" +#define I2C_IC_INTR_MASK_M_RX_FULL_VALUE_ENABLED _u(0x0) +#define I2C_IC_INTR_MASK_M_RX_FULL_VALUE_DISABLED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_MASK_M_RX_OVER +// Description : This bit masks the R_RX_OVER interrupt in IC_INTR_STAT +// register. +// +// Reset value: 0x1 +// 0x0 -> RX_OVER interrupt is masked +// 0x1 -> RX_OVER interrupt is unmasked +#define I2C_IC_INTR_MASK_M_RX_OVER_RESET _u(0x1) +#define I2C_IC_INTR_MASK_M_RX_OVER_BITS _u(0x00000002) +#define I2C_IC_INTR_MASK_M_RX_OVER_MSB _u(1) +#define I2C_IC_INTR_MASK_M_RX_OVER_LSB _u(1) +#define I2C_IC_INTR_MASK_M_RX_OVER_ACCESS "RW" +#define I2C_IC_INTR_MASK_M_RX_OVER_VALUE_ENABLED _u(0x0) +#define I2C_IC_INTR_MASK_M_RX_OVER_VALUE_DISABLED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_INTR_MASK_M_RX_UNDER +// Description : This bit masks the R_RX_UNDER interrupt in IC_INTR_STAT +// register. +// +// Reset value: 0x1 +// 0x0 -> RX_UNDER interrupt is masked +// 0x1 -> RX_UNDER interrupt is unmasked +#define I2C_IC_INTR_MASK_M_RX_UNDER_RESET _u(0x1) +#define I2C_IC_INTR_MASK_M_RX_UNDER_BITS _u(0x00000001) +#define I2C_IC_INTR_MASK_M_RX_UNDER_MSB _u(0) +#define I2C_IC_INTR_MASK_M_RX_UNDER_LSB _u(0) +#define I2C_IC_INTR_MASK_M_RX_UNDER_ACCESS "RW" +#define I2C_IC_INTR_MASK_M_RX_UNDER_VALUE_ENABLED _u(0x0) +#define I2C_IC_INTR_MASK_M_RX_UNDER_VALUE_DISABLED _u(0x1) +// ============================================================================= +// Register : I2C_IC_RAW_INTR_STAT +// Description : I2C Raw Interrupt Status Register +// +// Unlike the IC_INTR_STAT register, these bits are not masked so +// they always show the true status of the DW_apb_i2c. +#define I2C_IC_RAW_INTR_STAT_OFFSET _u(0x00000034) +#define I2C_IC_RAW_INTR_STAT_BITS _u(0x00001fff) +#define I2C_IC_RAW_INTR_STAT_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_RAW_INTR_STAT_RESTART_DET +// Description : Indicates whether a RESTART condition has occurred on the I2C +// interface when DW_apb_i2c is operating in Slave mode and the +// slave is being addressed. Enabled only when +// IC_SLV_RESTART_DET_EN=1. +// +// Note: However, in high-speed mode or during a START BYTE +// transfer, the RESTART comes before the address field as per the +// I2C protocol. In this case, the slave is not the addressed +// slave when the RESTART is issued, therefore DW_apb_i2c does not +// generate the RESTART_DET interrupt. +// +// Reset value: 0x0 +// 0x0 -> RESTART_DET interrupt is inactive +// 0x1 -> RESTART_DET interrupt is active +#define I2C_IC_RAW_INTR_STAT_RESTART_DET_RESET _u(0x0) +#define I2C_IC_RAW_INTR_STAT_RESTART_DET_BITS _u(0x00001000) +#define I2C_IC_RAW_INTR_STAT_RESTART_DET_MSB _u(12) +#define I2C_IC_RAW_INTR_STAT_RESTART_DET_LSB _u(12) +#define I2C_IC_RAW_INTR_STAT_RESTART_DET_ACCESS "RO" +#define I2C_IC_RAW_INTR_STAT_RESTART_DET_VALUE_INACTIVE _u(0x0) +#define I2C_IC_RAW_INTR_STAT_RESTART_DET_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_RAW_INTR_STAT_GEN_CALL +// Description : Set only when a General Call address is received and it is +// acknowledged. It stays set until it is cleared either by +// disabling DW_apb_i2c or when the CPU reads bit 0 of the +// IC_CLR_GEN_CALL register. DW_apb_i2c stores the received data +// in the Rx buffer. +// +// Reset value: 0x0 +// 0x0 -> GEN_CALL interrupt is inactive +// 0x1 -> GEN_CALL interrupt is active +#define I2C_IC_RAW_INTR_STAT_GEN_CALL_RESET _u(0x0) +#define I2C_IC_RAW_INTR_STAT_GEN_CALL_BITS _u(0x00000800) +#define I2C_IC_RAW_INTR_STAT_GEN_CALL_MSB _u(11) +#define I2C_IC_RAW_INTR_STAT_GEN_CALL_LSB _u(11) +#define I2C_IC_RAW_INTR_STAT_GEN_CALL_ACCESS "RO" +#define I2C_IC_RAW_INTR_STAT_GEN_CALL_VALUE_INACTIVE _u(0x0) +#define I2C_IC_RAW_INTR_STAT_GEN_CALL_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_RAW_INTR_STAT_START_DET +// Description : Indicates whether a START or RESTART condition has occurred on +// the I2C interface regardless of whether DW_apb_i2c is operating +// in slave or master mode. +// +// Reset value: 0x0 +// 0x0 -> START_DET interrupt is inactive +// 0x1 -> START_DET interrupt is active +#define I2C_IC_RAW_INTR_STAT_START_DET_RESET _u(0x0) +#define I2C_IC_RAW_INTR_STAT_START_DET_BITS _u(0x00000400) +#define I2C_IC_RAW_INTR_STAT_START_DET_MSB _u(10) +#define I2C_IC_RAW_INTR_STAT_START_DET_LSB _u(10) +#define I2C_IC_RAW_INTR_STAT_START_DET_ACCESS "RO" +#define I2C_IC_RAW_INTR_STAT_START_DET_VALUE_INACTIVE _u(0x0) +#define I2C_IC_RAW_INTR_STAT_START_DET_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_RAW_INTR_STAT_STOP_DET +// Description : Indicates whether a STOP condition has occurred on the I2C +// interface regardless of whether DW_apb_i2c is operating in +// slave or master mode. +// +// In Slave Mode: - If IC_CON[7]=1'b1 (STOP_DET_IFADDRESSED), the +// STOP_DET interrupt will be issued only if slave is addressed. +// Note: During a general call address, this slave does not issue +// a STOP_DET interrupt if STOP_DET_IF_ADDRESSED=1'b1, even if the +// slave responds to the general call address by generating ACK. +// The STOP_DET interrupt is generated only when the transmitted +// address matches the slave address (SAR). - If IC_CON[7]=1'b0 +// (STOP_DET_IFADDRESSED), the STOP_DET interrupt is issued +// irrespective of whether it is being addressed. In Master Mode: +// - If IC_CON[10]=1'b1 (STOP_DET_IF_MASTER_ACTIVE),the STOP_DET +// interrupt will be issued only if Master is active. - If +// IC_CON[10]=1'b0 (STOP_DET_IFADDRESSED),the STOP_DET interrupt +// will be issued irrespective of whether master is active or not. +// Reset value: 0x0 +// 0x0 -> STOP_DET interrupt is inactive +// 0x1 -> STOP_DET interrupt is active +#define I2C_IC_RAW_INTR_STAT_STOP_DET_RESET _u(0x0) +#define I2C_IC_RAW_INTR_STAT_STOP_DET_BITS _u(0x00000200) +#define I2C_IC_RAW_INTR_STAT_STOP_DET_MSB _u(9) +#define I2C_IC_RAW_INTR_STAT_STOP_DET_LSB _u(9) +#define I2C_IC_RAW_INTR_STAT_STOP_DET_ACCESS "RO" +#define I2C_IC_RAW_INTR_STAT_STOP_DET_VALUE_INACTIVE _u(0x0) +#define I2C_IC_RAW_INTR_STAT_STOP_DET_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_RAW_INTR_STAT_ACTIVITY +// Description : This bit captures DW_apb_i2c activity and stays set until it is +// cleared. There are four ways to clear it: - Disabling the +// DW_apb_i2c - Reading the IC_CLR_ACTIVITY register - Reading the +// IC_CLR_INTR register - System reset Once this bit is set, it +// stays set unless one of the four methods is used to clear it. +// Even if the DW_apb_i2c module is idle, this bit remains set +// until cleared, indicating that there was activity on the bus. +// +// Reset value: 0x0 +// 0x0 -> RAW_INTR_ACTIVITY interrupt is inactive +// 0x1 -> RAW_INTR_ACTIVITY interrupt is active +#define I2C_IC_RAW_INTR_STAT_ACTIVITY_RESET _u(0x0) +#define I2C_IC_RAW_INTR_STAT_ACTIVITY_BITS _u(0x00000100) +#define I2C_IC_RAW_INTR_STAT_ACTIVITY_MSB _u(8) +#define I2C_IC_RAW_INTR_STAT_ACTIVITY_LSB _u(8) +#define I2C_IC_RAW_INTR_STAT_ACTIVITY_ACCESS "RO" +#define I2C_IC_RAW_INTR_STAT_ACTIVITY_VALUE_INACTIVE _u(0x0) +#define I2C_IC_RAW_INTR_STAT_ACTIVITY_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_RAW_INTR_STAT_RX_DONE +// Description : When the DW_apb_i2c is acting as a slave-transmitter, this bit +// is set to 1 if the master does not acknowledge a transmitted +// byte. This occurs on the last byte of the transmission, +// indicating that the transmission is done. +// +// Reset value: 0x0 +// 0x0 -> RX_DONE interrupt is inactive +// 0x1 -> RX_DONE interrupt is active +#define I2C_IC_RAW_INTR_STAT_RX_DONE_RESET _u(0x0) +#define I2C_IC_RAW_INTR_STAT_RX_DONE_BITS _u(0x00000080) +#define I2C_IC_RAW_INTR_STAT_RX_DONE_MSB _u(7) +#define I2C_IC_RAW_INTR_STAT_RX_DONE_LSB _u(7) +#define I2C_IC_RAW_INTR_STAT_RX_DONE_ACCESS "RO" +#define I2C_IC_RAW_INTR_STAT_RX_DONE_VALUE_INACTIVE _u(0x0) +#define I2C_IC_RAW_INTR_STAT_RX_DONE_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_RAW_INTR_STAT_TX_ABRT +// Description : This bit indicates if DW_apb_i2c, as an I2C transmitter, is +// unable to complete the intended actions on the contents of the +// transmit FIFO. This situation can occur both as an I2C master +// or an I2C slave, and is referred to as a 'transmit abort'. When +// this bit is set to 1, the IC_TX_ABRT_SOURCE register indicates +// the reason why the transmit abort takes places. +// +// Note: The DW_apb_i2c flushes/resets/empties the TX_FIFO and +// RX_FIFO whenever there is a transmit abort caused by any of the +// events tracked by the IC_TX_ABRT_SOURCE register. The FIFOs +// remains in this flushed state until the register IC_CLR_TX_ABRT +// is read. Once this read is performed, the Tx FIFO is then ready +// to accept more data bytes from the APB interface. +// +// Reset value: 0x0 +// 0x0 -> TX_ABRT interrupt is inactive +// 0x1 -> TX_ABRT interrupt is active +#define I2C_IC_RAW_INTR_STAT_TX_ABRT_RESET _u(0x0) +#define I2C_IC_RAW_INTR_STAT_TX_ABRT_BITS _u(0x00000040) +#define I2C_IC_RAW_INTR_STAT_TX_ABRT_MSB _u(6) +#define I2C_IC_RAW_INTR_STAT_TX_ABRT_LSB _u(6) +#define I2C_IC_RAW_INTR_STAT_TX_ABRT_ACCESS "RO" +#define I2C_IC_RAW_INTR_STAT_TX_ABRT_VALUE_INACTIVE _u(0x0) +#define I2C_IC_RAW_INTR_STAT_TX_ABRT_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_RAW_INTR_STAT_RD_REQ +// Description : This bit is set to 1 when DW_apb_i2c is acting as a slave and +// another I2C master is attempting to read data from DW_apb_i2c. +// The DW_apb_i2c holds the I2C bus in a wait state (SCL=0) until +// this interrupt is serviced, which means that the slave has been +// addressed by a remote master that is asking for data to be +// transferred. The processor must respond to this interrupt and +// then write the requested data to the IC_DATA_CMD register. This +// bit is set to 0 just after the processor reads the +// IC_CLR_RD_REQ register. +// +// Reset value: 0x0 +// 0x0 -> RD_REQ interrupt is inactive +// 0x1 -> RD_REQ interrupt is active +#define I2C_IC_RAW_INTR_STAT_RD_REQ_RESET _u(0x0) +#define I2C_IC_RAW_INTR_STAT_RD_REQ_BITS _u(0x00000020) +#define I2C_IC_RAW_INTR_STAT_RD_REQ_MSB _u(5) +#define I2C_IC_RAW_INTR_STAT_RD_REQ_LSB _u(5) +#define I2C_IC_RAW_INTR_STAT_RD_REQ_ACCESS "RO" +#define I2C_IC_RAW_INTR_STAT_RD_REQ_VALUE_INACTIVE _u(0x0) +#define I2C_IC_RAW_INTR_STAT_RD_REQ_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_RAW_INTR_STAT_TX_EMPTY +// Description : The behavior of the TX_EMPTY interrupt status differs based on +// the TX_EMPTY_CTRL selection in the IC_CON register. - When +// TX_EMPTY_CTRL = 0: This bit is set to 1 when the transmit +// buffer is at or below the threshold value set in the IC_TX_TL +// register. - When TX_EMPTY_CTRL = 1: This bit is set to 1 when +// the transmit buffer is at or below the threshold value set in +// the IC_TX_TL register and the transmission of the address/data +// from the internal shift register for the most recently popped +// command is completed. It is automatically cleared by hardware +// when the buffer level goes above the threshold. When +// IC_ENABLE[0] is set to 0, the TX FIFO is flushed and held in +// reset. There the TX FIFO looks like it has no data within it, +// so this bit is set to 1, provided there is activity in the +// master or slave state machines. When there is no longer any +// activity, then with ic_en=0, this bit is set to 0. +// +// Reset value: 0x0. +// 0x0 -> TX_EMPTY interrupt is inactive +// 0x1 -> TX_EMPTY interrupt is active +#define I2C_IC_RAW_INTR_STAT_TX_EMPTY_RESET _u(0x0) +#define I2C_IC_RAW_INTR_STAT_TX_EMPTY_BITS _u(0x00000010) +#define I2C_IC_RAW_INTR_STAT_TX_EMPTY_MSB _u(4) +#define I2C_IC_RAW_INTR_STAT_TX_EMPTY_LSB _u(4) +#define I2C_IC_RAW_INTR_STAT_TX_EMPTY_ACCESS "RO" +#define I2C_IC_RAW_INTR_STAT_TX_EMPTY_VALUE_INACTIVE _u(0x0) +#define I2C_IC_RAW_INTR_STAT_TX_EMPTY_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_RAW_INTR_STAT_TX_OVER +// Description : Set during transmit if the transmit buffer is filled to +// IC_TX_BUFFER_DEPTH and the processor attempts to issue another +// I2C command by writing to the IC_DATA_CMD register. When the +// module is disabled, this bit keeps its level until the master +// or slave state machines go into idle, and when ic_en goes to 0, +// this interrupt is cleared. +// +// Reset value: 0x0 +// 0x0 -> TX_OVER interrupt is inactive +// 0x1 -> TX_OVER interrupt is active +#define I2C_IC_RAW_INTR_STAT_TX_OVER_RESET _u(0x0) +#define I2C_IC_RAW_INTR_STAT_TX_OVER_BITS _u(0x00000008) +#define I2C_IC_RAW_INTR_STAT_TX_OVER_MSB _u(3) +#define I2C_IC_RAW_INTR_STAT_TX_OVER_LSB _u(3) +#define I2C_IC_RAW_INTR_STAT_TX_OVER_ACCESS "RO" +#define I2C_IC_RAW_INTR_STAT_TX_OVER_VALUE_INACTIVE _u(0x0) +#define I2C_IC_RAW_INTR_STAT_TX_OVER_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_RAW_INTR_STAT_RX_FULL +// Description : Set when the receive buffer reaches or goes above the RX_TL +// threshold in the IC_RX_TL register. It is automatically cleared +// by hardware when buffer level goes below the threshold. If the +// module is disabled (IC_ENABLE[0]=0), the RX FIFO is flushed and +// held in reset; therefore the RX FIFO is not full. So this bit +// is cleared once the IC_ENABLE bit 0 is programmed with a 0, +// regardless of the activity that continues. +// +// Reset value: 0x0 +// 0x0 -> RX_FULL interrupt is inactive +// 0x1 -> RX_FULL interrupt is active +#define I2C_IC_RAW_INTR_STAT_RX_FULL_RESET _u(0x0) +#define I2C_IC_RAW_INTR_STAT_RX_FULL_BITS _u(0x00000004) +#define I2C_IC_RAW_INTR_STAT_RX_FULL_MSB _u(2) +#define I2C_IC_RAW_INTR_STAT_RX_FULL_LSB _u(2) +#define I2C_IC_RAW_INTR_STAT_RX_FULL_ACCESS "RO" +#define I2C_IC_RAW_INTR_STAT_RX_FULL_VALUE_INACTIVE _u(0x0) +#define I2C_IC_RAW_INTR_STAT_RX_FULL_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_RAW_INTR_STAT_RX_OVER +// Description : Set if the receive buffer is completely filled to +// IC_RX_BUFFER_DEPTH and an additional byte is received from an +// external I2C device. The DW_apb_i2c acknowledges this, but any +// data bytes received after the FIFO is full are lost. If the +// module is disabled (IC_ENABLE[0]=0), this bit keeps its level +// until the master or slave state machines go into idle, and when +// ic_en goes to 0, this interrupt is cleared. +// +// Note: If bit 9 of the IC_CON register (RX_FIFO_FULL_HLD_CTRL) +// is programmed to HIGH, then the RX_OVER interrupt never occurs, +// because the Rx FIFO never overflows. +// +// Reset value: 0x0 +// 0x0 -> RX_OVER interrupt is inactive +// 0x1 -> RX_OVER interrupt is active +#define I2C_IC_RAW_INTR_STAT_RX_OVER_RESET _u(0x0) +#define I2C_IC_RAW_INTR_STAT_RX_OVER_BITS _u(0x00000002) +#define I2C_IC_RAW_INTR_STAT_RX_OVER_MSB _u(1) +#define I2C_IC_RAW_INTR_STAT_RX_OVER_LSB _u(1) +#define I2C_IC_RAW_INTR_STAT_RX_OVER_ACCESS "RO" +#define I2C_IC_RAW_INTR_STAT_RX_OVER_VALUE_INACTIVE _u(0x0) +#define I2C_IC_RAW_INTR_STAT_RX_OVER_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_RAW_INTR_STAT_RX_UNDER +// Description : Set if the processor attempts to read the receive buffer when +// it is empty by reading from the IC_DATA_CMD register. If the +// module is disabled (IC_ENABLE[0]=0), this bit keeps its level +// until the master or slave state machines go into idle, and when +// ic_en goes to 0, this interrupt is cleared. +// +// Reset value: 0x0 +// 0x0 -> RX_UNDER interrupt is inactive +// 0x1 -> RX_UNDER interrupt is active +#define I2C_IC_RAW_INTR_STAT_RX_UNDER_RESET _u(0x0) +#define I2C_IC_RAW_INTR_STAT_RX_UNDER_BITS _u(0x00000001) +#define I2C_IC_RAW_INTR_STAT_RX_UNDER_MSB _u(0) +#define I2C_IC_RAW_INTR_STAT_RX_UNDER_LSB _u(0) +#define I2C_IC_RAW_INTR_STAT_RX_UNDER_ACCESS "RO" +#define I2C_IC_RAW_INTR_STAT_RX_UNDER_VALUE_INACTIVE _u(0x0) +#define I2C_IC_RAW_INTR_STAT_RX_UNDER_VALUE_ACTIVE _u(0x1) +// ============================================================================= +// Register : I2C_IC_RX_TL +// Description : I2C Receive FIFO Threshold Register +#define I2C_IC_RX_TL_OFFSET _u(0x00000038) +#define I2C_IC_RX_TL_BITS _u(0x000000ff) +#define I2C_IC_RX_TL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_RX_TL_RX_TL +// Description : Receive FIFO Threshold Level. +// +// Controls the level of entries (or above) that triggers the +// RX_FULL interrupt (bit 2 in IC_RAW_INTR_STAT register). The +// valid range is 0-255, with the additional restriction that +// hardware does not allow this value to be set to a value larger +// than the depth of the buffer. If an attempt is made to do that, +// the actual value set will be the maximum depth of the buffer. A +// value of 0 sets the threshold for 1 entry, and a value of 255 +// sets the threshold for 256 entries. +#define I2C_IC_RX_TL_RX_TL_RESET _u(0x00) +#define I2C_IC_RX_TL_RX_TL_BITS _u(0x000000ff) +#define I2C_IC_RX_TL_RX_TL_MSB _u(7) +#define I2C_IC_RX_TL_RX_TL_LSB _u(0) +#define I2C_IC_RX_TL_RX_TL_ACCESS "RW" +// ============================================================================= +// Register : I2C_IC_TX_TL +// Description : I2C Transmit FIFO Threshold Register +#define I2C_IC_TX_TL_OFFSET _u(0x0000003c) +#define I2C_IC_TX_TL_BITS _u(0x000000ff) +#define I2C_IC_TX_TL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TX_TL_TX_TL +// Description : Transmit FIFO Threshold Level. +// +// Controls the level of entries (or below) that trigger the +// TX_EMPTY interrupt (bit 4 in IC_RAW_INTR_STAT register). The +// valid range is 0-255, with the additional restriction that it +// may not be set to value larger than the depth of the buffer. If +// an attempt is made to do that, the actual value set will be the +// maximum depth of the buffer. A value of 0 sets the threshold +// for 0 entries, and a value of 255 sets the threshold for 255 +// entries. +#define I2C_IC_TX_TL_TX_TL_RESET _u(0x00) +#define I2C_IC_TX_TL_TX_TL_BITS _u(0x000000ff) +#define I2C_IC_TX_TL_TX_TL_MSB _u(7) +#define I2C_IC_TX_TL_TX_TL_LSB _u(0) +#define I2C_IC_TX_TL_TX_TL_ACCESS "RW" +// ============================================================================= +// Register : I2C_IC_CLR_INTR +// Description : Clear Combined and Individual Interrupt Register +#define I2C_IC_CLR_INTR_OFFSET _u(0x00000040) +#define I2C_IC_CLR_INTR_BITS _u(0x00000001) +#define I2C_IC_CLR_INTR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CLR_INTR_CLR_INTR +// Description : Read this register to clear the combined interrupt, all +// individual interrupts, and the IC_TX_ABRT_SOURCE register. This +// bit does not clear hardware clearable interrupts but software +// clearable interrupts. Refer to Bit 9 of the IC_TX_ABRT_SOURCE +// register for an exception to clearing IC_TX_ABRT_SOURCE. +// +// Reset value: 0x0 +#define I2C_IC_CLR_INTR_CLR_INTR_RESET _u(0x0) +#define I2C_IC_CLR_INTR_CLR_INTR_BITS _u(0x00000001) +#define I2C_IC_CLR_INTR_CLR_INTR_MSB _u(0) +#define I2C_IC_CLR_INTR_CLR_INTR_LSB _u(0) +#define I2C_IC_CLR_INTR_CLR_INTR_ACCESS "RO" +// ============================================================================= +// Register : I2C_IC_CLR_RX_UNDER +// Description : Clear RX_UNDER Interrupt Register +#define I2C_IC_CLR_RX_UNDER_OFFSET _u(0x00000044) +#define I2C_IC_CLR_RX_UNDER_BITS _u(0x00000001) +#define I2C_IC_CLR_RX_UNDER_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CLR_RX_UNDER_CLR_RX_UNDER +// Description : Read this register to clear the RX_UNDER interrupt (bit 0) of +// the IC_RAW_INTR_STAT register. +// +// Reset value: 0x0 +#define I2C_IC_CLR_RX_UNDER_CLR_RX_UNDER_RESET _u(0x0) +#define I2C_IC_CLR_RX_UNDER_CLR_RX_UNDER_BITS _u(0x00000001) +#define I2C_IC_CLR_RX_UNDER_CLR_RX_UNDER_MSB _u(0) +#define I2C_IC_CLR_RX_UNDER_CLR_RX_UNDER_LSB _u(0) +#define I2C_IC_CLR_RX_UNDER_CLR_RX_UNDER_ACCESS "RO" +// ============================================================================= +// Register : I2C_IC_CLR_RX_OVER +// Description : Clear RX_OVER Interrupt Register +#define I2C_IC_CLR_RX_OVER_OFFSET _u(0x00000048) +#define I2C_IC_CLR_RX_OVER_BITS _u(0x00000001) +#define I2C_IC_CLR_RX_OVER_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CLR_RX_OVER_CLR_RX_OVER +// Description : Read this register to clear the RX_OVER interrupt (bit 1) of +// the IC_RAW_INTR_STAT register. +// +// Reset value: 0x0 +#define I2C_IC_CLR_RX_OVER_CLR_RX_OVER_RESET _u(0x0) +#define I2C_IC_CLR_RX_OVER_CLR_RX_OVER_BITS _u(0x00000001) +#define I2C_IC_CLR_RX_OVER_CLR_RX_OVER_MSB _u(0) +#define I2C_IC_CLR_RX_OVER_CLR_RX_OVER_LSB _u(0) +#define I2C_IC_CLR_RX_OVER_CLR_RX_OVER_ACCESS "RO" +// ============================================================================= +// Register : I2C_IC_CLR_TX_OVER +// Description : Clear TX_OVER Interrupt Register +#define I2C_IC_CLR_TX_OVER_OFFSET _u(0x0000004c) +#define I2C_IC_CLR_TX_OVER_BITS _u(0x00000001) +#define I2C_IC_CLR_TX_OVER_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CLR_TX_OVER_CLR_TX_OVER +// Description : Read this register to clear the TX_OVER interrupt (bit 3) of +// the IC_RAW_INTR_STAT register. +// +// Reset value: 0x0 +#define I2C_IC_CLR_TX_OVER_CLR_TX_OVER_RESET _u(0x0) +#define I2C_IC_CLR_TX_OVER_CLR_TX_OVER_BITS _u(0x00000001) +#define I2C_IC_CLR_TX_OVER_CLR_TX_OVER_MSB _u(0) +#define I2C_IC_CLR_TX_OVER_CLR_TX_OVER_LSB _u(0) +#define I2C_IC_CLR_TX_OVER_CLR_TX_OVER_ACCESS "RO" +// ============================================================================= +// Register : I2C_IC_CLR_RD_REQ +// Description : Clear RD_REQ Interrupt Register +#define I2C_IC_CLR_RD_REQ_OFFSET _u(0x00000050) +#define I2C_IC_CLR_RD_REQ_BITS _u(0x00000001) +#define I2C_IC_CLR_RD_REQ_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CLR_RD_REQ_CLR_RD_REQ +// Description : Read this register to clear the RD_REQ interrupt (bit 5) of the +// IC_RAW_INTR_STAT register. +// +// Reset value: 0x0 +#define I2C_IC_CLR_RD_REQ_CLR_RD_REQ_RESET _u(0x0) +#define I2C_IC_CLR_RD_REQ_CLR_RD_REQ_BITS _u(0x00000001) +#define I2C_IC_CLR_RD_REQ_CLR_RD_REQ_MSB _u(0) +#define I2C_IC_CLR_RD_REQ_CLR_RD_REQ_LSB _u(0) +#define I2C_IC_CLR_RD_REQ_CLR_RD_REQ_ACCESS "RO" +// ============================================================================= +// Register : I2C_IC_CLR_TX_ABRT +// Description : Clear TX_ABRT Interrupt Register +#define I2C_IC_CLR_TX_ABRT_OFFSET _u(0x00000054) +#define I2C_IC_CLR_TX_ABRT_BITS _u(0x00000001) +#define I2C_IC_CLR_TX_ABRT_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CLR_TX_ABRT_CLR_TX_ABRT +// Description : Read this register to clear the TX_ABRT interrupt (bit 6) of +// the IC_RAW_INTR_STAT register, and the IC_TX_ABRT_SOURCE +// register. This also releases the TX FIFO from the flushed/reset +// state, allowing more writes to the TX FIFO. Refer to Bit 9 of +// the IC_TX_ABRT_SOURCE register for an exception to clearing +// IC_TX_ABRT_SOURCE. +// +// Reset value: 0x0 +#define I2C_IC_CLR_TX_ABRT_CLR_TX_ABRT_RESET _u(0x0) +#define I2C_IC_CLR_TX_ABRT_CLR_TX_ABRT_BITS _u(0x00000001) +#define I2C_IC_CLR_TX_ABRT_CLR_TX_ABRT_MSB _u(0) +#define I2C_IC_CLR_TX_ABRT_CLR_TX_ABRT_LSB _u(0) +#define I2C_IC_CLR_TX_ABRT_CLR_TX_ABRT_ACCESS "RO" +// ============================================================================= +// Register : I2C_IC_CLR_RX_DONE +// Description : Clear RX_DONE Interrupt Register +#define I2C_IC_CLR_RX_DONE_OFFSET _u(0x00000058) +#define I2C_IC_CLR_RX_DONE_BITS _u(0x00000001) +#define I2C_IC_CLR_RX_DONE_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CLR_RX_DONE_CLR_RX_DONE +// Description : Read this register to clear the RX_DONE interrupt (bit 7) of +// the IC_RAW_INTR_STAT register. +// +// Reset value: 0x0 +#define I2C_IC_CLR_RX_DONE_CLR_RX_DONE_RESET _u(0x0) +#define I2C_IC_CLR_RX_DONE_CLR_RX_DONE_BITS _u(0x00000001) +#define I2C_IC_CLR_RX_DONE_CLR_RX_DONE_MSB _u(0) +#define I2C_IC_CLR_RX_DONE_CLR_RX_DONE_LSB _u(0) +#define I2C_IC_CLR_RX_DONE_CLR_RX_DONE_ACCESS "RO" +// ============================================================================= +// Register : I2C_IC_CLR_ACTIVITY +// Description : Clear ACTIVITY Interrupt Register +#define I2C_IC_CLR_ACTIVITY_OFFSET _u(0x0000005c) +#define I2C_IC_CLR_ACTIVITY_BITS _u(0x00000001) +#define I2C_IC_CLR_ACTIVITY_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CLR_ACTIVITY_CLR_ACTIVITY +// Description : Reading this register clears the ACTIVITY interrupt if the I2C +// is not active anymore. If the I2C module is still active on the +// bus, the ACTIVITY interrupt bit continues to be set. It is +// automatically cleared by hardware if the module is disabled and +// if there is no further activity on the bus. The value read from +// this register to get status of the ACTIVITY interrupt (bit 8) +// of the IC_RAW_INTR_STAT register. +// +// Reset value: 0x0 +#define I2C_IC_CLR_ACTIVITY_CLR_ACTIVITY_RESET _u(0x0) +#define I2C_IC_CLR_ACTIVITY_CLR_ACTIVITY_BITS _u(0x00000001) +#define I2C_IC_CLR_ACTIVITY_CLR_ACTIVITY_MSB _u(0) +#define I2C_IC_CLR_ACTIVITY_CLR_ACTIVITY_LSB _u(0) +#define I2C_IC_CLR_ACTIVITY_CLR_ACTIVITY_ACCESS "RO" +// ============================================================================= +// Register : I2C_IC_CLR_STOP_DET +// Description : Clear STOP_DET Interrupt Register +#define I2C_IC_CLR_STOP_DET_OFFSET _u(0x00000060) +#define I2C_IC_CLR_STOP_DET_BITS _u(0x00000001) +#define I2C_IC_CLR_STOP_DET_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CLR_STOP_DET_CLR_STOP_DET +// Description : Read this register to clear the STOP_DET interrupt (bit 9) of +// the IC_RAW_INTR_STAT register. +// +// Reset value: 0x0 +#define I2C_IC_CLR_STOP_DET_CLR_STOP_DET_RESET _u(0x0) +#define I2C_IC_CLR_STOP_DET_CLR_STOP_DET_BITS _u(0x00000001) +#define I2C_IC_CLR_STOP_DET_CLR_STOP_DET_MSB _u(0) +#define I2C_IC_CLR_STOP_DET_CLR_STOP_DET_LSB _u(0) +#define I2C_IC_CLR_STOP_DET_CLR_STOP_DET_ACCESS "RO" +// ============================================================================= +// Register : I2C_IC_CLR_START_DET +// Description : Clear START_DET Interrupt Register +#define I2C_IC_CLR_START_DET_OFFSET _u(0x00000064) +#define I2C_IC_CLR_START_DET_BITS _u(0x00000001) +#define I2C_IC_CLR_START_DET_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CLR_START_DET_CLR_START_DET +// Description : Read this register to clear the START_DET interrupt (bit 10) of +// the IC_RAW_INTR_STAT register. +// +// Reset value: 0x0 +#define I2C_IC_CLR_START_DET_CLR_START_DET_RESET _u(0x0) +#define I2C_IC_CLR_START_DET_CLR_START_DET_BITS _u(0x00000001) +#define I2C_IC_CLR_START_DET_CLR_START_DET_MSB _u(0) +#define I2C_IC_CLR_START_DET_CLR_START_DET_LSB _u(0) +#define I2C_IC_CLR_START_DET_CLR_START_DET_ACCESS "RO" +// ============================================================================= +// Register : I2C_IC_CLR_GEN_CALL +// Description : Clear GEN_CALL Interrupt Register +#define I2C_IC_CLR_GEN_CALL_OFFSET _u(0x00000068) +#define I2C_IC_CLR_GEN_CALL_BITS _u(0x00000001) +#define I2C_IC_CLR_GEN_CALL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CLR_GEN_CALL_CLR_GEN_CALL +// Description : Read this register to clear the GEN_CALL interrupt (bit 11) of +// IC_RAW_INTR_STAT register. +// +// Reset value: 0x0 +#define I2C_IC_CLR_GEN_CALL_CLR_GEN_CALL_RESET _u(0x0) +#define I2C_IC_CLR_GEN_CALL_CLR_GEN_CALL_BITS _u(0x00000001) +#define I2C_IC_CLR_GEN_CALL_CLR_GEN_CALL_MSB _u(0) +#define I2C_IC_CLR_GEN_CALL_CLR_GEN_CALL_LSB _u(0) +#define I2C_IC_CLR_GEN_CALL_CLR_GEN_CALL_ACCESS "RO" +// ============================================================================= +// Register : I2C_IC_ENABLE +// Description : I2C Enable Register +#define I2C_IC_ENABLE_OFFSET _u(0x0000006c) +#define I2C_IC_ENABLE_BITS _u(0x00000007) +#define I2C_IC_ENABLE_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_ENABLE_TX_CMD_BLOCK +// Description : In Master mode: - 1'b1: Blocks the transmission of data on I2C +// bus even if Tx FIFO has data to transmit. - 1'b0: The +// transmission of data starts on I2C bus automatically, as soon +// as the first data is available in the Tx FIFO. Note: To block +// the execution of Master commands, set the TX_CMD_BLOCK bit only +// when Tx FIFO is empty (IC_STATUS[2]==1) and Master is in Idle +// state (IC_STATUS[5] == 0). Any further commands put in the Tx +// FIFO are not executed until TX_CMD_BLOCK bit is unset. Reset +// value: IC_TX_CMD_BLOCK_DEFAULT +// 0x0 -> Tx Command execution not blocked +// 0x1 -> Tx Command execution blocked +#define I2C_IC_ENABLE_TX_CMD_BLOCK_RESET _u(0x0) +#define I2C_IC_ENABLE_TX_CMD_BLOCK_BITS _u(0x00000004) +#define I2C_IC_ENABLE_TX_CMD_BLOCK_MSB _u(2) +#define I2C_IC_ENABLE_TX_CMD_BLOCK_LSB _u(2) +#define I2C_IC_ENABLE_TX_CMD_BLOCK_ACCESS "RW" +#define I2C_IC_ENABLE_TX_CMD_BLOCK_VALUE_NOT_BLOCKED _u(0x0) +#define I2C_IC_ENABLE_TX_CMD_BLOCK_VALUE_BLOCKED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_ENABLE_ABORT +// Description : When set, the controller initiates the transfer abort. - 0: +// ABORT not initiated or ABORT done - 1: ABORT operation in +// progress The software can abort the I2C transfer in master mode +// by setting this bit. The software can set this bit only when +// ENABLE is already set; otherwise, the controller ignores any +// write to ABORT bit. The software cannot clear the ABORT bit +// once set. In response to an ABORT, the controller issues a STOP +// and flushes the Tx FIFO after completing the current transfer, +// then sets the TX_ABORT interrupt after the abort operation. The +// ABORT bit is cleared automatically after the abort operation. +// +// For a detailed description on how to abort I2C transfers, refer +// to 'Aborting I2C Transfers'. +// +// Reset value: 0x0 +// 0x0 -> ABORT operation not in progress +// 0x1 -> ABORT operation in progress +#define I2C_IC_ENABLE_ABORT_RESET _u(0x0) +#define I2C_IC_ENABLE_ABORT_BITS _u(0x00000002) +#define I2C_IC_ENABLE_ABORT_MSB _u(1) +#define I2C_IC_ENABLE_ABORT_LSB _u(1) +#define I2C_IC_ENABLE_ABORT_ACCESS "RW" +#define I2C_IC_ENABLE_ABORT_VALUE_DISABLE _u(0x0) +#define I2C_IC_ENABLE_ABORT_VALUE_ENABLED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_ENABLE_ENABLE +// Description : Controls whether the DW_apb_i2c is enabled. - 0: Disables +// DW_apb_i2c (TX and RX FIFOs are held in an erased state) - 1: +// Enables DW_apb_i2c Software can disable DW_apb_i2c while it is +// active. However, it is important that care be taken to ensure +// that DW_apb_i2c is disabled properly. A recommended procedure +// is described in 'Disabling DW_apb_i2c'. +// +// When DW_apb_i2c is disabled, the following occurs: - The TX +// FIFO and RX FIFO get flushed. - Status bits in the IC_INTR_STAT +// register are still active until DW_apb_i2c goes into IDLE +// state. If the module is transmitting, it stops as well as +// deletes the contents of the transmit buffer after the current +// transfer is complete. If the module is receiving, the +// DW_apb_i2c stops the current transfer at the end of the current +// byte and does not acknowledge the transfer. +// +// In systems with asynchronous pclk and ic_clk when IC_CLK_TYPE +// parameter set to asynchronous (1), there is a two ic_clk delay +// when enabling or disabling the DW_apb_i2c. For a detailed +// description on how to disable DW_apb_i2c, refer to 'Disabling +// DW_apb_i2c' +// +// Reset value: 0x0 +// 0x0 -> I2C is disabled +// 0x1 -> I2C is enabled +#define I2C_IC_ENABLE_ENABLE_RESET _u(0x0) +#define I2C_IC_ENABLE_ENABLE_BITS _u(0x00000001) +#define I2C_IC_ENABLE_ENABLE_MSB _u(0) +#define I2C_IC_ENABLE_ENABLE_LSB _u(0) +#define I2C_IC_ENABLE_ENABLE_ACCESS "RW" +#define I2C_IC_ENABLE_ENABLE_VALUE_DISABLED _u(0x0) +#define I2C_IC_ENABLE_ENABLE_VALUE_ENABLED _u(0x1) +// ============================================================================= +// Register : I2C_IC_STATUS +// Description : I2C Status Register +// +// This is a read-only register used to indicate the current +// transfer status and FIFO status. The status register may be +// read at any time. None of the bits in this register request an +// interrupt. +// +// When the I2C is disabled by writing 0 in bit 0 of the IC_ENABLE +// register: - Bits 1 and 2 are set to 1 - Bits 3 and 10 are set +// to 0 When the master or slave state machines goes to idle and +// ic_en=0: - Bits 5 and 6 are set to 0 +#define I2C_IC_STATUS_OFFSET _u(0x00000070) +#define I2C_IC_STATUS_BITS _u(0x0000007f) +#define I2C_IC_STATUS_RESET _u(0x00000006) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_STATUS_SLV_ACTIVITY +// Description : Slave FSM Activity Status. When the Slave Finite State Machine +// (FSM) is not in the IDLE state, this bit is set. - 0: Slave FSM +// is in IDLE state so the Slave part of DW_apb_i2c is not Active +// - 1: Slave FSM is not in IDLE state so the Slave part of +// DW_apb_i2c is Active Reset value: 0x0 +// 0x0 -> Slave is idle +// 0x1 -> Slave not idle +#define I2C_IC_STATUS_SLV_ACTIVITY_RESET _u(0x0) +#define I2C_IC_STATUS_SLV_ACTIVITY_BITS _u(0x00000040) +#define I2C_IC_STATUS_SLV_ACTIVITY_MSB _u(6) +#define I2C_IC_STATUS_SLV_ACTIVITY_LSB _u(6) +#define I2C_IC_STATUS_SLV_ACTIVITY_ACCESS "RO" +#define I2C_IC_STATUS_SLV_ACTIVITY_VALUE_IDLE _u(0x0) +#define I2C_IC_STATUS_SLV_ACTIVITY_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_STATUS_MST_ACTIVITY +// Description : Master FSM Activity Status. When the Master Finite State +// Machine (FSM) is not in the IDLE state, this bit is set. - 0: +// Master FSM is in IDLE state so the Master part of DW_apb_i2c is +// not Active - 1: Master FSM is not in IDLE state so the Master +// part of DW_apb_i2c is Active Note: IC_STATUS[0]-that is, +// ACTIVITY bit-is the OR of SLV_ACTIVITY and MST_ACTIVITY bits. +// +// Reset value: 0x0 +// 0x0 -> Master is idle +// 0x1 -> Master not idle +#define I2C_IC_STATUS_MST_ACTIVITY_RESET _u(0x0) +#define I2C_IC_STATUS_MST_ACTIVITY_BITS _u(0x00000020) +#define I2C_IC_STATUS_MST_ACTIVITY_MSB _u(5) +#define I2C_IC_STATUS_MST_ACTIVITY_LSB _u(5) +#define I2C_IC_STATUS_MST_ACTIVITY_ACCESS "RO" +#define I2C_IC_STATUS_MST_ACTIVITY_VALUE_IDLE _u(0x0) +#define I2C_IC_STATUS_MST_ACTIVITY_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_STATUS_RFF +// Description : Receive FIFO Completely Full. When the receive FIFO is +// completely full, this bit is set. When the receive FIFO +// contains one or more empty location, this bit is cleared. - 0: +// Receive FIFO is not full - 1: Receive FIFO is full Reset value: +// 0x0 +// 0x0 -> Rx FIFO not full +// 0x1 -> Rx FIFO is full +#define I2C_IC_STATUS_RFF_RESET _u(0x0) +#define I2C_IC_STATUS_RFF_BITS _u(0x00000010) +#define I2C_IC_STATUS_RFF_MSB _u(4) +#define I2C_IC_STATUS_RFF_LSB _u(4) +#define I2C_IC_STATUS_RFF_ACCESS "RO" +#define I2C_IC_STATUS_RFF_VALUE_NOT_FULL _u(0x0) +#define I2C_IC_STATUS_RFF_VALUE_FULL _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_STATUS_RFNE +// Description : Receive FIFO Not Empty. This bit is set when the receive FIFO +// contains one or more entries; it is cleared when the receive +// FIFO is empty. - 0: Receive FIFO is empty - 1: Receive FIFO is +// not empty Reset value: 0x0 +// 0x0 -> Rx FIFO is empty +// 0x1 -> Rx FIFO not empty +#define I2C_IC_STATUS_RFNE_RESET _u(0x0) +#define I2C_IC_STATUS_RFNE_BITS _u(0x00000008) +#define I2C_IC_STATUS_RFNE_MSB _u(3) +#define I2C_IC_STATUS_RFNE_LSB _u(3) +#define I2C_IC_STATUS_RFNE_ACCESS "RO" +#define I2C_IC_STATUS_RFNE_VALUE_EMPTY _u(0x0) +#define I2C_IC_STATUS_RFNE_VALUE_NOT_EMPTY _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_STATUS_TFE +// Description : Transmit FIFO Completely Empty. When the transmit FIFO is +// completely empty, this bit is set. When it contains one or more +// valid entries, this bit is cleared. This bit field does not +// request an interrupt. - 0: Transmit FIFO is not empty - 1: +// Transmit FIFO is empty Reset value: 0x1 +// 0x0 -> Tx FIFO not empty +// 0x1 -> Tx FIFO is empty +#define I2C_IC_STATUS_TFE_RESET _u(0x1) +#define I2C_IC_STATUS_TFE_BITS _u(0x00000004) +#define I2C_IC_STATUS_TFE_MSB _u(2) +#define I2C_IC_STATUS_TFE_LSB _u(2) +#define I2C_IC_STATUS_TFE_ACCESS "RO" +#define I2C_IC_STATUS_TFE_VALUE_NON_EMPTY _u(0x0) +#define I2C_IC_STATUS_TFE_VALUE_EMPTY _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_STATUS_TFNF +// Description : Transmit FIFO Not Full. Set when the transmit FIFO contains one +// or more empty locations, and is cleared when the FIFO is full. +// - 0: Transmit FIFO is full - 1: Transmit FIFO is not full Reset +// value: 0x1 +// 0x0 -> Tx FIFO is full +// 0x1 -> Tx FIFO not full +#define I2C_IC_STATUS_TFNF_RESET _u(0x1) +#define I2C_IC_STATUS_TFNF_BITS _u(0x00000002) +#define I2C_IC_STATUS_TFNF_MSB _u(1) +#define I2C_IC_STATUS_TFNF_LSB _u(1) +#define I2C_IC_STATUS_TFNF_ACCESS "RO" +#define I2C_IC_STATUS_TFNF_VALUE_FULL _u(0x0) +#define I2C_IC_STATUS_TFNF_VALUE_NOT_FULL _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_STATUS_ACTIVITY +// Description : I2C Activity Status. Reset value: 0x0 +// 0x0 -> I2C is idle +// 0x1 -> I2C is active +#define I2C_IC_STATUS_ACTIVITY_RESET _u(0x0) +#define I2C_IC_STATUS_ACTIVITY_BITS _u(0x00000001) +#define I2C_IC_STATUS_ACTIVITY_MSB _u(0) +#define I2C_IC_STATUS_ACTIVITY_LSB _u(0) +#define I2C_IC_STATUS_ACTIVITY_ACCESS "RO" +#define I2C_IC_STATUS_ACTIVITY_VALUE_INACTIVE _u(0x0) +#define I2C_IC_STATUS_ACTIVITY_VALUE_ACTIVE _u(0x1) +// ============================================================================= +// Register : I2C_IC_TXFLR +// Description : I2C Transmit FIFO Level Register This register contains the +// number of valid data entries in the transmit FIFO buffer. It is +// cleared whenever: - The I2C is disabled - There is a transmit +// abort - that is, TX_ABRT bit is set in the IC_RAW_INTR_STAT +// register - The slave bulk transmit mode is aborted The register +// increments whenever data is placed into the transmit FIFO and +// decrements when data is taken from the transmit FIFO. +#define I2C_IC_TXFLR_OFFSET _u(0x00000074) +#define I2C_IC_TXFLR_BITS _u(0x0000001f) +#define I2C_IC_TXFLR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TXFLR_TXFLR +// Description : Transmit FIFO Level. Contains the number of valid data entries +// in the transmit FIFO. +// +// Reset value: 0x0 +#define I2C_IC_TXFLR_TXFLR_RESET _u(0x00) +#define I2C_IC_TXFLR_TXFLR_BITS _u(0x0000001f) +#define I2C_IC_TXFLR_TXFLR_MSB _u(4) +#define I2C_IC_TXFLR_TXFLR_LSB _u(0) +#define I2C_IC_TXFLR_TXFLR_ACCESS "RO" +// ============================================================================= +// Register : I2C_IC_RXFLR +// Description : I2C Receive FIFO Level Register This register contains the +// number of valid data entries in the receive FIFO buffer. It is +// cleared whenever: - The I2C is disabled - Whenever there is a +// transmit abort caused by any of the events tracked in +// IC_TX_ABRT_SOURCE The register increments whenever data is +// placed into the receive FIFO and decrements when data is taken +// from the receive FIFO. +#define I2C_IC_RXFLR_OFFSET _u(0x00000078) +#define I2C_IC_RXFLR_BITS _u(0x0000001f) +#define I2C_IC_RXFLR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_RXFLR_RXFLR +// Description : Receive FIFO Level. Contains the number of valid data entries +// in the receive FIFO. +// +// Reset value: 0x0 +#define I2C_IC_RXFLR_RXFLR_RESET _u(0x00) +#define I2C_IC_RXFLR_RXFLR_BITS _u(0x0000001f) +#define I2C_IC_RXFLR_RXFLR_MSB _u(4) +#define I2C_IC_RXFLR_RXFLR_LSB _u(0) +#define I2C_IC_RXFLR_RXFLR_ACCESS "RO" +// ============================================================================= +// Register : I2C_IC_SDA_HOLD +// Description : I2C SDA Hold Time Length Register +// +// The bits [15:0] of this register are used to control the hold +// time of SDA during transmit in both slave and master mode +// (after SCL goes from HIGH to LOW). +// +// The bits [23:16] of this register are used to extend the SDA +// transition (if any) whenever SCL is HIGH in the receiver in +// either master or slave mode. +// +// Writes to this register succeed only when IC_ENABLE[0]=0. +// +// The values in this register are in units of ic_clk period. The +// value programmed in IC_SDA_TX_HOLD must be greater than the +// minimum hold time in each mode (one cycle in master mode, seven +// cycles in slave mode) for the value to be implemented. +// +// The programmed SDA hold time during transmit (IC_SDA_TX_HOLD) +// cannot exceed at any time the duration of the low part of scl. +// Therefore the programmed value cannot be larger than +// N_SCL_LOW-2, where N_SCL_LOW is the duration of the low part of +// the scl period measured in ic_clk cycles. +#define I2C_IC_SDA_HOLD_OFFSET _u(0x0000007c) +#define I2C_IC_SDA_HOLD_BITS _u(0x00ffffff) +#define I2C_IC_SDA_HOLD_RESET _u(0x00000001) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_SDA_HOLD_IC_SDA_RX_HOLD +// Description : Sets the required SDA hold time in units of ic_clk period, when +// DW_apb_i2c acts as a receiver. +// +// Reset value: IC_DEFAULT_SDA_HOLD[23:16]. +#define I2C_IC_SDA_HOLD_IC_SDA_RX_HOLD_RESET _u(0x00) +#define I2C_IC_SDA_HOLD_IC_SDA_RX_HOLD_BITS _u(0x00ff0000) +#define I2C_IC_SDA_HOLD_IC_SDA_RX_HOLD_MSB _u(23) +#define I2C_IC_SDA_HOLD_IC_SDA_RX_HOLD_LSB _u(16) +#define I2C_IC_SDA_HOLD_IC_SDA_RX_HOLD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : I2C_IC_SDA_HOLD_IC_SDA_TX_HOLD +// Description : Sets the required SDA hold time in units of ic_clk period, when +// DW_apb_i2c acts as a transmitter. +// +// Reset value: IC_DEFAULT_SDA_HOLD[15:0]. +#define I2C_IC_SDA_HOLD_IC_SDA_TX_HOLD_RESET _u(0x0001) +#define I2C_IC_SDA_HOLD_IC_SDA_TX_HOLD_BITS _u(0x0000ffff) +#define I2C_IC_SDA_HOLD_IC_SDA_TX_HOLD_MSB _u(15) +#define I2C_IC_SDA_HOLD_IC_SDA_TX_HOLD_LSB _u(0) +#define I2C_IC_SDA_HOLD_IC_SDA_TX_HOLD_ACCESS "RW" +// ============================================================================= +// Register : I2C_IC_TX_ABRT_SOURCE +// Description : I2C Transmit Abort Source Register +// +// This register has 32 bits that indicate the source of the +// TX_ABRT bit. Except for Bit 9, this register is cleared +// whenever the IC_CLR_TX_ABRT register or the IC_CLR_INTR +// register is read. To clear Bit 9, the source of the +// ABRT_SBYTE_NORSTRT must be fixed first; RESTART must be enabled +// (IC_CON[5]=1), the SPECIAL bit must be cleared (IC_TAR[11]), or +// the GC_OR_START bit must be cleared (IC_TAR[10]). +// +// Once the source of the ABRT_SBYTE_NORSTRT is fixed, then this +// bit can be cleared in the same manner as other bits in this +// register. If the source of the ABRT_SBYTE_NORSTRT is not fixed +// before attempting to clear this bit, Bit 9 clears for one cycle +// and is then re-asserted. +#define I2C_IC_TX_ABRT_SOURCE_OFFSET _u(0x00000080) +#define I2C_IC_TX_ABRT_SOURCE_BITS _u(0xff81ffff) +#define I2C_IC_TX_ABRT_SOURCE_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TX_ABRT_SOURCE_TX_FLUSH_CNT +// Description : This field indicates the number of Tx FIFO Data Commands which +// are flushed due to TX_ABRT interrupt. It is cleared whenever +// I2C is disabled. +// +// Reset value: 0x0 +// +// Role of DW_apb_i2c: Master-Transmitter or Slave-Transmitter +#define I2C_IC_TX_ABRT_SOURCE_TX_FLUSH_CNT_RESET _u(0x000) +#define I2C_IC_TX_ABRT_SOURCE_TX_FLUSH_CNT_BITS _u(0xff800000) +#define I2C_IC_TX_ABRT_SOURCE_TX_FLUSH_CNT_MSB _u(31) +#define I2C_IC_TX_ABRT_SOURCE_TX_FLUSH_CNT_LSB _u(23) +#define I2C_IC_TX_ABRT_SOURCE_TX_FLUSH_CNT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TX_ABRT_SOURCE_ABRT_USER_ABRT +// Description : This is a master-mode-only bit. Master has detected the +// transfer abort (IC_ENABLE[1]) +// +// Reset value: 0x0 +// +// Role of DW_apb_i2c: Master-Transmitter +// 0x0 -> Transfer abort detected by master- scenario not present +// 0x1 -> Transfer abort detected by master +#define I2C_IC_TX_ABRT_SOURCE_ABRT_USER_ABRT_RESET _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_USER_ABRT_BITS _u(0x00010000) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_USER_ABRT_MSB _u(16) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_USER_ABRT_LSB _u(16) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_USER_ABRT_ACCESS "RO" +#define I2C_IC_TX_ABRT_SOURCE_ABRT_USER_ABRT_VALUE_ABRT_USER_ABRT_VOID _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_USER_ABRT_VALUE_ABRT_USER_ABRT_GENERATED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TX_ABRT_SOURCE_ABRT_SLVRD_INTX +// Description : 1: When the processor side responds to a slave mode request for +// data to be transmitted to a remote master and user writes a 1 +// in CMD (bit 8) of IC_DATA_CMD register. +// +// Reset value: 0x0 +// +// Role of DW_apb_i2c: Slave-Transmitter +// 0x0 -> Slave trying to transmit to remote master in read mode- +// scenario not present +// 0x1 -> Slave trying to transmit to remote master in read mode +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLVRD_INTX_RESET _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLVRD_INTX_BITS _u(0x00008000) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLVRD_INTX_MSB _u(15) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLVRD_INTX_LSB _u(15) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLVRD_INTX_ACCESS "RO" +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLVRD_INTX_VALUE_ABRT_SLVRD_INTX_VOID _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLVRD_INTX_VALUE_ABRT_SLVRD_INTX_GENERATED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TX_ABRT_SOURCE_ABRT_SLV_ARBLOST +// Description : This field indicates that a Slave has lost the bus while +// transmitting data to a remote master. IC_TX_ABRT_SOURCE[12] is +// set at the same time. Note: Even though the slave never 'owns' +// the bus, something could go wrong on the bus. This is a fail +// safe check. For instance, during a data transmission at the +// low-to-high transition of SCL, if what is on the data bus is +// not what is supposed to be transmitted, then DW_apb_i2c no +// longer own the bus. +// +// Reset value: 0x0 +// +// Role of DW_apb_i2c: Slave-Transmitter +// 0x0 -> Slave lost arbitration to remote master- scenario not +// present +// 0x1 -> Slave lost arbitration to remote master +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLV_ARBLOST_RESET _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLV_ARBLOST_BITS _u(0x00004000) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLV_ARBLOST_MSB _u(14) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLV_ARBLOST_LSB _u(14) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLV_ARBLOST_ACCESS "RO" +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLV_ARBLOST_VALUE_ABRT_SLV_ARBLOST_VOID _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLV_ARBLOST_VALUE_ABRT_SLV_ARBLOST_GENERATED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TX_ABRT_SOURCE_ABRT_SLVFLUSH_TXFIFO +// Description : This field specifies that the Slave has received a read command +// and some data exists in the TX FIFO, so the slave issues a +// TX_ABRT interrupt to flush old data in TX FIFO. +// +// Reset value: 0x0 +// +// Role of DW_apb_i2c: Slave-Transmitter +// 0x0 -> Slave flushes existing data in TX-FIFO upon getting read +// command- scenario not present +// 0x1 -> Slave flushes existing data in TX-FIFO upon getting read +// command +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLVFLUSH_TXFIFO_RESET _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLVFLUSH_TXFIFO_BITS _u(0x00002000) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLVFLUSH_TXFIFO_MSB _u(13) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLVFLUSH_TXFIFO_LSB _u(13) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLVFLUSH_TXFIFO_ACCESS "RO" +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLVFLUSH_TXFIFO_VALUE_ABRT_SLVFLUSH_TXFIFO_VOID _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SLVFLUSH_TXFIFO_VALUE_ABRT_SLVFLUSH_TXFIFO_GENERATED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TX_ABRT_SOURCE_ARB_LOST +// Description : This field specifies that the Master has lost arbitration, or +// if IC_TX_ABRT_SOURCE[14] is also set, then the slave +// transmitter has lost arbitration. +// +// Reset value: 0x0 +// +// Role of DW_apb_i2c: Master-Transmitter or Slave-Transmitter +// 0x0 -> Master or Slave-Transmitter lost arbitration- scenario +// not present +// 0x1 -> Master or Slave-Transmitter lost arbitration +#define I2C_IC_TX_ABRT_SOURCE_ARB_LOST_RESET _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ARB_LOST_BITS _u(0x00001000) +#define I2C_IC_TX_ABRT_SOURCE_ARB_LOST_MSB _u(12) +#define I2C_IC_TX_ABRT_SOURCE_ARB_LOST_LSB _u(12) +#define I2C_IC_TX_ABRT_SOURCE_ARB_LOST_ACCESS "RO" +#define I2C_IC_TX_ABRT_SOURCE_ARB_LOST_VALUE_ABRT_LOST_VOID _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ARB_LOST_VALUE_ABRT_LOST_GENERATED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TX_ABRT_SOURCE_ABRT_MASTER_DIS +// Description : This field indicates that the User tries to initiate a Master +// operation with the Master mode disabled. +// +// Reset value: 0x0 +// +// Role of DW_apb_i2c: Master-Transmitter or Master-Receiver +// 0x0 -> User initiating master operation when MASTER disabled- +// scenario not present +// 0x1 -> User initiating master operation when MASTER disabled +#define I2C_IC_TX_ABRT_SOURCE_ABRT_MASTER_DIS_RESET _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_MASTER_DIS_BITS _u(0x00000800) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_MASTER_DIS_MSB _u(11) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_MASTER_DIS_LSB _u(11) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_MASTER_DIS_ACCESS "RO" +#define I2C_IC_TX_ABRT_SOURCE_ABRT_MASTER_DIS_VALUE_ABRT_MASTER_DIS_VOID _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_MASTER_DIS_VALUE_ABRT_MASTER_DIS_GENERATED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TX_ABRT_SOURCE_ABRT_10B_RD_NORSTRT +// Description : This field indicates that the restart is disabled +// (IC_RESTART_EN bit (IC_CON[5]) =0) and the master sends a read +// command in 10-bit addressing mode. +// +// Reset value: 0x0 +// +// Role of DW_apb_i2c: Master-Receiver +// 0x0 -> Master not trying to read in 10Bit addressing mode when +// RESTART disabled +// 0x1 -> Master trying to read in 10Bit addressing mode when +// RESTART disabled +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10B_RD_NORSTRT_RESET _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10B_RD_NORSTRT_BITS _u(0x00000400) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10B_RD_NORSTRT_MSB _u(10) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10B_RD_NORSTRT_LSB _u(10) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10B_RD_NORSTRT_ACCESS "RO" +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10B_RD_NORSTRT_VALUE_ABRT_10B_RD_VOID _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10B_RD_NORSTRT_VALUE_ABRT_10B_RD_GENERATED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TX_ABRT_SOURCE_ABRT_SBYTE_NORSTRT +// Description : To clear Bit 9, the source of the ABRT_SBYTE_NORSTRT must be +// fixed first; restart must be enabled (IC_CON[5]=1), the SPECIAL +// bit must be cleared (IC_TAR[11]), or the GC_OR_START bit must +// be cleared (IC_TAR[10]). Once the source of the +// ABRT_SBYTE_NORSTRT is fixed, then this bit can be cleared in +// the same manner as other bits in this register. If the source +// of the ABRT_SBYTE_NORSTRT is not fixed before attempting to +// clear this bit, bit 9 clears for one cycle and then gets +// reasserted. When this field is set to 1, the restart is +// disabled (IC_RESTART_EN bit (IC_CON[5]) =0) and the user is +// trying to send a START Byte. +// +// Reset value: 0x0 +// +// Role of DW_apb_i2c: Master +// 0x0 -> User trying to send START byte when RESTART disabled- +// scenario not present +// 0x1 -> User trying to send START byte when RESTART disabled +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SBYTE_NORSTRT_RESET _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SBYTE_NORSTRT_BITS _u(0x00000200) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SBYTE_NORSTRT_MSB _u(9) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SBYTE_NORSTRT_LSB _u(9) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SBYTE_NORSTRT_ACCESS "RO" +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SBYTE_NORSTRT_VALUE_ABRT_SBYTE_NORSTRT_VOID _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SBYTE_NORSTRT_VALUE_ABRT_SBYTE_NORSTRT_GENERATED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TX_ABRT_SOURCE_ABRT_HS_NORSTRT +// Description : This field indicates that the restart is disabled +// (IC_RESTART_EN bit (IC_CON[5]) =0) and the user is trying to +// use the master to transfer data in High Speed mode. +// +// Reset value: 0x0 +// +// Role of DW_apb_i2c: Master-Transmitter or Master-Receiver +// 0x0 -> User trying to switch Master to HS mode when RESTART +// disabled- scenario not present +// 0x1 -> User trying to switch Master to HS mode when RESTART +// disabled +#define I2C_IC_TX_ABRT_SOURCE_ABRT_HS_NORSTRT_RESET _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_HS_NORSTRT_BITS _u(0x00000100) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_HS_NORSTRT_MSB _u(8) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_HS_NORSTRT_LSB _u(8) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_HS_NORSTRT_ACCESS "RO" +#define I2C_IC_TX_ABRT_SOURCE_ABRT_HS_NORSTRT_VALUE_ABRT_HS_NORSTRT_VOID _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_HS_NORSTRT_VALUE_ABRT_HS_NORSTRT_GENERATED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TX_ABRT_SOURCE_ABRT_SBYTE_ACKDET +// Description : This field indicates that the Master has sent a START Byte and +// the START Byte was acknowledged (wrong behavior). +// +// Reset value: 0x0 +// +// Role of DW_apb_i2c: Master +// 0x0 -> ACK detected for START byte- scenario not present +// 0x1 -> ACK detected for START byte +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SBYTE_ACKDET_RESET _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SBYTE_ACKDET_BITS _u(0x00000080) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SBYTE_ACKDET_MSB _u(7) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SBYTE_ACKDET_LSB _u(7) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SBYTE_ACKDET_ACCESS "RO" +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SBYTE_ACKDET_VALUE_ABRT_SBYTE_ACKDET_VOID _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_SBYTE_ACKDET_VALUE_ABRT_SBYTE_ACKDET_GENERATED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TX_ABRT_SOURCE_ABRT_HS_ACKDET +// Description : This field indicates that the Master is in High Speed mode and +// the High Speed Master code was acknowledged (wrong behavior). +// +// Reset value: 0x0 +// +// Role of DW_apb_i2c: Master +// 0x0 -> HS Master code ACKed in HS Mode- scenario not present +// 0x1 -> HS Master code ACKed in HS Mode +#define I2C_IC_TX_ABRT_SOURCE_ABRT_HS_ACKDET_RESET _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_HS_ACKDET_BITS _u(0x00000040) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_HS_ACKDET_MSB _u(6) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_HS_ACKDET_LSB _u(6) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_HS_ACKDET_ACCESS "RO" +#define I2C_IC_TX_ABRT_SOURCE_ABRT_HS_ACKDET_VALUE_ABRT_HS_ACK_VOID _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_HS_ACKDET_VALUE_ABRT_HS_ACK_GENERATED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TX_ABRT_SOURCE_ABRT_GCALL_READ +// Description : This field indicates that DW_apb_i2c in the master mode has +// sent a General Call but the user programmed the byte following +// the General Call to be a read from the bus (IC_DATA_CMD[9] is +// set to 1). +// +// Reset value: 0x0 +// +// Role of DW_apb_i2c: Master-Transmitter +// 0x0 -> GCALL is followed by read from bus-scenario not present +// 0x1 -> GCALL is followed by read from bus +#define I2C_IC_TX_ABRT_SOURCE_ABRT_GCALL_READ_RESET _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_GCALL_READ_BITS _u(0x00000020) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_GCALL_READ_MSB _u(5) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_GCALL_READ_LSB _u(5) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_GCALL_READ_ACCESS "RO" +#define I2C_IC_TX_ABRT_SOURCE_ABRT_GCALL_READ_VALUE_ABRT_GCALL_READ_VOID _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_GCALL_READ_VALUE_ABRT_GCALL_READ_GENERATED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TX_ABRT_SOURCE_ABRT_GCALL_NOACK +// Description : This field indicates that DW_apb_i2c in master mode has sent a +// General Call and no slave on the bus acknowledged the General +// Call. +// +// Reset value: 0x0 +// +// Role of DW_apb_i2c: Master-Transmitter +// 0x0 -> GCALL not ACKed by any slave-scenario not present +// 0x1 -> GCALL not ACKed by any slave +#define I2C_IC_TX_ABRT_SOURCE_ABRT_GCALL_NOACK_RESET _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_GCALL_NOACK_BITS _u(0x00000010) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_GCALL_NOACK_MSB _u(4) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_GCALL_NOACK_LSB _u(4) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_GCALL_NOACK_ACCESS "RO" +#define I2C_IC_TX_ABRT_SOURCE_ABRT_GCALL_NOACK_VALUE_ABRT_GCALL_NOACK_VOID _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_GCALL_NOACK_VALUE_ABRT_GCALL_NOACK_GENERATED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TX_ABRT_SOURCE_ABRT_TXDATA_NOACK +// Description : This field indicates the master-mode only bit. When the master +// receives an acknowledgement for the address, but when it sends +// data byte(s) following the address, it did not receive an +// acknowledge from the remote slave(s). +// +// Reset value: 0x0 +// +// Role of DW_apb_i2c: Master-Transmitter +// 0x0 -> Transmitted data non-ACKed by addressed slave-scenario +// not present +// 0x1 -> Transmitted data not ACKed by addressed slave +#define I2C_IC_TX_ABRT_SOURCE_ABRT_TXDATA_NOACK_RESET _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_TXDATA_NOACK_BITS _u(0x00000008) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_TXDATA_NOACK_MSB _u(3) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_TXDATA_NOACK_LSB _u(3) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_TXDATA_NOACK_ACCESS "RO" +#define I2C_IC_TX_ABRT_SOURCE_ABRT_TXDATA_NOACK_VALUE_ABRT_TXDATA_NOACK_VOID _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_TXDATA_NOACK_VALUE_ABRT_TXDATA_NOACK_GENERATED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TX_ABRT_SOURCE_ABRT_10ADDR2_NOACK +// Description : This field indicates that the Master is in 10-bit address mode +// and that the second address byte of the 10-bit address was not +// acknowledged by any slave. +// +// Reset value: 0x0 +// +// Role of DW_apb_i2c: Master-Transmitter or Master-Receiver +// 0x0 -> This abort is not generated +// 0x1 -> Byte 2 of 10Bit Address not ACKed by any slave +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10ADDR2_NOACK_RESET _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10ADDR2_NOACK_BITS _u(0x00000004) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10ADDR2_NOACK_MSB _u(2) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10ADDR2_NOACK_LSB _u(2) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10ADDR2_NOACK_ACCESS "RO" +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10ADDR2_NOACK_VALUE_INACTIVE _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10ADDR2_NOACK_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TX_ABRT_SOURCE_ABRT_10ADDR1_NOACK +// Description : This field indicates that the Master is in 10-bit address mode +// and the first 10-bit address byte was not acknowledged by any +// slave. +// +// Reset value: 0x0 +// +// Role of DW_apb_i2c: Master-Transmitter or Master-Receiver +// 0x0 -> This abort is not generated +// 0x1 -> Byte 1 of 10Bit Address not ACKed by any slave +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10ADDR1_NOACK_RESET _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10ADDR1_NOACK_BITS _u(0x00000002) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10ADDR1_NOACK_MSB _u(1) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10ADDR1_NOACK_LSB _u(1) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10ADDR1_NOACK_ACCESS "RO" +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10ADDR1_NOACK_VALUE_INACTIVE _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_10ADDR1_NOACK_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_TX_ABRT_SOURCE_ABRT_7B_ADDR_NOACK +// Description : This field indicates that the Master is in 7-bit addressing +// mode and the address sent was not acknowledged by any slave. +// +// Reset value: 0x0 +// +// Role of DW_apb_i2c: Master-Transmitter or Master-Receiver +// 0x0 -> This abort is not generated +// 0x1 -> This abort is generated because of NOACK for 7-bit +// address +#define I2C_IC_TX_ABRT_SOURCE_ABRT_7B_ADDR_NOACK_RESET _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_7B_ADDR_NOACK_BITS _u(0x00000001) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_7B_ADDR_NOACK_MSB _u(0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_7B_ADDR_NOACK_LSB _u(0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_7B_ADDR_NOACK_ACCESS "RO" +#define I2C_IC_TX_ABRT_SOURCE_ABRT_7B_ADDR_NOACK_VALUE_INACTIVE _u(0x0) +#define I2C_IC_TX_ABRT_SOURCE_ABRT_7B_ADDR_NOACK_VALUE_ACTIVE _u(0x1) +// ============================================================================= +// Register : I2C_IC_SLV_DATA_NACK_ONLY +// Description : Generate Slave Data NACK Register +// +// The register is used to generate a NACK for the data part of a +// transfer when DW_apb_i2c is acting as a slave-receiver. This +// register only exists when the IC_SLV_DATA_NACK_ONLY parameter +// is set to 1. When this parameter disabled, this register does +// not exist and writing to the register's address has no effect. +// +// A write can occur on this register if both of the following +// conditions are met: - DW_apb_i2c is disabled (IC_ENABLE[0] = 0) +// - Slave part is inactive (IC_STATUS[6] = 0) Note: The +// IC_STATUS[6] is a register read-back location for the internal +// slv_activity signal; the user should poll this before writing +// the ic_slv_data_nack_only bit. +#define I2C_IC_SLV_DATA_NACK_ONLY_OFFSET _u(0x00000084) +#define I2C_IC_SLV_DATA_NACK_ONLY_BITS _u(0x00000001) +#define I2C_IC_SLV_DATA_NACK_ONLY_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_SLV_DATA_NACK_ONLY_NACK +// Description : Generate NACK. This NACK generation only occurs when DW_apb_i2c +// is a slave-receiver. If this register is set to a value of 1, +// it can only generate a NACK after a data byte is received; +// hence, the data transfer is aborted and the data received is +// not pushed to the receive buffer. +// +// When the register is set to a value of 0, it generates +// NACK/ACK, depending on normal criteria. - 1: generate NACK +// after data byte received - 0: generate NACK/ACK normally Reset +// value: 0x0 +// 0x0 -> Slave receiver generates NACK normally +// 0x1 -> Slave receiver generates NACK upon data reception only +#define I2C_IC_SLV_DATA_NACK_ONLY_NACK_RESET _u(0x0) +#define I2C_IC_SLV_DATA_NACK_ONLY_NACK_BITS _u(0x00000001) +#define I2C_IC_SLV_DATA_NACK_ONLY_NACK_MSB _u(0) +#define I2C_IC_SLV_DATA_NACK_ONLY_NACK_LSB _u(0) +#define I2C_IC_SLV_DATA_NACK_ONLY_NACK_ACCESS "RW" +#define I2C_IC_SLV_DATA_NACK_ONLY_NACK_VALUE_DISABLED _u(0x0) +#define I2C_IC_SLV_DATA_NACK_ONLY_NACK_VALUE_ENABLED _u(0x1) +// ============================================================================= +// Register : I2C_IC_DMA_CR +// Description : DMA Control Register +// +// The register is used to enable the DMA Controller interface +// operation. There is a separate bit for transmit and receive. +// This can be programmed regardless of the state of IC_ENABLE. +#define I2C_IC_DMA_CR_OFFSET _u(0x00000088) +#define I2C_IC_DMA_CR_BITS _u(0x00000003) +#define I2C_IC_DMA_CR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_DMA_CR_TDMAE +// Description : Transmit DMA Enable. This bit enables/disables the transmit +// FIFO DMA channel. Reset value: 0x0 +// 0x0 -> transmit FIFO DMA channel disabled +// 0x1 -> Transmit FIFO DMA channel enabled +#define I2C_IC_DMA_CR_TDMAE_RESET _u(0x0) +#define I2C_IC_DMA_CR_TDMAE_BITS _u(0x00000002) +#define I2C_IC_DMA_CR_TDMAE_MSB _u(1) +#define I2C_IC_DMA_CR_TDMAE_LSB _u(1) +#define I2C_IC_DMA_CR_TDMAE_ACCESS "RW" +#define I2C_IC_DMA_CR_TDMAE_VALUE_DISABLED _u(0x0) +#define I2C_IC_DMA_CR_TDMAE_VALUE_ENABLED _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_DMA_CR_RDMAE +// Description : Receive DMA Enable. This bit enables/disables the receive FIFO +// DMA channel. Reset value: 0x0 +// 0x0 -> Receive FIFO DMA channel disabled +// 0x1 -> Receive FIFO DMA channel enabled +#define I2C_IC_DMA_CR_RDMAE_RESET _u(0x0) +#define I2C_IC_DMA_CR_RDMAE_BITS _u(0x00000001) +#define I2C_IC_DMA_CR_RDMAE_MSB _u(0) +#define I2C_IC_DMA_CR_RDMAE_LSB _u(0) +#define I2C_IC_DMA_CR_RDMAE_ACCESS "RW" +#define I2C_IC_DMA_CR_RDMAE_VALUE_DISABLED _u(0x0) +#define I2C_IC_DMA_CR_RDMAE_VALUE_ENABLED _u(0x1) +// ============================================================================= +// Register : I2C_IC_DMA_TDLR +// Description : DMA Transmit Data Level Register +#define I2C_IC_DMA_TDLR_OFFSET _u(0x0000008c) +#define I2C_IC_DMA_TDLR_BITS _u(0x0000000f) +#define I2C_IC_DMA_TDLR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_DMA_TDLR_DMATDL +// Description : Transmit Data Level. This bit field controls the level at which +// a DMA request is made by the transmit logic. It is equal to the +// watermark level; that is, the dma_tx_req signal is generated +// when the number of valid data entries in the transmit FIFO is +// equal to or below this field value, and TDMAE = 1. +// +// Reset value: 0x0 +#define I2C_IC_DMA_TDLR_DMATDL_RESET _u(0x0) +#define I2C_IC_DMA_TDLR_DMATDL_BITS _u(0x0000000f) +#define I2C_IC_DMA_TDLR_DMATDL_MSB _u(3) +#define I2C_IC_DMA_TDLR_DMATDL_LSB _u(0) +#define I2C_IC_DMA_TDLR_DMATDL_ACCESS "RW" +// ============================================================================= +// Register : I2C_IC_DMA_RDLR +// Description : I2C Receive Data Level Register +#define I2C_IC_DMA_RDLR_OFFSET _u(0x00000090) +#define I2C_IC_DMA_RDLR_BITS _u(0x0000000f) +#define I2C_IC_DMA_RDLR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_DMA_RDLR_DMARDL +// Description : Receive Data Level. This bit field controls the level at which +// a DMA request is made by the receive logic. The watermark level +// = DMARDL+1; that is, dma_rx_req is generated when the number of +// valid data entries in the receive FIFO is equal to or more than +// this field value + 1, and RDMAE =1. For instance, when DMARDL +// is 0, then dma_rx_req is asserted when 1 or more data entries +// are present in the receive FIFO. +// +// Reset value: 0x0 +#define I2C_IC_DMA_RDLR_DMARDL_RESET _u(0x0) +#define I2C_IC_DMA_RDLR_DMARDL_BITS _u(0x0000000f) +#define I2C_IC_DMA_RDLR_DMARDL_MSB _u(3) +#define I2C_IC_DMA_RDLR_DMARDL_LSB _u(0) +#define I2C_IC_DMA_RDLR_DMARDL_ACCESS "RW" +// ============================================================================= +// Register : I2C_IC_SDA_SETUP +// Description : I2C SDA Setup Register +// +// This register controls the amount of time delay (in terms of +// number of ic_clk clock periods) introduced in the rising edge +// of SCL - relative to SDA changing - when DW_apb_i2c services a +// read request in a slave-transmitter operation. The relevant I2C +// requirement is tSU:DAT (note 4) as detailed in the I2C Bus +// Specification. This register must be programmed with a value +// equal to or greater than 2. +// +// Writes to this register succeed only when IC_ENABLE[0] = 0. +// +// Note: The length of setup time is calculated using +// [(IC_SDA_SETUP - 1) * (ic_clk_period)], so if the user requires +// 10 ic_clk periods of setup time, they should program a value of +// 11. The IC_SDA_SETUP register is only used by the DW_apb_i2c +// when operating as a slave transmitter. +#define I2C_IC_SDA_SETUP_OFFSET _u(0x00000094) +#define I2C_IC_SDA_SETUP_BITS _u(0x000000ff) +#define I2C_IC_SDA_SETUP_RESET _u(0x00000064) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_SDA_SETUP_SDA_SETUP +// Description : SDA Setup. It is recommended that if the required delay is +// 1000ns, then for an ic_clk frequency of 10 MHz, IC_SDA_SETUP +// should be programmed to a value of 11. IC_SDA_SETUP must be +// programmed with a minimum value of 2. +#define I2C_IC_SDA_SETUP_SDA_SETUP_RESET _u(0x64) +#define I2C_IC_SDA_SETUP_SDA_SETUP_BITS _u(0x000000ff) +#define I2C_IC_SDA_SETUP_SDA_SETUP_MSB _u(7) +#define I2C_IC_SDA_SETUP_SDA_SETUP_LSB _u(0) +#define I2C_IC_SDA_SETUP_SDA_SETUP_ACCESS "RW" +// ============================================================================= +// Register : I2C_IC_ACK_GENERAL_CALL +// Description : I2C ACK General Call Register +// +// The register controls whether DW_apb_i2c responds with a ACK or +// NACK when it receives an I2C General Call address. +// +// This register is applicable only when the DW_apb_i2c is in +// slave mode. +#define I2C_IC_ACK_GENERAL_CALL_OFFSET _u(0x00000098) +#define I2C_IC_ACK_GENERAL_CALL_BITS _u(0x00000001) +#define I2C_IC_ACK_GENERAL_CALL_RESET _u(0x00000001) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_ACK_GENERAL_CALL_ACK_GEN_CALL +// Description : ACK General Call. When set to 1, DW_apb_i2c responds with a ACK +// (by asserting ic_data_oe) when it receives a General Call. +// Otherwise, DW_apb_i2c responds with a NACK (by negating +// ic_data_oe). +// 0x0 -> Generate NACK for a General Call +// 0x1 -> Generate ACK for a General Call +#define I2C_IC_ACK_GENERAL_CALL_ACK_GEN_CALL_RESET _u(0x1) +#define I2C_IC_ACK_GENERAL_CALL_ACK_GEN_CALL_BITS _u(0x00000001) +#define I2C_IC_ACK_GENERAL_CALL_ACK_GEN_CALL_MSB _u(0) +#define I2C_IC_ACK_GENERAL_CALL_ACK_GEN_CALL_LSB _u(0) +#define I2C_IC_ACK_GENERAL_CALL_ACK_GEN_CALL_ACCESS "RW" +#define I2C_IC_ACK_GENERAL_CALL_ACK_GEN_CALL_VALUE_DISABLED _u(0x0) +#define I2C_IC_ACK_GENERAL_CALL_ACK_GEN_CALL_VALUE_ENABLED _u(0x1) +// ============================================================================= +// Register : I2C_IC_ENABLE_STATUS +// Description : I2C Enable Status Register +// +// The register is used to report the DW_apb_i2c hardware status +// when the IC_ENABLE[0] register is set from 1 to 0; that is, +// when DW_apb_i2c is disabled. +// +// If IC_ENABLE[0] has been set to 1, bits 2:1 are forced to 0, +// and bit 0 is forced to 1. +// +// If IC_ENABLE[0] has been set to 0, bits 2:1 is only be valid as +// soon as bit 0 is read as '0'. +// +// Note: When IC_ENABLE[0] has been set to 0, a delay occurs for +// bit 0 to be read as 0 because disabling the DW_apb_i2c depends +// on I2C bus activities. +#define I2C_IC_ENABLE_STATUS_OFFSET _u(0x0000009c) +#define I2C_IC_ENABLE_STATUS_BITS _u(0x00000007) +#define I2C_IC_ENABLE_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_ENABLE_STATUS_SLV_RX_DATA_LOST +// Description : Slave Received Data Lost. This bit indicates if a +// Slave-Receiver operation has been aborted with at least one +// data byte received from an I2C transfer due to the setting bit +// 0 of IC_ENABLE from 1 to 0. When read as 1, DW_apb_i2c is +// deemed to have been actively engaged in an aborted I2C transfer +// (with matching address) and the data phase of the I2C transfer +// has been entered, even though a data byte has been responded +// with a NACK. +// +// Note: If the remote I2C master terminates the transfer with a +// STOP condition before the DW_apb_i2c has a chance to NACK a +// transfer, and IC_ENABLE[0] has been set to 0, then this bit is +// also set to 1. +// +// When read as 0, DW_apb_i2c is deemed to have been disabled +// without being actively involved in the data phase of a +// Slave-Receiver transfer. +// +// Note: The CPU can safely read this bit when IC_EN (bit 0) is +// read as 0. +// +// Reset value: 0x0 +// 0x0 -> Slave RX Data is not lost +// 0x1 -> Slave RX Data is lost +#define I2C_IC_ENABLE_STATUS_SLV_RX_DATA_LOST_RESET _u(0x0) +#define I2C_IC_ENABLE_STATUS_SLV_RX_DATA_LOST_BITS _u(0x00000004) +#define I2C_IC_ENABLE_STATUS_SLV_RX_DATA_LOST_MSB _u(2) +#define I2C_IC_ENABLE_STATUS_SLV_RX_DATA_LOST_LSB _u(2) +#define I2C_IC_ENABLE_STATUS_SLV_RX_DATA_LOST_ACCESS "RO" +#define I2C_IC_ENABLE_STATUS_SLV_RX_DATA_LOST_VALUE_INACTIVE _u(0x0) +#define I2C_IC_ENABLE_STATUS_SLV_RX_DATA_LOST_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_ENABLE_STATUS_SLV_DISABLED_WHILE_BUSY +// Description : Slave Disabled While Busy (Transmit, Receive). This bit +// indicates if a potential or active Slave operation has been +// aborted due to the setting bit 0 of the IC_ENABLE register from +// 1 to 0. This bit is set when the CPU writes a 0 to the +// IC_ENABLE register while: +// +// (a) DW_apb_i2c is receiving the address byte of the +// Slave-Transmitter operation from a remote master; +// +// OR, +// +// (b) address and data bytes of the Slave-Receiver operation from +// a remote master. +// +// When read as 1, DW_apb_i2c is deemed to have forced a NACK +// during any part of an I2C transfer, irrespective of whether the +// I2C address matches the slave address set in DW_apb_i2c (IC_SAR +// register) OR if the transfer is completed before IC_ENABLE is +// set to 0 but has not taken effect. +// +// Note: If the remote I2C master terminates the transfer with a +// STOP condition before the DW_apb_i2c has a chance to NACK a +// transfer, and IC_ENABLE[0] has been set to 0, then this bit +// will also be set to 1. +// +// When read as 0, DW_apb_i2c is deemed to have been disabled when +// there is master activity, or when the I2C bus is idle. +// +// Note: The CPU can safely read this bit when IC_EN (bit 0) is +// read as 0. +// +// Reset value: 0x0 +// 0x0 -> Slave is disabled when it is idle +// 0x1 -> Slave is disabled when it is active +#define I2C_IC_ENABLE_STATUS_SLV_DISABLED_WHILE_BUSY_RESET _u(0x0) +#define I2C_IC_ENABLE_STATUS_SLV_DISABLED_WHILE_BUSY_BITS _u(0x00000002) +#define I2C_IC_ENABLE_STATUS_SLV_DISABLED_WHILE_BUSY_MSB _u(1) +#define I2C_IC_ENABLE_STATUS_SLV_DISABLED_WHILE_BUSY_LSB _u(1) +#define I2C_IC_ENABLE_STATUS_SLV_DISABLED_WHILE_BUSY_ACCESS "RO" +#define I2C_IC_ENABLE_STATUS_SLV_DISABLED_WHILE_BUSY_VALUE_INACTIVE _u(0x0) +#define I2C_IC_ENABLE_STATUS_SLV_DISABLED_WHILE_BUSY_VALUE_ACTIVE _u(0x1) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_ENABLE_STATUS_IC_EN +// Description : ic_en Status. This bit always reflects the value driven on the +// output port ic_en. - When read as 1, DW_apb_i2c is deemed to be +// in an enabled state. - When read as 0, DW_apb_i2c is deemed +// completely inactive. Note: The CPU can safely read this bit +// anytime. When this bit is read as 0, the CPU can safely read +// SLV_RX_DATA_LOST (bit 2) and SLV_DISABLED_WHILE_BUSY (bit 1). +// +// Reset value: 0x0 +// 0x0 -> I2C disabled +// 0x1 -> I2C enabled +#define I2C_IC_ENABLE_STATUS_IC_EN_RESET _u(0x0) +#define I2C_IC_ENABLE_STATUS_IC_EN_BITS _u(0x00000001) +#define I2C_IC_ENABLE_STATUS_IC_EN_MSB _u(0) +#define I2C_IC_ENABLE_STATUS_IC_EN_LSB _u(0) +#define I2C_IC_ENABLE_STATUS_IC_EN_ACCESS "RO" +#define I2C_IC_ENABLE_STATUS_IC_EN_VALUE_DISABLED _u(0x0) +#define I2C_IC_ENABLE_STATUS_IC_EN_VALUE_ENABLED _u(0x1) +// ============================================================================= +// Register : I2C_IC_FS_SPKLEN +// Description : I2C SS, FS or FM+ spike suppression limit +// +// This register is used to store the duration, measured in ic_clk +// cycles, of the longest spike that is filtered out by the spike +// suppression logic when the component is operating in SS, FS or +// FM+ modes. The relevant I2C requirement is tSP (table 4) as +// detailed in the I2C Bus Specification. This register must be +// programmed with a minimum value of 1. +#define I2C_IC_FS_SPKLEN_OFFSET _u(0x000000a0) +#define I2C_IC_FS_SPKLEN_BITS _u(0x000000ff) +#define I2C_IC_FS_SPKLEN_RESET _u(0x00000007) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_FS_SPKLEN_IC_FS_SPKLEN +// Description : This register must be set before any I2C bus transaction can +// take place to ensure stable operation. This register sets the +// duration, measured in ic_clk cycles, of the longest spike in +// the SCL or SDA lines that will be filtered out by the spike +// suppression logic. This register can be written only when the +// I2C interface is disabled which corresponds to the IC_ENABLE[0] +// register being set to 0. Writes at other times have no effect. +// The minimum valid value is 1; hardware prevents values less +// than this being written, and if attempted results in 1 being +// set. or more information, refer to 'Spike Suppression'. +#define I2C_IC_FS_SPKLEN_IC_FS_SPKLEN_RESET _u(0x07) +#define I2C_IC_FS_SPKLEN_IC_FS_SPKLEN_BITS _u(0x000000ff) +#define I2C_IC_FS_SPKLEN_IC_FS_SPKLEN_MSB _u(7) +#define I2C_IC_FS_SPKLEN_IC_FS_SPKLEN_LSB _u(0) +#define I2C_IC_FS_SPKLEN_IC_FS_SPKLEN_ACCESS "RW" +// ============================================================================= +// Register : I2C_IC_CLR_RESTART_DET +// Description : Clear RESTART_DET Interrupt Register +#define I2C_IC_CLR_RESTART_DET_OFFSET _u(0x000000a8) +#define I2C_IC_CLR_RESTART_DET_BITS _u(0x00000001) +#define I2C_IC_CLR_RESTART_DET_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_CLR_RESTART_DET_CLR_RESTART_DET +// Description : Read this register to clear the RESTART_DET interrupt (bit 12) +// of IC_RAW_INTR_STAT register. +// +// Reset value: 0x0 +#define I2C_IC_CLR_RESTART_DET_CLR_RESTART_DET_RESET _u(0x0) +#define I2C_IC_CLR_RESTART_DET_CLR_RESTART_DET_BITS _u(0x00000001) +#define I2C_IC_CLR_RESTART_DET_CLR_RESTART_DET_MSB _u(0) +#define I2C_IC_CLR_RESTART_DET_CLR_RESTART_DET_LSB _u(0) +#define I2C_IC_CLR_RESTART_DET_CLR_RESTART_DET_ACCESS "RO" +// ============================================================================= +// Register : I2C_IC_COMP_PARAM_1 +// Description : Component Parameter Register 1 +// +// Note This register is not implemented and therefore reads as 0. +// If it was implemented it would be a constant read-only register +// that contains encoded information about the component's +// parameter settings. Fields shown below are the settings for +// those parameters +#define I2C_IC_COMP_PARAM_1_OFFSET _u(0x000000f4) +#define I2C_IC_COMP_PARAM_1_BITS _u(0x00ffffff) +#define I2C_IC_COMP_PARAM_1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_COMP_PARAM_1_TX_BUFFER_DEPTH +// Description : TX Buffer Depth = 16 +#define I2C_IC_COMP_PARAM_1_TX_BUFFER_DEPTH_RESET _u(0x00) +#define I2C_IC_COMP_PARAM_1_TX_BUFFER_DEPTH_BITS _u(0x00ff0000) +#define I2C_IC_COMP_PARAM_1_TX_BUFFER_DEPTH_MSB _u(23) +#define I2C_IC_COMP_PARAM_1_TX_BUFFER_DEPTH_LSB _u(16) +#define I2C_IC_COMP_PARAM_1_TX_BUFFER_DEPTH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : I2C_IC_COMP_PARAM_1_RX_BUFFER_DEPTH +// Description : RX Buffer Depth = 16 +#define I2C_IC_COMP_PARAM_1_RX_BUFFER_DEPTH_RESET _u(0x00) +#define I2C_IC_COMP_PARAM_1_RX_BUFFER_DEPTH_BITS _u(0x0000ff00) +#define I2C_IC_COMP_PARAM_1_RX_BUFFER_DEPTH_MSB _u(15) +#define I2C_IC_COMP_PARAM_1_RX_BUFFER_DEPTH_LSB _u(8) +#define I2C_IC_COMP_PARAM_1_RX_BUFFER_DEPTH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : I2C_IC_COMP_PARAM_1_ADD_ENCODED_PARAMS +// Description : Encoded parameters not visible +#define I2C_IC_COMP_PARAM_1_ADD_ENCODED_PARAMS_RESET _u(0x0) +#define I2C_IC_COMP_PARAM_1_ADD_ENCODED_PARAMS_BITS _u(0x00000080) +#define I2C_IC_COMP_PARAM_1_ADD_ENCODED_PARAMS_MSB _u(7) +#define I2C_IC_COMP_PARAM_1_ADD_ENCODED_PARAMS_LSB _u(7) +#define I2C_IC_COMP_PARAM_1_ADD_ENCODED_PARAMS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : I2C_IC_COMP_PARAM_1_HAS_DMA +// Description : DMA handshaking signals are enabled +#define I2C_IC_COMP_PARAM_1_HAS_DMA_RESET _u(0x0) +#define I2C_IC_COMP_PARAM_1_HAS_DMA_BITS _u(0x00000040) +#define I2C_IC_COMP_PARAM_1_HAS_DMA_MSB _u(6) +#define I2C_IC_COMP_PARAM_1_HAS_DMA_LSB _u(6) +#define I2C_IC_COMP_PARAM_1_HAS_DMA_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : I2C_IC_COMP_PARAM_1_INTR_IO +// Description : COMBINED Interrupt outputs +#define I2C_IC_COMP_PARAM_1_INTR_IO_RESET _u(0x0) +#define I2C_IC_COMP_PARAM_1_INTR_IO_BITS _u(0x00000020) +#define I2C_IC_COMP_PARAM_1_INTR_IO_MSB _u(5) +#define I2C_IC_COMP_PARAM_1_INTR_IO_LSB _u(5) +#define I2C_IC_COMP_PARAM_1_INTR_IO_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : I2C_IC_COMP_PARAM_1_HC_COUNT_VALUES +// Description : Programmable count values for each mode. +#define I2C_IC_COMP_PARAM_1_HC_COUNT_VALUES_RESET _u(0x0) +#define I2C_IC_COMP_PARAM_1_HC_COUNT_VALUES_BITS _u(0x00000010) +#define I2C_IC_COMP_PARAM_1_HC_COUNT_VALUES_MSB _u(4) +#define I2C_IC_COMP_PARAM_1_HC_COUNT_VALUES_LSB _u(4) +#define I2C_IC_COMP_PARAM_1_HC_COUNT_VALUES_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : I2C_IC_COMP_PARAM_1_MAX_SPEED_MODE +// Description : MAX SPEED MODE = FAST MODE +#define I2C_IC_COMP_PARAM_1_MAX_SPEED_MODE_RESET _u(0x0) +#define I2C_IC_COMP_PARAM_1_MAX_SPEED_MODE_BITS _u(0x0000000c) +#define I2C_IC_COMP_PARAM_1_MAX_SPEED_MODE_MSB _u(3) +#define I2C_IC_COMP_PARAM_1_MAX_SPEED_MODE_LSB _u(2) +#define I2C_IC_COMP_PARAM_1_MAX_SPEED_MODE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : I2C_IC_COMP_PARAM_1_APB_DATA_WIDTH +// Description : APB data bus width is 32 bits +#define I2C_IC_COMP_PARAM_1_APB_DATA_WIDTH_RESET _u(0x0) +#define I2C_IC_COMP_PARAM_1_APB_DATA_WIDTH_BITS _u(0x00000003) +#define I2C_IC_COMP_PARAM_1_APB_DATA_WIDTH_MSB _u(1) +#define I2C_IC_COMP_PARAM_1_APB_DATA_WIDTH_LSB _u(0) +#define I2C_IC_COMP_PARAM_1_APB_DATA_WIDTH_ACCESS "RO" +// ============================================================================= +// Register : I2C_IC_COMP_VERSION +// Description : I2C Component Version Register +#define I2C_IC_COMP_VERSION_OFFSET _u(0x000000f8) +#define I2C_IC_COMP_VERSION_BITS _u(0xffffffff) +#define I2C_IC_COMP_VERSION_RESET _u(0x3230312a) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_COMP_VERSION_IC_COMP_VERSION +// Description : None +#define I2C_IC_COMP_VERSION_IC_COMP_VERSION_RESET _u(0x3230312a) +#define I2C_IC_COMP_VERSION_IC_COMP_VERSION_BITS _u(0xffffffff) +#define I2C_IC_COMP_VERSION_IC_COMP_VERSION_MSB _u(31) +#define I2C_IC_COMP_VERSION_IC_COMP_VERSION_LSB _u(0) +#define I2C_IC_COMP_VERSION_IC_COMP_VERSION_ACCESS "RO" +// ============================================================================= +// Register : I2C_IC_COMP_TYPE +// Description : I2C Component Type Register +#define I2C_IC_COMP_TYPE_OFFSET _u(0x000000fc) +#define I2C_IC_COMP_TYPE_BITS _u(0xffffffff) +#define I2C_IC_COMP_TYPE_RESET _u(0x44570140) +// ----------------------------------------------------------------------------- +// Field : I2C_IC_COMP_TYPE_IC_COMP_TYPE +// Description : Designware Component Type number = 0x44_57_01_40. This assigned +// unique hex value is constant and is derived from the two ASCII +// letters 'DW' followed by a 16-bit unsigned number. +#define I2C_IC_COMP_TYPE_IC_COMP_TYPE_RESET _u(0x44570140) +#define I2C_IC_COMP_TYPE_IC_COMP_TYPE_BITS _u(0xffffffff) +#define I2C_IC_COMP_TYPE_IC_COMP_TYPE_MSB _u(31) +#define I2C_IC_COMP_TYPE_IC_COMP_TYPE_LSB _u(0) +#define I2C_IC_COMP_TYPE_IC_COMP_TYPE_ACCESS "RO" +// ============================================================================= +#endif // HARDWARE_REGS_I2C_DEFINED diff --git a/arkanoid/pico/hardware/regs/intctrl.h b/arkanoid/pico/hardware/regs/intctrl.h new file mode 100644 index 0000000..dec7e36 --- /dev/null +++ b/arkanoid/pico/hardware/regs/intctrl.h @@ -0,0 +1,63 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +#ifndef _INTCTRL_H_ +#define _INTCTRL_H_ + +#define TIMER_IRQ_0 0 +#define TIMER_IRQ_1 1 +#define TIMER_IRQ_2 2 +#define TIMER_IRQ_3 3 +#define PWM_IRQ_WRAP 4 +#define USBCTRL_IRQ 5 +#define XIP_IRQ 6 +#define PIO0_IRQ_0 7 +#define PIO0_IRQ_1 8 +#define PIO1_IRQ_0 9 +#define PIO1_IRQ_1 10 +#define DMA_IRQ_0 11 +#define DMA_IRQ_1 12 +#define IO_IRQ_BANK0 13 +#define IO_IRQ_QSPI 14 +#define SIO_IRQ_PROC0 15 +#define SIO_IRQ_PROC1 16 +#define CLOCKS_IRQ 17 +#define SPI0_IRQ 18 +#define SPI1_IRQ 19 +#define UART0_IRQ 20 +#define UART1_IRQ 21 +#define ADC_IRQ_FIFO 22 +#define I2C0_IRQ 23 +#define I2C1_IRQ 24 +#define RTC_IRQ 25 + +#define isr_timer_0 isr_irq0 +#define isr_timer_1 isr_irq1 +#define isr_timer_2 isr_irq2 +#define isr_timer_3 isr_irq3 +#define isr_pwm_wrap isr_irq4 +#define isr_usbctrl isr_irq5 +#define isr_xip isr_irq6 +#define isr_pio0_0 isr_irq7 +#define isr_pio0_1 isr_irq8 +#define isr_pio1_0 isr_irq9 +#define isr_pio1_1 isr_irq10 +#define isr_dma_0 isr_irq11 +#define isr_dma_1 isr_irq12 +#define isr_io_bank0 isr_irq13 +#define isr_io_qspi isr_irq14 +#define isr_sio_proc0 isr_irq15 +#define isr_sio_proc1 isr_irq16 +#define isr_clocks isr_irq17 +#define isr_spi0 isr_irq18 +#define isr_spi1 isr_irq19 +#define isr_uart0 isr_irq20 +#define isr_uart1 isr_irq21 +#define isr_adc_fifo isr_irq22 +#define isr_i2c0 isr_irq23 +#define isr_i2c1 isr_irq24 +#define isr_rtc isr_irq25 + +#endif // _INTCTRL_H_ diff --git a/arkanoid/pico/hardware/regs/io_bank0.h b/arkanoid/pico/hardware/regs/io_bank0.h new file mode 100644 index 0000000..26f139e --- /dev/null +++ b/arkanoid/pico/hardware/regs/io_bank0.h @@ -0,0 +1,14937 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : IO_BANK0 +// Version : 1 +// Bus type : apb +// Description : None +// ============================================================================= +#ifndef HARDWARE_REGS_IO_BANK0_DEFINED +#define HARDWARE_REGS_IO_BANK0_DEFINED +// ============================================================================= +// Register : IO_BANK0_GPIO0_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO0_STATUS_OFFSET _u(0x00000000) +#define IO_BANK0_GPIO0_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO0_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO0_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO0_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO0_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO0_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO0_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO0_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO0_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO0_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO0_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO0_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO0_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO0_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO0_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO0_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO0_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO0_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO0_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO0_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO0_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO0_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO0_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO0_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO0_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO0_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO0_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO0_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO0_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO0_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO0_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO0_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO0_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO0_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO0_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO0_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO0_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO0_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO0_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO0_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO0_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO0_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO0_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO0_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO0_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO0_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO0_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO0_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO0_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO0_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO0_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO0_CTRL_OFFSET _u(0x00000004) +#define IO_BANK0_GPIO0_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO0_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO0_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO0_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO0_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO0_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO0_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO0_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO0_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO0_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO0_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO0_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO0_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO0_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO0_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO0_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO0_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO0_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO0_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO0_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO0_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO0_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO0_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO0_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO0_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO0_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO0_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO0_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO0_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO0_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO0_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO0_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO0_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO0_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO0_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO0_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO0_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO0_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO0_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO0_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO0_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO0_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO0_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x00 -> jtag_tck +// 0x01 -> spi0_rx +// 0x02 -> uart0_tx +// 0x03 -> i2c0_sda +// 0x04 -> pwm_a_0 +// 0x05 -> sio_0 +// 0x06 -> pio0_0 +// 0x07 -> pio1_0 +// 0x09 -> usb_muxing_overcurr_detect +// 0x1f -> null +#define IO_BANK0_GPIO0_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO0_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO0_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO0_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO0_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO0_CTRL_FUNCSEL_VALUE_JTAG_TCK _u(0x00) +#define IO_BANK0_GPIO0_CTRL_FUNCSEL_VALUE_SPI0_RX _u(0x01) +#define IO_BANK0_GPIO0_CTRL_FUNCSEL_VALUE_UART0_TX _u(0x02) +#define IO_BANK0_GPIO0_CTRL_FUNCSEL_VALUE_I2C0_SDA _u(0x03) +#define IO_BANK0_GPIO0_CTRL_FUNCSEL_VALUE_PWM_A_0 _u(0x04) +#define IO_BANK0_GPIO0_CTRL_FUNCSEL_VALUE_SIO_0 _u(0x05) +#define IO_BANK0_GPIO0_CTRL_FUNCSEL_VALUE_PIO0_0 _u(0x06) +#define IO_BANK0_GPIO0_CTRL_FUNCSEL_VALUE_PIO1_0 _u(0x07) +#define IO_BANK0_GPIO0_CTRL_FUNCSEL_VALUE_USB_MUXING_OVERCURR_DETECT _u(0x09) +#define IO_BANK0_GPIO0_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO1_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO1_STATUS_OFFSET _u(0x00000008) +#define IO_BANK0_GPIO1_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO1_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO1_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO1_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO1_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO1_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO1_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO1_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO1_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO1_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO1_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO1_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO1_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO1_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO1_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO1_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO1_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO1_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO1_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO1_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO1_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO1_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO1_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO1_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO1_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO1_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO1_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO1_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO1_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO1_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO1_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO1_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO1_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO1_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO1_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO1_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO1_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO1_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO1_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO1_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO1_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO1_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO1_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO1_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO1_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO1_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO1_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO1_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO1_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO1_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO1_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO1_CTRL_OFFSET _u(0x0000000c) +#define IO_BANK0_GPIO1_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO1_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO1_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO1_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO1_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO1_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO1_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO1_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO1_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO1_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO1_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO1_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO1_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO1_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO1_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO1_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO1_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO1_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO1_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO1_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO1_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO1_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO1_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO1_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO1_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO1_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO1_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO1_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO1_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO1_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO1_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO1_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO1_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO1_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO1_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO1_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO1_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO1_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO1_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO1_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO1_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO1_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO1_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x00 -> jtag_tms +// 0x01 -> spi0_ss_n +// 0x02 -> uart0_rx +// 0x03 -> i2c0_scl +// 0x04 -> pwm_b_0 +// 0x05 -> sio_1 +// 0x06 -> pio0_1 +// 0x07 -> pio1_1 +// 0x09 -> usb_muxing_vbus_detect +// 0x1f -> null +#define IO_BANK0_GPIO1_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO1_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO1_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO1_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO1_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO1_CTRL_FUNCSEL_VALUE_JTAG_TMS _u(0x00) +#define IO_BANK0_GPIO1_CTRL_FUNCSEL_VALUE_SPI0_SS_N _u(0x01) +#define IO_BANK0_GPIO1_CTRL_FUNCSEL_VALUE_UART0_RX _u(0x02) +#define IO_BANK0_GPIO1_CTRL_FUNCSEL_VALUE_I2C0_SCL _u(0x03) +#define IO_BANK0_GPIO1_CTRL_FUNCSEL_VALUE_PWM_B_0 _u(0x04) +#define IO_BANK0_GPIO1_CTRL_FUNCSEL_VALUE_SIO_1 _u(0x05) +#define IO_BANK0_GPIO1_CTRL_FUNCSEL_VALUE_PIO0_1 _u(0x06) +#define IO_BANK0_GPIO1_CTRL_FUNCSEL_VALUE_PIO1_1 _u(0x07) +#define IO_BANK0_GPIO1_CTRL_FUNCSEL_VALUE_USB_MUXING_VBUS_DETECT _u(0x09) +#define IO_BANK0_GPIO1_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO2_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO2_STATUS_OFFSET _u(0x00000010) +#define IO_BANK0_GPIO2_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO2_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO2_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO2_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO2_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO2_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO2_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO2_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO2_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO2_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO2_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO2_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO2_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO2_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO2_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO2_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO2_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO2_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO2_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO2_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO2_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO2_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO2_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO2_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO2_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO2_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO2_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO2_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO2_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO2_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO2_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO2_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO2_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO2_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO2_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO2_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO2_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO2_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO2_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO2_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO2_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO2_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO2_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO2_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO2_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO2_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO2_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO2_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO2_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO2_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO2_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO2_CTRL_OFFSET _u(0x00000014) +#define IO_BANK0_GPIO2_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO2_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO2_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO2_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO2_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO2_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO2_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO2_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO2_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO2_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO2_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO2_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO2_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO2_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO2_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO2_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO2_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO2_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO2_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO2_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO2_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO2_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO2_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO2_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO2_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO2_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO2_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO2_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO2_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO2_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO2_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO2_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO2_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO2_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO2_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO2_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO2_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO2_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO2_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO2_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO2_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO2_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO2_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x00 -> jtag_tdi +// 0x01 -> spi0_sclk +// 0x02 -> uart0_cts +// 0x03 -> i2c1_sda +// 0x04 -> pwm_a_1 +// 0x05 -> sio_2 +// 0x06 -> pio0_2 +// 0x07 -> pio1_2 +// 0x09 -> usb_muxing_vbus_en +// 0x1f -> null +#define IO_BANK0_GPIO2_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO2_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO2_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO2_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO2_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO2_CTRL_FUNCSEL_VALUE_JTAG_TDI _u(0x00) +#define IO_BANK0_GPIO2_CTRL_FUNCSEL_VALUE_SPI0_SCLK _u(0x01) +#define IO_BANK0_GPIO2_CTRL_FUNCSEL_VALUE_UART0_CTS _u(0x02) +#define IO_BANK0_GPIO2_CTRL_FUNCSEL_VALUE_I2C1_SDA _u(0x03) +#define IO_BANK0_GPIO2_CTRL_FUNCSEL_VALUE_PWM_A_1 _u(0x04) +#define IO_BANK0_GPIO2_CTRL_FUNCSEL_VALUE_SIO_2 _u(0x05) +#define IO_BANK0_GPIO2_CTRL_FUNCSEL_VALUE_PIO0_2 _u(0x06) +#define IO_BANK0_GPIO2_CTRL_FUNCSEL_VALUE_PIO1_2 _u(0x07) +#define IO_BANK0_GPIO2_CTRL_FUNCSEL_VALUE_USB_MUXING_VBUS_EN _u(0x09) +#define IO_BANK0_GPIO2_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO3_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO3_STATUS_OFFSET _u(0x00000018) +#define IO_BANK0_GPIO3_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO3_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO3_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO3_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO3_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO3_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO3_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO3_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO3_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO3_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO3_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO3_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO3_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO3_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO3_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO3_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO3_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO3_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO3_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO3_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO3_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO3_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO3_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO3_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO3_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO3_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO3_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO3_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO3_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO3_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO3_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO3_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO3_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO3_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO3_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO3_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO3_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO3_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO3_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO3_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO3_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO3_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO3_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO3_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO3_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO3_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO3_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO3_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO3_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO3_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO3_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO3_CTRL_OFFSET _u(0x0000001c) +#define IO_BANK0_GPIO3_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO3_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO3_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO3_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO3_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO3_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO3_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO3_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO3_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO3_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO3_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO3_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO3_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO3_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO3_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO3_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO3_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO3_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO3_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO3_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO3_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO3_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO3_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO3_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO3_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO3_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO3_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO3_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO3_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO3_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO3_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO3_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO3_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO3_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO3_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO3_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO3_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO3_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO3_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO3_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO3_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO3_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO3_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x00 -> jtag_tdo +// 0x01 -> spi0_tx +// 0x02 -> uart0_rts +// 0x03 -> i2c1_scl +// 0x04 -> pwm_b_1 +// 0x05 -> sio_3 +// 0x06 -> pio0_3 +// 0x07 -> pio1_3 +// 0x09 -> usb_muxing_overcurr_detect +// 0x1f -> null +#define IO_BANK0_GPIO3_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO3_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO3_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO3_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO3_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO3_CTRL_FUNCSEL_VALUE_JTAG_TDO _u(0x00) +#define IO_BANK0_GPIO3_CTRL_FUNCSEL_VALUE_SPI0_TX _u(0x01) +#define IO_BANK0_GPIO3_CTRL_FUNCSEL_VALUE_UART0_RTS _u(0x02) +#define IO_BANK0_GPIO3_CTRL_FUNCSEL_VALUE_I2C1_SCL _u(0x03) +#define IO_BANK0_GPIO3_CTRL_FUNCSEL_VALUE_PWM_B_1 _u(0x04) +#define IO_BANK0_GPIO3_CTRL_FUNCSEL_VALUE_SIO_3 _u(0x05) +#define IO_BANK0_GPIO3_CTRL_FUNCSEL_VALUE_PIO0_3 _u(0x06) +#define IO_BANK0_GPIO3_CTRL_FUNCSEL_VALUE_PIO1_3 _u(0x07) +#define IO_BANK0_GPIO3_CTRL_FUNCSEL_VALUE_USB_MUXING_OVERCURR_DETECT _u(0x09) +#define IO_BANK0_GPIO3_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO4_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO4_STATUS_OFFSET _u(0x00000020) +#define IO_BANK0_GPIO4_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO4_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO4_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO4_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO4_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO4_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO4_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO4_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO4_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO4_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO4_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO4_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO4_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO4_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO4_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO4_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO4_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO4_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO4_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO4_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO4_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO4_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO4_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO4_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO4_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO4_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO4_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO4_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO4_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO4_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO4_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO4_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO4_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO4_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO4_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO4_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO4_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO4_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO4_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO4_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO4_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO4_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO4_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO4_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO4_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO4_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO4_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO4_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO4_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO4_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO4_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO4_CTRL_OFFSET _u(0x00000024) +#define IO_BANK0_GPIO4_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO4_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO4_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO4_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO4_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO4_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO4_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO4_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO4_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO4_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO4_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO4_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO4_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO4_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO4_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO4_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO4_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO4_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO4_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO4_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO4_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO4_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO4_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO4_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO4_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO4_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO4_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO4_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO4_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO4_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO4_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO4_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO4_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO4_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO4_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO4_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO4_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO4_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO4_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO4_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO4_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO4_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO4_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi0_rx +// 0x02 -> uart1_tx +// 0x03 -> i2c0_sda +// 0x04 -> pwm_a_2 +// 0x05 -> sio_4 +// 0x06 -> pio0_4 +// 0x07 -> pio1_4 +// 0x09 -> usb_muxing_vbus_detect +// 0x1f -> null +#define IO_BANK0_GPIO4_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO4_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO4_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO4_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO4_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO4_CTRL_FUNCSEL_VALUE_SPI0_RX _u(0x01) +#define IO_BANK0_GPIO4_CTRL_FUNCSEL_VALUE_UART1_TX _u(0x02) +#define IO_BANK0_GPIO4_CTRL_FUNCSEL_VALUE_I2C0_SDA _u(0x03) +#define IO_BANK0_GPIO4_CTRL_FUNCSEL_VALUE_PWM_A_2 _u(0x04) +#define IO_BANK0_GPIO4_CTRL_FUNCSEL_VALUE_SIO_4 _u(0x05) +#define IO_BANK0_GPIO4_CTRL_FUNCSEL_VALUE_PIO0_4 _u(0x06) +#define IO_BANK0_GPIO4_CTRL_FUNCSEL_VALUE_PIO1_4 _u(0x07) +#define IO_BANK0_GPIO4_CTRL_FUNCSEL_VALUE_USB_MUXING_VBUS_DETECT _u(0x09) +#define IO_BANK0_GPIO4_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO5_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO5_STATUS_OFFSET _u(0x00000028) +#define IO_BANK0_GPIO5_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO5_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO5_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO5_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO5_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO5_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO5_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO5_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO5_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO5_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO5_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO5_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO5_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO5_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO5_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO5_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO5_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO5_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO5_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO5_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO5_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO5_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO5_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO5_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO5_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO5_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO5_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO5_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO5_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO5_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO5_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO5_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO5_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO5_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO5_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO5_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO5_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO5_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO5_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO5_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO5_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO5_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO5_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO5_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO5_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO5_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO5_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO5_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO5_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO5_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO5_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO5_CTRL_OFFSET _u(0x0000002c) +#define IO_BANK0_GPIO5_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO5_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO5_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO5_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO5_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO5_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO5_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO5_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO5_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO5_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO5_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO5_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO5_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO5_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO5_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO5_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO5_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO5_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO5_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO5_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO5_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO5_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO5_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO5_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO5_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO5_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO5_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO5_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO5_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO5_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO5_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO5_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO5_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO5_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO5_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO5_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO5_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO5_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO5_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO5_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO5_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO5_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO5_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi0_ss_n +// 0x02 -> uart1_rx +// 0x03 -> i2c0_scl +// 0x04 -> pwm_b_2 +// 0x05 -> sio_5 +// 0x06 -> pio0_5 +// 0x07 -> pio1_5 +// 0x09 -> usb_muxing_vbus_en +// 0x1f -> null +#define IO_BANK0_GPIO5_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO5_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO5_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO5_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO5_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO5_CTRL_FUNCSEL_VALUE_SPI0_SS_N _u(0x01) +#define IO_BANK0_GPIO5_CTRL_FUNCSEL_VALUE_UART1_RX _u(0x02) +#define IO_BANK0_GPIO5_CTRL_FUNCSEL_VALUE_I2C0_SCL _u(0x03) +#define IO_BANK0_GPIO5_CTRL_FUNCSEL_VALUE_PWM_B_2 _u(0x04) +#define IO_BANK0_GPIO5_CTRL_FUNCSEL_VALUE_SIO_5 _u(0x05) +#define IO_BANK0_GPIO5_CTRL_FUNCSEL_VALUE_PIO0_5 _u(0x06) +#define IO_BANK0_GPIO5_CTRL_FUNCSEL_VALUE_PIO1_5 _u(0x07) +#define IO_BANK0_GPIO5_CTRL_FUNCSEL_VALUE_USB_MUXING_VBUS_EN _u(0x09) +#define IO_BANK0_GPIO5_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO6_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO6_STATUS_OFFSET _u(0x00000030) +#define IO_BANK0_GPIO6_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO6_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO6_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO6_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO6_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO6_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO6_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO6_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO6_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO6_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO6_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO6_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO6_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO6_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO6_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO6_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO6_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO6_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO6_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO6_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO6_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO6_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO6_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO6_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO6_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO6_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO6_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO6_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO6_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO6_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO6_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO6_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO6_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO6_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO6_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO6_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO6_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO6_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO6_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO6_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO6_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO6_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO6_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO6_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO6_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO6_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO6_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO6_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO6_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO6_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO6_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO6_CTRL_OFFSET _u(0x00000034) +#define IO_BANK0_GPIO6_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO6_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO6_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO6_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO6_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO6_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO6_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO6_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO6_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO6_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO6_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO6_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO6_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO6_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO6_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO6_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO6_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO6_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO6_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO6_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO6_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO6_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO6_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO6_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO6_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO6_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO6_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO6_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO6_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO6_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO6_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO6_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO6_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO6_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO6_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO6_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO6_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO6_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO6_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO6_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO6_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO6_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO6_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi0_sclk +// 0x02 -> uart1_cts +// 0x03 -> i2c1_sda +// 0x04 -> pwm_a_3 +// 0x05 -> sio_6 +// 0x06 -> pio0_6 +// 0x07 -> pio1_6 +// 0x08 -> usb_muxing_extphy_softcon +// 0x09 -> usb_muxing_overcurr_detect +// 0x1f -> null +#define IO_BANK0_GPIO6_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO6_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO6_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO6_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO6_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO6_CTRL_FUNCSEL_VALUE_SPI0_SCLK _u(0x01) +#define IO_BANK0_GPIO6_CTRL_FUNCSEL_VALUE_UART1_CTS _u(0x02) +#define IO_BANK0_GPIO6_CTRL_FUNCSEL_VALUE_I2C1_SDA _u(0x03) +#define IO_BANK0_GPIO6_CTRL_FUNCSEL_VALUE_PWM_A_3 _u(0x04) +#define IO_BANK0_GPIO6_CTRL_FUNCSEL_VALUE_SIO_6 _u(0x05) +#define IO_BANK0_GPIO6_CTRL_FUNCSEL_VALUE_PIO0_6 _u(0x06) +#define IO_BANK0_GPIO6_CTRL_FUNCSEL_VALUE_PIO1_6 _u(0x07) +#define IO_BANK0_GPIO6_CTRL_FUNCSEL_VALUE_USB_MUXING_EXTPHY_SOFTCON _u(0x08) +#define IO_BANK0_GPIO6_CTRL_FUNCSEL_VALUE_USB_MUXING_OVERCURR_DETECT _u(0x09) +#define IO_BANK0_GPIO6_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO7_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO7_STATUS_OFFSET _u(0x00000038) +#define IO_BANK0_GPIO7_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO7_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO7_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO7_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO7_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO7_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO7_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO7_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO7_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO7_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO7_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO7_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO7_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO7_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO7_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO7_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO7_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO7_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO7_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO7_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO7_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO7_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO7_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO7_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO7_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO7_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO7_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO7_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO7_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO7_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO7_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO7_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO7_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO7_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO7_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO7_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO7_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO7_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO7_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO7_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO7_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO7_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO7_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO7_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO7_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO7_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO7_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO7_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO7_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO7_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO7_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO7_CTRL_OFFSET _u(0x0000003c) +#define IO_BANK0_GPIO7_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO7_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO7_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO7_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO7_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO7_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO7_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO7_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO7_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO7_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO7_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO7_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO7_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO7_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO7_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO7_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO7_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO7_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO7_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO7_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO7_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO7_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO7_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO7_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO7_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO7_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO7_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO7_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO7_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO7_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO7_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO7_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO7_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO7_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO7_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO7_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO7_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO7_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO7_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO7_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO7_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO7_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO7_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi0_tx +// 0x02 -> uart1_rts +// 0x03 -> i2c1_scl +// 0x04 -> pwm_b_3 +// 0x05 -> sio_7 +// 0x06 -> pio0_7 +// 0x07 -> pio1_7 +// 0x08 -> usb_muxing_extphy_oe_n +// 0x09 -> usb_muxing_vbus_detect +// 0x1f -> null +#define IO_BANK0_GPIO7_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO7_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO7_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO7_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO7_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO7_CTRL_FUNCSEL_VALUE_SPI0_TX _u(0x01) +#define IO_BANK0_GPIO7_CTRL_FUNCSEL_VALUE_UART1_RTS _u(0x02) +#define IO_BANK0_GPIO7_CTRL_FUNCSEL_VALUE_I2C1_SCL _u(0x03) +#define IO_BANK0_GPIO7_CTRL_FUNCSEL_VALUE_PWM_B_3 _u(0x04) +#define IO_BANK0_GPIO7_CTRL_FUNCSEL_VALUE_SIO_7 _u(0x05) +#define IO_BANK0_GPIO7_CTRL_FUNCSEL_VALUE_PIO0_7 _u(0x06) +#define IO_BANK0_GPIO7_CTRL_FUNCSEL_VALUE_PIO1_7 _u(0x07) +#define IO_BANK0_GPIO7_CTRL_FUNCSEL_VALUE_USB_MUXING_EXTPHY_OE_N _u(0x08) +#define IO_BANK0_GPIO7_CTRL_FUNCSEL_VALUE_USB_MUXING_VBUS_DETECT _u(0x09) +#define IO_BANK0_GPIO7_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO8_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO8_STATUS_OFFSET _u(0x00000040) +#define IO_BANK0_GPIO8_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO8_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO8_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO8_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO8_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO8_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO8_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO8_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO8_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO8_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO8_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO8_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO8_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO8_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO8_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO8_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO8_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO8_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO8_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO8_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO8_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO8_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO8_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO8_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO8_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO8_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO8_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO8_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO8_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO8_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO8_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO8_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO8_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO8_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO8_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO8_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO8_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO8_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO8_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO8_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO8_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO8_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO8_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO8_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO8_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO8_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO8_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO8_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO8_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO8_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO8_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO8_CTRL_OFFSET _u(0x00000044) +#define IO_BANK0_GPIO8_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO8_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO8_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO8_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO8_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO8_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO8_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO8_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO8_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO8_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO8_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO8_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO8_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO8_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO8_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO8_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO8_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO8_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO8_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO8_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO8_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO8_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO8_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO8_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO8_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO8_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO8_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO8_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO8_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO8_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO8_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO8_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO8_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO8_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO8_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO8_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO8_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO8_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO8_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO8_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO8_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO8_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO8_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi1_rx +// 0x02 -> uart1_tx +// 0x03 -> i2c0_sda +// 0x04 -> pwm_a_4 +// 0x05 -> sio_8 +// 0x06 -> pio0_8 +// 0x07 -> pio1_8 +// 0x08 -> usb_muxing_extphy_rcv +// 0x09 -> usb_muxing_vbus_en +// 0x1f -> null +#define IO_BANK0_GPIO8_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO8_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO8_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO8_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO8_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO8_CTRL_FUNCSEL_VALUE_SPI1_RX _u(0x01) +#define IO_BANK0_GPIO8_CTRL_FUNCSEL_VALUE_UART1_TX _u(0x02) +#define IO_BANK0_GPIO8_CTRL_FUNCSEL_VALUE_I2C0_SDA _u(0x03) +#define IO_BANK0_GPIO8_CTRL_FUNCSEL_VALUE_PWM_A_4 _u(0x04) +#define IO_BANK0_GPIO8_CTRL_FUNCSEL_VALUE_SIO_8 _u(0x05) +#define IO_BANK0_GPIO8_CTRL_FUNCSEL_VALUE_PIO0_8 _u(0x06) +#define IO_BANK0_GPIO8_CTRL_FUNCSEL_VALUE_PIO1_8 _u(0x07) +#define IO_BANK0_GPIO8_CTRL_FUNCSEL_VALUE_USB_MUXING_EXTPHY_RCV _u(0x08) +#define IO_BANK0_GPIO8_CTRL_FUNCSEL_VALUE_USB_MUXING_VBUS_EN _u(0x09) +#define IO_BANK0_GPIO8_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO9_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO9_STATUS_OFFSET _u(0x00000048) +#define IO_BANK0_GPIO9_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO9_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO9_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO9_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO9_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO9_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO9_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO9_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO9_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO9_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO9_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO9_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO9_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO9_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO9_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO9_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO9_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO9_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO9_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO9_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO9_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO9_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO9_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO9_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO9_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO9_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO9_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO9_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO9_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO9_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO9_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO9_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO9_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO9_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO9_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO9_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO9_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO9_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO9_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO9_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO9_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO9_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO9_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO9_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO9_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO9_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO9_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO9_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO9_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO9_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO9_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO9_CTRL_OFFSET _u(0x0000004c) +#define IO_BANK0_GPIO9_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO9_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO9_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO9_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO9_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO9_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO9_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO9_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO9_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO9_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO9_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO9_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO9_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO9_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO9_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO9_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO9_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO9_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO9_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO9_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO9_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO9_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO9_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO9_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO9_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO9_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO9_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO9_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO9_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO9_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO9_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO9_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO9_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO9_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO9_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO9_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO9_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO9_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO9_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO9_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO9_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO9_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO9_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi1_ss_n +// 0x02 -> uart1_rx +// 0x03 -> i2c0_scl +// 0x04 -> pwm_b_4 +// 0x05 -> sio_9 +// 0x06 -> pio0_9 +// 0x07 -> pio1_9 +// 0x08 -> usb_muxing_extphy_vp +// 0x09 -> usb_muxing_overcurr_detect +// 0x1f -> null +#define IO_BANK0_GPIO9_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO9_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO9_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO9_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO9_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO9_CTRL_FUNCSEL_VALUE_SPI1_SS_N _u(0x01) +#define IO_BANK0_GPIO9_CTRL_FUNCSEL_VALUE_UART1_RX _u(0x02) +#define IO_BANK0_GPIO9_CTRL_FUNCSEL_VALUE_I2C0_SCL _u(0x03) +#define IO_BANK0_GPIO9_CTRL_FUNCSEL_VALUE_PWM_B_4 _u(0x04) +#define IO_BANK0_GPIO9_CTRL_FUNCSEL_VALUE_SIO_9 _u(0x05) +#define IO_BANK0_GPIO9_CTRL_FUNCSEL_VALUE_PIO0_9 _u(0x06) +#define IO_BANK0_GPIO9_CTRL_FUNCSEL_VALUE_PIO1_9 _u(0x07) +#define IO_BANK0_GPIO9_CTRL_FUNCSEL_VALUE_USB_MUXING_EXTPHY_VP _u(0x08) +#define IO_BANK0_GPIO9_CTRL_FUNCSEL_VALUE_USB_MUXING_OVERCURR_DETECT _u(0x09) +#define IO_BANK0_GPIO9_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO10_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO10_STATUS_OFFSET _u(0x00000050) +#define IO_BANK0_GPIO10_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO10_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO10_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO10_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO10_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO10_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO10_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO10_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO10_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO10_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO10_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO10_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO10_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO10_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO10_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO10_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO10_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO10_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO10_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO10_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO10_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO10_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO10_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO10_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO10_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO10_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO10_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO10_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO10_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO10_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO10_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO10_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO10_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO10_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO10_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO10_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO10_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO10_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO10_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO10_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO10_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO10_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO10_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO10_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO10_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO10_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO10_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO10_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO10_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO10_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO10_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO10_CTRL_OFFSET _u(0x00000054) +#define IO_BANK0_GPIO10_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO10_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO10_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO10_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO10_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO10_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO10_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO10_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO10_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO10_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO10_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO10_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO10_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO10_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO10_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO10_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO10_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO10_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO10_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO10_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO10_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO10_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO10_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO10_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO10_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO10_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO10_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO10_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO10_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO10_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO10_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO10_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO10_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO10_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO10_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO10_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO10_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO10_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO10_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO10_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO10_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO10_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO10_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi1_sclk +// 0x02 -> uart1_cts +// 0x03 -> i2c1_sda +// 0x04 -> pwm_a_5 +// 0x05 -> sio_10 +// 0x06 -> pio0_10 +// 0x07 -> pio1_10 +// 0x08 -> usb_muxing_extphy_vm +// 0x09 -> usb_muxing_vbus_detect +// 0x1f -> null +#define IO_BANK0_GPIO10_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO10_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO10_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO10_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO10_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO10_CTRL_FUNCSEL_VALUE_SPI1_SCLK _u(0x01) +#define IO_BANK0_GPIO10_CTRL_FUNCSEL_VALUE_UART1_CTS _u(0x02) +#define IO_BANK0_GPIO10_CTRL_FUNCSEL_VALUE_I2C1_SDA _u(0x03) +#define IO_BANK0_GPIO10_CTRL_FUNCSEL_VALUE_PWM_A_5 _u(0x04) +#define IO_BANK0_GPIO10_CTRL_FUNCSEL_VALUE_SIO_10 _u(0x05) +#define IO_BANK0_GPIO10_CTRL_FUNCSEL_VALUE_PIO0_10 _u(0x06) +#define IO_BANK0_GPIO10_CTRL_FUNCSEL_VALUE_PIO1_10 _u(0x07) +#define IO_BANK0_GPIO10_CTRL_FUNCSEL_VALUE_USB_MUXING_EXTPHY_VM _u(0x08) +#define IO_BANK0_GPIO10_CTRL_FUNCSEL_VALUE_USB_MUXING_VBUS_DETECT _u(0x09) +#define IO_BANK0_GPIO10_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO11_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO11_STATUS_OFFSET _u(0x00000058) +#define IO_BANK0_GPIO11_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO11_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO11_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO11_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO11_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO11_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO11_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO11_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO11_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO11_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO11_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO11_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO11_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO11_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO11_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO11_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO11_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO11_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO11_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO11_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO11_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO11_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO11_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO11_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO11_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO11_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO11_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO11_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO11_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO11_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO11_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO11_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO11_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO11_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO11_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO11_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO11_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO11_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO11_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO11_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO11_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO11_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO11_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO11_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO11_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO11_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO11_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO11_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO11_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO11_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO11_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO11_CTRL_OFFSET _u(0x0000005c) +#define IO_BANK0_GPIO11_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO11_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO11_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO11_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO11_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO11_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO11_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO11_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO11_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO11_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO11_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO11_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO11_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO11_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO11_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO11_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO11_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO11_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO11_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO11_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO11_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO11_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO11_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO11_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO11_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO11_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO11_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO11_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO11_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO11_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO11_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO11_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO11_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO11_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO11_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO11_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO11_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO11_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO11_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO11_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO11_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO11_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO11_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi1_tx +// 0x02 -> uart1_rts +// 0x03 -> i2c1_scl +// 0x04 -> pwm_b_5 +// 0x05 -> sio_11 +// 0x06 -> pio0_11 +// 0x07 -> pio1_11 +// 0x08 -> usb_muxing_extphy_suspnd +// 0x09 -> usb_muxing_vbus_en +// 0x1f -> null +#define IO_BANK0_GPIO11_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO11_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO11_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO11_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO11_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO11_CTRL_FUNCSEL_VALUE_SPI1_TX _u(0x01) +#define IO_BANK0_GPIO11_CTRL_FUNCSEL_VALUE_UART1_RTS _u(0x02) +#define IO_BANK0_GPIO11_CTRL_FUNCSEL_VALUE_I2C1_SCL _u(0x03) +#define IO_BANK0_GPIO11_CTRL_FUNCSEL_VALUE_PWM_B_5 _u(0x04) +#define IO_BANK0_GPIO11_CTRL_FUNCSEL_VALUE_SIO_11 _u(0x05) +#define IO_BANK0_GPIO11_CTRL_FUNCSEL_VALUE_PIO0_11 _u(0x06) +#define IO_BANK0_GPIO11_CTRL_FUNCSEL_VALUE_PIO1_11 _u(0x07) +#define IO_BANK0_GPIO11_CTRL_FUNCSEL_VALUE_USB_MUXING_EXTPHY_SUSPND _u(0x08) +#define IO_BANK0_GPIO11_CTRL_FUNCSEL_VALUE_USB_MUXING_VBUS_EN _u(0x09) +#define IO_BANK0_GPIO11_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO12_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO12_STATUS_OFFSET _u(0x00000060) +#define IO_BANK0_GPIO12_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO12_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO12_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO12_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO12_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO12_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO12_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO12_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO12_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO12_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO12_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO12_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO12_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO12_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO12_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO12_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO12_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO12_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO12_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO12_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO12_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO12_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO12_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO12_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO12_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO12_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO12_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO12_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO12_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO12_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO12_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO12_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO12_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO12_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO12_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO12_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO12_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO12_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO12_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO12_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO12_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO12_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO12_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO12_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO12_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO12_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO12_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO12_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO12_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO12_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO12_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO12_CTRL_OFFSET _u(0x00000064) +#define IO_BANK0_GPIO12_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO12_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO12_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO12_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO12_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO12_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO12_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO12_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO12_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO12_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO12_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO12_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO12_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO12_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO12_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO12_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO12_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO12_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO12_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO12_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO12_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO12_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO12_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO12_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO12_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO12_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO12_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO12_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO12_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO12_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO12_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO12_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO12_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO12_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO12_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO12_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO12_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO12_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO12_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO12_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO12_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO12_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO12_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi1_rx +// 0x02 -> uart0_tx +// 0x03 -> i2c0_sda +// 0x04 -> pwm_a_6 +// 0x05 -> sio_12 +// 0x06 -> pio0_12 +// 0x07 -> pio1_12 +// 0x08 -> usb_muxing_extphy_speed +// 0x09 -> usb_muxing_overcurr_detect +// 0x1f -> null +#define IO_BANK0_GPIO12_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO12_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO12_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO12_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO12_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO12_CTRL_FUNCSEL_VALUE_SPI1_RX _u(0x01) +#define IO_BANK0_GPIO12_CTRL_FUNCSEL_VALUE_UART0_TX _u(0x02) +#define IO_BANK0_GPIO12_CTRL_FUNCSEL_VALUE_I2C0_SDA _u(0x03) +#define IO_BANK0_GPIO12_CTRL_FUNCSEL_VALUE_PWM_A_6 _u(0x04) +#define IO_BANK0_GPIO12_CTRL_FUNCSEL_VALUE_SIO_12 _u(0x05) +#define IO_BANK0_GPIO12_CTRL_FUNCSEL_VALUE_PIO0_12 _u(0x06) +#define IO_BANK0_GPIO12_CTRL_FUNCSEL_VALUE_PIO1_12 _u(0x07) +#define IO_BANK0_GPIO12_CTRL_FUNCSEL_VALUE_USB_MUXING_EXTPHY_SPEED _u(0x08) +#define IO_BANK0_GPIO12_CTRL_FUNCSEL_VALUE_USB_MUXING_OVERCURR_DETECT _u(0x09) +#define IO_BANK0_GPIO12_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO13_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO13_STATUS_OFFSET _u(0x00000068) +#define IO_BANK0_GPIO13_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO13_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO13_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO13_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO13_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO13_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO13_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO13_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO13_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO13_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO13_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO13_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO13_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO13_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO13_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO13_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO13_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO13_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO13_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO13_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO13_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO13_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO13_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO13_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO13_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO13_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO13_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO13_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO13_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO13_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO13_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO13_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO13_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO13_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO13_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO13_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO13_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO13_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO13_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO13_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO13_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO13_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO13_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO13_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO13_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO13_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO13_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO13_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO13_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO13_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO13_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO13_CTRL_OFFSET _u(0x0000006c) +#define IO_BANK0_GPIO13_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO13_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO13_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO13_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO13_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO13_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO13_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO13_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO13_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO13_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO13_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO13_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO13_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO13_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO13_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO13_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO13_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO13_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO13_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO13_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO13_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO13_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO13_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO13_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO13_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO13_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO13_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO13_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO13_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO13_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO13_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO13_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO13_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO13_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO13_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO13_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO13_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO13_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO13_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO13_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO13_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO13_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO13_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi1_ss_n +// 0x02 -> uart0_rx +// 0x03 -> i2c0_scl +// 0x04 -> pwm_b_6 +// 0x05 -> sio_13 +// 0x06 -> pio0_13 +// 0x07 -> pio1_13 +// 0x08 -> usb_muxing_extphy_vpo +// 0x09 -> usb_muxing_vbus_detect +// 0x1f -> null +#define IO_BANK0_GPIO13_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO13_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO13_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO13_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO13_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO13_CTRL_FUNCSEL_VALUE_SPI1_SS_N _u(0x01) +#define IO_BANK0_GPIO13_CTRL_FUNCSEL_VALUE_UART0_RX _u(0x02) +#define IO_BANK0_GPIO13_CTRL_FUNCSEL_VALUE_I2C0_SCL _u(0x03) +#define IO_BANK0_GPIO13_CTRL_FUNCSEL_VALUE_PWM_B_6 _u(0x04) +#define IO_BANK0_GPIO13_CTRL_FUNCSEL_VALUE_SIO_13 _u(0x05) +#define IO_BANK0_GPIO13_CTRL_FUNCSEL_VALUE_PIO0_13 _u(0x06) +#define IO_BANK0_GPIO13_CTRL_FUNCSEL_VALUE_PIO1_13 _u(0x07) +#define IO_BANK0_GPIO13_CTRL_FUNCSEL_VALUE_USB_MUXING_EXTPHY_VPO _u(0x08) +#define IO_BANK0_GPIO13_CTRL_FUNCSEL_VALUE_USB_MUXING_VBUS_DETECT _u(0x09) +#define IO_BANK0_GPIO13_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO14_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO14_STATUS_OFFSET _u(0x00000070) +#define IO_BANK0_GPIO14_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO14_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO14_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO14_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO14_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO14_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO14_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO14_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO14_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO14_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO14_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO14_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO14_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO14_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO14_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO14_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO14_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO14_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO14_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO14_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO14_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO14_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO14_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO14_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO14_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO14_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO14_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO14_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO14_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO14_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO14_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO14_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO14_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO14_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO14_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO14_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO14_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO14_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO14_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO14_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO14_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO14_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO14_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO14_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO14_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO14_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO14_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO14_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO14_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO14_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO14_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO14_CTRL_OFFSET _u(0x00000074) +#define IO_BANK0_GPIO14_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO14_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO14_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO14_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO14_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO14_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO14_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO14_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO14_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO14_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO14_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO14_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO14_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO14_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO14_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO14_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO14_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO14_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO14_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO14_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO14_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO14_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO14_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO14_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO14_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO14_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO14_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO14_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO14_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO14_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO14_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO14_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO14_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO14_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO14_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO14_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO14_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO14_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO14_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO14_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO14_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO14_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO14_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi1_sclk +// 0x02 -> uart0_cts +// 0x03 -> i2c1_sda +// 0x04 -> pwm_a_7 +// 0x05 -> sio_14 +// 0x06 -> pio0_14 +// 0x07 -> pio1_14 +// 0x08 -> usb_muxing_extphy_vmo +// 0x09 -> usb_muxing_vbus_en +// 0x1f -> null +#define IO_BANK0_GPIO14_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO14_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO14_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO14_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO14_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO14_CTRL_FUNCSEL_VALUE_SPI1_SCLK _u(0x01) +#define IO_BANK0_GPIO14_CTRL_FUNCSEL_VALUE_UART0_CTS _u(0x02) +#define IO_BANK0_GPIO14_CTRL_FUNCSEL_VALUE_I2C1_SDA _u(0x03) +#define IO_BANK0_GPIO14_CTRL_FUNCSEL_VALUE_PWM_A_7 _u(0x04) +#define IO_BANK0_GPIO14_CTRL_FUNCSEL_VALUE_SIO_14 _u(0x05) +#define IO_BANK0_GPIO14_CTRL_FUNCSEL_VALUE_PIO0_14 _u(0x06) +#define IO_BANK0_GPIO14_CTRL_FUNCSEL_VALUE_PIO1_14 _u(0x07) +#define IO_BANK0_GPIO14_CTRL_FUNCSEL_VALUE_USB_MUXING_EXTPHY_VMO _u(0x08) +#define IO_BANK0_GPIO14_CTRL_FUNCSEL_VALUE_USB_MUXING_VBUS_EN _u(0x09) +#define IO_BANK0_GPIO14_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO15_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO15_STATUS_OFFSET _u(0x00000078) +#define IO_BANK0_GPIO15_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO15_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO15_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO15_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO15_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO15_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO15_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO15_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO15_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO15_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO15_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO15_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO15_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO15_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO15_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO15_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO15_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO15_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO15_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO15_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO15_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO15_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO15_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO15_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO15_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO15_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO15_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO15_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO15_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO15_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO15_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO15_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO15_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO15_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO15_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO15_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO15_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO15_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO15_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO15_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO15_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO15_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO15_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO15_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO15_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO15_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO15_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO15_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO15_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO15_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO15_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO15_CTRL_OFFSET _u(0x0000007c) +#define IO_BANK0_GPIO15_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO15_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO15_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO15_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO15_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO15_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO15_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO15_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO15_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO15_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO15_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO15_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO15_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO15_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO15_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO15_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO15_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO15_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO15_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO15_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO15_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO15_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO15_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO15_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO15_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO15_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO15_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO15_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO15_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO15_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO15_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO15_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO15_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO15_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO15_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO15_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO15_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO15_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO15_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO15_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO15_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO15_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO15_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi1_tx +// 0x02 -> uart0_rts +// 0x03 -> i2c1_scl +// 0x04 -> pwm_b_7 +// 0x05 -> sio_15 +// 0x06 -> pio0_15 +// 0x07 -> pio1_15 +// 0x08 -> usb_muxing_digital_dp +// 0x09 -> usb_muxing_overcurr_detect +// 0x1f -> null +#define IO_BANK0_GPIO15_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO15_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO15_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO15_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO15_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO15_CTRL_FUNCSEL_VALUE_SPI1_TX _u(0x01) +#define IO_BANK0_GPIO15_CTRL_FUNCSEL_VALUE_UART0_RTS _u(0x02) +#define IO_BANK0_GPIO15_CTRL_FUNCSEL_VALUE_I2C1_SCL _u(0x03) +#define IO_BANK0_GPIO15_CTRL_FUNCSEL_VALUE_PWM_B_7 _u(0x04) +#define IO_BANK0_GPIO15_CTRL_FUNCSEL_VALUE_SIO_15 _u(0x05) +#define IO_BANK0_GPIO15_CTRL_FUNCSEL_VALUE_PIO0_15 _u(0x06) +#define IO_BANK0_GPIO15_CTRL_FUNCSEL_VALUE_PIO1_15 _u(0x07) +#define IO_BANK0_GPIO15_CTRL_FUNCSEL_VALUE_USB_MUXING_DIGITAL_DP _u(0x08) +#define IO_BANK0_GPIO15_CTRL_FUNCSEL_VALUE_USB_MUXING_OVERCURR_DETECT _u(0x09) +#define IO_BANK0_GPIO15_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO16_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO16_STATUS_OFFSET _u(0x00000080) +#define IO_BANK0_GPIO16_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO16_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO16_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO16_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO16_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO16_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO16_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO16_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO16_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO16_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO16_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO16_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO16_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO16_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO16_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO16_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO16_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO16_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO16_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO16_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO16_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO16_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO16_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO16_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO16_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO16_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO16_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO16_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO16_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO16_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO16_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO16_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO16_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO16_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO16_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO16_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO16_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO16_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO16_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO16_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO16_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO16_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO16_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO16_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO16_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO16_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO16_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO16_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO16_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO16_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO16_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO16_CTRL_OFFSET _u(0x00000084) +#define IO_BANK0_GPIO16_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO16_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO16_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO16_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO16_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO16_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO16_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO16_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO16_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO16_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO16_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO16_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO16_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO16_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO16_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO16_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO16_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO16_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO16_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO16_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO16_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO16_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO16_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO16_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO16_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO16_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO16_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO16_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO16_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO16_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO16_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO16_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO16_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO16_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO16_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO16_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO16_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO16_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO16_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO16_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO16_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO16_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO16_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi0_rx +// 0x02 -> uart0_tx +// 0x03 -> i2c0_sda +// 0x04 -> pwm_a_0 +// 0x05 -> sio_16 +// 0x06 -> pio0_16 +// 0x07 -> pio1_16 +// 0x08 -> usb_muxing_digital_dm +// 0x09 -> usb_muxing_vbus_detect +// 0x1f -> null +#define IO_BANK0_GPIO16_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO16_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO16_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO16_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO16_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO16_CTRL_FUNCSEL_VALUE_SPI0_RX _u(0x01) +#define IO_BANK0_GPIO16_CTRL_FUNCSEL_VALUE_UART0_TX _u(0x02) +#define IO_BANK0_GPIO16_CTRL_FUNCSEL_VALUE_I2C0_SDA _u(0x03) +#define IO_BANK0_GPIO16_CTRL_FUNCSEL_VALUE_PWM_A_0 _u(0x04) +#define IO_BANK0_GPIO16_CTRL_FUNCSEL_VALUE_SIO_16 _u(0x05) +#define IO_BANK0_GPIO16_CTRL_FUNCSEL_VALUE_PIO0_16 _u(0x06) +#define IO_BANK0_GPIO16_CTRL_FUNCSEL_VALUE_PIO1_16 _u(0x07) +#define IO_BANK0_GPIO16_CTRL_FUNCSEL_VALUE_USB_MUXING_DIGITAL_DM _u(0x08) +#define IO_BANK0_GPIO16_CTRL_FUNCSEL_VALUE_USB_MUXING_VBUS_DETECT _u(0x09) +#define IO_BANK0_GPIO16_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO17_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO17_STATUS_OFFSET _u(0x00000088) +#define IO_BANK0_GPIO17_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO17_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO17_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO17_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO17_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO17_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO17_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO17_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO17_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO17_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO17_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO17_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO17_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO17_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO17_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO17_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO17_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO17_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO17_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO17_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO17_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO17_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO17_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO17_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO17_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO17_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO17_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO17_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO17_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO17_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO17_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO17_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO17_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO17_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO17_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO17_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO17_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO17_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO17_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO17_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO17_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO17_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO17_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO17_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO17_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO17_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO17_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO17_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO17_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO17_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO17_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO17_CTRL_OFFSET _u(0x0000008c) +#define IO_BANK0_GPIO17_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO17_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO17_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO17_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO17_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO17_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO17_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO17_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO17_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO17_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO17_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO17_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO17_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO17_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO17_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO17_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO17_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO17_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO17_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO17_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO17_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO17_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO17_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO17_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO17_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO17_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO17_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO17_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO17_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO17_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO17_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO17_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO17_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO17_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO17_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO17_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO17_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO17_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO17_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO17_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO17_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO17_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO17_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi0_ss_n +// 0x02 -> uart0_rx +// 0x03 -> i2c0_scl +// 0x04 -> pwm_b_0 +// 0x05 -> sio_17 +// 0x06 -> pio0_17 +// 0x07 -> pio1_17 +// 0x09 -> usb_muxing_vbus_en +// 0x1f -> null +#define IO_BANK0_GPIO17_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO17_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO17_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO17_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO17_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO17_CTRL_FUNCSEL_VALUE_SPI0_SS_N _u(0x01) +#define IO_BANK0_GPIO17_CTRL_FUNCSEL_VALUE_UART0_RX _u(0x02) +#define IO_BANK0_GPIO17_CTRL_FUNCSEL_VALUE_I2C0_SCL _u(0x03) +#define IO_BANK0_GPIO17_CTRL_FUNCSEL_VALUE_PWM_B_0 _u(0x04) +#define IO_BANK0_GPIO17_CTRL_FUNCSEL_VALUE_SIO_17 _u(0x05) +#define IO_BANK0_GPIO17_CTRL_FUNCSEL_VALUE_PIO0_17 _u(0x06) +#define IO_BANK0_GPIO17_CTRL_FUNCSEL_VALUE_PIO1_17 _u(0x07) +#define IO_BANK0_GPIO17_CTRL_FUNCSEL_VALUE_USB_MUXING_VBUS_EN _u(0x09) +#define IO_BANK0_GPIO17_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO18_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO18_STATUS_OFFSET _u(0x00000090) +#define IO_BANK0_GPIO18_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO18_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO18_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO18_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO18_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO18_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO18_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO18_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO18_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO18_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO18_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO18_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO18_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO18_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO18_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO18_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO18_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO18_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO18_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO18_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO18_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO18_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO18_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO18_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO18_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO18_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO18_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO18_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO18_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO18_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO18_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO18_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO18_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO18_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO18_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO18_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO18_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO18_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO18_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO18_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO18_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO18_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO18_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO18_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO18_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO18_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO18_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO18_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO18_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO18_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO18_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO18_CTRL_OFFSET _u(0x00000094) +#define IO_BANK0_GPIO18_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO18_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO18_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO18_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO18_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO18_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO18_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO18_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO18_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO18_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO18_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO18_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO18_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO18_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO18_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO18_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO18_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO18_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO18_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO18_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO18_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO18_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO18_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO18_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO18_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO18_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO18_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO18_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO18_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO18_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO18_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO18_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO18_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO18_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO18_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO18_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO18_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO18_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO18_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO18_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO18_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO18_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO18_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi0_sclk +// 0x02 -> uart0_cts +// 0x03 -> i2c1_sda +// 0x04 -> pwm_a_1 +// 0x05 -> sio_18 +// 0x06 -> pio0_18 +// 0x07 -> pio1_18 +// 0x09 -> usb_muxing_overcurr_detect +// 0x1f -> null +#define IO_BANK0_GPIO18_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO18_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO18_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO18_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO18_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO18_CTRL_FUNCSEL_VALUE_SPI0_SCLK _u(0x01) +#define IO_BANK0_GPIO18_CTRL_FUNCSEL_VALUE_UART0_CTS _u(0x02) +#define IO_BANK0_GPIO18_CTRL_FUNCSEL_VALUE_I2C1_SDA _u(0x03) +#define IO_BANK0_GPIO18_CTRL_FUNCSEL_VALUE_PWM_A_1 _u(0x04) +#define IO_BANK0_GPIO18_CTRL_FUNCSEL_VALUE_SIO_18 _u(0x05) +#define IO_BANK0_GPIO18_CTRL_FUNCSEL_VALUE_PIO0_18 _u(0x06) +#define IO_BANK0_GPIO18_CTRL_FUNCSEL_VALUE_PIO1_18 _u(0x07) +#define IO_BANK0_GPIO18_CTRL_FUNCSEL_VALUE_USB_MUXING_OVERCURR_DETECT _u(0x09) +#define IO_BANK0_GPIO18_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO19_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO19_STATUS_OFFSET _u(0x00000098) +#define IO_BANK0_GPIO19_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO19_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO19_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO19_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO19_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO19_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO19_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO19_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO19_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO19_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO19_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO19_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO19_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO19_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO19_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO19_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO19_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO19_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO19_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO19_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO19_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO19_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO19_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO19_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO19_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO19_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO19_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO19_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO19_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO19_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO19_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO19_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO19_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO19_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO19_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO19_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO19_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO19_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO19_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO19_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO19_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO19_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO19_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO19_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO19_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO19_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO19_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO19_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO19_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO19_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO19_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO19_CTRL_OFFSET _u(0x0000009c) +#define IO_BANK0_GPIO19_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO19_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO19_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO19_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO19_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO19_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO19_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO19_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO19_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO19_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO19_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO19_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO19_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO19_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO19_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO19_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO19_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO19_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO19_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO19_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO19_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO19_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO19_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO19_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO19_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO19_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO19_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO19_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO19_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO19_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO19_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO19_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO19_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO19_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO19_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO19_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO19_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO19_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO19_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO19_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO19_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO19_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO19_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi0_tx +// 0x02 -> uart0_rts +// 0x03 -> i2c1_scl +// 0x04 -> pwm_b_1 +// 0x05 -> sio_19 +// 0x06 -> pio0_19 +// 0x07 -> pio1_19 +// 0x09 -> usb_muxing_vbus_detect +// 0x1f -> null +#define IO_BANK0_GPIO19_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO19_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO19_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO19_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO19_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO19_CTRL_FUNCSEL_VALUE_SPI0_TX _u(0x01) +#define IO_BANK0_GPIO19_CTRL_FUNCSEL_VALUE_UART0_RTS _u(0x02) +#define IO_BANK0_GPIO19_CTRL_FUNCSEL_VALUE_I2C1_SCL _u(0x03) +#define IO_BANK0_GPIO19_CTRL_FUNCSEL_VALUE_PWM_B_1 _u(0x04) +#define IO_BANK0_GPIO19_CTRL_FUNCSEL_VALUE_SIO_19 _u(0x05) +#define IO_BANK0_GPIO19_CTRL_FUNCSEL_VALUE_PIO0_19 _u(0x06) +#define IO_BANK0_GPIO19_CTRL_FUNCSEL_VALUE_PIO1_19 _u(0x07) +#define IO_BANK0_GPIO19_CTRL_FUNCSEL_VALUE_USB_MUXING_VBUS_DETECT _u(0x09) +#define IO_BANK0_GPIO19_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO20_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO20_STATUS_OFFSET _u(0x000000a0) +#define IO_BANK0_GPIO20_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO20_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO20_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO20_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO20_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO20_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO20_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO20_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO20_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO20_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO20_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO20_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO20_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO20_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO20_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO20_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO20_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO20_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO20_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO20_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO20_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO20_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO20_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO20_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO20_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO20_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO20_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO20_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO20_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO20_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO20_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO20_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO20_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO20_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO20_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO20_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO20_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO20_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO20_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO20_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO20_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO20_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO20_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO20_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO20_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO20_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO20_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO20_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO20_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO20_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO20_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO20_CTRL_OFFSET _u(0x000000a4) +#define IO_BANK0_GPIO20_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO20_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO20_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO20_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO20_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO20_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO20_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO20_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO20_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO20_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO20_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO20_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO20_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO20_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO20_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO20_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO20_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO20_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO20_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO20_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO20_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO20_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO20_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO20_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO20_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO20_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO20_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO20_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO20_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO20_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO20_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO20_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO20_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO20_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO20_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO20_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO20_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO20_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO20_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO20_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO20_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO20_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO20_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi0_rx +// 0x02 -> uart1_tx +// 0x03 -> i2c0_sda +// 0x04 -> pwm_a_2 +// 0x05 -> sio_20 +// 0x06 -> pio0_20 +// 0x07 -> pio1_20 +// 0x08 -> clocks_gpin_0 +// 0x09 -> usb_muxing_vbus_en +// 0x1f -> null +#define IO_BANK0_GPIO20_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO20_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO20_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO20_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO20_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO20_CTRL_FUNCSEL_VALUE_SPI0_RX _u(0x01) +#define IO_BANK0_GPIO20_CTRL_FUNCSEL_VALUE_UART1_TX _u(0x02) +#define IO_BANK0_GPIO20_CTRL_FUNCSEL_VALUE_I2C0_SDA _u(0x03) +#define IO_BANK0_GPIO20_CTRL_FUNCSEL_VALUE_PWM_A_2 _u(0x04) +#define IO_BANK0_GPIO20_CTRL_FUNCSEL_VALUE_SIO_20 _u(0x05) +#define IO_BANK0_GPIO20_CTRL_FUNCSEL_VALUE_PIO0_20 _u(0x06) +#define IO_BANK0_GPIO20_CTRL_FUNCSEL_VALUE_PIO1_20 _u(0x07) +#define IO_BANK0_GPIO20_CTRL_FUNCSEL_VALUE_CLOCKS_GPIN_0 _u(0x08) +#define IO_BANK0_GPIO20_CTRL_FUNCSEL_VALUE_USB_MUXING_VBUS_EN _u(0x09) +#define IO_BANK0_GPIO20_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO21_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO21_STATUS_OFFSET _u(0x000000a8) +#define IO_BANK0_GPIO21_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO21_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO21_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO21_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO21_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO21_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO21_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO21_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO21_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO21_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO21_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO21_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO21_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO21_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO21_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO21_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO21_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO21_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO21_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO21_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO21_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO21_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO21_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO21_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO21_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO21_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO21_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO21_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO21_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO21_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO21_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO21_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO21_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO21_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO21_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO21_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO21_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO21_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO21_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO21_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO21_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO21_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO21_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO21_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO21_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO21_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO21_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO21_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO21_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO21_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO21_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO21_CTRL_OFFSET _u(0x000000ac) +#define IO_BANK0_GPIO21_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO21_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO21_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO21_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO21_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO21_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO21_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO21_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO21_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO21_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO21_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO21_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO21_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO21_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO21_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO21_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO21_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO21_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO21_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO21_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO21_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO21_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO21_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO21_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO21_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO21_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO21_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO21_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO21_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO21_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO21_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO21_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO21_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO21_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO21_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO21_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO21_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO21_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO21_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO21_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO21_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO21_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO21_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi0_ss_n +// 0x02 -> uart1_rx +// 0x03 -> i2c0_scl +// 0x04 -> pwm_b_2 +// 0x05 -> sio_21 +// 0x06 -> pio0_21 +// 0x07 -> pio1_21 +// 0x08 -> clocks_gpout_0 +// 0x09 -> usb_muxing_overcurr_detect +// 0x1f -> null +#define IO_BANK0_GPIO21_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO21_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO21_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO21_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO21_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO21_CTRL_FUNCSEL_VALUE_SPI0_SS_N _u(0x01) +#define IO_BANK0_GPIO21_CTRL_FUNCSEL_VALUE_UART1_RX _u(0x02) +#define IO_BANK0_GPIO21_CTRL_FUNCSEL_VALUE_I2C0_SCL _u(0x03) +#define IO_BANK0_GPIO21_CTRL_FUNCSEL_VALUE_PWM_B_2 _u(0x04) +#define IO_BANK0_GPIO21_CTRL_FUNCSEL_VALUE_SIO_21 _u(0x05) +#define IO_BANK0_GPIO21_CTRL_FUNCSEL_VALUE_PIO0_21 _u(0x06) +#define IO_BANK0_GPIO21_CTRL_FUNCSEL_VALUE_PIO1_21 _u(0x07) +#define IO_BANK0_GPIO21_CTRL_FUNCSEL_VALUE_CLOCKS_GPOUT_0 _u(0x08) +#define IO_BANK0_GPIO21_CTRL_FUNCSEL_VALUE_USB_MUXING_OVERCURR_DETECT _u(0x09) +#define IO_BANK0_GPIO21_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO22_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO22_STATUS_OFFSET _u(0x000000b0) +#define IO_BANK0_GPIO22_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO22_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO22_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO22_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO22_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO22_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO22_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO22_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO22_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO22_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO22_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO22_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO22_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO22_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO22_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO22_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO22_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO22_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO22_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO22_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO22_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO22_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO22_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO22_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO22_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO22_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO22_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO22_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO22_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO22_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO22_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO22_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO22_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO22_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO22_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO22_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO22_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO22_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO22_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO22_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO22_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO22_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO22_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO22_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO22_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO22_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO22_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO22_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO22_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO22_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO22_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO22_CTRL_OFFSET _u(0x000000b4) +#define IO_BANK0_GPIO22_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO22_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO22_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO22_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO22_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO22_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO22_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO22_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO22_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO22_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO22_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO22_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO22_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO22_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO22_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO22_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO22_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO22_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO22_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO22_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO22_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO22_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO22_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO22_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO22_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO22_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO22_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO22_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO22_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO22_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO22_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO22_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO22_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO22_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO22_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO22_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO22_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO22_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO22_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO22_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO22_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO22_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO22_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi0_sclk +// 0x02 -> uart1_cts +// 0x03 -> i2c1_sda +// 0x04 -> pwm_a_3 +// 0x05 -> sio_22 +// 0x06 -> pio0_22 +// 0x07 -> pio1_22 +// 0x08 -> clocks_gpin_1 +// 0x09 -> usb_muxing_vbus_detect +// 0x1f -> null +#define IO_BANK0_GPIO22_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO22_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO22_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO22_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO22_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO22_CTRL_FUNCSEL_VALUE_SPI0_SCLK _u(0x01) +#define IO_BANK0_GPIO22_CTRL_FUNCSEL_VALUE_UART1_CTS _u(0x02) +#define IO_BANK0_GPIO22_CTRL_FUNCSEL_VALUE_I2C1_SDA _u(0x03) +#define IO_BANK0_GPIO22_CTRL_FUNCSEL_VALUE_PWM_A_3 _u(0x04) +#define IO_BANK0_GPIO22_CTRL_FUNCSEL_VALUE_SIO_22 _u(0x05) +#define IO_BANK0_GPIO22_CTRL_FUNCSEL_VALUE_PIO0_22 _u(0x06) +#define IO_BANK0_GPIO22_CTRL_FUNCSEL_VALUE_PIO1_22 _u(0x07) +#define IO_BANK0_GPIO22_CTRL_FUNCSEL_VALUE_CLOCKS_GPIN_1 _u(0x08) +#define IO_BANK0_GPIO22_CTRL_FUNCSEL_VALUE_USB_MUXING_VBUS_DETECT _u(0x09) +#define IO_BANK0_GPIO22_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO23_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO23_STATUS_OFFSET _u(0x000000b8) +#define IO_BANK0_GPIO23_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO23_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO23_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO23_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO23_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO23_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO23_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO23_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO23_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO23_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO23_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO23_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO23_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO23_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO23_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO23_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO23_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO23_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO23_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO23_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO23_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO23_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO23_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO23_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO23_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO23_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO23_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO23_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO23_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO23_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO23_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO23_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO23_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO23_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO23_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO23_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO23_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO23_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO23_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO23_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO23_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO23_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO23_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO23_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO23_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO23_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO23_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO23_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO23_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO23_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO23_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO23_CTRL_OFFSET _u(0x000000bc) +#define IO_BANK0_GPIO23_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO23_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO23_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO23_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO23_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO23_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO23_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO23_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO23_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO23_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO23_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO23_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO23_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO23_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO23_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO23_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO23_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO23_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO23_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO23_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO23_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO23_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO23_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO23_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO23_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO23_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO23_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO23_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO23_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO23_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO23_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO23_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO23_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO23_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO23_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO23_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO23_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO23_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO23_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO23_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO23_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO23_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO23_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi0_tx +// 0x02 -> uart1_rts +// 0x03 -> i2c1_scl +// 0x04 -> pwm_b_3 +// 0x05 -> sio_23 +// 0x06 -> pio0_23 +// 0x07 -> pio1_23 +// 0x08 -> clocks_gpout_1 +// 0x09 -> usb_muxing_vbus_en +// 0x1f -> null +#define IO_BANK0_GPIO23_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO23_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO23_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO23_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO23_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO23_CTRL_FUNCSEL_VALUE_SPI0_TX _u(0x01) +#define IO_BANK0_GPIO23_CTRL_FUNCSEL_VALUE_UART1_RTS _u(0x02) +#define IO_BANK0_GPIO23_CTRL_FUNCSEL_VALUE_I2C1_SCL _u(0x03) +#define IO_BANK0_GPIO23_CTRL_FUNCSEL_VALUE_PWM_B_3 _u(0x04) +#define IO_BANK0_GPIO23_CTRL_FUNCSEL_VALUE_SIO_23 _u(0x05) +#define IO_BANK0_GPIO23_CTRL_FUNCSEL_VALUE_PIO0_23 _u(0x06) +#define IO_BANK0_GPIO23_CTRL_FUNCSEL_VALUE_PIO1_23 _u(0x07) +#define IO_BANK0_GPIO23_CTRL_FUNCSEL_VALUE_CLOCKS_GPOUT_1 _u(0x08) +#define IO_BANK0_GPIO23_CTRL_FUNCSEL_VALUE_USB_MUXING_VBUS_EN _u(0x09) +#define IO_BANK0_GPIO23_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO24_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO24_STATUS_OFFSET _u(0x000000c0) +#define IO_BANK0_GPIO24_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO24_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO24_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO24_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO24_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO24_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO24_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO24_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO24_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO24_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO24_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO24_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO24_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO24_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO24_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO24_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO24_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO24_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO24_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO24_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO24_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO24_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO24_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO24_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO24_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO24_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO24_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO24_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO24_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO24_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO24_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO24_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO24_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO24_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO24_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO24_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO24_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO24_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO24_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO24_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO24_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO24_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO24_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO24_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO24_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO24_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO24_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO24_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO24_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO24_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO24_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO24_CTRL_OFFSET _u(0x000000c4) +#define IO_BANK0_GPIO24_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO24_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO24_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO24_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO24_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO24_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO24_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO24_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO24_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO24_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO24_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO24_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO24_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO24_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO24_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO24_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO24_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO24_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO24_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO24_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO24_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO24_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO24_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO24_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO24_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO24_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO24_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO24_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO24_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO24_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO24_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO24_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO24_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO24_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO24_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO24_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO24_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO24_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO24_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO24_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO24_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO24_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO24_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi1_rx +// 0x02 -> uart1_tx +// 0x03 -> i2c0_sda +// 0x04 -> pwm_a_4 +// 0x05 -> sio_24 +// 0x06 -> pio0_24 +// 0x07 -> pio1_24 +// 0x08 -> clocks_gpout_2 +// 0x09 -> usb_muxing_overcurr_detect +// 0x1f -> null +#define IO_BANK0_GPIO24_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO24_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO24_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO24_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO24_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO24_CTRL_FUNCSEL_VALUE_SPI1_RX _u(0x01) +#define IO_BANK0_GPIO24_CTRL_FUNCSEL_VALUE_UART1_TX _u(0x02) +#define IO_BANK0_GPIO24_CTRL_FUNCSEL_VALUE_I2C0_SDA _u(0x03) +#define IO_BANK0_GPIO24_CTRL_FUNCSEL_VALUE_PWM_A_4 _u(0x04) +#define IO_BANK0_GPIO24_CTRL_FUNCSEL_VALUE_SIO_24 _u(0x05) +#define IO_BANK0_GPIO24_CTRL_FUNCSEL_VALUE_PIO0_24 _u(0x06) +#define IO_BANK0_GPIO24_CTRL_FUNCSEL_VALUE_PIO1_24 _u(0x07) +#define IO_BANK0_GPIO24_CTRL_FUNCSEL_VALUE_CLOCKS_GPOUT_2 _u(0x08) +#define IO_BANK0_GPIO24_CTRL_FUNCSEL_VALUE_USB_MUXING_OVERCURR_DETECT _u(0x09) +#define IO_BANK0_GPIO24_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO25_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO25_STATUS_OFFSET _u(0x000000c8) +#define IO_BANK0_GPIO25_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO25_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO25_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO25_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO25_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO25_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO25_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO25_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO25_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO25_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO25_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO25_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO25_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO25_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO25_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO25_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO25_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO25_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO25_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO25_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO25_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO25_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO25_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO25_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO25_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO25_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO25_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO25_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO25_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO25_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO25_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO25_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO25_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO25_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO25_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO25_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO25_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO25_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO25_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO25_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO25_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO25_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO25_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO25_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO25_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO25_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO25_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO25_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO25_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO25_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO25_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO25_CTRL_OFFSET _u(0x000000cc) +#define IO_BANK0_GPIO25_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO25_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO25_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO25_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO25_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO25_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO25_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO25_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO25_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO25_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO25_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO25_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO25_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO25_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO25_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO25_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO25_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO25_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO25_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO25_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO25_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO25_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO25_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO25_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO25_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO25_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO25_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO25_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO25_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO25_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO25_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO25_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO25_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO25_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO25_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO25_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO25_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO25_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO25_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO25_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO25_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO25_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO25_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi1_ss_n +// 0x02 -> uart1_rx +// 0x03 -> i2c0_scl +// 0x04 -> pwm_b_4 +// 0x05 -> sio_25 +// 0x06 -> pio0_25 +// 0x07 -> pio1_25 +// 0x08 -> clocks_gpout_3 +// 0x09 -> usb_muxing_vbus_detect +// 0x1f -> null +#define IO_BANK0_GPIO25_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO25_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO25_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO25_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO25_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO25_CTRL_FUNCSEL_VALUE_SPI1_SS_N _u(0x01) +#define IO_BANK0_GPIO25_CTRL_FUNCSEL_VALUE_UART1_RX _u(0x02) +#define IO_BANK0_GPIO25_CTRL_FUNCSEL_VALUE_I2C0_SCL _u(0x03) +#define IO_BANK0_GPIO25_CTRL_FUNCSEL_VALUE_PWM_B_4 _u(0x04) +#define IO_BANK0_GPIO25_CTRL_FUNCSEL_VALUE_SIO_25 _u(0x05) +#define IO_BANK0_GPIO25_CTRL_FUNCSEL_VALUE_PIO0_25 _u(0x06) +#define IO_BANK0_GPIO25_CTRL_FUNCSEL_VALUE_PIO1_25 _u(0x07) +#define IO_BANK0_GPIO25_CTRL_FUNCSEL_VALUE_CLOCKS_GPOUT_3 _u(0x08) +#define IO_BANK0_GPIO25_CTRL_FUNCSEL_VALUE_USB_MUXING_VBUS_DETECT _u(0x09) +#define IO_BANK0_GPIO25_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO26_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO26_STATUS_OFFSET _u(0x000000d0) +#define IO_BANK0_GPIO26_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO26_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO26_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO26_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO26_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO26_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO26_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO26_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO26_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO26_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO26_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO26_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO26_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO26_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO26_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO26_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO26_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO26_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO26_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO26_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO26_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO26_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO26_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO26_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO26_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO26_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO26_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO26_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO26_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO26_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO26_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO26_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO26_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO26_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO26_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO26_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO26_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO26_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO26_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO26_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO26_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO26_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO26_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO26_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO26_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO26_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO26_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO26_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO26_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO26_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO26_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO26_CTRL_OFFSET _u(0x000000d4) +#define IO_BANK0_GPIO26_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO26_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO26_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO26_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO26_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO26_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO26_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO26_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO26_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO26_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO26_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO26_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO26_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO26_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO26_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO26_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO26_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO26_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO26_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO26_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO26_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO26_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO26_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO26_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO26_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO26_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO26_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO26_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO26_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO26_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO26_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO26_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO26_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO26_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO26_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO26_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO26_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO26_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO26_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO26_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO26_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO26_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO26_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi1_sclk +// 0x02 -> uart1_cts +// 0x03 -> i2c1_sda +// 0x04 -> pwm_a_5 +// 0x05 -> sio_26 +// 0x06 -> pio0_26 +// 0x07 -> pio1_26 +// 0x09 -> usb_muxing_vbus_en +// 0x1f -> null +#define IO_BANK0_GPIO26_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO26_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO26_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO26_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO26_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO26_CTRL_FUNCSEL_VALUE_SPI1_SCLK _u(0x01) +#define IO_BANK0_GPIO26_CTRL_FUNCSEL_VALUE_UART1_CTS _u(0x02) +#define IO_BANK0_GPIO26_CTRL_FUNCSEL_VALUE_I2C1_SDA _u(0x03) +#define IO_BANK0_GPIO26_CTRL_FUNCSEL_VALUE_PWM_A_5 _u(0x04) +#define IO_BANK0_GPIO26_CTRL_FUNCSEL_VALUE_SIO_26 _u(0x05) +#define IO_BANK0_GPIO26_CTRL_FUNCSEL_VALUE_PIO0_26 _u(0x06) +#define IO_BANK0_GPIO26_CTRL_FUNCSEL_VALUE_PIO1_26 _u(0x07) +#define IO_BANK0_GPIO26_CTRL_FUNCSEL_VALUE_USB_MUXING_VBUS_EN _u(0x09) +#define IO_BANK0_GPIO26_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO27_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO27_STATUS_OFFSET _u(0x000000d8) +#define IO_BANK0_GPIO27_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO27_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO27_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO27_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO27_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO27_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO27_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO27_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO27_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO27_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO27_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO27_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO27_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO27_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO27_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO27_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO27_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO27_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO27_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO27_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO27_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO27_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO27_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO27_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO27_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO27_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO27_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO27_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO27_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO27_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO27_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO27_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO27_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO27_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO27_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO27_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO27_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO27_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO27_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO27_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO27_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO27_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO27_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO27_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO27_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO27_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO27_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO27_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO27_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO27_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO27_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO27_CTRL_OFFSET _u(0x000000dc) +#define IO_BANK0_GPIO27_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO27_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO27_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO27_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO27_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO27_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO27_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO27_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO27_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO27_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO27_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO27_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO27_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO27_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO27_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO27_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO27_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO27_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO27_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO27_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO27_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO27_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO27_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO27_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO27_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO27_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO27_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO27_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO27_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO27_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO27_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO27_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO27_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO27_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO27_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO27_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO27_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO27_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO27_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO27_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO27_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO27_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO27_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi1_tx +// 0x02 -> uart1_rts +// 0x03 -> i2c1_scl +// 0x04 -> pwm_b_5 +// 0x05 -> sio_27 +// 0x06 -> pio0_27 +// 0x07 -> pio1_27 +// 0x09 -> usb_muxing_overcurr_detect +// 0x1f -> null +#define IO_BANK0_GPIO27_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO27_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO27_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO27_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO27_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO27_CTRL_FUNCSEL_VALUE_SPI1_TX _u(0x01) +#define IO_BANK0_GPIO27_CTRL_FUNCSEL_VALUE_UART1_RTS _u(0x02) +#define IO_BANK0_GPIO27_CTRL_FUNCSEL_VALUE_I2C1_SCL _u(0x03) +#define IO_BANK0_GPIO27_CTRL_FUNCSEL_VALUE_PWM_B_5 _u(0x04) +#define IO_BANK0_GPIO27_CTRL_FUNCSEL_VALUE_SIO_27 _u(0x05) +#define IO_BANK0_GPIO27_CTRL_FUNCSEL_VALUE_PIO0_27 _u(0x06) +#define IO_BANK0_GPIO27_CTRL_FUNCSEL_VALUE_PIO1_27 _u(0x07) +#define IO_BANK0_GPIO27_CTRL_FUNCSEL_VALUE_USB_MUXING_OVERCURR_DETECT _u(0x09) +#define IO_BANK0_GPIO27_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO28_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO28_STATUS_OFFSET _u(0x000000e0) +#define IO_BANK0_GPIO28_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO28_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO28_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO28_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO28_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO28_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO28_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO28_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO28_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO28_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO28_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO28_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO28_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO28_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO28_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO28_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO28_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO28_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO28_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO28_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO28_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO28_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO28_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO28_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO28_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO28_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO28_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO28_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO28_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO28_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO28_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO28_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO28_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO28_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO28_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO28_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO28_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO28_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO28_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO28_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO28_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO28_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO28_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO28_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO28_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO28_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO28_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO28_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO28_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO28_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO28_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO28_CTRL_OFFSET _u(0x000000e4) +#define IO_BANK0_GPIO28_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO28_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO28_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO28_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO28_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO28_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO28_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO28_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO28_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO28_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO28_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO28_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO28_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO28_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO28_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO28_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO28_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO28_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO28_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO28_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO28_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO28_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO28_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO28_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO28_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO28_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO28_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO28_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO28_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO28_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO28_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO28_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO28_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO28_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO28_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO28_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO28_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO28_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO28_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO28_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO28_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO28_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO28_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi1_rx +// 0x02 -> uart0_tx +// 0x03 -> i2c0_sda +// 0x04 -> pwm_a_6 +// 0x05 -> sio_28 +// 0x06 -> pio0_28 +// 0x07 -> pio1_28 +// 0x09 -> usb_muxing_vbus_detect +// 0x1f -> null +#define IO_BANK0_GPIO28_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO28_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO28_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO28_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO28_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO28_CTRL_FUNCSEL_VALUE_SPI1_RX _u(0x01) +#define IO_BANK0_GPIO28_CTRL_FUNCSEL_VALUE_UART0_TX _u(0x02) +#define IO_BANK0_GPIO28_CTRL_FUNCSEL_VALUE_I2C0_SDA _u(0x03) +#define IO_BANK0_GPIO28_CTRL_FUNCSEL_VALUE_PWM_A_6 _u(0x04) +#define IO_BANK0_GPIO28_CTRL_FUNCSEL_VALUE_SIO_28 _u(0x05) +#define IO_BANK0_GPIO28_CTRL_FUNCSEL_VALUE_PIO0_28 _u(0x06) +#define IO_BANK0_GPIO28_CTRL_FUNCSEL_VALUE_PIO1_28 _u(0x07) +#define IO_BANK0_GPIO28_CTRL_FUNCSEL_VALUE_USB_MUXING_VBUS_DETECT _u(0x09) +#define IO_BANK0_GPIO28_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_GPIO29_STATUS +// Description : GPIO status +#define IO_BANK0_GPIO29_STATUS_OFFSET _u(0x000000e8) +#define IO_BANK0_GPIO29_STATUS_BITS _u(0x050a3300) +#define IO_BANK0_GPIO29_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO29_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_BANK0_GPIO29_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_BANK0_GPIO29_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_BANK0_GPIO29_STATUS_IRQTOPROC_MSB _u(26) +#define IO_BANK0_GPIO29_STATUS_IRQTOPROC_LSB _u(26) +#define IO_BANK0_GPIO29_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO29_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_BANK0_GPIO29_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO29_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_BANK0_GPIO29_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_BANK0_GPIO29_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_BANK0_GPIO29_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO29_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_BANK0_GPIO29_STATUS_INTOPERI_RESET _u(0x0) +#define IO_BANK0_GPIO29_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_BANK0_GPIO29_STATUS_INTOPERI_MSB _u(19) +#define IO_BANK0_GPIO29_STATUS_INTOPERI_LSB _u(19) +#define IO_BANK0_GPIO29_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO29_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_BANK0_GPIO29_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_BANK0_GPIO29_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_BANK0_GPIO29_STATUS_INFROMPAD_MSB _u(17) +#define IO_BANK0_GPIO29_STATUS_INFROMPAD_LSB _u(17) +#define IO_BANK0_GPIO29_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO29_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_BANK0_GPIO29_STATUS_OETOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO29_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_BANK0_GPIO29_STATUS_OETOPAD_MSB _u(13) +#define IO_BANK0_GPIO29_STATUS_OETOPAD_LSB _u(13) +#define IO_BANK0_GPIO29_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO29_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO29_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO29_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_BANK0_GPIO29_STATUS_OEFROMPERI_MSB _u(12) +#define IO_BANK0_GPIO29_STATUS_OEFROMPERI_LSB _u(12) +#define IO_BANK0_GPIO29_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO29_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_BANK0_GPIO29_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_BANK0_GPIO29_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_BANK0_GPIO29_STATUS_OUTTOPAD_MSB _u(9) +#define IO_BANK0_GPIO29_STATUS_OUTTOPAD_LSB _u(9) +#define IO_BANK0_GPIO29_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO29_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_BANK0_GPIO29_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_BANK0_GPIO29_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_BANK0_GPIO29_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_BANK0_GPIO29_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_BANK0_GPIO29_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_GPIO29_CTRL +// Description : GPIO control including function select and overrides. +#define IO_BANK0_GPIO29_CTRL_OFFSET _u(0x000000ec) +#define IO_BANK0_GPIO29_CTRL_BITS _u(0x3003331f) +#define IO_BANK0_GPIO29_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO29_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_BANK0_GPIO29_CTRL_IRQOVER_RESET _u(0x0) +#define IO_BANK0_GPIO29_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_BANK0_GPIO29_CTRL_IRQOVER_MSB _u(29) +#define IO_BANK0_GPIO29_CTRL_IRQOVER_LSB _u(28) +#define IO_BANK0_GPIO29_CTRL_IRQOVER_ACCESS "RW" +#define IO_BANK0_GPIO29_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO29_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO29_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO29_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO29_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_BANK0_GPIO29_CTRL_INOVER_RESET _u(0x0) +#define IO_BANK0_GPIO29_CTRL_INOVER_BITS _u(0x00030000) +#define IO_BANK0_GPIO29_CTRL_INOVER_MSB _u(17) +#define IO_BANK0_GPIO29_CTRL_INOVER_LSB _u(16) +#define IO_BANK0_GPIO29_CTRL_INOVER_ACCESS "RW" +#define IO_BANK0_GPIO29_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO29_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO29_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO29_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO29_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_BANK0_GPIO29_CTRL_OEOVER_RESET _u(0x0) +#define IO_BANK0_GPIO29_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_BANK0_GPIO29_CTRL_OEOVER_MSB _u(13) +#define IO_BANK0_GPIO29_CTRL_OEOVER_LSB _u(12) +#define IO_BANK0_GPIO29_CTRL_OEOVER_ACCESS "RW" +#define IO_BANK0_GPIO29_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO29_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO29_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_BANK0_GPIO29_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO29_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_BANK0_GPIO29_CTRL_OUTOVER_RESET _u(0x0) +#define IO_BANK0_GPIO29_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_BANK0_GPIO29_CTRL_OUTOVER_MSB _u(9) +#define IO_BANK0_GPIO29_CTRL_OUTOVER_LSB _u(8) +#define IO_BANK0_GPIO29_CTRL_OUTOVER_ACCESS "RW" +#define IO_BANK0_GPIO29_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_BANK0_GPIO29_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_BANK0_GPIO29_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_BANK0_GPIO29_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_GPIO29_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x01 -> spi1_ss_n +// 0x02 -> uart0_rx +// 0x03 -> i2c0_scl +// 0x04 -> pwm_b_6 +// 0x05 -> sio_29 +// 0x06 -> pio0_29 +// 0x07 -> pio1_29 +// 0x09 -> usb_muxing_vbus_en +// 0x1f -> null +#define IO_BANK0_GPIO29_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_BANK0_GPIO29_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_BANK0_GPIO29_CTRL_FUNCSEL_MSB _u(4) +#define IO_BANK0_GPIO29_CTRL_FUNCSEL_LSB _u(0) +#define IO_BANK0_GPIO29_CTRL_FUNCSEL_ACCESS "RW" +#define IO_BANK0_GPIO29_CTRL_FUNCSEL_VALUE_SPI1_SS_N _u(0x01) +#define IO_BANK0_GPIO29_CTRL_FUNCSEL_VALUE_UART0_RX _u(0x02) +#define IO_BANK0_GPIO29_CTRL_FUNCSEL_VALUE_I2C0_SCL _u(0x03) +#define IO_BANK0_GPIO29_CTRL_FUNCSEL_VALUE_PWM_B_6 _u(0x04) +#define IO_BANK0_GPIO29_CTRL_FUNCSEL_VALUE_SIO_29 _u(0x05) +#define IO_BANK0_GPIO29_CTRL_FUNCSEL_VALUE_PIO0_29 _u(0x06) +#define IO_BANK0_GPIO29_CTRL_FUNCSEL_VALUE_PIO1_29 _u(0x07) +#define IO_BANK0_GPIO29_CTRL_FUNCSEL_VALUE_USB_MUXING_VBUS_EN _u(0x09) +#define IO_BANK0_GPIO29_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_BANK0_INTR0 +// Description : Raw Interrupts +#define IO_BANK0_INTR0_OFFSET _u(0x000000f0) +#define IO_BANK0_INTR0_BITS _u(0xffffffff) +#define IO_BANK0_INTR0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO7_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR0_GPIO7_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO7_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_INTR0_GPIO7_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_INTR0_GPIO7_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_INTR0_GPIO7_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO7_EDGE_LOW +// Description : None +#define IO_BANK0_INTR0_GPIO7_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO7_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_INTR0_GPIO7_EDGE_LOW_MSB _u(30) +#define IO_BANK0_INTR0_GPIO7_EDGE_LOW_LSB _u(30) +#define IO_BANK0_INTR0_GPIO7_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO7_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR0_GPIO7_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO7_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_INTR0_GPIO7_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_INTR0_GPIO7_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_INTR0_GPIO7_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO7_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR0_GPIO7_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO7_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_INTR0_GPIO7_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_INTR0_GPIO7_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_INTR0_GPIO7_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO6_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR0_GPIO6_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO6_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_INTR0_GPIO6_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_INTR0_GPIO6_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_INTR0_GPIO6_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO6_EDGE_LOW +// Description : None +#define IO_BANK0_INTR0_GPIO6_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO6_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_INTR0_GPIO6_EDGE_LOW_MSB _u(26) +#define IO_BANK0_INTR0_GPIO6_EDGE_LOW_LSB _u(26) +#define IO_BANK0_INTR0_GPIO6_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO6_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR0_GPIO6_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO6_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_INTR0_GPIO6_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_INTR0_GPIO6_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_INTR0_GPIO6_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO6_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR0_GPIO6_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO6_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_INTR0_GPIO6_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_INTR0_GPIO6_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_INTR0_GPIO6_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO5_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR0_GPIO5_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO5_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_INTR0_GPIO5_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_INTR0_GPIO5_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_INTR0_GPIO5_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO5_EDGE_LOW +// Description : None +#define IO_BANK0_INTR0_GPIO5_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO5_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_INTR0_GPIO5_EDGE_LOW_MSB _u(22) +#define IO_BANK0_INTR0_GPIO5_EDGE_LOW_LSB _u(22) +#define IO_BANK0_INTR0_GPIO5_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO5_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR0_GPIO5_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO5_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_INTR0_GPIO5_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_INTR0_GPIO5_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_INTR0_GPIO5_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO5_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR0_GPIO5_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO5_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_INTR0_GPIO5_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_INTR0_GPIO5_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_INTR0_GPIO5_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO4_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR0_GPIO4_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO4_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_INTR0_GPIO4_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_INTR0_GPIO4_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_INTR0_GPIO4_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO4_EDGE_LOW +// Description : None +#define IO_BANK0_INTR0_GPIO4_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO4_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_INTR0_GPIO4_EDGE_LOW_MSB _u(18) +#define IO_BANK0_INTR0_GPIO4_EDGE_LOW_LSB _u(18) +#define IO_BANK0_INTR0_GPIO4_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO4_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR0_GPIO4_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO4_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_INTR0_GPIO4_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_INTR0_GPIO4_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_INTR0_GPIO4_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO4_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR0_GPIO4_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO4_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_INTR0_GPIO4_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_INTR0_GPIO4_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_INTR0_GPIO4_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO3_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR0_GPIO3_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO3_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_INTR0_GPIO3_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_INTR0_GPIO3_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_INTR0_GPIO3_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO3_EDGE_LOW +// Description : None +#define IO_BANK0_INTR0_GPIO3_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO3_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_INTR0_GPIO3_EDGE_LOW_MSB _u(14) +#define IO_BANK0_INTR0_GPIO3_EDGE_LOW_LSB _u(14) +#define IO_BANK0_INTR0_GPIO3_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO3_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR0_GPIO3_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO3_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_INTR0_GPIO3_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_INTR0_GPIO3_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_INTR0_GPIO3_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO3_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR0_GPIO3_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO3_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_INTR0_GPIO3_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_INTR0_GPIO3_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_INTR0_GPIO3_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO2_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR0_GPIO2_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO2_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_INTR0_GPIO2_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_INTR0_GPIO2_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_INTR0_GPIO2_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO2_EDGE_LOW +// Description : None +#define IO_BANK0_INTR0_GPIO2_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO2_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_INTR0_GPIO2_EDGE_LOW_MSB _u(10) +#define IO_BANK0_INTR0_GPIO2_EDGE_LOW_LSB _u(10) +#define IO_BANK0_INTR0_GPIO2_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO2_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR0_GPIO2_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO2_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_INTR0_GPIO2_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_INTR0_GPIO2_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_INTR0_GPIO2_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO2_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR0_GPIO2_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO2_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_INTR0_GPIO2_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_INTR0_GPIO2_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_INTR0_GPIO2_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO1_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR0_GPIO1_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO1_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_INTR0_GPIO1_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_INTR0_GPIO1_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_INTR0_GPIO1_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO1_EDGE_LOW +// Description : None +#define IO_BANK0_INTR0_GPIO1_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO1_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_INTR0_GPIO1_EDGE_LOW_MSB _u(6) +#define IO_BANK0_INTR0_GPIO1_EDGE_LOW_LSB _u(6) +#define IO_BANK0_INTR0_GPIO1_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO1_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR0_GPIO1_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO1_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_INTR0_GPIO1_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_INTR0_GPIO1_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_INTR0_GPIO1_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO1_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR0_GPIO1_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO1_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_INTR0_GPIO1_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_INTR0_GPIO1_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_INTR0_GPIO1_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO0_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR0_GPIO0_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO0_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_INTR0_GPIO0_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_INTR0_GPIO0_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_INTR0_GPIO0_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO0_EDGE_LOW +// Description : None +#define IO_BANK0_INTR0_GPIO0_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO0_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_INTR0_GPIO0_EDGE_LOW_MSB _u(2) +#define IO_BANK0_INTR0_GPIO0_EDGE_LOW_LSB _u(2) +#define IO_BANK0_INTR0_GPIO0_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO0_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR0_GPIO0_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO0_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_INTR0_GPIO0_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_INTR0_GPIO0_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_INTR0_GPIO0_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR0_GPIO0_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR0_GPIO0_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR0_GPIO0_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_INTR0_GPIO0_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_INTR0_GPIO0_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_INTR0_GPIO0_LEVEL_LOW_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_INTR1 +// Description : Raw Interrupts +#define IO_BANK0_INTR1_OFFSET _u(0x000000f4) +#define IO_BANK0_INTR1_BITS _u(0xffffffff) +#define IO_BANK0_INTR1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO15_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR1_GPIO15_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO15_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_INTR1_GPIO15_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_INTR1_GPIO15_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_INTR1_GPIO15_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO15_EDGE_LOW +// Description : None +#define IO_BANK0_INTR1_GPIO15_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO15_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_INTR1_GPIO15_EDGE_LOW_MSB _u(30) +#define IO_BANK0_INTR1_GPIO15_EDGE_LOW_LSB _u(30) +#define IO_BANK0_INTR1_GPIO15_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO15_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR1_GPIO15_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO15_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_INTR1_GPIO15_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_INTR1_GPIO15_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_INTR1_GPIO15_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO15_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR1_GPIO15_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO15_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_INTR1_GPIO15_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_INTR1_GPIO15_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_INTR1_GPIO15_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO14_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR1_GPIO14_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO14_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_INTR1_GPIO14_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_INTR1_GPIO14_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_INTR1_GPIO14_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO14_EDGE_LOW +// Description : None +#define IO_BANK0_INTR1_GPIO14_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO14_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_INTR1_GPIO14_EDGE_LOW_MSB _u(26) +#define IO_BANK0_INTR1_GPIO14_EDGE_LOW_LSB _u(26) +#define IO_BANK0_INTR1_GPIO14_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO14_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR1_GPIO14_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO14_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_INTR1_GPIO14_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_INTR1_GPIO14_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_INTR1_GPIO14_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO14_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR1_GPIO14_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO14_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_INTR1_GPIO14_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_INTR1_GPIO14_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_INTR1_GPIO14_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO13_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR1_GPIO13_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO13_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_INTR1_GPIO13_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_INTR1_GPIO13_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_INTR1_GPIO13_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO13_EDGE_LOW +// Description : None +#define IO_BANK0_INTR1_GPIO13_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO13_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_INTR1_GPIO13_EDGE_LOW_MSB _u(22) +#define IO_BANK0_INTR1_GPIO13_EDGE_LOW_LSB _u(22) +#define IO_BANK0_INTR1_GPIO13_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO13_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR1_GPIO13_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO13_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_INTR1_GPIO13_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_INTR1_GPIO13_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_INTR1_GPIO13_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO13_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR1_GPIO13_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO13_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_INTR1_GPIO13_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_INTR1_GPIO13_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_INTR1_GPIO13_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO12_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR1_GPIO12_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO12_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_INTR1_GPIO12_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_INTR1_GPIO12_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_INTR1_GPIO12_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO12_EDGE_LOW +// Description : None +#define IO_BANK0_INTR1_GPIO12_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO12_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_INTR1_GPIO12_EDGE_LOW_MSB _u(18) +#define IO_BANK0_INTR1_GPIO12_EDGE_LOW_LSB _u(18) +#define IO_BANK0_INTR1_GPIO12_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO12_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR1_GPIO12_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO12_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_INTR1_GPIO12_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_INTR1_GPIO12_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_INTR1_GPIO12_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO12_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR1_GPIO12_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO12_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_INTR1_GPIO12_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_INTR1_GPIO12_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_INTR1_GPIO12_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO11_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR1_GPIO11_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO11_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_INTR1_GPIO11_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_INTR1_GPIO11_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_INTR1_GPIO11_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO11_EDGE_LOW +// Description : None +#define IO_BANK0_INTR1_GPIO11_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO11_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_INTR1_GPIO11_EDGE_LOW_MSB _u(14) +#define IO_BANK0_INTR1_GPIO11_EDGE_LOW_LSB _u(14) +#define IO_BANK0_INTR1_GPIO11_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO11_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR1_GPIO11_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO11_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_INTR1_GPIO11_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_INTR1_GPIO11_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_INTR1_GPIO11_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO11_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR1_GPIO11_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO11_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_INTR1_GPIO11_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_INTR1_GPIO11_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_INTR1_GPIO11_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO10_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR1_GPIO10_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO10_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_INTR1_GPIO10_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_INTR1_GPIO10_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_INTR1_GPIO10_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO10_EDGE_LOW +// Description : None +#define IO_BANK0_INTR1_GPIO10_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO10_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_INTR1_GPIO10_EDGE_LOW_MSB _u(10) +#define IO_BANK0_INTR1_GPIO10_EDGE_LOW_LSB _u(10) +#define IO_BANK0_INTR1_GPIO10_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO10_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR1_GPIO10_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO10_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_INTR1_GPIO10_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_INTR1_GPIO10_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_INTR1_GPIO10_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO10_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR1_GPIO10_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO10_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_INTR1_GPIO10_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_INTR1_GPIO10_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_INTR1_GPIO10_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO9_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR1_GPIO9_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO9_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_INTR1_GPIO9_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_INTR1_GPIO9_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_INTR1_GPIO9_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO9_EDGE_LOW +// Description : None +#define IO_BANK0_INTR1_GPIO9_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO9_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_INTR1_GPIO9_EDGE_LOW_MSB _u(6) +#define IO_BANK0_INTR1_GPIO9_EDGE_LOW_LSB _u(6) +#define IO_BANK0_INTR1_GPIO9_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO9_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR1_GPIO9_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO9_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_INTR1_GPIO9_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_INTR1_GPIO9_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_INTR1_GPIO9_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO9_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR1_GPIO9_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO9_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_INTR1_GPIO9_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_INTR1_GPIO9_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_INTR1_GPIO9_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO8_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR1_GPIO8_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO8_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_INTR1_GPIO8_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_INTR1_GPIO8_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_INTR1_GPIO8_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO8_EDGE_LOW +// Description : None +#define IO_BANK0_INTR1_GPIO8_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO8_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_INTR1_GPIO8_EDGE_LOW_MSB _u(2) +#define IO_BANK0_INTR1_GPIO8_EDGE_LOW_LSB _u(2) +#define IO_BANK0_INTR1_GPIO8_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO8_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR1_GPIO8_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO8_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_INTR1_GPIO8_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_INTR1_GPIO8_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_INTR1_GPIO8_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR1_GPIO8_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR1_GPIO8_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR1_GPIO8_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_INTR1_GPIO8_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_INTR1_GPIO8_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_INTR1_GPIO8_LEVEL_LOW_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_INTR2 +// Description : Raw Interrupts +#define IO_BANK0_INTR2_OFFSET _u(0x000000f8) +#define IO_BANK0_INTR2_BITS _u(0xffffffff) +#define IO_BANK0_INTR2_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO23_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR2_GPIO23_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO23_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_INTR2_GPIO23_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_INTR2_GPIO23_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_INTR2_GPIO23_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO23_EDGE_LOW +// Description : None +#define IO_BANK0_INTR2_GPIO23_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO23_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_INTR2_GPIO23_EDGE_LOW_MSB _u(30) +#define IO_BANK0_INTR2_GPIO23_EDGE_LOW_LSB _u(30) +#define IO_BANK0_INTR2_GPIO23_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO23_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR2_GPIO23_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO23_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_INTR2_GPIO23_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_INTR2_GPIO23_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_INTR2_GPIO23_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO23_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR2_GPIO23_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO23_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_INTR2_GPIO23_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_INTR2_GPIO23_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_INTR2_GPIO23_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO22_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR2_GPIO22_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO22_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_INTR2_GPIO22_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_INTR2_GPIO22_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_INTR2_GPIO22_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO22_EDGE_LOW +// Description : None +#define IO_BANK0_INTR2_GPIO22_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO22_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_INTR2_GPIO22_EDGE_LOW_MSB _u(26) +#define IO_BANK0_INTR2_GPIO22_EDGE_LOW_LSB _u(26) +#define IO_BANK0_INTR2_GPIO22_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO22_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR2_GPIO22_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO22_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_INTR2_GPIO22_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_INTR2_GPIO22_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_INTR2_GPIO22_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO22_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR2_GPIO22_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO22_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_INTR2_GPIO22_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_INTR2_GPIO22_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_INTR2_GPIO22_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO21_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR2_GPIO21_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO21_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_INTR2_GPIO21_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_INTR2_GPIO21_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_INTR2_GPIO21_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO21_EDGE_LOW +// Description : None +#define IO_BANK0_INTR2_GPIO21_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO21_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_INTR2_GPIO21_EDGE_LOW_MSB _u(22) +#define IO_BANK0_INTR2_GPIO21_EDGE_LOW_LSB _u(22) +#define IO_BANK0_INTR2_GPIO21_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO21_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR2_GPIO21_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO21_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_INTR2_GPIO21_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_INTR2_GPIO21_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_INTR2_GPIO21_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO21_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR2_GPIO21_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO21_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_INTR2_GPIO21_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_INTR2_GPIO21_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_INTR2_GPIO21_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO20_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR2_GPIO20_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO20_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_INTR2_GPIO20_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_INTR2_GPIO20_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_INTR2_GPIO20_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO20_EDGE_LOW +// Description : None +#define IO_BANK0_INTR2_GPIO20_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO20_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_INTR2_GPIO20_EDGE_LOW_MSB _u(18) +#define IO_BANK0_INTR2_GPIO20_EDGE_LOW_LSB _u(18) +#define IO_BANK0_INTR2_GPIO20_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO20_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR2_GPIO20_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO20_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_INTR2_GPIO20_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_INTR2_GPIO20_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_INTR2_GPIO20_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO20_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR2_GPIO20_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO20_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_INTR2_GPIO20_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_INTR2_GPIO20_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_INTR2_GPIO20_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO19_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR2_GPIO19_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO19_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_INTR2_GPIO19_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_INTR2_GPIO19_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_INTR2_GPIO19_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO19_EDGE_LOW +// Description : None +#define IO_BANK0_INTR2_GPIO19_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO19_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_INTR2_GPIO19_EDGE_LOW_MSB _u(14) +#define IO_BANK0_INTR2_GPIO19_EDGE_LOW_LSB _u(14) +#define IO_BANK0_INTR2_GPIO19_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO19_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR2_GPIO19_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO19_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_INTR2_GPIO19_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_INTR2_GPIO19_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_INTR2_GPIO19_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO19_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR2_GPIO19_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO19_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_INTR2_GPIO19_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_INTR2_GPIO19_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_INTR2_GPIO19_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO18_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR2_GPIO18_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO18_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_INTR2_GPIO18_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_INTR2_GPIO18_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_INTR2_GPIO18_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO18_EDGE_LOW +// Description : None +#define IO_BANK0_INTR2_GPIO18_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO18_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_INTR2_GPIO18_EDGE_LOW_MSB _u(10) +#define IO_BANK0_INTR2_GPIO18_EDGE_LOW_LSB _u(10) +#define IO_BANK0_INTR2_GPIO18_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO18_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR2_GPIO18_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO18_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_INTR2_GPIO18_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_INTR2_GPIO18_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_INTR2_GPIO18_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO18_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR2_GPIO18_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO18_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_INTR2_GPIO18_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_INTR2_GPIO18_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_INTR2_GPIO18_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO17_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR2_GPIO17_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO17_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_INTR2_GPIO17_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_INTR2_GPIO17_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_INTR2_GPIO17_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO17_EDGE_LOW +// Description : None +#define IO_BANK0_INTR2_GPIO17_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO17_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_INTR2_GPIO17_EDGE_LOW_MSB _u(6) +#define IO_BANK0_INTR2_GPIO17_EDGE_LOW_LSB _u(6) +#define IO_BANK0_INTR2_GPIO17_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO17_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR2_GPIO17_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO17_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_INTR2_GPIO17_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_INTR2_GPIO17_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_INTR2_GPIO17_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO17_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR2_GPIO17_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO17_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_INTR2_GPIO17_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_INTR2_GPIO17_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_INTR2_GPIO17_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO16_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR2_GPIO16_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO16_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_INTR2_GPIO16_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_INTR2_GPIO16_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_INTR2_GPIO16_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO16_EDGE_LOW +// Description : None +#define IO_BANK0_INTR2_GPIO16_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO16_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_INTR2_GPIO16_EDGE_LOW_MSB _u(2) +#define IO_BANK0_INTR2_GPIO16_EDGE_LOW_LSB _u(2) +#define IO_BANK0_INTR2_GPIO16_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO16_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR2_GPIO16_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO16_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_INTR2_GPIO16_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_INTR2_GPIO16_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_INTR2_GPIO16_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR2_GPIO16_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR2_GPIO16_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR2_GPIO16_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_INTR2_GPIO16_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_INTR2_GPIO16_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_INTR2_GPIO16_LEVEL_LOW_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_INTR3 +// Description : Raw Interrupts +#define IO_BANK0_INTR3_OFFSET _u(0x000000fc) +#define IO_BANK0_INTR3_BITS _u(0x00ffffff) +#define IO_BANK0_INTR3_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO29_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR3_GPIO29_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO29_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_INTR3_GPIO29_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_INTR3_GPIO29_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_INTR3_GPIO29_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO29_EDGE_LOW +// Description : None +#define IO_BANK0_INTR3_GPIO29_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO29_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_INTR3_GPIO29_EDGE_LOW_MSB _u(22) +#define IO_BANK0_INTR3_GPIO29_EDGE_LOW_LSB _u(22) +#define IO_BANK0_INTR3_GPIO29_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO29_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR3_GPIO29_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO29_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_INTR3_GPIO29_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_INTR3_GPIO29_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_INTR3_GPIO29_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO29_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR3_GPIO29_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO29_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_INTR3_GPIO29_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_INTR3_GPIO29_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_INTR3_GPIO29_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO28_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR3_GPIO28_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO28_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_INTR3_GPIO28_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_INTR3_GPIO28_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_INTR3_GPIO28_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO28_EDGE_LOW +// Description : None +#define IO_BANK0_INTR3_GPIO28_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO28_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_INTR3_GPIO28_EDGE_LOW_MSB _u(18) +#define IO_BANK0_INTR3_GPIO28_EDGE_LOW_LSB _u(18) +#define IO_BANK0_INTR3_GPIO28_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO28_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR3_GPIO28_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO28_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_INTR3_GPIO28_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_INTR3_GPIO28_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_INTR3_GPIO28_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO28_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR3_GPIO28_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO28_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_INTR3_GPIO28_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_INTR3_GPIO28_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_INTR3_GPIO28_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO27_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR3_GPIO27_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO27_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_INTR3_GPIO27_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_INTR3_GPIO27_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_INTR3_GPIO27_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO27_EDGE_LOW +// Description : None +#define IO_BANK0_INTR3_GPIO27_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO27_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_INTR3_GPIO27_EDGE_LOW_MSB _u(14) +#define IO_BANK0_INTR3_GPIO27_EDGE_LOW_LSB _u(14) +#define IO_BANK0_INTR3_GPIO27_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO27_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR3_GPIO27_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO27_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_INTR3_GPIO27_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_INTR3_GPIO27_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_INTR3_GPIO27_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO27_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR3_GPIO27_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO27_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_INTR3_GPIO27_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_INTR3_GPIO27_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_INTR3_GPIO27_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO26_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR3_GPIO26_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO26_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_INTR3_GPIO26_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_INTR3_GPIO26_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_INTR3_GPIO26_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO26_EDGE_LOW +// Description : None +#define IO_BANK0_INTR3_GPIO26_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO26_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_INTR3_GPIO26_EDGE_LOW_MSB _u(10) +#define IO_BANK0_INTR3_GPIO26_EDGE_LOW_LSB _u(10) +#define IO_BANK0_INTR3_GPIO26_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO26_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR3_GPIO26_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO26_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_INTR3_GPIO26_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_INTR3_GPIO26_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_INTR3_GPIO26_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO26_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR3_GPIO26_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO26_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_INTR3_GPIO26_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_INTR3_GPIO26_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_INTR3_GPIO26_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO25_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR3_GPIO25_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO25_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_INTR3_GPIO25_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_INTR3_GPIO25_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_INTR3_GPIO25_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO25_EDGE_LOW +// Description : None +#define IO_BANK0_INTR3_GPIO25_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO25_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_INTR3_GPIO25_EDGE_LOW_MSB _u(6) +#define IO_BANK0_INTR3_GPIO25_EDGE_LOW_LSB _u(6) +#define IO_BANK0_INTR3_GPIO25_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO25_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR3_GPIO25_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO25_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_INTR3_GPIO25_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_INTR3_GPIO25_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_INTR3_GPIO25_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO25_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR3_GPIO25_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO25_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_INTR3_GPIO25_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_INTR3_GPIO25_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_INTR3_GPIO25_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO24_EDGE_HIGH +// Description : None +#define IO_BANK0_INTR3_GPIO24_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO24_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_INTR3_GPIO24_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_INTR3_GPIO24_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_INTR3_GPIO24_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO24_EDGE_LOW +// Description : None +#define IO_BANK0_INTR3_GPIO24_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO24_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_INTR3_GPIO24_EDGE_LOW_MSB _u(2) +#define IO_BANK0_INTR3_GPIO24_EDGE_LOW_LSB _u(2) +#define IO_BANK0_INTR3_GPIO24_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO24_LEVEL_HIGH +// Description : None +#define IO_BANK0_INTR3_GPIO24_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO24_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_INTR3_GPIO24_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_INTR3_GPIO24_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_INTR3_GPIO24_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_INTR3_GPIO24_LEVEL_LOW +// Description : None +#define IO_BANK0_INTR3_GPIO24_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_INTR3_GPIO24_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_INTR3_GPIO24_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_INTR3_GPIO24_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_INTR3_GPIO24_LEVEL_LOW_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_PROC0_INTE0 +// Description : Interrupt Enable for proc0 +#define IO_BANK0_PROC0_INTE0_OFFSET _u(0x00000100) +#define IO_BANK0_PROC0_INTE0_BITS _u(0xffffffff) +#define IO_BANK0_PROC0_INTE0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO7_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO7_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO7_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_PROC0_INTE0_GPIO7_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_PROC0_INTE0_GPIO7_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_PROC0_INTE0_GPIO7_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO7_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO7_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO7_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_PROC0_INTE0_GPIO7_EDGE_LOW_MSB _u(30) +#define IO_BANK0_PROC0_INTE0_GPIO7_EDGE_LOW_LSB _u(30) +#define IO_BANK0_PROC0_INTE0_GPIO7_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO7_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO7_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO7_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_PROC0_INTE0_GPIO7_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_PROC0_INTE0_GPIO7_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_PROC0_INTE0_GPIO7_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO7_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO7_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO7_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_PROC0_INTE0_GPIO7_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_PROC0_INTE0_GPIO7_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_PROC0_INTE0_GPIO7_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO6_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO6_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO6_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_PROC0_INTE0_GPIO6_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_PROC0_INTE0_GPIO6_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_PROC0_INTE0_GPIO6_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO6_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO6_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO6_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_PROC0_INTE0_GPIO6_EDGE_LOW_MSB _u(26) +#define IO_BANK0_PROC0_INTE0_GPIO6_EDGE_LOW_LSB _u(26) +#define IO_BANK0_PROC0_INTE0_GPIO6_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO6_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO6_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO6_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_PROC0_INTE0_GPIO6_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_PROC0_INTE0_GPIO6_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_PROC0_INTE0_GPIO6_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO6_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO6_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO6_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_PROC0_INTE0_GPIO6_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_PROC0_INTE0_GPIO6_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_PROC0_INTE0_GPIO6_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO5_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO5_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO5_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC0_INTE0_GPIO5_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC0_INTE0_GPIO5_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC0_INTE0_GPIO5_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO5_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO5_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO5_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC0_INTE0_GPIO5_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC0_INTE0_GPIO5_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC0_INTE0_GPIO5_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO5_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO5_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO5_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC0_INTE0_GPIO5_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC0_INTE0_GPIO5_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC0_INTE0_GPIO5_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO5_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO5_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO5_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC0_INTE0_GPIO5_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC0_INTE0_GPIO5_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC0_INTE0_GPIO5_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO4_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO4_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO4_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC0_INTE0_GPIO4_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC0_INTE0_GPIO4_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC0_INTE0_GPIO4_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO4_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO4_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO4_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC0_INTE0_GPIO4_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC0_INTE0_GPIO4_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC0_INTE0_GPIO4_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO4_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO4_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO4_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC0_INTE0_GPIO4_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC0_INTE0_GPIO4_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC0_INTE0_GPIO4_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO4_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO4_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO4_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC0_INTE0_GPIO4_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC0_INTE0_GPIO4_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC0_INTE0_GPIO4_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO3_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO3_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO3_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC0_INTE0_GPIO3_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC0_INTE0_GPIO3_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC0_INTE0_GPIO3_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO3_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO3_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO3_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC0_INTE0_GPIO3_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC0_INTE0_GPIO3_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC0_INTE0_GPIO3_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO3_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO3_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO3_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC0_INTE0_GPIO3_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC0_INTE0_GPIO3_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC0_INTE0_GPIO3_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO3_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO3_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO3_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC0_INTE0_GPIO3_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC0_INTE0_GPIO3_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC0_INTE0_GPIO3_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO2_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO2_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO2_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC0_INTE0_GPIO2_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC0_INTE0_GPIO2_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC0_INTE0_GPIO2_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO2_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO2_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO2_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC0_INTE0_GPIO2_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC0_INTE0_GPIO2_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC0_INTE0_GPIO2_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO2_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO2_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO2_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC0_INTE0_GPIO2_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC0_INTE0_GPIO2_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC0_INTE0_GPIO2_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO2_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO2_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO2_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC0_INTE0_GPIO2_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC0_INTE0_GPIO2_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC0_INTE0_GPIO2_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO1_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO1_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO1_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC0_INTE0_GPIO1_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC0_INTE0_GPIO1_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC0_INTE0_GPIO1_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO1_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO1_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO1_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC0_INTE0_GPIO1_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC0_INTE0_GPIO1_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC0_INTE0_GPIO1_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO1_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO1_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO1_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC0_INTE0_GPIO1_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC0_INTE0_GPIO1_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC0_INTE0_GPIO1_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO1_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO1_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO1_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC0_INTE0_GPIO1_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC0_INTE0_GPIO1_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC0_INTE0_GPIO1_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO0_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO0_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO0_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC0_INTE0_GPIO0_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC0_INTE0_GPIO0_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC0_INTE0_GPIO0_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO0_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO0_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO0_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC0_INTE0_GPIO0_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC0_INTE0_GPIO0_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC0_INTE0_GPIO0_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO0_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO0_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO0_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC0_INTE0_GPIO0_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC0_INTE0_GPIO0_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC0_INTE0_GPIO0_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE0_GPIO0_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE0_GPIO0_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE0_GPIO0_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC0_INTE0_GPIO0_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC0_INTE0_GPIO0_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC0_INTE0_GPIO0_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_PROC0_INTE1 +// Description : Interrupt Enable for proc0 +#define IO_BANK0_PROC0_INTE1_OFFSET _u(0x00000104) +#define IO_BANK0_PROC0_INTE1_BITS _u(0xffffffff) +#define IO_BANK0_PROC0_INTE1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO15_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO15_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO15_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_PROC0_INTE1_GPIO15_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_PROC0_INTE1_GPIO15_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_PROC0_INTE1_GPIO15_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO15_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO15_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO15_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_PROC0_INTE1_GPIO15_EDGE_LOW_MSB _u(30) +#define IO_BANK0_PROC0_INTE1_GPIO15_EDGE_LOW_LSB _u(30) +#define IO_BANK0_PROC0_INTE1_GPIO15_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO15_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO15_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO15_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_PROC0_INTE1_GPIO15_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_PROC0_INTE1_GPIO15_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_PROC0_INTE1_GPIO15_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO15_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO15_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO15_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_PROC0_INTE1_GPIO15_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_PROC0_INTE1_GPIO15_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_PROC0_INTE1_GPIO15_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO14_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO14_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO14_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_PROC0_INTE1_GPIO14_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_PROC0_INTE1_GPIO14_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_PROC0_INTE1_GPIO14_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO14_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO14_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO14_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_PROC0_INTE1_GPIO14_EDGE_LOW_MSB _u(26) +#define IO_BANK0_PROC0_INTE1_GPIO14_EDGE_LOW_LSB _u(26) +#define IO_BANK0_PROC0_INTE1_GPIO14_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO14_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO14_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO14_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_PROC0_INTE1_GPIO14_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_PROC0_INTE1_GPIO14_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_PROC0_INTE1_GPIO14_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO14_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO14_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO14_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_PROC0_INTE1_GPIO14_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_PROC0_INTE1_GPIO14_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_PROC0_INTE1_GPIO14_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO13_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO13_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO13_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC0_INTE1_GPIO13_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC0_INTE1_GPIO13_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC0_INTE1_GPIO13_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO13_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO13_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO13_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC0_INTE1_GPIO13_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC0_INTE1_GPIO13_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC0_INTE1_GPIO13_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO13_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO13_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO13_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC0_INTE1_GPIO13_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC0_INTE1_GPIO13_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC0_INTE1_GPIO13_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO13_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO13_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO13_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC0_INTE1_GPIO13_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC0_INTE1_GPIO13_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC0_INTE1_GPIO13_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO12_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO12_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO12_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC0_INTE1_GPIO12_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC0_INTE1_GPIO12_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC0_INTE1_GPIO12_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO12_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO12_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO12_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC0_INTE1_GPIO12_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC0_INTE1_GPIO12_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC0_INTE1_GPIO12_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO12_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO12_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO12_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC0_INTE1_GPIO12_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC0_INTE1_GPIO12_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC0_INTE1_GPIO12_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO12_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO12_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO12_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC0_INTE1_GPIO12_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC0_INTE1_GPIO12_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC0_INTE1_GPIO12_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO11_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO11_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO11_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC0_INTE1_GPIO11_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC0_INTE1_GPIO11_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC0_INTE1_GPIO11_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO11_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO11_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO11_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC0_INTE1_GPIO11_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC0_INTE1_GPIO11_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC0_INTE1_GPIO11_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO11_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO11_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO11_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC0_INTE1_GPIO11_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC0_INTE1_GPIO11_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC0_INTE1_GPIO11_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO11_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO11_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO11_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC0_INTE1_GPIO11_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC0_INTE1_GPIO11_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC0_INTE1_GPIO11_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO10_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO10_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO10_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC0_INTE1_GPIO10_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC0_INTE1_GPIO10_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC0_INTE1_GPIO10_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO10_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO10_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO10_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC0_INTE1_GPIO10_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC0_INTE1_GPIO10_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC0_INTE1_GPIO10_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO10_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO10_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO10_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC0_INTE1_GPIO10_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC0_INTE1_GPIO10_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC0_INTE1_GPIO10_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO10_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO10_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO10_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC0_INTE1_GPIO10_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC0_INTE1_GPIO10_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC0_INTE1_GPIO10_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO9_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO9_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO9_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC0_INTE1_GPIO9_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC0_INTE1_GPIO9_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC0_INTE1_GPIO9_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO9_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO9_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO9_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC0_INTE1_GPIO9_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC0_INTE1_GPIO9_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC0_INTE1_GPIO9_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO9_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO9_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO9_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC0_INTE1_GPIO9_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC0_INTE1_GPIO9_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC0_INTE1_GPIO9_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO9_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO9_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO9_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC0_INTE1_GPIO9_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC0_INTE1_GPIO9_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC0_INTE1_GPIO9_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO8_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO8_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO8_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC0_INTE1_GPIO8_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC0_INTE1_GPIO8_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC0_INTE1_GPIO8_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO8_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO8_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO8_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC0_INTE1_GPIO8_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC0_INTE1_GPIO8_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC0_INTE1_GPIO8_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO8_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO8_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO8_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC0_INTE1_GPIO8_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC0_INTE1_GPIO8_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC0_INTE1_GPIO8_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE1_GPIO8_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE1_GPIO8_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE1_GPIO8_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC0_INTE1_GPIO8_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC0_INTE1_GPIO8_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC0_INTE1_GPIO8_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_PROC0_INTE2 +// Description : Interrupt Enable for proc0 +#define IO_BANK0_PROC0_INTE2_OFFSET _u(0x00000108) +#define IO_BANK0_PROC0_INTE2_BITS _u(0xffffffff) +#define IO_BANK0_PROC0_INTE2_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO23_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO23_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO23_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_PROC0_INTE2_GPIO23_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_PROC0_INTE2_GPIO23_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_PROC0_INTE2_GPIO23_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO23_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO23_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO23_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_PROC0_INTE2_GPIO23_EDGE_LOW_MSB _u(30) +#define IO_BANK0_PROC0_INTE2_GPIO23_EDGE_LOW_LSB _u(30) +#define IO_BANK0_PROC0_INTE2_GPIO23_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO23_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO23_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO23_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_PROC0_INTE2_GPIO23_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_PROC0_INTE2_GPIO23_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_PROC0_INTE2_GPIO23_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO23_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO23_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO23_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_PROC0_INTE2_GPIO23_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_PROC0_INTE2_GPIO23_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_PROC0_INTE2_GPIO23_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO22_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO22_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO22_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_PROC0_INTE2_GPIO22_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_PROC0_INTE2_GPIO22_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_PROC0_INTE2_GPIO22_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO22_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO22_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO22_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_PROC0_INTE2_GPIO22_EDGE_LOW_MSB _u(26) +#define IO_BANK0_PROC0_INTE2_GPIO22_EDGE_LOW_LSB _u(26) +#define IO_BANK0_PROC0_INTE2_GPIO22_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO22_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO22_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO22_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_PROC0_INTE2_GPIO22_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_PROC0_INTE2_GPIO22_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_PROC0_INTE2_GPIO22_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO22_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO22_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO22_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_PROC0_INTE2_GPIO22_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_PROC0_INTE2_GPIO22_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_PROC0_INTE2_GPIO22_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO21_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO21_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO21_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC0_INTE2_GPIO21_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC0_INTE2_GPIO21_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC0_INTE2_GPIO21_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO21_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO21_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO21_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC0_INTE2_GPIO21_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC0_INTE2_GPIO21_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC0_INTE2_GPIO21_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO21_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO21_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO21_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC0_INTE2_GPIO21_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC0_INTE2_GPIO21_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC0_INTE2_GPIO21_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO21_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO21_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO21_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC0_INTE2_GPIO21_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC0_INTE2_GPIO21_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC0_INTE2_GPIO21_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO20_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO20_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO20_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC0_INTE2_GPIO20_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC0_INTE2_GPIO20_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC0_INTE2_GPIO20_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO20_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO20_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO20_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC0_INTE2_GPIO20_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC0_INTE2_GPIO20_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC0_INTE2_GPIO20_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO20_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO20_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO20_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC0_INTE2_GPIO20_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC0_INTE2_GPIO20_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC0_INTE2_GPIO20_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO20_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO20_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO20_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC0_INTE2_GPIO20_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC0_INTE2_GPIO20_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC0_INTE2_GPIO20_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO19_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO19_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO19_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC0_INTE2_GPIO19_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC0_INTE2_GPIO19_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC0_INTE2_GPIO19_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO19_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO19_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO19_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC0_INTE2_GPIO19_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC0_INTE2_GPIO19_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC0_INTE2_GPIO19_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO19_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO19_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO19_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC0_INTE2_GPIO19_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC0_INTE2_GPIO19_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC0_INTE2_GPIO19_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO19_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO19_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO19_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC0_INTE2_GPIO19_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC0_INTE2_GPIO19_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC0_INTE2_GPIO19_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO18_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO18_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO18_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC0_INTE2_GPIO18_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC0_INTE2_GPIO18_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC0_INTE2_GPIO18_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO18_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO18_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO18_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC0_INTE2_GPIO18_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC0_INTE2_GPIO18_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC0_INTE2_GPIO18_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO18_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO18_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO18_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC0_INTE2_GPIO18_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC0_INTE2_GPIO18_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC0_INTE2_GPIO18_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO18_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO18_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO18_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC0_INTE2_GPIO18_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC0_INTE2_GPIO18_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC0_INTE2_GPIO18_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO17_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO17_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO17_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC0_INTE2_GPIO17_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC0_INTE2_GPIO17_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC0_INTE2_GPIO17_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO17_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO17_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO17_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC0_INTE2_GPIO17_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC0_INTE2_GPIO17_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC0_INTE2_GPIO17_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO17_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO17_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO17_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC0_INTE2_GPIO17_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC0_INTE2_GPIO17_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC0_INTE2_GPIO17_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO17_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO17_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO17_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC0_INTE2_GPIO17_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC0_INTE2_GPIO17_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC0_INTE2_GPIO17_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO16_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO16_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO16_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC0_INTE2_GPIO16_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC0_INTE2_GPIO16_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC0_INTE2_GPIO16_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO16_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO16_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO16_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC0_INTE2_GPIO16_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC0_INTE2_GPIO16_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC0_INTE2_GPIO16_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO16_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO16_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO16_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC0_INTE2_GPIO16_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC0_INTE2_GPIO16_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC0_INTE2_GPIO16_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE2_GPIO16_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE2_GPIO16_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE2_GPIO16_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC0_INTE2_GPIO16_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC0_INTE2_GPIO16_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC0_INTE2_GPIO16_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_PROC0_INTE3 +// Description : Interrupt Enable for proc0 +#define IO_BANK0_PROC0_INTE3_OFFSET _u(0x0000010c) +#define IO_BANK0_PROC0_INTE3_BITS _u(0x00ffffff) +#define IO_BANK0_PROC0_INTE3_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO29_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO29_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO29_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC0_INTE3_GPIO29_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC0_INTE3_GPIO29_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC0_INTE3_GPIO29_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO29_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO29_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO29_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC0_INTE3_GPIO29_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC0_INTE3_GPIO29_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC0_INTE3_GPIO29_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO29_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO29_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO29_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC0_INTE3_GPIO29_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC0_INTE3_GPIO29_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC0_INTE3_GPIO29_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO29_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO29_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO29_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC0_INTE3_GPIO29_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC0_INTE3_GPIO29_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC0_INTE3_GPIO29_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO28_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO28_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO28_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC0_INTE3_GPIO28_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC0_INTE3_GPIO28_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC0_INTE3_GPIO28_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO28_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO28_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO28_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC0_INTE3_GPIO28_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC0_INTE3_GPIO28_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC0_INTE3_GPIO28_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO28_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO28_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO28_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC0_INTE3_GPIO28_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC0_INTE3_GPIO28_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC0_INTE3_GPIO28_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO28_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO28_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO28_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC0_INTE3_GPIO28_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC0_INTE3_GPIO28_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC0_INTE3_GPIO28_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO27_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO27_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO27_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC0_INTE3_GPIO27_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC0_INTE3_GPIO27_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC0_INTE3_GPIO27_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO27_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO27_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO27_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC0_INTE3_GPIO27_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC0_INTE3_GPIO27_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC0_INTE3_GPIO27_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO27_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO27_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO27_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC0_INTE3_GPIO27_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC0_INTE3_GPIO27_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC0_INTE3_GPIO27_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO27_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO27_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO27_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC0_INTE3_GPIO27_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC0_INTE3_GPIO27_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC0_INTE3_GPIO27_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO26_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO26_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO26_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC0_INTE3_GPIO26_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC0_INTE3_GPIO26_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC0_INTE3_GPIO26_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO26_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO26_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO26_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC0_INTE3_GPIO26_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC0_INTE3_GPIO26_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC0_INTE3_GPIO26_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO26_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO26_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO26_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC0_INTE3_GPIO26_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC0_INTE3_GPIO26_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC0_INTE3_GPIO26_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO26_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO26_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO26_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC0_INTE3_GPIO26_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC0_INTE3_GPIO26_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC0_INTE3_GPIO26_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO25_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO25_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO25_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC0_INTE3_GPIO25_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC0_INTE3_GPIO25_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC0_INTE3_GPIO25_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO25_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO25_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO25_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC0_INTE3_GPIO25_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC0_INTE3_GPIO25_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC0_INTE3_GPIO25_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO25_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO25_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO25_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC0_INTE3_GPIO25_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC0_INTE3_GPIO25_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC0_INTE3_GPIO25_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO25_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO25_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO25_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC0_INTE3_GPIO25_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC0_INTE3_GPIO25_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC0_INTE3_GPIO25_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO24_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO24_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO24_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC0_INTE3_GPIO24_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC0_INTE3_GPIO24_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC0_INTE3_GPIO24_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO24_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO24_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO24_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC0_INTE3_GPIO24_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC0_INTE3_GPIO24_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC0_INTE3_GPIO24_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO24_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO24_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO24_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC0_INTE3_GPIO24_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC0_INTE3_GPIO24_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC0_INTE3_GPIO24_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTE3_GPIO24_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTE3_GPIO24_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTE3_GPIO24_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC0_INTE3_GPIO24_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC0_INTE3_GPIO24_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC0_INTE3_GPIO24_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_PROC0_INTF0 +// Description : Interrupt Force for proc0 +#define IO_BANK0_PROC0_INTF0_OFFSET _u(0x00000110) +#define IO_BANK0_PROC0_INTF0_BITS _u(0xffffffff) +#define IO_BANK0_PROC0_INTF0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO7_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO7_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO7_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_PROC0_INTF0_GPIO7_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_PROC0_INTF0_GPIO7_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_PROC0_INTF0_GPIO7_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO7_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO7_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO7_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_PROC0_INTF0_GPIO7_EDGE_LOW_MSB _u(30) +#define IO_BANK0_PROC0_INTF0_GPIO7_EDGE_LOW_LSB _u(30) +#define IO_BANK0_PROC0_INTF0_GPIO7_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO7_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO7_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO7_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_PROC0_INTF0_GPIO7_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_PROC0_INTF0_GPIO7_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_PROC0_INTF0_GPIO7_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO7_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO7_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO7_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_PROC0_INTF0_GPIO7_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_PROC0_INTF0_GPIO7_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_PROC0_INTF0_GPIO7_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO6_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO6_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO6_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_PROC0_INTF0_GPIO6_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_PROC0_INTF0_GPIO6_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_PROC0_INTF0_GPIO6_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO6_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO6_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO6_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_PROC0_INTF0_GPIO6_EDGE_LOW_MSB _u(26) +#define IO_BANK0_PROC0_INTF0_GPIO6_EDGE_LOW_LSB _u(26) +#define IO_BANK0_PROC0_INTF0_GPIO6_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO6_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO6_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO6_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_PROC0_INTF0_GPIO6_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_PROC0_INTF0_GPIO6_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_PROC0_INTF0_GPIO6_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO6_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO6_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO6_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_PROC0_INTF0_GPIO6_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_PROC0_INTF0_GPIO6_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_PROC0_INTF0_GPIO6_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO5_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO5_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO5_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC0_INTF0_GPIO5_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC0_INTF0_GPIO5_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC0_INTF0_GPIO5_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO5_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO5_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO5_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC0_INTF0_GPIO5_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC0_INTF0_GPIO5_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC0_INTF0_GPIO5_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO5_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO5_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO5_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC0_INTF0_GPIO5_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC0_INTF0_GPIO5_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC0_INTF0_GPIO5_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO5_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO5_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO5_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC0_INTF0_GPIO5_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC0_INTF0_GPIO5_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC0_INTF0_GPIO5_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO4_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO4_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO4_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC0_INTF0_GPIO4_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC0_INTF0_GPIO4_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC0_INTF0_GPIO4_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO4_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO4_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO4_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC0_INTF0_GPIO4_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC0_INTF0_GPIO4_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC0_INTF0_GPIO4_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO4_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO4_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO4_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC0_INTF0_GPIO4_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC0_INTF0_GPIO4_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC0_INTF0_GPIO4_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO4_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO4_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO4_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC0_INTF0_GPIO4_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC0_INTF0_GPIO4_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC0_INTF0_GPIO4_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO3_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO3_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO3_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC0_INTF0_GPIO3_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC0_INTF0_GPIO3_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC0_INTF0_GPIO3_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO3_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO3_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO3_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC0_INTF0_GPIO3_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC0_INTF0_GPIO3_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC0_INTF0_GPIO3_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO3_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO3_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO3_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC0_INTF0_GPIO3_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC0_INTF0_GPIO3_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC0_INTF0_GPIO3_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO3_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO3_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO3_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC0_INTF0_GPIO3_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC0_INTF0_GPIO3_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC0_INTF0_GPIO3_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO2_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO2_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO2_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC0_INTF0_GPIO2_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC0_INTF0_GPIO2_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC0_INTF0_GPIO2_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO2_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO2_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO2_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC0_INTF0_GPIO2_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC0_INTF0_GPIO2_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC0_INTF0_GPIO2_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO2_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO2_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO2_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC0_INTF0_GPIO2_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC0_INTF0_GPIO2_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC0_INTF0_GPIO2_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO2_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO2_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO2_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC0_INTF0_GPIO2_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC0_INTF0_GPIO2_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC0_INTF0_GPIO2_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO1_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO1_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO1_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC0_INTF0_GPIO1_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC0_INTF0_GPIO1_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC0_INTF0_GPIO1_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO1_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO1_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO1_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC0_INTF0_GPIO1_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC0_INTF0_GPIO1_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC0_INTF0_GPIO1_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO1_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO1_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO1_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC0_INTF0_GPIO1_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC0_INTF0_GPIO1_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC0_INTF0_GPIO1_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO1_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO1_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO1_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC0_INTF0_GPIO1_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC0_INTF0_GPIO1_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC0_INTF0_GPIO1_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO0_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO0_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO0_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC0_INTF0_GPIO0_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC0_INTF0_GPIO0_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC0_INTF0_GPIO0_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO0_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO0_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO0_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC0_INTF0_GPIO0_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC0_INTF0_GPIO0_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC0_INTF0_GPIO0_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO0_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO0_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO0_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC0_INTF0_GPIO0_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC0_INTF0_GPIO0_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC0_INTF0_GPIO0_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF0_GPIO0_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF0_GPIO0_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF0_GPIO0_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC0_INTF0_GPIO0_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC0_INTF0_GPIO0_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC0_INTF0_GPIO0_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_PROC0_INTF1 +// Description : Interrupt Force for proc0 +#define IO_BANK0_PROC0_INTF1_OFFSET _u(0x00000114) +#define IO_BANK0_PROC0_INTF1_BITS _u(0xffffffff) +#define IO_BANK0_PROC0_INTF1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO15_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO15_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO15_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_PROC0_INTF1_GPIO15_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_PROC0_INTF1_GPIO15_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_PROC0_INTF1_GPIO15_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO15_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO15_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO15_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_PROC0_INTF1_GPIO15_EDGE_LOW_MSB _u(30) +#define IO_BANK0_PROC0_INTF1_GPIO15_EDGE_LOW_LSB _u(30) +#define IO_BANK0_PROC0_INTF1_GPIO15_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO15_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO15_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO15_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_PROC0_INTF1_GPIO15_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_PROC0_INTF1_GPIO15_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_PROC0_INTF1_GPIO15_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO15_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO15_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO15_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_PROC0_INTF1_GPIO15_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_PROC0_INTF1_GPIO15_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_PROC0_INTF1_GPIO15_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO14_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO14_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO14_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_PROC0_INTF1_GPIO14_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_PROC0_INTF1_GPIO14_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_PROC0_INTF1_GPIO14_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO14_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO14_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO14_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_PROC0_INTF1_GPIO14_EDGE_LOW_MSB _u(26) +#define IO_BANK0_PROC0_INTF1_GPIO14_EDGE_LOW_LSB _u(26) +#define IO_BANK0_PROC0_INTF1_GPIO14_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO14_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO14_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO14_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_PROC0_INTF1_GPIO14_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_PROC0_INTF1_GPIO14_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_PROC0_INTF1_GPIO14_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO14_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO14_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO14_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_PROC0_INTF1_GPIO14_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_PROC0_INTF1_GPIO14_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_PROC0_INTF1_GPIO14_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO13_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO13_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO13_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC0_INTF1_GPIO13_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC0_INTF1_GPIO13_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC0_INTF1_GPIO13_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO13_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO13_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO13_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC0_INTF1_GPIO13_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC0_INTF1_GPIO13_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC0_INTF1_GPIO13_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO13_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO13_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO13_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC0_INTF1_GPIO13_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC0_INTF1_GPIO13_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC0_INTF1_GPIO13_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO13_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO13_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO13_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC0_INTF1_GPIO13_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC0_INTF1_GPIO13_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC0_INTF1_GPIO13_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO12_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO12_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO12_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC0_INTF1_GPIO12_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC0_INTF1_GPIO12_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC0_INTF1_GPIO12_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO12_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO12_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO12_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC0_INTF1_GPIO12_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC0_INTF1_GPIO12_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC0_INTF1_GPIO12_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO12_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO12_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO12_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC0_INTF1_GPIO12_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC0_INTF1_GPIO12_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC0_INTF1_GPIO12_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO12_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO12_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO12_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC0_INTF1_GPIO12_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC0_INTF1_GPIO12_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC0_INTF1_GPIO12_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO11_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO11_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO11_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC0_INTF1_GPIO11_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC0_INTF1_GPIO11_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC0_INTF1_GPIO11_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO11_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO11_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO11_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC0_INTF1_GPIO11_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC0_INTF1_GPIO11_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC0_INTF1_GPIO11_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO11_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO11_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO11_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC0_INTF1_GPIO11_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC0_INTF1_GPIO11_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC0_INTF1_GPIO11_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO11_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO11_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO11_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC0_INTF1_GPIO11_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC0_INTF1_GPIO11_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC0_INTF1_GPIO11_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO10_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO10_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO10_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC0_INTF1_GPIO10_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC0_INTF1_GPIO10_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC0_INTF1_GPIO10_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO10_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO10_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO10_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC0_INTF1_GPIO10_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC0_INTF1_GPIO10_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC0_INTF1_GPIO10_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO10_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO10_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO10_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC0_INTF1_GPIO10_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC0_INTF1_GPIO10_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC0_INTF1_GPIO10_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO10_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO10_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO10_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC0_INTF1_GPIO10_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC0_INTF1_GPIO10_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC0_INTF1_GPIO10_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO9_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO9_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO9_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC0_INTF1_GPIO9_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC0_INTF1_GPIO9_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC0_INTF1_GPIO9_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO9_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO9_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO9_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC0_INTF1_GPIO9_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC0_INTF1_GPIO9_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC0_INTF1_GPIO9_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO9_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO9_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO9_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC0_INTF1_GPIO9_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC0_INTF1_GPIO9_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC0_INTF1_GPIO9_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO9_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO9_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO9_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC0_INTF1_GPIO9_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC0_INTF1_GPIO9_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC0_INTF1_GPIO9_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO8_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO8_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO8_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC0_INTF1_GPIO8_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC0_INTF1_GPIO8_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC0_INTF1_GPIO8_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO8_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO8_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO8_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC0_INTF1_GPIO8_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC0_INTF1_GPIO8_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC0_INTF1_GPIO8_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO8_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO8_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO8_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC0_INTF1_GPIO8_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC0_INTF1_GPIO8_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC0_INTF1_GPIO8_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF1_GPIO8_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF1_GPIO8_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF1_GPIO8_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC0_INTF1_GPIO8_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC0_INTF1_GPIO8_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC0_INTF1_GPIO8_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_PROC0_INTF2 +// Description : Interrupt Force for proc0 +#define IO_BANK0_PROC0_INTF2_OFFSET _u(0x00000118) +#define IO_BANK0_PROC0_INTF2_BITS _u(0xffffffff) +#define IO_BANK0_PROC0_INTF2_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO23_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO23_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO23_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_PROC0_INTF2_GPIO23_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_PROC0_INTF2_GPIO23_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_PROC0_INTF2_GPIO23_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO23_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO23_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO23_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_PROC0_INTF2_GPIO23_EDGE_LOW_MSB _u(30) +#define IO_BANK0_PROC0_INTF2_GPIO23_EDGE_LOW_LSB _u(30) +#define IO_BANK0_PROC0_INTF2_GPIO23_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO23_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO23_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO23_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_PROC0_INTF2_GPIO23_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_PROC0_INTF2_GPIO23_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_PROC0_INTF2_GPIO23_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO23_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO23_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO23_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_PROC0_INTF2_GPIO23_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_PROC0_INTF2_GPIO23_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_PROC0_INTF2_GPIO23_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO22_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO22_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO22_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_PROC0_INTF2_GPIO22_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_PROC0_INTF2_GPIO22_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_PROC0_INTF2_GPIO22_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO22_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO22_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO22_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_PROC0_INTF2_GPIO22_EDGE_LOW_MSB _u(26) +#define IO_BANK0_PROC0_INTF2_GPIO22_EDGE_LOW_LSB _u(26) +#define IO_BANK0_PROC0_INTF2_GPIO22_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO22_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO22_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO22_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_PROC0_INTF2_GPIO22_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_PROC0_INTF2_GPIO22_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_PROC0_INTF2_GPIO22_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO22_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO22_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO22_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_PROC0_INTF2_GPIO22_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_PROC0_INTF2_GPIO22_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_PROC0_INTF2_GPIO22_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO21_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO21_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO21_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC0_INTF2_GPIO21_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC0_INTF2_GPIO21_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC0_INTF2_GPIO21_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO21_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO21_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO21_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC0_INTF2_GPIO21_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC0_INTF2_GPIO21_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC0_INTF2_GPIO21_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO21_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO21_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO21_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC0_INTF2_GPIO21_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC0_INTF2_GPIO21_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC0_INTF2_GPIO21_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO21_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO21_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO21_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC0_INTF2_GPIO21_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC0_INTF2_GPIO21_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC0_INTF2_GPIO21_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO20_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO20_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO20_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC0_INTF2_GPIO20_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC0_INTF2_GPIO20_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC0_INTF2_GPIO20_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO20_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO20_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO20_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC0_INTF2_GPIO20_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC0_INTF2_GPIO20_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC0_INTF2_GPIO20_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO20_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO20_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO20_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC0_INTF2_GPIO20_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC0_INTF2_GPIO20_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC0_INTF2_GPIO20_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO20_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO20_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO20_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC0_INTF2_GPIO20_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC0_INTF2_GPIO20_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC0_INTF2_GPIO20_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO19_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO19_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO19_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC0_INTF2_GPIO19_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC0_INTF2_GPIO19_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC0_INTF2_GPIO19_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO19_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO19_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO19_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC0_INTF2_GPIO19_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC0_INTF2_GPIO19_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC0_INTF2_GPIO19_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO19_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO19_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO19_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC0_INTF2_GPIO19_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC0_INTF2_GPIO19_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC0_INTF2_GPIO19_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO19_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO19_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO19_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC0_INTF2_GPIO19_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC0_INTF2_GPIO19_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC0_INTF2_GPIO19_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO18_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO18_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO18_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC0_INTF2_GPIO18_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC0_INTF2_GPIO18_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC0_INTF2_GPIO18_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO18_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO18_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO18_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC0_INTF2_GPIO18_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC0_INTF2_GPIO18_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC0_INTF2_GPIO18_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO18_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO18_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO18_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC0_INTF2_GPIO18_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC0_INTF2_GPIO18_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC0_INTF2_GPIO18_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO18_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO18_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO18_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC0_INTF2_GPIO18_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC0_INTF2_GPIO18_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC0_INTF2_GPIO18_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO17_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO17_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO17_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC0_INTF2_GPIO17_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC0_INTF2_GPIO17_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC0_INTF2_GPIO17_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO17_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO17_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO17_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC0_INTF2_GPIO17_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC0_INTF2_GPIO17_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC0_INTF2_GPIO17_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO17_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO17_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO17_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC0_INTF2_GPIO17_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC0_INTF2_GPIO17_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC0_INTF2_GPIO17_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO17_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO17_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO17_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC0_INTF2_GPIO17_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC0_INTF2_GPIO17_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC0_INTF2_GPIO17_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO16_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO16_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO16_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC0_INTF2_GPIO16_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC0_INTF2_GPIO16_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC0_INTF2_GPIO16_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO16_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO16_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO16_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC0_INTF2_GPIO16_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC0_INTF2_GPIO16_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC0_INTF2_GPIO16_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO16_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO16_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO16_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC0_INTF2_GPIO16_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC0_INTF2_GPIO16_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC0_INTF2_GPIO16_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF2_GPIO16_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF2_GPIO16_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF2_GPIO16_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC0_INTF2_GPIO16_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC0_INTF2_GPIO16_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC0_INTF2_GPIO16_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_PROC0_INTF3 +// Description : Interrupt Force for proc0 +#define IO_BANK0_PROC0_INTF3_OFFSET _u(0x0000011c) +#define IO_BANK0_PROC0_INTF3_BITS _u(0x00ffffff) +#define IO_BANK0_PROC0_INTF3_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO29_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO29_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO29_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC0_INTF3_GPIO29_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC0_INTF3_GPIO29_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC0_INTF3_GPIO29_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO29_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO29_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO29_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC0_INTF3_GPIO29_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC0_INTF3_GPIO29_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC0_INTF3_GPIO29_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO29_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO29_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO29_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC0_INTF3_GPIO29_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC0_INTF3_GPIO29_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC0_INTF3_GPIO29_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO29_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO29_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO29_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC0_INTF3_GPIO29_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC0_INTF3_GPIO29_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC0_INTF3_GPIO29_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO28_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO28_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO28_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC0_INTF3_GPIO28_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC0_INTF3_GPIO28_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC0_INTF3_GPIO28_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO28_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO28_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO28_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC0_INTF3_GPIO28_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC0_INTF3_GPIO28_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC0_INTF3_GPIO28_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO28_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO28_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO28_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC0_INTF3_GPIO28_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC0_INTF3_GPIO28_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC0_INTF3_GPIO28_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO28_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO28_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO28_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC0_INTF3_GPIO28_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC0_INTF3_GPIO28_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC0_INTF3_GPIO28_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO27_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO27_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO27_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC0_INTF3_GPIO27_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC0_INTF3_GPIO27_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC0_INTF3_GPIO27_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO27_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO27_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO27_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC0_INTF3_GPIO27_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC0_INTF3_GPIO27_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC0_INTF3_GPIO27_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO27_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO27_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO27_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC0_INTF3_GPIO27_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC0_INTF3_GPIO27_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC0_INTF3_GPIO27_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO27_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO27_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO27_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC0_INTF3_GPIO27_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC0_INTF3_GPIO27_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC0_INTF3_GPIO27_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO26_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO26_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO26_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC0_INTF3_GPIO26_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC0_INTF3_GPIO26_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC0_INTF3_GPIO26_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO26_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO26_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO26_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC0_INTF3_GPIO26_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC0_INTF3_GPIO26_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC0_INTF3_GPIO26_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO26_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO26_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO26_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC0_INTF3_GPIO26_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC0_INTF3_GPIO26_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC0_INTF3_GPIO26_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO26_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO26_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO26_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC0_INTF3_GPIO26_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC0_INTF3_GPIO26_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC0_INTF3_GPIO26_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO25_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO25_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO25_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC0_INTF3_GPIO25_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC0_INTF3_GPIO25_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC0_INTF3_GPIO25_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO25_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO25_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO25_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC0_INTF3_GPIO25_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC0_INTF3_GPIO25_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC0_INTF3_GPIO25_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO25_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO25_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO25_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC0_INTF3_GPIO25_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC0_INTF3_GPIO25_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC0_INTF3_GPIO25_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO25_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO25_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO25_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC0_INTF3_GPIO25_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC0_INTF3_GPIO25_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC0_INTF3_GPIO25_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO24_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO24_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO24_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC0_INTF3_GPIO24_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC0_INTF3_GPIO24_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC0_INTF3_GPIO24_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO24_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO24_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO24_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC0_INTF3_GPIO24_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC0_INTF3_GPIO24_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC0_INTF3_GPIO24_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO24_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO24_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO24_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC0_INTF3_GPIO24_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC0_INTF3_GPIO24_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC0_INTF3_GPIO24_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTF3_GPIO24_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTF3_GPIO24_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTF3_GPIO24_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC0_INTF3_GPIO24_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC0_INTF3_GPIO24_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC0_INTF3_GPIO24_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_PROC0_INTS0 +// Description : Interrupt status after masking & forcing for proc0 +#define IO_BANK0_PROC0_INTS0_OFFSET _u(0x00000120) +#define IO_BANK0_PROC0_INTS0_BITS _u(0xffffffff) +#define IO_BANK0_PROC0_INTS0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO7_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO7_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO7_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_PROC0_INTS0_GPIO7_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_PROC0_INTS0_GPIO7_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_PROC0_INTS0_GPIO7_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO7_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO7_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO7_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_PROC0_INTS0_GPIO7_EDGE_LOW_MSB _u(30) +#define IO_BANK0_PROC0_INTS0_GPIO7_EDGE_LOW_LSB _u(30) +#define IO_BANK0_PROC0_INTS0_GPIO7_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO7_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO7_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO7_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_PROC0_INTS0_GPIO7_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_PROC0_INTS0_GPIO7_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_PROC0_INTS0_GPIO7_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO7_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO7_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO7_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_PROC0_INTS0_GPIO7_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_PROC0_INTS0_GPIO7_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_PROC0_INTS0_GPIO7_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO6_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO6_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO6_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_PROC0_INTS0_GPIO6_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_PROC0_INTS0_GPIO6_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_PROC0_INTS0_GPIO6_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO6_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO6_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO6_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_PROC0_INTS0_GPIO6_EDGE_LOW_MSB _u(26) +#define IO_BANK0_PROC0_INTS0_GPIO6_EDGE_LOW_LSB _u(26) +#define IO_BANK0_PROC0_INTS0_GPIO6_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO6_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO6_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO6_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_PROC0_INTS0_GPIO6_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_PROC0_INTS0_GPIO6_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_PROC0_INTS0_GPIO6_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO6_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO6_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO6_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_PROC0_INTS0_GPIO6_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_PROC0_INTS0_GPIO6_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_PROC0_INTS0_GPIO6_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO5_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO5_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO5_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC0_INTS0_GPIO5_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC0_INTS0_GPIO5_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC0_INTS0_GPIO5_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO5_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO5_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO5_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC0_INTS0_GPIO5_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC0_INTS0_GPIO5_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC0_INTS0_GPIO5_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO5_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO5_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO5_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC0_INTS0_GPIO5_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC0_INTS0_GPIO5_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC0_INTS0_GPIO5_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO5_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO5_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO5_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC0_INTS0_GPIO5_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC0_INTS0_GPIO5_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC0_INTS0_GPIO5_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO4_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO4_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO4_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC0_INTS0_GPIO4_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC0_INTS0_GPIO4_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC0_INTS0_GPIO4_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO4_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO4_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO4_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC0_INTS0_GPIO4_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC0_INTS0_GPIO4_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC0_INTS0_GPIO4_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO4_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO4_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO4_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC0_INTS0_GPIO4_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC0_INTS0_GPIO4_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC0_INTS0_GPIO4_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO4_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO4_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO4_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC0_INTS0_GPIO4_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC0_INTS0_GPIO4_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC0_INTS0_GPIO4_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO3_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO3_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO3_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC0_INTS0_GPIO3_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC0_INTS0_GPIO3_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC0_INTS0_GPIO3_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO3_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO3_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO3_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC0_INTS0_GPIO3_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC0_INTS0_GPIO3_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC0_INTS0_GPIO3_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO3_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO3_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO3_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC0_INTS0_GPIO3_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC0_INTS0_GPIO3_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC0_INTS0_GPIO3_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO3_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO3_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO3_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC0_INTS0_GPIO3_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC0_INTS0_GPIO3_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC0_INTS0_GPIO3_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO2_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO2_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO2_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC0_INTS0_GPIO2_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC0_INTS0_GPIO2_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC0_INTS0_GPIO2_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO2_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO2_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO2_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC0_INTS0_GPIO2_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC0_INTS0_GPIO2_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC0_INTS0_GPIO2_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO2_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO2_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO2_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC0_INTS0_GPIO2_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC0_INTS0_GPIO2_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC0_INTS0_GPIO2_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO2_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO2_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO2_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC0_INTS0_GPIO2_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC0_INTS0_GPIO2_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC0_INTS0_GPIO2_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO1_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO1_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO1_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC0_INTS0_GPIO1_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC0_INTS0_GPIO1_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC0_INTS0_GPIO1_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO1_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO1_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO1_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC0_INTS0_GPIO1_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC0_INTS0_GPIO1_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC0_INTS0_GPIO1_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO1_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO1_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO1_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC0_INTS0_GPIO1_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC0_INTS0_GPIO1_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC0_INTS0_GPIO1_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO1_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO1_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO1_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC0_INTS0_GPIO1_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC0_INTS0_GPIO1_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC0_INTS0_GPIO1_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO0_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO0_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO0_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC0_INTS0_GPIO0_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC0_INTS0_GPIO0_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC0_INTS0_GPIO0_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO0_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO0_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO0_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC0_INTS0_GPIO0_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC0_INTS0_GPIO0_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC0_INTS0_GPIO0_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO0_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO0_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO0_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC0_INTS0_GPIO0_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC0_INTS0_GPIO0_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC0_INTS0_GPIO0_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS0_GPIO0_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS0_GPIO0_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS0_GPIO0_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC0_INTS0_GPIO0_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC0_INTS0_GPIO0_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC0_INTS0_GPIO0_LEVEL_LOW_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_PROC0_INTS1 +// Description : Interrupt status after masking & forcing for proc0 +#define IO_BANK0_PROC0_INTS1_OFFSET _u(0x00000124) +#define IO_BANK0_PROC0_INTS1_BITS _u(0xffffffff) +#define IO_BANK0_PROC0_INTS1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO15_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO15_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO15_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_PROC0_INTS1_GPIO15_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_PROC0_INTS1_GPIO15_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_PROC0_INTS1_GPIO15_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO15_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO15_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO15_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_PROC0_INTS1_GPIO15_EDGE_LOW_MSB _u(30) +#define IO_BANK0_PROC0_INTS1_GPIO15_EDGE_LOW_LSB _u(30) +#define IO_BANK0_PROC0_INTS1_GPIO15_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO15_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO15_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO15_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_PROC0_INTS1_GPIO15_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_PROC0_INTS1_GPIO15_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_PROC0_INTS1_GPIO15_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO15_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO15_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO15_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_PROC0_INTS1_GPIO15_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_PROC0_INTS1_GPIO15_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_PROC0_INTS1_GPIO15_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO14_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO14_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO14_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_PROC0_INTS1_GPIO14_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_PROC0_INTS1_GPIO14_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_PROC0_INTS1_GPIO14_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO14_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO14_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO14_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_PROC0_INTS1_GPIO14_EDGE_LOW_MSB _u(26) +#define IO_BANK0_PROC0_INTS1_GPIO14_EDGE_LOW_LSB _u(26) +#define IO_BANK0_PROC0_INTS1_GPIO14_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO14_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO14_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO14_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_PROC0_INTS1_GPIO14_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_PROC0_INTS1_GPIO14_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_PROC0_INTS1_GPIO14_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO14_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO14_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO14_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_PROC0_INTS1_GPIO14_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_PROC0_INTS1_GPIO14_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_PROC0_INTS1_GPIO14_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO13_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO13_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO13_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC0_INTS1_GPIO13_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC0_INTS1_GPIO13_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC0_INTS1_GPIO13_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO13_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO13_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO13_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC0_INTS1_GPIO13_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC0_INTS1_GPIO13_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC0_INTS1_GPIO13_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO13_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO13_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO13_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC0_INTS1_GPIO13_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC0_INTS1_GPIO13_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC0_INTS1_GPIO13_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO13_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO13_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO13_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC0_INTS1_GPIO13_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC0_INTS1_GPIO13_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC0_INTS1_GPIO13_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO12_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO12_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO12_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC0_INTS1_GPIO12_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC0_INTS1_GPIO12_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC0_INTS1_GPIO12_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO12_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO12_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO12_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC0_INTS1_GPIO12_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC0_INTS1_GPIO12_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC0_INTS1_GPIO12_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO12_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO12_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO12_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC0_INTS1_GPIO12_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC0_INTS1_GPIO12_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC0_INTS1_GPIO12_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO12_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO12_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO12_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC0_INTS1_GPIO12_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC0_INTS1_GPIO12_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC0_INTS1_GPIO12_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO11_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO11_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO11_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC0_INTS1_GPIO11_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC0_INTS1_GPIO11_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC0_INTS1_GPIO11_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO11_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO11_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO11_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC0_INTS1_GPIO11_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC0_INTS1_GPIO11_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC0_INTS1_GPIO11_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO11_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO11_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO11_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC0_INTS1_GPIO11_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC0_INTS1_GPIO11_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC0_INTS1_GPIO11_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO11_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO11_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO11_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC0_INTS1_GPIO11_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC0_INTS1_GPIO11_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC0_INTS1_GPIO11_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO10_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO10_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO10_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC0_INTS1_GPIO10_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC0_INTS1_GPIO10_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC0_INTS1_GPIO10_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO10_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO10_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO10_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC0_INTS1_GPIO10_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC0_INTS1_GPIO10_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC0_INTS1_GPIO10_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO10_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO10_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO10_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC0_INTS1_GPIO10_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC0_INTS1_GPIO10_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC0_INTS1_GPIO10_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO10_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO10_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO10_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC0_INTS1_GPIO10_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC0_INTS1_GPIO10_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC0_INTS1_GPIO10_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO9_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO9_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO9_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC0_INTS1_GPIO9_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC0_INTS1_GPIO9_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC0_INTS1_GPIO9_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO9_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO9_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO9_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC0_INTS1_GPIO9_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC0_INTS1_GPIO9_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC0_INTS1_GPIO9_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO9_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO9_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO9_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC0_INTS1_GPIO9_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC0_INTS1_GPIO9_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC0_INTS1_GPIO9_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO9_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO9_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO9_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC0_INTS1_GPIO9_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC0_INTS1_GPIO9_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC0_INTS1_GPIO9_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO8_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO8_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO8_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC0_INTS1_GPIO8_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC0_INTS1_GPIO8_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC0_INTS1_GPIO8_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO8_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO8_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO8_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC0_INTS1_GPIO8_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC0_INTS1_GPIO8_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC0_INTS1_GPIO8_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO8_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO8_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO8_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC0_INTS1_GPIO8_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC0_INTS1_GPIO8_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC0_INTS1_GPIO8_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS1_GPIO8_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS1_GPIO8_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS1_GPIO8_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC0_INTS1_GPIO8_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC0_INTS1_GPIO8_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC0_INTS1_GPIO8_LEVEL_LOW_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_PROC0_INTS2 +// Description : Interrupt status after masking & forcing for proc0 +#define IO_BANK0_PROC0_INTS2_OFFSET _u(0x00000128) +#define IO_BANK0_PROC0_INTS2_BITS _u(0xffffffff) +#define IO_BANK0_PROC0_INTS2_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO23_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO23_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO23_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_PROC0_INTS2_GPIO23_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_PROC0_INTS2_GPIO23_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_PROC0_INTS2_GPIO23_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO23_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO23_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO23_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_PROC0_INTS2_GPIO23_EDGE_LOW_MSB _u(30) +#define IO_BANK0_PROC0_INTS2_GPIO23_EDGE_LOW_LSB _u(30) +#define IO_BANK0_PROC0_INTS2_GPIO23_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO23_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO23_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO23_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_PROC0_INTS2_GPIO23_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_PROC0_INTS2_GPIO23_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_PROC0_INTS2_GPIO23_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO23_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO23_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO23_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_PROC0_INTS2_GPIO23_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_PROC0_INTS2_GPIO23_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_PROC0_INTS2_GPIO23_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO22_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO22_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO22_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_PROC0_INTS2_GPIO22_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_PROC0_INTS2_GPIO22_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_PROC0_INTS2_GPIO22_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO22_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO22_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO22_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_PROC0_INTS2_GPIO22_EDGE_LOW_MSB _u(26) +#define IO_BANK0_PROC0_INTS2_GPIO22_EDGE_LOW_LSB _u(26) +#define IO_BANK0_PROC0_INTS2_GPIO22_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO22_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO22_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO22_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_PROC0_INTS2_GPIO22_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_PROC0_INTS2_GPIO22_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_PROC0_INTS2_GPIO22_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO22_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO22_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO22_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_PROC0_INTS2_GPIO22_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_PROC0_INTS2_GPIO22_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_PROC0_INTS2_GPIO22_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO21_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO21_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO21_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC0_INTS2_GPIO21_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC0_INTS2_GPIO21_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC0_INTS2_GPIO21_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO21_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO21_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO21_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC0_INTS2_GPIO21_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC0_INTS2_GPIO21_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC0_INTS2_GPIO21_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO21_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO21_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO21_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC0_INTS2_GPIO21_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC0_INTS2_GPIO21_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC0_INTS2_GPIO21_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO21_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO21_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO21_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC0_INTS2_GPIO21_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC0_INTS2_GPIO21_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC0_INTS2_GPIO21_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO20_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO20_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO20_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC0_INTS2_GPIO20_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC0_INTS2_GPIO20_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC0_INTS2_GPIO20_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO20_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO20_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO20_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC0_INTS2_GPIO20_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC0_INTS2_GPIO20_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC0_INTS2_GPIO20_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO20_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO20_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO20_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC0_INTS2_GPIO20_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC0_INTS2_GPIO20_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC0_INTS2_GPIO20_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO20_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO20_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO20_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC0_INTS2_GPIO20_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC0_INTS2_GPIO20_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC0_INTS2_GPIO20_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO19_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO19_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO19_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC0_INTS2_GPIO19_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC0_INTS2_GPIO19_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC0_INTS2_GPIO19_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO19_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO19_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO19_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC0_INTS2_GPIO19_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC0_INTS2_GPIO19_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC0_INTS2_GPIO19_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO19_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO19_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO19_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC0_INTS2_GPIO19_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC0_INTS2_GPIO19_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC0_INTS2_GPIO19_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO19_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO19_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO19_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC0_INTS2_GPIO19_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC0_INTS2_GPIO19_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC0_INTS2_GPIO19_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO18_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO18_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO18_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC0_INTS2_GPIO18_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC0_INTS2_GPIO18_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC0_INTS2_GPIO18_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO18_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO18_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO18_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC0_INTS2_GPIO18_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC0_INTS2_GPIO18_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC0_INTS2_GPIO18_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO18_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO18_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO18_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC0_INTS2_GPIO18_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC0_INTS2_GPIO18_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC0_INTS2_GPIO18_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO18_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO18_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO18_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC0_INTS2_GPIO18_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC0_INTS2_GPIO18_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC0_INTS2_GPIO18_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO17_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO17_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO17_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC0_INTS2_GPIO17_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC0_INTS2_GPIO17_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC0_INTS2_GPIO17_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO17_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO17_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO17_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC0_INTS2_GPIO17_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC0_INTS2_GPIO17_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC0_INTS2_GPIO17_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO17_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO17_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO17_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC0_INTS2_GPIO17_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC0_INTS2_GPIO17_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC0_INTS2_GPIO17_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO17_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO17_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO17_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC0_INTS2_GPIO17_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC0_INTS2_GPIO17_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC0_INTS2_GPIO17_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO16_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO16_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO16_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC0_INTS2_GPIO16_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC0_INTS2_GPIO16_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC0_INTS2_GPIO16_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO16_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO16_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO16_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC0_INTS2_GPIO16_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC0_INTS2_GPIO16_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC0_INTS2_GPIO16_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO16_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO16_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO16_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC0_INTS2_GPIO16_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC0_INTS2_GPIO16_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC0_INTS2_GPIO16_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS2_GPIO16_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS2_GPIO16_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS2_GPIO16_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC0_INTS2_GPIO16_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC0_INTS2_GPIO16_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC0_INTS2_GPIO16_LEVEL_LOW_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_PROC0_INTS3 +// Description : Interrupt status after masking & forcing for proc0 +#define IO_BANK0_PROC0_INTS3_OFFSET _u(0x0000012c) +#define IO_BANK0_PROC0_INTS3_BITS _u(0x00ffffff) +#define IO_BANK0_PROC0_INTS3_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO29_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO29_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO29_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC0_INTS3_GPIO29_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC0_INTS3_GPIO29_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC0_INTS3_GPIO29_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO29_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO29_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO29_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC0_INTS3_GPIO29_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC0_INTS3_GPIO29_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC0_INTS3_GPIO29_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO29_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO29_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO29_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC0_INTS3_GPIO29_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC0_INTS3_GPIO29_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC0_INTS3_GPIO29_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO29_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO29_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO29_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC0_INTS3_GPIO29_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC0_INTS3_GPIO29_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC0_INTS3_GPIO29_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO28_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO28_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO28_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC0_INTS3_GPIO28_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC0_INTS3_GPIO28_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC0_INTS3_GPIO28_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO28_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO28_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO28_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC0_INTS3_GPIO28_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC0_INTS3_GPIO28_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC0_INTS3_GPIO28_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO28_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO28_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO28_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC0_INTS3_GPIO28_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC0_INTS3_GPIO28_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC0_INTS3_GPIO28_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO28_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO28_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO28_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC0_INTS3_GPIO28_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC0_INTS3_GPIO28_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC0_INTS3_GPIO28_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO27_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO27_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO27_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC0_INTS3_GPIO27_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC0_INTS3_GPIO27_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC0_INTS3_GPIO27_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO27_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO27_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO27_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC0_INTS3_GPIO27_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC0_INTS3_GPIO27_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC0_INTS3_GPIO27_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO27_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO27_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO27_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC0_INTS3_GPIO27_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC0_INTS3_GPIO27_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC0_INTS3_GPIO27_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO27_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO27_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO27_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC0_INTS3_GPIO27_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC0_INTS3_GPIO27_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC0_INTS3_GPIO27_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO26_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO26_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO26_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC0_INTS3_GPIO26_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC0_INTS3_GPIO26_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC0_INTS3_GPIO26_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO26_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO26_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO26_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC0_INTS3_GPIO26_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC0_INTS3_GPIO26_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC0_INTS3_GPIO26_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO26_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO26_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO26_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC0_INTS3_GPIO26_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC0_INTS3_GPIO26_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC0_INTS3_GPIO26_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO26_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO26_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO26_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC0_INTS3_GPIO26_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC0_INTS3_GPIO26_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC0_INTS3_GPIO26_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO25_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO25_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO25_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC0_INTS3_GPIO25_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC0_INTS3_GPIO25_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC0_INTS3_GPIO25_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO25_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO25_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO25_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC0_INTS3_GPIO25_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC0_INTS3_GPIO25_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC0_INTS3_GPIO25_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO25_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO25_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO25_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC0_INTS3_GPIO25_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC0_INTS3_GPIO25_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC0_INTS3_GPIO25_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO25_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO25_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO25_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC0_INTS3_GPIO25_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC0_INTS3_GPIO25_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC0_INTS3_GPIO25_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO24_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO24_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO24_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC0_INTS3_GPIO24_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC0_INTS3_GPIO24_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC0_INTS3_GPIO24_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO24_EDGE_LOW +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO24_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO24_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC0_INTS3_GPIO24_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC0_INTS3_GPIO24_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC0_INTS3_GPIO24_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO24_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO24_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO24_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC0_INTS3_GPIO24_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC0_INTS3_GPIO24_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC0_INTS3_GPIO24_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC0_INTS3_GPIO24_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC0_INTS3_GPIO24_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC0_INTS3_GPIO24_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC0_INTS3_GPIO24_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC0_INTS3_GPIO24_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC0_INTS3_GPIO24_LEVEL_LOW_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_PROC1_INTE0 +// Description : Interrupt Enable for proc1 +#define IO_BANK0_PROC1_INTE0_OFFSET _u(0x00000130) +#define IO_BANK0_PROC1_INTE0_BITS _u(0xffffffff) +#define IO_BANK0_PROC1_INTE0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO7_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO7_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO7_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_PROC1_INTE0_GPIO7_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_PROC1_INTE0_GPIO7_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_PROC1_INTE0_GPIO7_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO7_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO7_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO7_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_PROC1_INTE0_GPIO7_EDGE_LOW_MSB _u(30) +#define IO_BANK0_PROC1_INTE0_GPIO7_EDGE_LOW_LSB _u(30) +#define IO_BANK0_PROC1_INTE0_GPIO7_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO7_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO7_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO7_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_PROC1_INTE0_GPIO7_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_PROC1_INTE0_GPIO7_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_PROC1_INTE0_GPIO7_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO7_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO7_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO7_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_PROC1_INTE0_GPIO7_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_PROC1_INTE0_GPIO7_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_PROC1_INTE0_GPIO7_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO6_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO6_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO6_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_PROC1_INTE0_GPIO6_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_PROC1_INTE0_GPIO6_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_PROC1_INTE0_GPIO6_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO6_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO6_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO6_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_PROC1_INTE0_GPIO6_EDGE_LOW_MSB _u(26) +#define IO_BANK0_PROC1_INTE0_GPIO6_EDGE_LOW_LSB _u(26) +#define IO_BANK0_PROC1_INTE0_GPIO6_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO6_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO6_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO6_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_PROC1_INTE0_GPIO6_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_PROC1_INTE0_GPIO6_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_PROC1_INTE0_GPIO6_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO6_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO6_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO6_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_PROC1_INTE0_GPIO6_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_PROC1_INTE0_GPIO6_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_PROC1_INTE0_GPIO6_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO5_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO5_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO5_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC1_INTE0_GPIO5_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC1_INTE0_GPIO5_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC1_INTE0_GPIO5_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO5_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO5_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO5_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC1_INTE0_GPIO5_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC1_INTE0_GPIO5_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC1_INTE0_GPIO5_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO5_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO5_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO5_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC1_INTE0_GPIO5_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC1_INTE0_GPIO5_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC1_INTE0_GPIO5_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO5_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO5_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO5_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC1_INTE0_GPIO5_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC1_INTE0_GPIO5_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC1_INTE0_GPIO5_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO4_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO4_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO4_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC1_INTE0_GPIO4_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC1_INTE0_GPIO4_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC1_INTE0_GPIO4_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO4_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO4_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO4_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC1_INTE0_GPIO4_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC1_INTE0_GPIO4_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC1_INTE0_GPIO4_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO4_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO4_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO4_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC1_INTE0_GPIO4_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC1_INTE0_GPIO4_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC1_INTE0_GPIO4_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO4_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO4_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO4_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC1_INTE0_GPIO4_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC1_INTE0_GPIO4_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC1_INTE0_GPIO4_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO3_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO3_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO3_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC1_INTE0_GPIO3_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC1_INTE0_GPIO3_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC1_INTE0_GPIO3_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO3_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO3_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO3_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC1_INTE0_GPIO3_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC1_INTE0_GPIO3_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC1_INTE0_GPIO3_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO3_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO3_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO3_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC1_INTE0_GPIO3_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC1_INTE0_GPIO3_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC1_INTE0_GPIO3_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO3_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO3_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO3_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC1_INTE0_GPIO3_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC1_INTE0_GPIO3_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC1_INTE0_GPIO3_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO2_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO2_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO2_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC1_INTE0_GPIO2_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC1_INTE0_GPIO2_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC1_INTE0_GPIO2_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO2_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO2_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO2_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC1_INTE0_GPIO2_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC1_INTE0_GPIO2_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC1_INTE0_GPIO2_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO2_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO2_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO2_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC1_INTE0_GPIO2_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC1_INTE0_GPIO2_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC1_INTE0_GPIO2_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO2_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO2_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO2_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC1_INTE0_GPIO2_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC1_INTE0_GPIO2_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC1_INTE0_GPIO2_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO1_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO1_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO1_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC1_INTE0_GPIO1_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC1_INTE0_GPIO1_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC1_INTE0_GPIO1_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO1_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO1_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO1_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC1_INTE0_GPIO1_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC1_INTE0_GPIO1_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC1_INTE0_GPIO1_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO1_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO1_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO1_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC1_INTE0_GPIO1_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC1_INTE0_GPIO1_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC1_INTE0_GPIO1_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO1_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO1_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO1_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC1_INTE0_GPIO1_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC1_INTE0_GPIO1_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC1_INTE0_GPIO1_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO0_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO0_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO0_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC1_INTE0_GPIO0_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC1_INTE0_GPIO0_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC1_INTE0_GPIO0_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO0_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO0_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO0_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC1_INTE0_GPIO0_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC1_INTE0_GPIO0_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC1_INTE0_GPIO0_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO0_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO0_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO0_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC1_INTE0_GPIO0_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC1_INTE0_GPIO0_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC1_INTE0_GPIO0_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE0_GPIO0_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE0_GPIO0_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE0_GPIO0_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC1_INTE0_GPIO0_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC1_INTE0_GPIO0_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC1_INTE0_GPIO0_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_PROC1_INTE1 +// Description : Interrupt Enable for proc1 +#define IO_BANK0_PROC1_INTE1_OFFSET _u(0x00000134) +#define IO_BANK0_PROC1_INTE1_BITS _u(0xffffffff) +#define IO_BANK0_PROC1_INTE1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO15_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO15_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO15_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_PROC1_INTE1_GPIO15_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_PROC1_INTE1_GPIO15_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_PROC1_INTE1_GPIO15_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO15_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO15_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO15_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_PROC1_INTE1_GPIO15_EDGE_LOW_MSB _u(30) +#define IO_BANK0_PROC1_INTE1_GPIO15_EDGE_LOW_LSB _u(30) +#define IO_BANK0_PROC1_INTE1_GPIO15_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO15_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO15_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO15_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_PROC1_INTE1_GPIO15_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_PROC1_INTE1_GPIO15_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_PROC1_INTE1_GPIO15_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO15_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO15_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO15_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_PROC1_INTE1_GPIO15_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_PROC1_INTE1_GPIO15_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_PROC1_INTE1_GPIO15_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO14_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO14_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO14_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_PROC1_INTE1_GPIO14_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_PROC1_INTE1_GPIO14_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_PROC1_INTE1_GPIO14_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO14_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO14_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO14_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_PROC1_INTE1_GPIO14_EDGE_LOW_MSB _u(26) +#define IO_BANK0_PROC1_INTE1_GPIO14_EDGE_LOW_LSB _u(26) +#define IO_BANK0_PROC1_INTE1_GPIO14_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO14_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO14_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO14_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_PROC1_INTE1_GPIO14_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_PROC1_INTE1_GPIO14_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_PROC1_INTE1_GPIO14_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO14_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO14_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO14_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_PROC1_INTE1_GPIO14_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_PROC1_INTE1_GPIO14_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_PROC1_INTE1_GPIO14_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO13_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO13_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO13_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC1_INTE1_GPIO13_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC1_INTE1_GPIO13_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC1_INTE1_GPIO13_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO13_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO13_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO13_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC1_INTE1_GPIO13_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC1_INTE1_GPIO13_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC1_INTE1_GPIO13_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO13_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO13_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO13_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC1_INTE1_GPIO13_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC1_INTE1_GPIO13_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC1_INTE1_GPIO13_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO13_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO13_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO13_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC1_INTE1_GPIO13_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC1_INTE1_GPIO13_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC1_INTE1_GPIO13_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO12_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO12_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO12_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC1_INTE1_GPIO12_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC1_INTE1_GPIO12_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC1_INTE1_GPIO12_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO12_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO12_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO12_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC1_INTE1_GPIO12_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC1_INTE1_GPIO12_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC1_INTE1_GPIO12_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO12_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO12_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO12_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC1_INTE1_GPIO12_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC1_INTE1_GPIO12_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC1_INTE1_GPIO12_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO12_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO12_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO12_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC1_INTE1_GPIO12_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC1_INTE1_GPIO12_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC1_INTE1_GPIO12_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO11_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO11_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO11_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC1_INTE1_GPIO11_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC1_INTE1_GPIO11_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC1_INTE1_GPIO11_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO11_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO11_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO11_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC1_INTE1_GPIO11_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC1_INTE1_GPIO11_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC1_INTE1_GPIO11_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO11_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO11_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO11_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC1_INTE1_GPIO11_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC1_INTE1_GPIO11_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC1_INTE1_GPIO11_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO11_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO11_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO11_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC1_INTE1_GPIO11_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC1_INTE1_GPIO11_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC1_INTE1_GPIO11_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO10_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO10_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO10_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC1_INTE1_GPIO10_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC1_INTE1_GPIO10_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC1_INTE1_GPIO10_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO10_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO10_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO10_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC1_INTE1_GPIO10_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC1_INTE1_GPIO10_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC1_INTE1_GPIO10_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO10_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO10_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO10_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC1_INTE1_GPIO10_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC1_INTE1_GPIO10_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC1_INTE1_GPIO10_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO10_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO10_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO10_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC1_INTE1_GPIO10_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC1_INTE1_GPIO10_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC1_INTE1_GPIO10_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO9_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO9_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO9_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC1_INTE1_GPIO9_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC1_INTE1_GPIO9_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC1_INTE1_GPIO9_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO9_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO9_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO9_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC1_INTE1_GPIO9_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC1_INTE1_GPIO9_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC1_INTE1_GPIO9_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO9_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO9_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO9_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC1_INTE1_GPIO9_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC1_INTE1_GPIO9_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC1_INTE1_GPIO9_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO9_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO9_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO9_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC1_INTE1_GPIO9_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC1_INTE1_GPIO9_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC1_INTE1_GPIO9_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO8_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO8_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO8_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC1_INTE1_GPIO8_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC1_INTE1_GPIO8_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC1_INTE1_GPIO8_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO8_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO8_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO8_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC1_INTE1_GPIO8_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC1_INTE1_GPIO8_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC1_INTE1_GPIO8_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO8_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO8_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO8_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC1_INTE1_GPIO8_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC1_INTE1_GPIO8_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC1_INTE1_GPIO8_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE1_GPIO8_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE1_GPIO8_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE1_GPIO8_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC1_INTE1_GPIO8_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC1_INTE1_GPIO8_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC1_INTE1_GPIO8_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_PROC1_INTE2 +// Description : Interrupt Enable for proc1 +#define IO_BANK0_PROC1_INTE2_OFFSET _u(0x00000138) +#define IO_BANK0_PROC1_INTE2_BITS _u(0xffffffff) +#define IO_BANK0_PROC1_INTE2_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO23_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO23_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO23_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_PROC1_INTE2_GPIO23_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_PROC1_INTE2_GPIO23_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_PROC1_INTE2_GPIO23_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO23_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO23_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO23_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_PROC1_INTE2_GPIO23_EDGE_LOW_MSB _u(30) +#define IO_BANK0_PROC1_INTE2_GPIO23_EDGE_LOW_LSB _u(30) +#define IO_BANK0_PROC1_INTE2_GPIO23_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO23_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO23_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO23_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_PROC1_INTE2_GPIO23_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_PROC1_INTE2_GPIO23_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_PROC1_INTE2_GPIO23_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO23_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO23_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO23_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_PROC1_INTE2_GPIO23_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_PROC1_INTE2_GPIO23_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_PROC1_INTE2_GPIO23_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO22_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO22_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO22_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_PROC1_INTE2_GPIO22_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_PROC1_INTE2_GPIO22_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_PROC1_INTE2_GPIO22_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO22_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO22_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO22_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_PROC1_INTE2_GPIO22_EDGE_LOW_MSB _u(26) +#define IO_BANK0_PROC1_INTE2_GPIO22_EDGE_LOW_LSB _u(26) +#define IO_BANK0_PROC1_INTE2_GPIO22_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO22_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO22_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO22_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_PROC1_INTE2_GPIO22_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_PROC1_INTE2_GPIO22_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_PROC1_INTE2_GPIO22_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO22_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO22_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO22_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_PROC1_INTE2_GPIO22_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_PROC1_INTE2_GPIO22_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_PROC1_INTE2_GPIO22_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO21_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO21_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO21_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC1_INTE2_GPIO21_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC1_INTE2_GPIO21_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC1_INTE2_GPIO21_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO21_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO21_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO21_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC1_INTE2_GPIO21_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC1_INTE2_GPIO21_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC1_INTE2_GPIO21_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO21_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO21_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO21_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC1_INTE2_GPIO21_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC1_INTE2_GPIO21_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC1_INTE2_GPIO21_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO21_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO21_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO21_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC1_INTE2_GPIO21_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC1_INTE2_GPIO21_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC1_INTE2_GPIO21_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO20_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO20_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO20_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC1_INTE2_GPIO20_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC1_INTE2_GPIO20_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC1_INTE2_GPIO20_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO20_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO20_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO20_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC1_INTE2_GPIO20_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC1_INTE2_GPIO20_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC1_INTE2_GPIO20_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO20_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO20_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO20_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC1_INTE2_GPIO20_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC1_INTE2_GPIO20_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC1_INTE2_GPIO20_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO20_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO20_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO20_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC1_INTE2_GPIO20_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC1_INTE2_GPIO20_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC1_INTE2_GPIO20_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO19_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO19_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO19_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC1_INTE2_GPIO19_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC1_INTE2_GPIO19_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC1_INTE2_GPIO19_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO19_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO19_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO19_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC1_INTE2_GPIO19_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC1_INTE2_GPIO19_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC1_INTE2_GPIO19_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO19_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO19_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO19_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC1_INTE2_GPIO19_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC1_INTE2_GPIO19_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC1_INTE2_GPIO19_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO19_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO19_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO19_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC1_INTE2_GPIO19_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC1_INTE2_GPIO19_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC1_INTE2_GPIO19_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO18_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO18_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO18_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC1_INTE2_GPIO18_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC1_INTE2_GPIO18_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC1_INTE2_GPIO18_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO18_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO18_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO18_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC1_INTE2_GPIO18_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC1_INTE2_GPIO18_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC1_INTE2_GPIO18_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO18_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO18_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO18_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC1_INTE2_GPIO18_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC1_INTE2_GPIO18_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC1_INTE2_GPIO18_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO18_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO18_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO18_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC1_INTE2_GPIO18_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC1_INTE2_GPIO18_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC1_INTE2_GPIO18_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO17_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO17_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO17_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC1_INTE2_GPIO17_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC1_INTE2_GPIO17_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC1_INTE2_GPIO17_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO17_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO17_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO17_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC1_INTE2_GPIO17_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC1_INTE2_GPIO17_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC1_INTE2_GPIO17_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO17_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO17_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO17_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC1_INTE2_GPIO17_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC1_INTE2_GPIO17_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC1_INTE2_GPIO17_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO17_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO17_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO17_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC1_INTE2_GPIO17_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC1_INTE2_GPIO17_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC1_INTE2_GPIO17_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO16_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO16_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO16_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC1_INTE2_GPIO16_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC1_INTE2_GPIO16_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC1_INTE2_GPIO16_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO16_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO16_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO16_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC1_INTE2_GPIO16_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC1_INTE2_GPIO16_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC1_INTE2_GPIO16_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO16_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO16_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO16_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC1_INTE2_GPIO16_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC1_INTE2_GPIO16_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC1_INTE2_GPIO16_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE2_GPIO16_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE2_GPIO16_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE2_GPIO16_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC1_INTE2_GPIO16_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC1_INTE2_GPIO16_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC1_INTE2_GPIO16_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_PROC1_INTE3 +// Description : Interrupt Enable for proc1 +#define IO_BANK0_PROC1_INTE3_OFFSET _u(0x0000013c) +#define IO_BANK0_PROC1_INTE3_BITS _u(0x00ffffff) +#define IO_BANK0_PROC1_INTE3_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO29_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO29_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO29_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC1_INTE3_GPIO29_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC1_INTE3_GPIO29_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC1_INTE3_GPIO29_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO29_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO29_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO29_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC1_INTE3_GPIO29_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC1_INTE3_GPIO29_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC1_INTE3_GPIO29_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO29_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO29_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO29_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC1_INTE3_GPIO29_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC1_INTE3_GPIO29_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC1_INTE3_GPIO29_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO29_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO29_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO29_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC1_INTE3_GPIO29_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC1_INTE3_GPIO29_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC1_INTE3_GPIO29_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO28_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO28_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO28_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC1_INTE3_GPIO28_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC1_INTE3_GPIO28_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC1_INTE3_GPIO28_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO28_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO28_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO28_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC1_INTE3_GPIO28_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC1_INTE3_GPIO28_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC1_INTE3_GPIO28_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO28_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO28_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO28_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC1_INTE3_GPIO28_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC1_INTE3_GPIO28_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC1_INTE3_GPIO28_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO28_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO28_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO28_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC1_INTE3_GPIO28_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC1_INTE3_GPIO28_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC1_INTE3_GPIO28_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO27_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO27_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO27_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC1_INTE3_GPIO27_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC1_INTE3_GPIO27_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC1_INTE3_GPIO27_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO27_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO27_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO27_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC1_INTE3_GPIO27_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC1_INTE3_GPIO27_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC1_INTE3_GPIO27_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO27_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO27_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO27_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC1_INTE3_GPIO27_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC1_INTE3_GPIO27_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC1_INTE3_GPIO27_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO27_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO27_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO27_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC1_INTE3_GPIO27_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC1_INTE3_GPIO27_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC1_INTE3_GPIO27_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO26_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO26_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO26_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC1_INTE3_GPIO26_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC1_INTE3_GPIO26_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC1_INTE3_GPIO26_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO26_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO26_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO26_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC1_INTE3_GPIO26_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC1_INTE3_GPIO26_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC1_INTE3_GPIO26_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO26_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO26_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO26_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC1_INTE3_GPIO26_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC1_INTE3_GPIO26_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC1_INTE3_GPIO26_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO26_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO26_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO26_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC1_INTE3_GPIO26_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC1_INTE3_GPIO26_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC1_INTE3_GPIO26_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO25_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO25_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO25_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC1_INTE3_GPIO25_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC1_INTE3_GPIO25_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC1_INTE3_GPIO25_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO25_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO25_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO25_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC1_INTE3_GPIO25_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC1_INTE3_GPIO25_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC1_INTE3_GPIO25_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO25_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO25_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO25_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC1_INTE3_GPIO25_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC1_INTE3_GPIO25_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC1_INTE3_GPIO25_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO25_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO25_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO25_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC1_INTE3_GPIO25_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC1_INTE3_GPIO25_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC1_INTE3_GPIO25_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO24_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO24_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO24_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC1_INTE3_GPIO24_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC1_INTE3_GPIO24_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC1_INTE3_GPIO24_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO24_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO24_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO24_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC1_INTE3_GPIO24_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC1_INTE3_GPIO24_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC1_INTE3_GPIO24_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO24_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO24_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO24_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC1_INTE3_GPIO24_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC1_INTE3_GPIO24_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC1_INTE3_GPIO24_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTE3_GPIO24_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTE3_GPIO24_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTE3_GPIO24_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC1_INTE3_GPIO24_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC1_INTE3_GPIO24_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC1_INTE3_GPIO24_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_PROC1_INTF0 +// Description : Interrupt Force for proc1 +#define IO_BANK0_PROC1_INTF0_OFFSET _u(0x00000140) +#define IO_BANK0_PROC1_INTF0_BITS _u(0xffffffff) +#define IO_BANK0_PROC1_INTF0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO7_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO7_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO7_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_PROC1_INTF0_GPIO7_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_PROC1_INTF0_GPIO7_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_PROC1_INTF0_GPIO7_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO7_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO7_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO7_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_PROC1_INTF0_GPIO7_EDGE_LOW_MSB _u(30) +#define IO_BANK0_PROC1_INTF0_GPIO7_EDGE_LOW_LSB _u(30) +#define IO_BANK0_PROC1_INTF0_GPIO7_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO7_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO7_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO7_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_PROC1_INTF0_GPIO7_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_PROC1_INTF0_GPIO7_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_PROC1_INTF0_GPIO7_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO7_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO7_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO7_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_PROC1_INTF0_GPIO7_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_PROC1_INTF0_GPIO7_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_PROC1_INTF0_GPIO7_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO6_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO6_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO6_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_PROC1_INTF0_GPIO6_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_PROC1_INTF0_GPIO6_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_PROC1_INTF0_GPIO6_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO6_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO6_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO6_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_PROC1_INTF0_GPIO6_EDGE_LOW_MSB _u(26) +#define IO_BANK0_PROC1_INTF0_GPIO6_EDGE_LOW_LSB _u(26) +#define IO_BANK0_PROC1_INTF0_GPIO6_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO6_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO6_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO6_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_PROC1_INTF0_GPIO6_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_PROC1_INTF0_GPIO6_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_PROC1_INTF0_GPIO6_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO6_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO6_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO6_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_PROC1_INTF0_GPIO6_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_PROC1_INTF0_GPIO6_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_PROC1_INTF0_GPIO6_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO5_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO5_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO5_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC1_INTF0_GPIO5_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC1_INTF0_GPIO5_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC1_INTF0_GPIO5_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO5_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO5_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO5_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC1_INTF0_GPIO5_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC1_INTF0_GPIO5_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC1_INTF0_GPIO5_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO5_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO5_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO5_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC1_INTF0_GPIO5_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC1_INTF0_GPIO5_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC1_INTF0_GPIO5_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO5_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO5_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO5_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC1_INTF0_GPIO5_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC1_INTF0_GPIO5_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC1_INTF0_GPIO5_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO4_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO4_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO4_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC1_INTF0_GPIO4_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC1_INTF0_GPIO4_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC1_INTF0_GPIO4_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO4_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO4_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO4_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC1_INTF0_GPIO4_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC1_INTF0_GPIO4_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC1_INTF0_GPIO4_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO4_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO4_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO4_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC1_INTF0_GPIO4_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC1_INTF0_GPIO4_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC1_INTF0_GPIO4_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO4_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO4_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO4_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC1_INTF0_GPIO4_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC1_INTF0_GPIO4_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC1_INTF0_GPIO4_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO3_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO3_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO3_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC1_INTF0_GPIO3_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC1_INTF0_GPIO3_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC1_INTF0_GPIO3_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO3_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO3_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO3_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC1_INTF0_GPIO3_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC1_INTF0_GPIO3_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC1_INTF0_GPIO3_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO3_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO3_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO3_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC1_INTF0_GPIO3_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC1_INTF0_GPIO3_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC1_INTF0_GPIO3_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO3_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO3_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO3_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC1_INTF0_GPIO3_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC1_INTF0_GPIO3_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC1_INTF0_GPIO3_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO2_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO2_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO2_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC1_INTF0_GPIO2_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC1_INTF0_GPIO2_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC1_INTF0_GPIO2_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO2_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO2_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO2_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC1_INTF0_GPIO2_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC1_INTF0_GPIO2_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC1_INTF0_GPIO2_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO2_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO2_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO2_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC1_INTF0_GPIO2_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC1_INTF0_GPIO2_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC1_INTF0_GPIO2_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO2_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO2_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO2_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC1_INTF0_GPIO2_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC1_INTF0_GPIO2_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC1_INTF0_GPIO2_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO1_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO1_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO1_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC1_INTF0_GPIO1_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC1_INTF0_GPIO1_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC1_INTF0_GPIO1_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO1_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO1_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO1_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC1_INTF0_GPIO1_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC1_INTF0_GPIO1_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC1_INTF0_GPIO1_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO1_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO1_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO1_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC1_INTF0_GPIO1_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC1_INTF0_GPIO1_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC1_INTF0_GPIO1_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO1_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO1_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO1_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC1_INTF0_GPIO1_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC1_INTF0_GPIO1_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC1_INTF0_GPIO1_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO0_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO0_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO0_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC1_INTF0_GPIO0_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC1_INTF0_GPIO0_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC1_INTF0_GPIO0_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO0_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO0_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO0_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC1_INTF0_GPIO0_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC1_INTF0_GPIO0_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC1_INTF0_GPIO0_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO0_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO0_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO0_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC1_INTF0_GPIO0_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC1_INTF0_GPIO0_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC1_INTF0_GPIO0_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF0_GPIO0_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF0_GPIO0_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF0_GPIO0_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC1_INTF0_GPIO0_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC1_INTF0_GPIO0_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC1_INTF0_GPIO0_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_PROC1_INTF1 +// Description : Interrupt Force for proc1 +#define IO_BANK0_PROC1_INTF1_OFFSET _u(0x00000144) +#define IO_BANK0_PROC1_INTF1_BITS _u(0xffffffff) +#define IO_BANK0_PROC1_INTF1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO15_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO15_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO15_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_PROC1_INTF1_GPIO15_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_PROC1_INTF1_GPIO15_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_PROC1_INTF1_GPIO15_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO15_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO15_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO15_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_PROC1_INTF1_GPIO15_EDGE_LOW_MSB _u(30) +#define IO_BANK0_PROC1_INTF1_GPIO15_EDGE_LOW_LSB _u(30) +#define IO_BANK0_PROC1_INTF1_GPIO15_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO15_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO15_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO15_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_PROC1_INTF1_GPIO15_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_PROC1_INTF1_GPIO15_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_PROC1_INTF1_GPIO15_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO15_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO15_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO15_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_PROC1_INTF1_GPIO15_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_PROC1_INTF1_GPIO15_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_PROC1_INTF1_GPIO15_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO14_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO14_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO14_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_PROC1_INTF1_GPIO14_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_PROC1_INTF1_GPIO14_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_PROC1_INTF1_GPIO14_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO14_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO14_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO14_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_PROC1_INTF1_GPIO14_EDGE_LOW_MSB _u(26) +#define IO_BANK0_PROC1_INTF1_GPIO14_EDGE_LOW_LSB _u(26) +#define IO_BANK0_PROC1_INTF1_GPIO14_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO14_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO14_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO14_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_PROC1_INTF1_GPIO14_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_PROC1_INTF1_GPIO14_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_PROC1_INTF1_GPIO14_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO14_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO14_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO14_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_PROC1_INTF1_GPIO14_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_PROC1_INTF1_GPIO14_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_PROC1_INTF1_GPIO14_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO13_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO13_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO13_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC1_INTF1_GPIO13_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC1_INTF1_GPIO13_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC1_INTF1_GPIO13_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO13_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO13_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO13_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC1_INTF1_GPIO13_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC1_INTF1_GPIO13_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC1_INTF1_GPIO13_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO13_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO13_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO13_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC1_INTF1_GPIO13_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC1_INTF1_GPIO13_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC1_INTF1_GPIO13_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO13_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO13_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO13_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC1_INTF1_GPIO13_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC1_INTF1_GPIO13_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC1_INTF1_GPIO13_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO12_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO12_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO12_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC1_INTF1_GPIO12_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC1_INTF1_GPIO12_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC1_INTF1_GPIO12_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO12_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO12_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO12_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC1_INTF1_GPIO12_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC1_INTF1_GPIO12_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC1_INTF1_GPIO12_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO12_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO12_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO12_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC1_INTF1_GPIO12_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC1_INTF1_GPIO12_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC1_INTF1_GPIO12_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO12_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO12_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO12_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC1_INTF1_GPIO12_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC1_INTF1_GPIO12_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC1_INTF1_GPIO12_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO11_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO11_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO11_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC1_INTF1_GPIO11_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC1_INTF1_GPIO11_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC1_INTF1_GPIO11_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO11_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO11_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO11_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC1_INTF1_GPIO11_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC1_INTF1_GPIO11_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC1_INTF1_GPIO11_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO11_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO11_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO11_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC1_INTF1_GPIO11_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC1_INTF1_GPIO11_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC1_INTF1_GPIO11_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO11_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO11_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO11_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC1_INTF1_GPIO11_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC1_INTF1_GPIO11_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC1_INTF1_GPIO11_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO10_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO10_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO10_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC1_INTF1_GPIO10_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC1_INTF1_GPIO10_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC1_INTF1_GPIO10_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO10_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO10_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO10_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC1_INTF1_GPIO10_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC1_INTF1_GPIO10_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC1_INTF1_GPIO10_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO10_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO10_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO10_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC1_INTF1_GPIO10_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC1_INTF1_GPIO10_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC1_INTF1_GPIO10_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO10_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO10_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO10_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC1_INTF1_GPIO10_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC1_INTF1_GPIO10_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC1_INTF1_GPIO10_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO9_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO9_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO9_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC1_INTF1_GPIO9_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC1_INTF1_GPIO9_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC1_INTF1_GPIO9_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO9_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO9_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO9_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC1_INTF1_GPIO9_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC1_INTF1_GPIO9_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC1_INTF1_GPIO9_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO9_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO9_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO9_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC1_INTF1_GPIO9_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC1_INTF1_GPIO9_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC1_INTF1_GPIO9_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO9_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO9_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO9_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC1_INTF1_GPIO9_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC1_INTF1_GPIO9_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC1_INTF1_GPIO9_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO8_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO8_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO8_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC1_INTF1_GPIO8_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC1_INTF1_GPIO8_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC1_INTF1_GPIO8_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO8_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO8_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO8_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC1_INTF1_GPIO8_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC1_INTF1_GPIO8_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC1_INTF1_GPIO8_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO8_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO8_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO8_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC1_INTF1_GPIO8_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC1_INTF1_GPIO8_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC1_INTF1_GPIO8_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF1_GPIO8_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF1_GPIO8_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF1_GPIO8_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC1_INTF1_GPIO8_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC1_INTF1_GPIO8_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC1_INTF1_GPIO8_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_PROC1_INTF2 +// Description : Interrupt Force for proc1 +#define IO_BANK0_PROC1_INTF2_OFFSET _u(0x00000148) +#define IO_BANK0_PROC1_INTF2_BITS _u(0xffffffff) +#define IO_BANK0_PROC1_INTF2_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO23_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO23_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO23_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_PROC1_INTF2_GPIO23_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_PROC1_INTF2_GPIO23_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_PROC1_INTF2_GPIO23_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO23_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO23_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO23_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_PROC1_INTF2_GPIO23_EDGE_LOW_MSB _u(30) +#define IO_BANK0_PROC1_INTF2_GPIO23_EDGE_LOW_LSB _u(30) +#define IO_BANK0_PROC1_INTF2_GPIO23_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO23_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO23_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO23_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_PROC1_INTF2_GPIO23_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_PROC1_INTF2_GPIO23_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_PROC1_INTF2_GPIO23_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO23_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO23_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO23_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_PROC1_INTF2_GPIO23_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_PROC1_INTF2_GPIO23_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_PROC1_INTF2_GPIO23_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO22_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO22_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO22_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_PROC1_INTF2_GPIO22_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_PROC1_INTF2_GPIO22_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_PROC1_INTF2_GPIO22_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO22_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO22_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO22_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_PROC1_INTF2_GPIO22_EDGE_LOW_MSB _u(26) +#define IO_BANK0_PROC1_INTF2_GPIO22_EDGE_LOW_LSB _u(26) +#define IO_BANK0_PROC1_INTF2_GPIO22_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO22_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO22_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO22_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_PROC1_INTF2_GPIO22_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_PROC1_INTF2_GPIO22_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_PROC1_INTF2_GPIO22_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO22_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO22_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO22_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_PROC1_INTF2_GPIO22_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_PROC1_INTF2_GPIO22_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_PROC1_INTF2_GPIO22_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO21_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO21_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO21_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC1_INTF2_GPIO21_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC1_INTF2_GPIO21_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC1_INTF2_GPIO21_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO21_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO21_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO21_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC1_INTF2_GPIO21_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC1_INTF2_GPIO21_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC1_INTF2_GPIO21_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO21_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO21_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO21_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC1_INTF2_GPIO21_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC1_INTF2_GPIO21_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC1_INTF2_GPIO21_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO21_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO21_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO21_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC1_INTF2_GPIO21_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC1_INTF2_GPIO21_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC1_INTF2_GPIO21_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO20_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO20_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO20_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC1_INTF2_GPIO20_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC1_INTF2_GPIO20_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC1_INTF2_GPIO20_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO20_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO20_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO20_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC1_INTF2_GPIO20_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC1_INTF2_GPIO20_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC1_INTF2_GPIO20_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO20_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO20_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO20_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC1_INTF2_GPIO20_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC1_INTF2_GPIO20_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC1_INTF2_GPIO20_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO20_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO20_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO20_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC1_INTF2_GPIO20_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC1_INTF2_GPIO20_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC1_INTF2_GPIO20_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO19_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO19_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO19_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC1_INTF2_GPIO19_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC1_INTF2_GPIO19_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC1_INTF2_GPIO19_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO19_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO19_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO19_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC1_INTF2_GPIO19_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC1_INTF2_GPIO19_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC1_INTF2_GPIO19_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO19_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO19_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO19_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC1_INTF2_GPIO19_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC1_INTF2_GPIO19_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC1_INTF2_GPIO19_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO19_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO19_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO19_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC1_INTF2_GPIO19_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC1_INTF2_GPIO19_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC1_INTF2_GPIO19_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO18_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO18_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO18_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC1_INTF2_GPIO18_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC1_INTF2_GPIO18_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC1_INTF2_GPIO18_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO18_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO18_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO18_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC1_INTF2_GPIO18_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC1_INTF2_GPIO18_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC1_INTF2_GPIO18_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO18_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO18_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO18_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC1_INTF2_GPIO18_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC1_INTF2_GPIO18_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC1_INTF2_GPIO18_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO18_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO18_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO18_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC1_INTF2_GPIO18_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC1_INTF2_GPIO18_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC1_INTF2_GPIO18_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO17_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO17_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO17_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC1_INTF2_GPIO17_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC1_INTF2_GPIO17_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC1_INTF2_GPIO17_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO17_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO17_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO17_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC1_INTF2_GPIO17_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC1_INTF2_GPIO17_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC1_INTF2_GPIO17_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO17_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO17_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO17_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC1_INTF2_GPIO17_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC1_INTF2_GPIO17_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC1_INTF2_GPIO17_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO17_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO17_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO17_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC1_INTF2_GPIO17_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC1_INTF2_GPIO17_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC1_INTF2_GPIO17_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO16_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO16_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO16_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC1_INTF2_GPIO16_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC1_INTF2_GPIO16_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC1_INTF2_GPIO16_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO16_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO16_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO16_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC1_INTF2_GPIO16_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC1_INTF2_GPIO16_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC1_INTF2_GPIO16_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO16_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO16_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO16_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC1_INTF2_GPIO16_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC1_INTF2_GPIO16_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC1_INTF2_GPIO16_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF2_GPIO16_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF2_GPIO16_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF2_GPIO16_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC1_INTF2_GPIO16_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC1_INTF2_GPIO16_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC1_INTF2_GPIO16_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_PROC1_INTF3 +// Description : Interrupt Force for proc1 +#define IO_BANK0_PROC1_INTF3_OFFSET _u(0x0000014c) +#define IO_BANK0_PROC1_INTF3_BITS _u(0x00ffffff) +#define IO_BANK0_PROC1_INTF3_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO29_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO29_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO29_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC1_INTF3_GPIO29_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC1_INTF3_GPIO29_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC1_INTF3_GPIO29_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO29_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO29_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO29_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC1_INTF3_GPIO29_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC1_INTF3_GPIO29_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC1_INTF3_GPIO29_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO29_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO29_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO29_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC1_INTF3_GPIO29_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC1_INTF3_GPIO29_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC1_INTF3_GPIO29_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO29_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO29_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO29_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC1_INTF3_GPIO29_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC1_INTF3_GPIO29_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC1_INTF3_GPIO29_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO28_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO28_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO28_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC1_INTF3_GPIO28_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC1_INTF3_GPIO28_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC1_INTF3_GPIO28_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO28_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO28_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO28_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC1_INTF3_GPIO28_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC1_INTF3_GPIO28_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC1_INTF3_GPIO28_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO28_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO28_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO28_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC1_INTF3_GPIO28_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC1_INTF3_GPIO28_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC1_INTF3_GPIO28_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO28_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO28_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO28_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC1_INTF3_GPIO28_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC1_INTF3_GPIO28_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC1_INTF3_GPIO28_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO27_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO27_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO27_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC1_INTF3_GPIO27_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC1_INTF3_GPIO27_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC1_INTF3_GPIO27_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO27_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO27_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO27_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC1_INTF3_GPIO27_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC1_INTF3_GPIO27_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC1_INTF3_GPIO27_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO27_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO27_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO27_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC1_INTF3_GPIO27_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC1_INTF3_GPIO27_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC1_INTF3_GPIO27_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO27_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO27_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO27_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC1_INTF3_GPIO27_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC1_INTF3_GPIO27_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC1_INTF3_GPIO27_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO26_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO26_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO26_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC1_INTF3_GPIO26_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC1_INTF3_GPIO26_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC1_INTF3_GPIO26_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO26_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO26_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO26_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC1_INTF3_GPIO26_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC1_INTF3_GPIO26_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC1_INTF3_GPIO26_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO26_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO26_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO26_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC1_INTF3_GPIO26_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC1_INTF3_GPIO26_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC1_INTF3_GPIO26_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO26_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO26_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO26_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC1_INTF3_GPIO26_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC1_INTF3_GPIO26_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC1_INTF3_GPIO26_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO25_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO25_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO25_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC1_INTF3_GPIO25_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC1_INTF3_GPIO25_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC1_INTF3_GPIO25_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO25_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO25_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO25_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC1_INTF3_GPIO25_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC1_INTF3_GPIO25_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC1_INTF3_GPIO25_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO25_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO25_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO25_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC1_INTF3_GPIO25_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC1_INTF3_GPIO25_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC1_INTF3_GPIO25_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO25_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO25_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO25_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC1_INTF3_GPIO25_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC1_INTF3_GPIO25_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC1_INTF3_GPIO25_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO24_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO24_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO24_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC1_INTF3_GPIO24_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC1_INTF3_GPIO24_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC1_INTF3_GPIO24_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO24_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO24_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO24_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC1_INTF3_GPIO24_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC1_INTF3_GPIO24_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC1_INTF3_GPIO24_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO24_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO24_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO24_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC1_INTF3_GPIO24_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC1_INTF3_GPIO24_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC1_INTF3_GPIO24_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTF3_GPIO24_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTF3_GPIO24_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTF3_GPIO24_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC1_INTF3_GPIO24_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC1_INTF3_GPIO24_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC1_INTF3_GPIO24_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_PROC1_INTS0 +// Description : Interrupt status after masking & forcing for proc1 +#define IO_BANK0_PROC1_INTS0_OFFSET _u(0x00000150) +#define IO_BANK0_PROC1_INTS0_BITS _u(0xffffffff) +#define IO_BANK0_PROC1_INTS0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO7_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO7_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO7_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_PROC1_INTS0_GPIO7_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_PROC1_INTS0_GPIO7_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_PROC1_INTS0_GPIO7_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO7_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO7_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO7_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_PROC1_INTS0_GPIO7_EDGE_LOW_MSB _u(30) +#define IO_BANK0_PROC1_INTS0_GPIO7_EDGE_LOW_LSB _u(30) +#define IO_BANK0_PROC1_INTS0_GPIO7_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO7_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO7_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO7_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_PROC1_INTS0_GPIO7_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_PROC1_INTS0_GPIO7_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_PROC1_INTS0_GPIO7_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO7_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO7_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO7_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_PROC1_INTS0_GPIO7_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_PROC1_INTS0_GPIO7_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_PROC1_INTS0_GPIO7_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO6_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO6_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO6_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_PROC1_INTS0_GPIO6_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_PROC1_INTS0_GPIO6_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_PROC1_INTS0_GPIO6_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO6_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO6_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO6_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_PROC1_INTS0_GPIO6_EDGE_LOW_MSB _u(26) +#define IO_BANK0_PROC1_INTS0_GPIO6_EDGE_LOW_LSB _u(26) +#define IO_BANK0_PROC1_INTS0_GPIO6_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO6_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO6_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO6_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_PROC1_INTS0_GPIO6_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_PROC1_INTS0_GPIO6_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_PROC1_INTS0_GPIO6_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO6_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO6_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO6_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_PROC1_INTS0_GPIO6_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_PROC1_INTS0_GPIO6_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_PROC1_INTS0_GPIO6_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO5_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO5_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO5_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC1_INTS0_GPIO5_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC1_INTS0_GPIO5_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC1_INTS0_GPIO5_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO5_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO5_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO5_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC1_INTS0_GPIO5_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC1_INTS0_GPIO5_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC1_INTS0_GPIO5_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO5_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO5_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO5_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC1_INTS0_GPIO5_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC1_INTS0_GPIO5_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC1_INTS0_GPIO5_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO5_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO5_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO5_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC1_INTS0_GPIO5_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC1_INTS0_GPIO5_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC1_INTS0_GPIO5_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO4_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO4_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO4_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC1_INTS0_GPIO4_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC1_INTS0_GPIO4_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC1_INTS0_GPIO4_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO4_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO4_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO4_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC1_INTS0_GPIO4_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC1_INTS0_GPIO4_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC1_INTS0_GPIO4_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO4_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO4_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO4_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC1_INTS0_GPIO4_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC1_INTS0_GPIO4_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC1_INTS0_GPIO4_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO4_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO4_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO4_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC1_INTS0_GPIO4_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC1_INTS0_GPIO4_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC1_INTS0_GPIO4_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO3_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO3_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO3_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC1_INTS0_GPIO3_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC1_INTS0_GPIO3_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC1_INTS0_GPIO3_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO3_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO3_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO3_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC1_INTS0_GPIO3_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC1_INTS0_GPIO3_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC1_INTS0_GPIO3_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO3_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO3_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO3_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC1_INTS0_GPIO3_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC1_INTS0_GPIO3_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC1_INTS0_GPIO3_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO3_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO3_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO3_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC1_INTS0_GPIO3_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC1_INTS0_GPIO3_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC1_INTS0_GPIO3_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO2_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO2_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO2_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC1_INTS0_GPIO2_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC1_INTS0_GPIO2_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC1_INTS0_GPIO2_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO2_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO2_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO2_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC1_INTS0_GPIO2_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC1_INTS0_GPIO2_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC1_INTS0_GPIO2_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO2_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO2_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO2_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC1_INTS0_GPIO2_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC1_INTS0_GPIO2_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC1_INTS0_GPIO2_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO2_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO2_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO2_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC1_INTS0_GPIO2_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC1_INTS0_GPIO2_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC1_INTS0_GPIO2_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO1_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO1_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO1_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC1_INTS0_GPIO1_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC1_INTS0_GPIO1_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC1_INTS0_GPIO1_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO1_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO1_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO1_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC1_INTS0_GPIO1_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC1_INTS0_GPIO1_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC1_INTS0_GPIO1_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO1_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO1_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO1_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC1_INTS0_GPIO1_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC1_INTS0_GPIO1_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC1_INTS0_GPIO1_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO1_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO1_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO1_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC1_INTS0_GPIO1_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC1_INTS0_GPIO1_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC1_INTS0_GPIO1_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO0_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO0_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO0_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC1_INTS0_GPIO0_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC1_INTS0_GPIO0_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC1_INTS0_GPIO0_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO0_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO0_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO0_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC1_INTS0_GPIO0_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC1_INTS0_GPIO0_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC1_INTS0_GPIO0_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO0_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO0_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO0_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC1_INTS0_GPIO0_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC1_INTS0_GPIO0_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC1_INTS0_GPIO0_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS0_GPIO0_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS0_GPIO0_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS0_GPIO0_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC1_INTS0_GPIO0_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC1_INTS0_GPIO0_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC1_INTS0_GPIO0_LEVEL_LOW_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_PROC1_INTS1 +// Description : Interrupt status after masking & forcing for proc1 +#define IO_BANK0_PROC1_INTS1_OFFSET _u(0x00000154) +#define IO_BANK0_PROC1_INTS1_BITS _u(0xffffffff) +#define IO_BANK0_PROC1_INTS1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO15_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO15_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO15_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_PROC1_INTS1_GPIO15_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_PROC1_INTS1_GPIO15_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_PROC1_INTS1_GPIO15_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO15_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO15_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO15_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_PROC1_INTS1_GPIO15_EDGE_LOW_MSB _u(30) +#define IO_BANK0_PROC1_INTS1_GPIO15_EDGE_LOW_LSB _u(30) +#define IO_BANK0_PROC1_INTS1_GPIO15_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO15_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO15_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO15_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_PROC1_INTS1_GPIO15_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_PROC1_INTS1_GPIO15_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_PROC1_INTS1_GPIO15_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO15_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO15_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO15_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_PROC1_INTS1_GPIO15_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_PROC1_INTS1_GPIO15_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_PROC1_INTS1_GPIO15_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO14_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO14_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO14_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_PROC1_INTS1_GPIO14_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_PROC1_INTS1_GPIO14_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_PROC1_INTS1_GPIO14_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO14_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO14_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO14_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_PROC1_INTS1_GPIO14_EDGE_LOW_MSB _u(26) +#define IO_BANK0_PROC1_INTS1_GPIO14_EDGE_LOW_LSB _u(26) +#define IO_BANK0_PROC1_INTS1_GPIO14_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO14_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO14_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO14_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_PROC1_INTS1_GPIO14_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_PROC1_INTS1_GPIO14_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_PROC1_INTS1_GPIO14_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO14_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO14_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO14_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_PROC1_INTS1_GPIO14_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_PROC1_INTS1_GPIO14_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_PROC1_INTS1_GPIO14_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO13_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO13_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO13_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC1_INTS1_GPIO13_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC1_INTS1_GPIO13_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC1_INTS1_GPIO13_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO13_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO13_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO13_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC1_INTS1_GPIO13_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC1_INTS1_GPIO13_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC1_INTS1_GPIO13_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO13_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO13_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO13_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC1_INTS1_GPIO13_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC1_INTS1_GPIO13_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC1_INTS1_GPIO13_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO13_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO13_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO13_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC1_INTS1_GPIO13_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC1_INTS1_GPIO13_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC1_INTS1_GPIO13_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO12_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO12_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO12_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC1_INTS1_GPIO12_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC1_INTS1_GPIO12_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC1_INTS1_GPIO12_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO12_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO12_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO12_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC1_INTS1_GPIO12_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC1_INTS1_GPIO12_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC1_INTS1_GPIO12_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO12_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO12_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO12_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC1_INTS1_GPIO12_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC1_INTS1_GPIO12_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC1_INTS1_GPIO12_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO12_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO12_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO12_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC1_INTS1_GPIO12_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC1_INTS1_GPIO12_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC1_INTS1_GPIO12_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO11_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO11_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO11_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC1_INTS1_GPIO11_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC1_INTS1_GPIO11_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC1_INTS1_GPIO11_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO11_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO11_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO11_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC1_INTS1_GPIO11_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC1_INTS1_GPIO11_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC1_INTS1_GPIO11_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO11_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO11_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO11_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC1_INTS1_GPIO11_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC1_INTS1_GPIO11_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC1_INTS1_GPIO11_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO11_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO11_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO11_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC1_INTS1_GPIO11_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC1_INTS1_GPIO11_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC1_INTS1_GPIO11_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO10_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO10_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO10_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC1_INTS1_GPIO10_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC1_INTS1_GPIO10_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC1_INTS1_GPIO10_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO10_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO10_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO10_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC1_INTS1_GPIO10_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC1_INTS1_GPIO10_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC1_INTS1_GPIO10_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO10_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO10_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO10_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC1_INTS1_GPIO10_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC1_INTS1_GPIO10_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC1_INTS1_GPIO10_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO10_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO10_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO10_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC1_INTS1_GPIO10_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC1_INTS1_GPIO10_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC1_INTS1_GPIO10_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO9_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO9_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO9_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC1_INTS1_GPIO9_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC1_INTS1_GPIO9_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC1_INTS1_GPIO9_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO9_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO9_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO9_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC1_INTS1_GPIO9_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC1_INTS1_GPIO9_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC1_INTS1_GPIO9_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO9_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO9_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO9_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC1_INTS1_GPIO9_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC1_INTS1_GPIO9_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC1_INTS1_GPIO9_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO9_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO9_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO9_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC1_INTS1_GPIO9_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC1_INTS1_GPIO9_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC1_INTS1_GPIO9_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO8_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO8_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO8_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC1_INTS1_GPIO8_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC1_INTS1_GPIO8_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC1_INTS1_GPIO8_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO8_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO8_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO8_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC1_INTS1_GPIO8_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC1_INTS1_GPIO8_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC1_INTS1_GPIO8_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO8_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO8_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO8_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC1_INTS1_GPIO8_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC1_INTS1_GPIO8_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC1_INTS1_GPIO8_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS1_GPIO8_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS1_GPIO8_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS1_GPIO8_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC1_INTS1_GPIO8_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC1_INTS1_GPIO8_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC1_INTS1_GPIO8_LEVEL_LOW_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_PROC1_INTS2 +// Description : Interrupt status after masking & forcing for proc1 +#define IO_BANK0_PROC1_INTS2_OFFSET _u(0x00000158) +#define IO_BANK0_PROC1_INTS2_BITS _u(0xffffffff) +#define IO_BANK0_PROC1_INTS2_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO23_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO23_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO23_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_PROC1_INTS2_GPIO23_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_PROC1_INTS2_GPIO23_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_PROC1_INTS2_GPIO23_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO23_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO23_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO23_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_PROC1_INTS2_GPIO23_EDGE_LOW_MSB _u(30) +#define IO_BANK0_PROC1_INTS2_GPIO23_EDGE_LOW_LSB _u(30) +#define IO_BANK0_PROC1_INTS2_GPIO23_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO23_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO23_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO23_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_PROC1_INTS2_GPIO23_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_PROC1_INTS2_GPIO23_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_PROC1_INTS2_GPIO23_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO23_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO23_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO23_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_PROC1_INTS2_GPIO23_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_PROC1_INTS2_GPIO23_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_PROC1_INTS2_GPIO23_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO22_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO22_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO22_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_PROC1_INTS2_GPIO22_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_PROC1_INTS2_GPIO22_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_PROC1_INTS2_GPIO22_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO22_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO22_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO22_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_PROC1_INTS2_GPIO22_EDGE_LOW_MSB _u(26) +#define IO_BANK0_PROC1_INTS2_GPIO22_EDGE_LOW_LSB _u(26) +#define IO_BANK0_PROC1_INTS2_GPIO22_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO22_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO22_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO22_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_PROC1_INTS2_GPIO22_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_PROC1_INTS2_GPIO22_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_PROC1_INTS2_GPIO22_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO22_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO22_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO22_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_PROC1_INTS2_GPIO22_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_PROC1_INTS2_GPIO22_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_PROC1_INTS2_GPIO22_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO21_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO21_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO21_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC1_INTS2_GPIO21_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC1_INTS2_GPIO21_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC1_INTS2_GPIO21_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO21_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO21_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO21_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC1_INTS2_GPIO21_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC1_INTS2_GPIO21_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC1_INTS2_GPIO21_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO21_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO21_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO21_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC1_INTS2_GPIO21_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC1_INTS2_GPIO21_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC1_INTS2_GPIO21_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO21_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO21_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO21_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC1_INTS2_GPIO21_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC1_INTS2_GPIO21_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC1_INTS2_GPIO21_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO20_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO20_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO20_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC1_INTS2_GPIO20_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC1_INTS2_GPIO20_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC1_INTS2_GPIO20_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO20_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO20_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO20_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC1_INTS2_GPIO20_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC1_INTS2_GPIO20_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC1_INTS2_GPIO20_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO20_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO20_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO20_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC1_INTS2_GPIO20_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC1_INTS2_GPIO20_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC1_INTS2_GPIO20_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO20_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO20_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO20_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC1_INTS2_GPIO20_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC1_INTS2_GPIO20_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC1_INTS2_GPIO20_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO19_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO19_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO19_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC1_INTS2_GPIO19_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC1_INTS2_GPIO19_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC1_INTS2_GPIO19_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO19_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO19_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO19_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC1_INTS2_GPIO19_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC1_INTS2_GPIO19_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC1_INTS2_GPIO19_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO19_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO19_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO19_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC1_INTS2_GPIO19_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC1_INTS2_GPIO19_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC1_INTS2_GPIO19_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO19_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO19_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO19_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC1_INTS2_GPIO19_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC1_INTS2_GPIO19_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC1_INTS2_GPIO19_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO18_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO18_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO18_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC1_INTS2_GPIO18_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC1_INTS2_GPIO18_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC1_INTS2_GPIO18_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO18_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO18_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO18_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC1_INTS2_GPIO18_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC1_INTS2_GPIO18_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC1_INTS2_GPIO18_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO18_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO18_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO18_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC1_INTS2_GPIO18_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC1_INTS2_GPIO18_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC1_INTS2_GPIO18_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO18_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO18_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO18_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC1_INTS2_GPIO18_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC1_INTS2_GPIO18_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC1_INTS2_GPIO18_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO17_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO17_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO17_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC1_INTS2_GPIO17_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC1_INTS2_GPIO17_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC1_INTS2_GPIO17_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO17_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO17_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO17_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC1_INTS2_GPIO17_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC1_INTS2_GPIO17_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC1_INTS2_GPIO17_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO17_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO17_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO17_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC1_INTS2_GPIO17_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC1_INTS2_GPIO17_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC1_INTS2_GPIO17_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO17_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO17_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO17_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC1_INTS2_GPIO17_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC1_INTS2_GPIO17_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC1_INTS2_GPIO17_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO16_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO16_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO16_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC1_INTS2_GPIO16_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC1_INTS2_GPIO16_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC1_INTS2_GPIO16_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO16_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO16_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO16_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC1_INTS2_GPIO16_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC1_INTS2_GPIO16_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC1_INTS2_GPIO16_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO16_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO16_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO16_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC1_INTS2_GPIO16_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC1_INTS2_GPIO16_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC1_INTS2_GPIO16_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS2_GPIO16_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS2_GPIO16_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS2_GPIO16_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC1_INTS2_GPIO16_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC1_INTS2_GPIO16_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC1_INTS2_GPIO16_LEVEL_LOW_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_PROC1_INTS3 +// Description : Interrupt status after masking & forcing for proc1 +#define IO_BANK0_PROC1_INTS3_OFFSET _u(0x0000015c) +#define IO_BANK0_PROC1_INTS3_BITS _u(0x00ffffff) +#define IO_BANK0_PROC1_INTS3_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO29_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO29_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO29_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_PROC1_INTS3_GPIO29_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_PROC1_INTS3_GPIO29_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_PROC1_INTS3_GPIO29_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO29_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO29_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO29_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_PROC1_INTS3_GPIO29_EDGE_LOW_MSB _u(22) +#define IO_BANK0_PROC1_INTS3_GPIO29_EDGE_LOW_LSB _u(22) +#define IO_BANK0_PROC1_INTS3_GPIO29_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO29_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO29_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO29_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_PROC1_INTS3_GPIO29_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_PROC1_INTS3_GPIO29_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_PROC1_INTS3_GPIO29_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO29_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO29_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO29_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_PROC1_INTS3_GPIO29_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_PROC1_INTS3_GPIO29_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_PROC1_INTS3_GPIO29_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO28_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO28_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO28_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_PROC1_INTS3_GPIO28_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_PROC1_INTS3_GPIO28_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_PROC1_INTS3_GPIO28_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO28_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO28_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO28_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_PROC1_INTS3_GPIO28_EDGE_LOW_MSB _u(18) +#define IO_BANK0_PROC1_INTS3_GPIO28_EDGE_LOW_LSB _u(18) +#define IO_BANK0_PROC1_INTS3_GPIO28_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO28_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO28_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO28_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_PROC1_INTS3_GPIO28_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_PROC1_INTS3_GPIO28_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_PROC1_INTS3_GPIO28_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO28_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO28_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO28_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_PROC1_INTS3_GPIO28_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_PROC1_INTS3_GPIO28_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_PROC1_INTS3_GPIO28_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO27_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO27_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO27_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_PROC1_INTS3_GPIO27_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_PROC1_INTS3_GPIO27_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_PROC1_INTS3_GPIO27_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO27_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO27_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO27_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_PROC1_INTS3_GPIO27_EDGE_LOW_MSB _u(14) +#define IO_BANK0_PROC1_INTS3_GPIO27_EDGE_LOW_LSB _u(14) +#define IO_BANK0_PROC1_INTS3_GPIO27_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO27_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO27_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO27_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_PROC1_INTS3_GPIO27_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_PROC1_INTS3_GPIO27_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_PROC1_INTS3_GPIO27_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO27_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO27_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO27_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_PROC1_INTS3_GPIO27_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_PROC1_INTS3_GPIO27_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_PROC1_INTS3_GPIO27_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO26_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO26_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO26_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_PROC1_INTS3_GPIO26_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_PROC1_INTS3_GPIO26_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_PROC1_INTS3_GPIO26_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO26_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO26_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO26_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_PROC1_INTS3_GPIO26_EDGE_LOW_MSB _u(10) +#define IO_BANK0_PROC1_INTS3_GPIO26_EDGE_LOW_LSB _u(10) +#define IO_BANK0_PROC1_INTS3_GPIO26_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO26_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO26_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO26_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_PROC1_INTS3_GPIO26_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_PROC1_INTS3_GPIO26_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_PROC1_INTS3_GPIO26_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO26_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO26_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO26_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_PROC1_INTS3_GPIO26_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_PROC1_INTS3_GPIO26_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_PROC1_INTS3_GPIO26_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO25_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO25_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO25_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_PROC1_INTS3_GPIO25_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_PROC1_INTS3_GPIO25_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_PROC1_INTS3_GPIO25_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO25_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO25_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO25_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_PROC1_INTS3_GPIO25_EDGE_LOW_MSB _u(6) +#define IO_BANK0_PROC1_INTS3_GPIO25_EDGE_LOW_LSB _u(6) +#define IO_BANK0_PROC1_INTS3_GPIO25_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO25_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO25_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO25_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_PROC1_INTS3_GPIO25_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_PROC1_INTS3_GPIO25_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_PROC1_INTS3_GPIO25_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO25_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO25_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO25_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_PROC1_INTS3_GPIO25_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_PROC1_INTS3_GPIO25_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_PROC1_INTS3_GPIO25_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO24_EDGE_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO24_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO24_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_PROC1_INTS3_GPIO24_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_PROC1_INTS3_GPIO24_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_PROC1_INTS3_GPIO24_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO24_EDGE_LOW +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO24_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO24_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_PROC1_INTS3_GPIO24_EDGE_LOW_MSB _u(2) +#define IO_BANK0_PROC1_INTS3_GPIO24_EDGE_LOW_LSB _u(2) +#define IO_BANK0_PROC1_INTS3_GPIO24_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO24_LEVEL_HIGH +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO24_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO24_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_PROC1_INTS3_GPIO24_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_PROC1_INTS3_GPIO24_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_PROC1_INTS3_GPIO24_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_PROC1_INTS3_GPIO24_LEVEL_LOW +// Description : None +#define IO_BANK0_PROC1_INTS3_GPIO24_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_PROC1_INTS3_GPIO24_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_PROC1_INTS3_GPIO24_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_PROC1_INTS3_GPIO24_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_PROC1_INTS3_GPIO24_LEVEL_LOW_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_DORMANT_WAKE_INTE0 +// Description : Interrupt Enable for dormant_wake +#define IO_BANK0_DORMANT_WAKE_INTE0_OFFSET _u(0x00000160) +#define IO_BANK0_DORMANT_WAKE_INTE0_BITS _u(0xffffffff) +#define IO_BANK0_DORMANT_WAKE_INTE0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_EDGE_LOW_MSB _u(30) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_EDGE_LOW_LSB _u(30) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO7_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_EDGE_LOW_MSB _u(26) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_EDGE_LOW_LSB _u(26) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO6_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_EDGE_LOW_MSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_EDGE_LOW_LSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO5_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_EDGE_LOW_MSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_EDGE_LOW_LSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO4_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_EDGE_LOW_MSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_EDGE_LOW_LSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO3_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_EDGE_LOW_MSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_EDGE_LOW_LSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO2_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_EDGE_LOW_MSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_EDGE_LOW_LSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO1_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_EDGE_LOW_MSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_EDGE_LOW_LSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTE0_GPIO0_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_DORMANT_WAKE_INTE1 +// Description : Interrupt Enable for dormant_wake +#define IO_BANK0_DORMANT_WAKE_INTE1_OFFSET _u(0x00000164) +#define IO_BANK0_DORMANT_WAKE_INTE1_BITS _u(0xffffffff) +#define IO_BANK0_DORMANT_WAKE_INTE1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_EDGE_LOW_MSB _u(30) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_EDGE_LOW_LSB _u(30) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO15_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_EDGE_LOW_MSB _u(26) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_EDGE_LOW_LSB _u(26) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO14_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_EDGE_LOW_MSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_EDGE_LOW_LSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO13_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_EDGE_LOW_MSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_EDGE_LOW_LSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO12_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_EDGE_LOW_MSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_EDGE_LOW_LSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO11_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_EDGE_LOW_MSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_EDGE_LOW_LSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO10_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_EDGE_LOW_MSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_EDGE_LOW_LSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO9_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_EDGE_LOW_MSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_EDGE_LOW_LSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTE1_GPIO8_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_DORMANT_WAKE_INTE2 +// Description : Interrupt Enable for dormant_wake +#define IO_BANK0_DORMANT_WAKE_INTE2_OFFSET _u(0x00000168) +#define IO_BANK0_DORMANT_WAKE_INTE2_BITS _u(0xffffffff) +#define IO_BANK0_DORMANT_WAKE_INTE2_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_EDGE_LOW_MSB _u(30) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_EDGE_LOW_LSB _u(30) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO23_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_EDGE_LOW_MSB _u(26) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_EDGE_LOW_LSB _u(26) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO22_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_EDGE_LOW_MSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_EDGE_LOW_LSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO21_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_EDGE_LOW_MSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_EDGE_LOW_LSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO20_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_EDGE_LOW_MSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_EDGE_LOW_LSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO19_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_EDGE_LOW_MSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_EDGE_LOW_LSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO18_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_EDGE_LOW_MSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_EDGE_LOW_LSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO17_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_EDGE_LOW_MSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_EDGE_LOW_LSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTE2_GPIO16_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_DORMANT_WAKE_INTE3 +// Description : Interrupt Enable for dormant_wake +#define IO_BANK0_DORMANT_WAKE_INTE3_OFFSET _u(0x0000016c) +#define IO_BANK0_DORMANT_WAKE_INTE3_BITS _u(0x00ffffff) +#define IO_BANK0_DORMANT_WAKE_INTE3_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_EDGE_LOW_MSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_EDGE_LOW_LSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO29_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_EDGE_LOW_MSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_EDGE_LOW_LSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO28_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_EDGE_LOW_MSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_EDGE_LOW_LSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO27_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_EDGE_LOW_MSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_EDGE_LOW_LSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO26_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_EDGE_LOW_MSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_EDGE_LOW_LSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO25_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_EDGE_LOW_MSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_EDGE_LOW_LSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTE3_GPIO24_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_DORMANT_WAKE_INTF0 +// Description : Interrupt Force for dormant_wake +#define IO_BANK0_DORMANT_WAKE_INTF0_OFFSET _u(0x00000170) +#define IO_BANK0_DORMANT_WAKE_INTF0_BITS _u(0xffffffff) +#define IO_BANK0_DORMANT_WAKE_INTF0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_EDGE_LOW_MSB _u(30) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_EDGE_LOW_LSB _u(30) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO7_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_EDGE_LOW_MSB _u(26) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_EDGE_LOW_LSB _u(26) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO6_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_EDGE_LOW_MSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_EDGE_LOW_LSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO5_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_EDGE_LOW_MSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_EDGE_LOW_LSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO4_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_EDGE_LOW_MSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_EDGE_LOW_LSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO3_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_EDGE_LOW_MSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_EDGE_LOW_LSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO2_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_EDGE_LOW_MSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_EDGE_LOW_LSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO1_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_EDGE_LOW_MSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_EDGE_LOW_LSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTF0_GPIO0_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_DORMANT_WAKE_INTF1 +// Description : Interrupt Force for dormant_wake +#define IO_BANK0_DORMANT_WAKE_INTF1_OFFSET _u(0x00000174) +#define IO_BANK0_DORMANT_WAKE_INTF1_BITS _u(0xffffffff) +#define IO_BANK0_DORMANT_WAKE_INTF1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_EDGE_LOW_MSB _u(30) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_EDGE_LOW_LSB _u(30) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO15_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_EDGE_LOW_MSB _u(26) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_EDGE_LOW_LSB _u(26) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO14_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_EDGE_LOW_MSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_EDGE_LOW_LSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO13_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_EDGE_LOW_MSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_EDGE_LOW_LSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO12_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_EDGE_LOW_MSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_EDGE_LOW_LSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO11_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_EDGE_LOW_MSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_EDGE_LOW_LSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO10_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_EDGE_LOW_MSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_EDGE_LOW_LSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO9_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_EDGE_LOW_MSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_EDGE_LOW_LSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTF1_GPIO8_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_DORMANT_WAKE_INTF2 +// Description : Interrupt Force for dormant_wake +#define IO_BANK0_DORMANT_WAKE_INTF2_OFFSET _u(0x00000178) +#define IO_BANK0_DORMANT_WAKE_INTF2_BITS _u(0xffffffff) +#define IO_BANK0_DORMANT_WAKE_INTF2_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_EDGE_LOW_MSB _u(30) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_EDGE_LOW_LSB _u(30) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO23_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_EDGE_LOW_MSB _u(26) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_EDGE_LOW_LSB _u(26) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO22_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_EDGE_LOW_MSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_EDGE_LOW_LSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO21_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_EDGE_LOW_MSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_EDGE_LOW_LSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO20_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_EDGE_LOW_MSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_EDGE_LOW_LSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO19_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_EDGE_LOW_MSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_EDGE_LOW_LSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO18_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_EDGE_LOW_MSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_EDGE_LOW_LSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO17_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_EDGE_LOW_MSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_EDGE_LOW_LSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTF2_GPIO16_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_DORMANT_WAKE_INTF3 +// Description : Interrupt Force for dormant_wake +#define IO_BANK0_DORMANT_WAKE_INTF3_OFFSET _u(0x0000017c) +#define IO_BANK0_DORMANT_WAKE_INTF3_BITS _u(0x00ffffff) +#define IO_BANK0_DORMANT_WAKE_INTF3_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_EDGE_LOW_MSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_EDGE_LOW_LSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO29_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_EDGE_LOW_MSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_EDGE_LOW_LSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO28_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_EDGE_LOW_MSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_EDGE_LOW_LSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO27_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_EDGE_LOW_MSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_EDGE_LOW_LSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO26_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_EDGE_LOW_MSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_EDGE_LOW_LSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO25_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_EDGE_LOW_MSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_EDGE_LOW_LSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTF3_GPIO24_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_BANK0_DORMANT_WAKE_INTS0 +// Description : Interrupt status after masking & forcing for dormant_wake +#define IO_BANK0_DORMANT_WAKE_INTS0_OFFSET _u(0x00000180) +#define IO_BANK0_DORMANT_WAKE_INTS0_BITS _u(0xffffffff) +#define IO_BANK0_DORMANT_WAKE_INTS0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_EDGE_LOW_MSB _u(30) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_EDGE_LOW_LSB _u(30) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO7_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_EDGE_LOW_MSB _u(26) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_EDGE_LOW_LSB _u(26) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO6_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_EDGE_LOW_MSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_EDGE_LOW_LSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO5_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_EDGE_LOW_MSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_EDGE_LOW_LSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO4_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_EDGE_LOW_MSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_EDGE_LOW_LSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO3_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_EDGE_LOW_MSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_EDGE_LOW_LSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO2_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_EDGE_LOW_MSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_EDGE_LOW_LSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO1_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_EDGE_LOW_MSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_EDGE_LOW_LSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTS0_GPIO0_LEVEL_LOW_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_DORMANT_WAKE_INTS1 +// Description : Interrupt status after masking & forcing for dormant_wake +#define IO_BANK0_DORMANT_WAKE_INTS1_OFFSET _u(0x00000184) +#define IO_BANK0_DORMANT_WAKE_INTS1_BITS _u(0xffffffff) +#define IO_BANK0_DORMANT_WAKE_INTS1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_EDGE_LOW_MSB _u(30) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_EDGE_LOW_LSB _u(30) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO15_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_EDGE_LOW_MSB _u(26) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_EDGE_LOW_LSB _u(26) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO14_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_EDGE_LOW_MSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_EDGE_LOW_LSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO13_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_EDGE_LOW_MSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_EDGE_LOW_LSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO12_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_EDGE_LOW_MSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_EDGE_LOW_LSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO11_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_EDGE_LOW_MSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_EDGE_LOW_LSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO10_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_EDGE_LOW_MSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_EDGE_LOW_LSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO9_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_EDGE_LOW_MSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_EDGE_LOW_LSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTS1_GPIO8_LEVEL_LOW_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_DORMANT_WAKE_INTS2 +// Description : Interrupt status after masking & forcing for dormant_wake +#define IO_BANK0_DORMANT_WAKE_INTS2_OFFSET _u(0x00000188) +#define IO_BANK0_DORMANT_WAKE_INTS2_BITS _u(0xffffffff) +#define IO_BANK0_DORMANT_WAKE_INTS2_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_EDGE_HIGH_BITS _u(0x80000000) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_EDGE_HIGH_MSB _u(31) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_EDGE_HIGH_LSB _u(31) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_EDGE_LOW_BITS _u(0x40000000) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_EDGE_LOW_MSB _u(30) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_EDGE_LOW_LSB _u(30) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_LEVEL_HIGH_BITS _u(0x20000000) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_LEVEL_HIGH_MSB _u(29) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_LEVEL_HIGH_LSB _u(29) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_LEVEL_LOW_BITS _u(0x10000000) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_LEVEL_LOW_MSB _u(28) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_LEVEL_LOW_LSB _u(28) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO23_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_EDGE_HIGH_BITS _u(0x08000000) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_EDGE_HIGH_MSB _u(27) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_EDGE_HIGH_LSB _u(27) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_EDGE_LOW_BITS _u(0x04000000) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_EDGE_LOW_MSB _u(26) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_EDGE_LOW_LSB _u(26) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_LEVEL_HIGH_BITS _u(0x02000000) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_LEVEL_HIGH_MSB _u(25) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_LEVEL_HIGH_LSB _u(25) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_LEVEL_LOW_BITS _u(0x01000000) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_LEVEL_LOW_MSB _u(24) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_LEVEL_LOW_LSB _u(24) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO22_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_EDGE_LOW_MSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_EDGE_LOW_LSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO21_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_EDGE_LOW_MSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_EDGE_LOW_LSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO20_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_EDGE_LOW_MSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_EDGE_LOW_LSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO19_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_EDGE_LOW_MSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_EDGE_LOW_LSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO18_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_EDGE_LOW_MSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_EDGE_LOW_LSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO17_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_EDGE_LOW_MSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_EDGE_LOW_LSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTS2_GPIO16_LEVEL_LOW_ACCESS "RO" +// ============================================================================= +// Register : IO_BANK0_DORMANT_WAKE_INTS3 +// Description : Interrupt status after masking & forcing for dormant_wake +#define IO_BANK0_DORMANT_WAKE_INTS3_OFFSET _u(0x0000018c) +#define IO_BANK0_DORMANT_WAKE_INTS3_BITS _u(0x00ffffff) +#define IO_BANK0_DORMANT_WAKE_INTS3_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_EDGE_HIGH_BITS _u(0x00800000) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_EDGE_HIGH_MSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_EDGE_HIGH_LSB _u(23) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_EDGE_LOW_BITS _u(0x00400000) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_EDGE_LOW_MSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_EDGE_LOW_LSB _u(22) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_LEVEL_HIGH_MSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_LEVEL_HIGH_LSB _u(21) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_LEVEL_LOW_BITS _u(0x00100000) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_LEVEL_LOW_MSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_LEVEL_LOW_LSB _u(20) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO29_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_EDGE_HIGH_BITS _u(0x00080000) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_EDGE_HIGH_MSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_EDGE_HIGH_LSB _u(19) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_EDGE_LOW_BITS _u(0x00040000) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_EDGE_LOW_MSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_EDGE_LOW_LSB _u(18) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_LEVEL_HIGH_MSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_LEVEL_HIGH_LSB _u(17) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_LEVEL_LOW_BITS _u(0x00010000) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_LEVEL_LOW_MSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_LEVEL_LOW_LSB _u(16) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO28_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_EDGE_HIGH_BITS _u(0x00008000) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_EDGE_HIGH_MSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_EDGE_HIGH_LSB _u(15) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_EDGE_LOW_BITS _u(0x00004000) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_EDGE_LOW_MSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_EDGE_LOW_LSB _u(14) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_LEVEL_HIGH_MSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_LEVEL_HIGH_LSB _u(13) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_LEVEL_LOW_BITS _u(0x00001000) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_LEVEL_LOW_MSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_LEVEL_LOW_LSB _u(12) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO27_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_EDGE_HIGH_BITS _u(0x00000800) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_EDGE_HIGH_MSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_EDGE_HIGH_LSB _u(11) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_EDGE_LOW_BITS _u(0x00000400) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_EDGE_LOW_MSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_EDGE_LOW_LSB _u(10) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_LEVEL_HIGH_MSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_LEVEL_HIGH_LSB _u(9) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_LEVEL_LOW_BITS _u(0x00000100) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_LEVEL_LOW_MSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_LEVEL_LOW_LSB _u(8) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO26_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_EDGE_HIGH_BITS _u(0x00000080) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_EDGE_HIGH_MSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_EDGE_HIGH_LSB _u(7) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_EDGE_LOW_BITS _u(0x00000040) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_EDGE_LOW_MSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_EDGE_LOW_LSB _u(6) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_LEVEL_HIGH_MSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_LEVEL_HIGH_LSB _u(5) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_LEVEL_LOW_BITS _u(0x00000010) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_LEVEL_LOW_MSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_LEVEL_LOW_LSB _u(4) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO25_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_EDGE_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_EDGE_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_EDGE_HIGH_BITS _u(0x00000008) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_EDGE_HIGH_MSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_EDGE_HIGH_LSB _u(3) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_EDGE_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_EDGE_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_EDGE_LOW_BITS _u(0x00000004) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_EDGE_LOW_MSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_EDGE_LOW_LSB _u(2) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_LEVEL_HIGH +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_LEVEL_HIGH_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_LEVEL_HIGH_MSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_LEVEL_HIGH_LSB _u(1) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_LEVEL_LOW +// Description : None +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_LEVEL_LOW_RESET _u(0x0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_LEVEL_LOW_BITS _u(0x00000001) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_LEVEL_LOW_MSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_LEVEL_LOW_LSB _u(0) +#define IO_BANK0_DORMANT_WAKE_INTS3_GPIO24_LEVEL_LOW_ACCESS "RO" +// ============================================================================= +#endif // HARDWARE_REGS_IO_BANK0_DEFINED diff --git a/arkanoid/pico/hardware/regs/io_qspi.h b/arkanoid/pico/hardware/regs/io_qspi.h new file mode 100644 index 0000000..7c381b7 --- /dev/null +++ b/arkanoid/pico/hardware/regs/io_qspi.h @@ -0,0 +1,2931 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : IO_QSPI +// Version : 1 +// Bus type : apb +// Description : None +// ============================================================================= +#ifndef HARDWARE_REGS_IO_QSPI_DEFINED +#define HARDWARE_REGS_IO_QSPI_DEFINED +// ============================================================================= +// Register : IO_QSPI_GPIO_QSPI_SCLK_STATUS +// Description : GPIO status +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OFFSET _u(0x00000000) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_BITS _u(0x050a3300) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SCLK_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_IRQTOPROC_MSB _u(26) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_IRQTOPROC_LSB _u(26) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SCLK_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SCLK_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_INTOPERI_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_INTOPERI_MSB _u(19) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_INTOPERI_LSB _u(19) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SCLK_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_INFROMPAD_MSB _u(17) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_INFROMPAD_LSB _u(17) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SCLK_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OETOPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OETOPAD_MSB _u(13) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OETOPAD_LSB _u(13) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SCLK_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OEFROMPERI_MSB _u(12) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OEFROMPERI_LSB _u(12) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SCLK_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OUTTOPAD_MSB _u(9) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OUTTOPAD_LSB _u(9) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SCLK_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_QSPI_GPIO_QSPI_SCLK_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_QSPI_GPIO_QSPI_SCLK_CTRL +// Description : GPIO control including function select and overrides. +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_OFFSET _u(0x00000004) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_BITS _u(0x3003331f) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SCLK_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_IRQOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_IRQOVER_MSB _u(29) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_IRQOVER_LSB _u(28) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_IRQOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SCLK_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_INOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_INOVER_BITS _u(0x00030000) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_INOVER_MSB _u(17) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_INOVER_LSB _u(16) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_INOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SCLK_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_OEOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_OEOVER_MSB _u(13) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_OEOVER_LSB _u(12) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_OEOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SCLK_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_OUTOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_OUTOVER_MSB _u(9) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_OUTOVER_LSB _u(8) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_OUTOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SCLK_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x00 -> xip_sclk +// 0x05 -> sio_30 +// 0x1f -> null +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_FUNCSEL_MSB _u(4) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_FUNCSEL_LSB _u(0) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_FUNCSEL_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_FUNCSEL_VALUE_XIP_SCLK _u(0x00) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_FUNCSEL_VALUE_SIO_30 _u(0x05) +#define IO_QSPI_GPIO_QSPI_SCLK_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_QSPI_GPIO_QSPI_SS_STATUS +// Description : GPIO status +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OFFSET _u(0x00000008) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_BITS _u(0x050a3300) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SS_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_QSPI_GPIO_QSPI_SS_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_IRQTOPROC_MSB _u(26) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_IRQTOPROC_LSB _u(26) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SS_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_QSPI_GPIO_QSPI_SS_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SS_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_QSPI_GPIO_QSPI_SS_STATUS_INTOPERI_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_INTOPERI_MSB _u(19) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_INTOPERI_LSB _u(19) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SS_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_QSPI_GPIO_QSPI_SS_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_INFROMPAD_MSB _u(17) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_INFROMPAD_LSB _u(17) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SS_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OETOPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OETOPAD_MSB _u(13) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OETOPAD_LSB _u(13) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SS_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OEFROMPERI_MSB _u(12) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OEFROMPERI_LSB _u(12) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SS_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OUTTOPAD_MSB _u(9) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OUTTOPAD_LSB _u(9) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SS_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_QSPI_GPIO_QSPI_SS_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_QSPI_GPIO_QSPI_SS_CTRL +// Description : GPIO control including function select and overrides. +#define IO_QSPI_GPIO_QSPI_SS_CTRL_OFFSET _u(0x0000000c) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_BITS _u(0x3003331f) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SS_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_QSPI_GPIO_QSPI_SS_CTRL_IRQOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_IRQOVER_MSB _u(29) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_IRQOVER_LSB _u(28) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_IRQOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SS_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SS_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_QSPI_GPIO_QSPI_SS_CTRL_INOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_INOVER_BITS _u(0x00030000) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_INOVER_MSB _u(17) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_INOVER_LSB _u(16) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_INOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SS_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SS_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_QSPI_GPIO_QSPI_SS_CTRL_OEOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_OEOVER_MSB _u(13) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_OEOVER_LSB _u(12) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_OEOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SS_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SS_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_QSPI_GPIO_QSPI_SS_CTRL_OUTOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_OUTOVER_MSB _u(9) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_OUTOVER_LSB _u(8) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_OUTOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SS_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SS_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x00 -> xip_ss_n +// 0x05 -> sio_31 +// 0x1f -> null +#define IO_QSPI_GPIO_QSPI_SS_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_FUNCSEL_MSB _u(4) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_FUNCSEL_LSB _u(0) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_FUNCSEL_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SS_CTRL_FUNCSEL_VALUE_XIP_SS_N _u(0x00) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_FUNCSEL_VALUE_SIO_31 _u(0x05) +#define IO_QSPI_GPIO_QSPI_SS_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_QSPI_GPIO_QSPI_SD0_STATUS +// Description : GPIO status +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OFFSET _u(0x00000010) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_BITS _u(0x050a3300) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD0_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_IRQTOPROC_MSB _u(26) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_IRQTOPROC_LSB _u(26) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD0_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD0_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_INTOPERI_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_INTOPERI_MSB _u(19) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_INTOPERI_LSB _u(19) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD0_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_INFROMPAD_MSB _u(17) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_INFROMPAD_LSB _u(17) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD0_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OETOPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OETOPAD_MSB _u(13) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OETOPAD_LSB _u(13) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD0_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OEFROMPERI_MSB _u(12) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OEFROMPERI_LSB _u(12) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD0_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OUTTOPAD_MSB _u(9) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OUTTOPAD_LSB _u(9) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD0_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_QSPI_GPIO_QSPI_SD0_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_QSPI_GPIO_QSPI_SD0_CTRL +// Description : GPIO control including function select and overrides. +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_OFFSET _u(0x00000014) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_BITS _u(0x3003331f) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD0_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_IRQOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_IRQOVER_MSB _u(29) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_IRQOVER_LSB _u(28) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_IRQOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD0_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_INOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_INOVER_BITS _u(0x00030000) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_INOVER_MSB _u(17) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_INOVER_LSB _u(16) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_INOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD0_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_OEOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_OEOVER_MSB _u(13) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_OEOVER_LSB _u(12) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_OEOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD0_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_OUTOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_OUTOVER_MSB _u(9) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_OUTOVER_LSB _u(8) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_OUTOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD0_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x00 -> xip_sd0 +// 0x05 -> sio_32 +// 0x1f -> null +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_FUNCSEL_MSB _u(4) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_FUNCSEL_LSB _u(0) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_FUNCSEL_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_FUNCSEL_VALUE_XIP_SD0 _u(0x00) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_FUNCSEL_VALUE_SIO_32 _u(0x05) +#define IO_QSPI_GPIO_QSPI_SD0_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_QSPI_GPIO_QSPI_SD1_STATUS +// Description : GPIO status +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OFFSET _u(0x00000018) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_BITS _u(0x050a3300) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD1_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_IRQTOPROC_MSB _u(26) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_IRQTOPROC_LSB _u(26) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD1_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD1_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_INTOPERI_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_INTOPERI_MSB _u(19) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_INTOPERI_LSB _u(19) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD1_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_INFROMPAD_MSB _u(17) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_INFROMPAD_LSB _u(17) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD1_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OETOPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OETOPAD_MSB _u(13) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OETOPAD_LSB _u(13) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD1_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OEFROMPERI_MSB _u(12) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OEFROMPERI_LSB _u(12) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD1_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OUTTOPAD_MSB _u(9) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OUTTOPAD_LSB _u(9) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD1_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_QSPI_GPIO_QSPI_SD1_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_QSPI_GPIO_QSPI_SD1_CTRL +// Description : GPIO control including function select and overrides. +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_OFFSET _u(0x0000001c) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_BITS _u(0x3003331f) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD1_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_IRQOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_IRQOVER_MSB _u(29) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_IRQOVER_LSB _u(28) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_IRQOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD1_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_INOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_INOVER_BITS _u(0x00030000) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_INOVER_MSB _u(17) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_INOVER_LSB _u(16) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_INOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD1_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_OEOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_OEOVER_MSB _u(13) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_OEOVER_LSB _u(12) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_OEOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD1_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_OUTOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_OUTOVER_MSB _u(9) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_OUTOVER_LSB _u(8) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_OUTOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD1_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x00 -> xip_sd1 +// 0x05 -> sio_33 +// 0x1f -> null +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_FUNCSEL_MSB _u(4) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_FUNCSEL_LSB _u(0) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_FUNCSEL_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_FUNCSEL_VALUE_XIP_SD1 _u(0x00) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_FUNCSEL_VALUE_SIO_33 _u(0x05) +#define IO_QSPI_GPIO_QSPI_SD1_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_QSPI_GPIO_QSPI_SD2_STATUS +// Description : GPIO status +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OFFSET _u(0x00000020) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_BITS _u(0x050a3300) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD2_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_IRQTOPROC_MSB _u(26) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_IRQTOPROC_LSB _u(26) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD2_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD2_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_INTOPERI_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_INTOPERI_MSB _u(19) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_INTOPERI_LSB _u(19) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD2_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_INFROMPAD_MSB _u(17) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_INFROMPAD_LSB _u(17) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD2_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OETOPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OETOPAD_MSB _u(13) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OETOPAD_LSB _u(13) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD2_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OEFROMPERI_MSB _u(12) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OEFROMPERI_LSB _u(12) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD2_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OUTTOPAD_MSB _u(9) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OUTTOPAD_LSB _u(9) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD2_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_QSPI_GPIO_QSPI_SD2_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_QSPI_GPIO_QSPI_SD2_CTRL +// Description : GPIO control including function select and overrides. +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_OFFSET _u(0x00000024) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_BITS _u(0x3003331f) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD2_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_IRQOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_IRQOVER_MSB _u(29) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_IRQOVER_LSB _u(28) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_IRQOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD2_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_INOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_INOVER_BITS _u(0x00030000) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_INOVER_MSB _u(17) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_INOVER_LSB _u(16) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_INOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD2_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_OEOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_OEOVER_MSB _u(13) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_OEOVER_LSB _u(12) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_OEOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD2_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_OUTOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_OUTOVER_MSB _u(9) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_OUTOVER_LSB _u(8) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_OUTOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD2_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x00 -> xip_sd2 +// 0x05 -> sio_34 +// 0x1f -> null +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_FUNCSEL_MSB _u(4) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_FUNCSEL_LSB _u(0) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_FUNCSEL_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_FUNCSEL_VALUE_XIP_SD2 _u(0x00) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_FUNCSEL_VALUE_SIO_34 _u(0x05) +#define IO_QSPI_GPIO_QSPI_SD2_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_QSPI_GPIO_QSPI_SD3_STATUS +// Description : GPIO status +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OFFSET _u(0x00000028) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_BITS _u(0x050a3300) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD3_STATUS_IRQTOPROC +// Description : interrupt to processors, after override is applied +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_IRQTOPROC_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_IRQTOPROC_BITS _u(0x04000000) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_IRQTOPROC_MSB _u(26) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_IRQTOPROC_LSB _u(26) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_IRQTOPROC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD3_STATUS_IRQFROMPAD +// Description : interrupt from pad before override is applied +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_IRQFROMPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_IRQFROMPAD_BITS _u(0x01000000) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_IRQFROMPAD_MSB _u(24) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_IRQFROMPAD_LSB _u(24) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_IRQFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD3_STATUS_INTOPERI +// Description : input signal to peripheral, after override is applied +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_INTOPERI_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_INTOPERI_BITS _u(0x00080000) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_INTOPERI_MSB _u(19) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_INTOPERI_LSB _u(19) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_INTOPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD3_STATUS_INFROMPAD +// Description : input signal from pad, before override is applied +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_INFROMPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_INFROMPAD_BITS _u(0x00020000) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_INFROMPAD_MSB _u(17) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_INFROMPAD_LSB _u(17) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_INFROMPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD3_STATUS_OETOPAD +// Description : output enable to pad after register override is applied +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OETOPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OETOPAD_BITS _u(0x00002000) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OETOPAD_MSB _u(13) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OETOPAD_LSB _u(13) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OETOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD3_STATUS_OEFROMPERI +// Description : output enable from selected peripheral, before register +// override is applied +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OEFROMPERI_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OEFROMPERI_BITS _u(0x00001000) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OEFROMPERI_MSB _u(12) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OEFROMPERI_LSB _u(12) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OEFROMPERI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD3_STATUS_OUTTOPAD +// Description : output signal to pad after register override is applied +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OUTTOPAD_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OUTTOPAD_BITS _u(0x00000200) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OUTTOPAD_MSB _u(9) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OUTTOPAD_LSB _u(9) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OUTTOPAD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD3_STATUS_OUTFROMPERI +// Description : output signal from selected peripheral, before register +// override is applied +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OUTFROMPERI_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OUTFROMPERI_BITS _u(0x00000100) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OUTFROMPERI_MSB _u(8) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OUTFROMPERI_LSB _u(8) +#define IO_QSPI_GPIO_QSPI_SD3_STATUS_OUTFROMPERI_ACCESS "RO" +// ============================================================================= +// Register : IO_QSPI_GPIO_QSPI_SD3_CTRL +// Description : GPIO control including function select and overrides. +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_OFFSET _u(0x0000002c) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_BITS _u(0x3003331f) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_RESET _u(0x0000001f) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD3_CTRL_IRQOVER +// Description : 0x0 -> don't invert the interrupt +// 0x1 -> invert the interrupt +// 0x2 -> drive interrupt low +// 0x3 -> drive interrupt high +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_IRQOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_IRQOVER_BITS _u(0x30000000) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_IRQOVER_MSB _u(29) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_IRQOVER_LSB _u(28) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_IRQOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_IRQOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_IRQOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_IRQOVER_VALUE_LOW _u(0x2) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_IRQOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD3_CTRL_INOVER +// Description : 0x0 -> don't invert the peri input +// 0x1 -> invert the peri input +// 0x2 -> drive peri input low +// 0x3 -> drive peri input high +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_INOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_INOVER_BITS _u(0x00030000) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_INOVER_MSB _u(17) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_INOVER_LSB _u(16) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_INOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_INOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_INOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_INOVER_VALUE_LOW _u(0x2) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_INOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD3_CTRL_OEOVER +// Description : 0x0 -> drive output enable from peripheral signal selected by +// funcsel +// 0x1 -> drive output enable from inverse of peripheral signal +// selected by funcsel +// 0x2 -> disable output +// 0x3 -> enable output +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_OEOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_OEOVER_BITS _u(0x00003000) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_OEOVER_MSB _u(13) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_OEOVER_LSB _u(12) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_OEOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_OEOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_OEOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_OEOVER_VALUE_DISABLE _u(0x2) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_OEOVER_VALUE_ENABLE _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD3_CTRL_OUTOVER +// Description : 0x0 -> drive output from peripheral signal selected by funcsel +// 0x1 -> drive output from inverse of peripheral signal selected +// by funcsel +// 0x2 -> drive output low +// 0x3 -> drive output high +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_OUTOVER_RESET _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_OUTOVER_BITS _u(0x00000300) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_OUTOVER_MSB _u(9) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_OUTOVER_LSB _u(8) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_OUTOVER_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_OUTOVER_VALUE_NORMAL _u(0x0) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_OUTOVER_VALUE_INVERT _u(0x1) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_OUTOVER_VALUE_LOW _u(0x2) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_OUTOVER_VALUE_HIGH _u(0x3) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_GPIO_QSPI_SD3_CTRL_FUNCSEL +// Description : 0-31 -> selects pin function according to the gpio table +// 31 == NULL +// 0x00 -> xip_sd3 +// 0x05 -> sio_35 +// 0x1f -> null +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_FUNCSEL_RESET _u(0x1f) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_FUNCSEL_BITS _u(0x0000001f) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_FUNCSEL_MSB _u(4) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_FUNCSEL_LSB _u(0) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_FUNCSEL_ACCESS "RW" +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_FUNCSEL_VALUE_XIP_SD3 _u(0x00) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_FUNCSEL_VALUE_SIO_35 _u(0x05) +#define IO_QSPI_GPIO_QSPI_SD3_CTRL_FUNCSEL_VALUE_NULL _u(0x1f) +// ============================================================================= +// Register : IO_QSPI_INTR +// Description : Raw Interrupts +#define IO_QSPI_INTR_OFFSET _u(0x00000030) +#define IO_QSPI_INTR_BITS _u(0x00ffffff) +#define IO_QSPI_INTR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SD3_EDGE_HIGH +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SD3_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SD3_EDGE_HIGH_BITS _u(0x00800000) +#define IO_QSPI_INTR_GPIO_QSPI_SD3_EDGE_HIGH_MSB _u(23) +#define IO_QSPI_INTR_GPIO_QSPI_SD3_EDGE_HIGH_LSB _u(23) +#define IO_QSPI_INTR_GPIO_QSPI_SD3_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SD3_EDGE_LOW +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SD3_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SD3_EDGE_LOW_BITS _u(0x00400000) +#define IO_QSPI_INTR_GPIO_QSPI_SD3_EDGE_LOW_MSB _u(22) +#define IO_QSPI_INTR_GPIO_QSPI_SD3_EDGE_LOW_LSB _u(22) +#define IO_QSPI_INTR_GPIO_QSPI_SD3_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SD3_LEVEL_HIGH +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SD3_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SD3_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_QSPI_INTR_GPIO_QSPI_SD3_LEVEL_HIGH_MSB _u(21) +#define IO_QSPI_INTR_GPIO_QSPI_SD3_LEVEL_HIGH_LSB _u(21) +#define IO_QSPI_INTR_GPIO_QSPI_SD3_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SD3_LEVEL_LOW +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SD3_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SD3_LEVEL_LOW_BITS _u(0x00100000) +#define IO_QSPI_INTR_GPIO_QSPI_SD3_LEVEL_LOW_MSB _u(20) +#define IO_QSPI_INTR_GPIO_QSPI_SD3_LEVEL_LOW_LSB _u(20) +#define IO_QSPI_INTR_GPIO_QSPI_SD3_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SD2_EDGE_HIGH +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SD2_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SD2_EDGE_HIGH_BITS _u(0x00080000) +#define IO_QSPI_INTR_GPIO_QSPI_SD2_EDGE_HIGH_MSB _u(19) +#define IO_QSPI_INTR_GPIO_QSPI_SD2_EDGE_HIGH_LSB _u(19) +#define IO_QSPI_INTR_GPIO_QSPI_SD2_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SD2_EDGE_LOW +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SD2_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SD2_EDGE_LOW_BITS _u(0x00040000) +#define IO_QSPI_INTR_GPIO_QSPI_SD2_EDGE_LOW_MSB _u(18) +#define IO_QSPI_INTR_GPIO_QSPI_SD2_EDGE_LOW_LSB _u(18) +#define IO_QSPI_INTR_GPIO_QSPI_SD2_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SD2_LEVEL_HIGH +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SD2_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SD2_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_QSPI_INTR_GPIO_QSPI_SD2_LEVEL_HIGH_MSB _u(17) +#define IO_QSPI_INTR_GPIO_QSPI_SD2_LEVEL_HIGH_LSB _u(17) +#define IO_QSPI_INTR_GPIO_QSPI_SD2_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SD2_LEVEL_LOW +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SD2_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SD2_LEVEL_LOW_BITS _u(0x00010000) +#define IO_QSPI_INTR_GPIO_QSPI_SD2_LEVEL_LOW_MSB _u(16) +#define IO_QSPI_INTR_GPIO_QSPI_SD2_LEVEL_LOW_LSB _u(16) +#define IO_QSPI_INTR_GPIO_QSPI_SD2_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SD1_EDGE_HIGH +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SD1_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SD1_EDGE_HIGH_BITS _u(0x00008000) +#define IO_QSPI_INTR_GPIO_QSPI_SD1_EDGE_HIGH_MSB _u(15) +#define IO_QSPI_INTR_GPIO_QSPI_SD1_EDGE_HIGH_LSB _u(15) +#define IO_QSPI_INTR_GPIO_QSPI_SD1_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SD1_EDGE_LOW +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SD1_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SD1_EDGE_LOW_BITS _u(0x00004000) +#define IO_QSPI_INTR_GPIO_QSPI_SD1_EDGE_LOW_MSB _u(14) +#define IO_QSPI_INTR_GPIO_QSPI_SD1_EDGE_LOW_LSB _u(14) +#define IO_QSPI_INTR_GPIO_QSPI_SD1_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SD1_LEVEL_HIGH +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SD1_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SD1_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_QSPI_INTR_GPIO_QSPI_SD1_LEVEL_HIGH_MSB _u(13) +#define IO_QSPI_INTR_GPIO_QSPI_SD1_LEVEL_HIGH_LSB _u(13) +#define IO_QSPI_INTR_GPIO_QSPI_SD1_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SD1_LEVEL_LOW +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SD1_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SD1_LEVEL_LOW_BITS _u(0x00001000) +#define IO_QSPI_INTR_GPIO_QSPI_SD1_LEVEL_LOW_MSB _u(12) +#define IO_QSPI_INTR_GPIO_QSPI_SD1_LEVEL_LOW_LSB _u(12) +#define IO_QSPI_INTR_GPIO_QSPI_SD1_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SD0_EDGE_HIGH +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SD0_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SD0_EDGE_HIGH_BITS _u(0x00000800) +#define IO_QSPI_INTR_GPIO_QSPI_SD0_EDGE_HIGH_MSB _u(11) +#define IO_QSPI_INTR_GPIO_QSPI_SD0_EDGE_HIGH_LSB _u(11) +#define IO_QSPI_INTR_GPIO_QSPI_SD0_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SD0_EDGE_LOW +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SD0_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SD0_EDGE_LOW_BITS _u(0x00000400) +#define IO_QSPI_INTR_GPIO_QSPI_SD0_EDGE_LOW_MSB _u(10) +#define IO_QSPI_INTR_GPIO_QSPI_SD0_EDGE_LOW_LSB _u(10) +#define IO_QSPI_INTR_GPIO_QSPI_SD0_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SD0_LEVEL_HIGH +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SD0_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SD0_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_QSPI_INTR_GPIO_QSPI_SD0_LEVEL_HIGH_MSB _u(9) +#define IO_QSPI_INTR_GPIO_QSPI_SD0_LEVEL_HIGH_LSB _u(9) +#define IO_QSPI_INTR_GPIO_QSPI_SD0_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SD0_LEVEL_LOW +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SD0_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SD0_LEVEL_LOW_BITS _u(0x00000100) +#define IO_QSPI_INTR_GPIO_QSPI_SD0_LEVEL_LOW_MSB _u(8) +#define IO_QSPI_INTR_GPIO_QSPI_SD0_LEVEL_LOW_LSB _u(8) +#define IO_QSPI_INTR_GPIO_QSPI_SD0_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SS_EDGE_HIGH +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SS_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SS_EDGE_HIGH_BITS _u(0x00000080) +#define IO_QSPI_INTR_GPIO_QSPI_SS_EDGE_HIGH_MSB _u(7) +#define IO_QSPI_INTR_GPIO_QSPI_SS_EDGE_HIGH_LSB _u(7) +#define IO_QSPI_INTR_GPIO_QSPI_SS_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SS_EDGE_LOW +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SS_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SS_EDGE_LOW_BITS _u(0x00000040) +#define IO_QSPI_INTR_GPIO_QSPI_SS_EDGE_LOW_MSB _u(6) +#define IO_QSPI_INTR_GPIO_QSPI_SS_EDGE_LOW_LSB _u(6) +#define IO_QSPI_INTR_GPIO_QSPI_SS_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SS_LEVEL_HIGH +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SS_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SS_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_QSPI_INTR_GPIO_QSPI_SS_LEVEL_HIGH_MSB _u(5) +#define IO_QSPI_INTR_GPIO_QSPI_SS_LEVEL_HIGH_LSB _u(5) +#define IO_QSPI_INTR_GPIO_QSPI_SS_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SS_LEVEL_LOW +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SS_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SS_LEVEL_LOW_BITS _u(0x00000010) +#define IO_QSPI_INTR_GPIO_QSPI_SS_LEVEL_LOW_MSB _u(4) +#define IO_QSPI_INTR_GPIO_QSPI_SS_LEVEL_LOW_LSB _u(4) +#define IO_QSPI_INTR_GPIO_QSPI_SS_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SCLK_EDGE_HIGH +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SCLK_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SCLK_EDGE_HIGH_BITS _u(0x00000008) +#define IO_QSPI_INTR_GPIO_QSPI_SCLK_EDGE_HIGH_MSB _u(3) +#define IO_QSPI_INTR_GPIO_QSPI_SCLK_EDGE_HIGH_LSB _u(3) +#define IO_QSPI_INTR_GPIO_QSPI_SCLK_EDGE_HIGH_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SCLK_EDGE_LOW +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SCLK_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SCLK_EDGE_LOW_BITS _u(0x00000004) +#define IO_QSPI_INTR_GPIO_QSPI_SCLK_EDGE_LOW_MSB _u(2) +#define IO_QSPI_INTR_GPIO_QSPI_SCLK_EDGE_LOW_LSB _u(2) +#define IO_QSPI_INTR_GPIO_QSPI_SCLK_EDGE_LOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SCLK_LEVEL_HIGH +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SCLK_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SCLK_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_QSPI_INTR_GPIO_QSPI_SCLK_LEVEL_HIGH_MSB _u(1) +#define IO_QSPI_INTR_GPIO_QSPI_SCLK_LEVEL_HIGH_LSB _u(1) +#define IO_QSPI_INTR_GPIO_QSPI_SCLK_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_INTR_GPIO_QSPI_SCLK_LEVEL_LOW +// Description : None +#define IO_QSPI_INTR_GPIO_QSPI_SCLK_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_INTR_GPIO_QSPI_SCLK_LEVEL_LOW_BITS _u(0x00000001) +#define IO_QSPI_INTR_GPIO_QSPI_SCLK_LEVEL_LOW_MSB _u(0) +#define IO_QSPI_INTR_GPIO_QSPI_SCLK_LEVEL_LOW_LSB _u(0) +#define IO_QSPI_INTR_GPIO_QSPI_SCLK_LEVEL_LOW_ACCESS "RO" +// ============================================================================= +// Register : IO_QSPI_PROC0_INTE +// Description : Interrupt Enable for proc0 +#define IO_QSPI_PROC0_INTE_OFFSET _u(0x00000034) +#define IO_QSPI_PROC0_INTE_BITS _u(0x00ffffff) +#define IO_QSPI_PROC0_INTE_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_EDGE_HIGH_BITS _u(0x00800000) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_EDGE_HIGH_MSB _u(23) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_EDGE_HIGH_LSB _u(23) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_EDGE_LOW +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_EDGE_LOW_BITS _u(0x00400000) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_EDGE_LOW_MSB _u(22) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_EDGE_LOW_LSB _u(22) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_LEVEL_HIGH_MSB _u(21) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_LEVEL_HIGH_LSB _u(21) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_LEVEL_LOW_BITS _u(0x00100000) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_LEVEL_LOW_MSB _u(20) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_LEVEL_LOW_LSB _u(20) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD3_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_EDGE_HIGH_BITS _u(0x00080000) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_EDGE_HIGH_MSB _u(19) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_EDGE_HIGH_LSB _u(19) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_EDGE_LOW +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_EDGE_LOW_BITS _u(0x00040000) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_EDGE_LOW_MSB _u(18) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_EDGE_LOW_LSB _u(18) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_LEVEL_HIGH_MSB _u(17) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_LEVEL_HIGH_LSB _u(17) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_LEVEL_LOW_BITS _u(0x00010000) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_LEVEL_LOW_MSB _u(16) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_LEVEL_LOW_LSB _u(16) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD2_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_EDGE_HIGH_BITS _u(0x00008000) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_EDGE_HIGH_MSB _u(15) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_EDGE_HIGH_LSB _u(15) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_EDGE_LOW +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_EDGE_LOW_BITS _u(0x00004000) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_EDGE_LOW_MSB _u(14) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_EDGE_LOW_LSB _u(14) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_LEVEL_HIGH_MSB _u(13) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_LEVEL_HIGH_LSB _u(13) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_LEVEL_LOW_BITS _u(0x00001000) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_LEVEL_LOW_MSB _u(12) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_LEVEL_LOW_LSB _u(12) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD1_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_EDGE_HIGH_BITS _u(0x00000800) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_EDGE_HIGH_MSB _u(11) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_EDGE_HIGH_LSB _u(11) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_EDGE_LOW +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_EDGE_LOW_BITS _u(0x00000400) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_EDGE_LOW_MSB _u(10) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_EDGE_LOW_LSB _u(10) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_LEVEL_HIGH_MSB _u(9) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_LEVEL_HIGH_LSB _u(9) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_LEVEL_LOW_BITS _u(0x00000100) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_LEVEL_LOW_MSB _u(8) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_LEVEL_LOW_LSB _u(8) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SD0_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_EDGE_HIGH_BITS _u(0x00000080) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_EDGE_HIGH_MSB _u(7) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_EDGE_HIGH_LSB _u(7) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_EDGE_LOW +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_EDGE_LOW_BITS _u(0x00000040) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_EDGE_LOW_MSB _u(6) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_EDGE_LOW_LSB _u(6) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_LEVEL_HIGH_MSB _u(5) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_LEVEL_HIGH_LSB _u(5) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_LEVEL_LOW_BITS _u(0x00000010) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_LEVEL_LOW_MSB _u(4) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_LEVEL_LOW_LSB _u(4) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SS_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_EDGE_HIGH_BITS _u(0x00000008) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_EDGE_HIGH_MSB _u(3) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_EDGE_HIGH_LSB _u(3) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_EDGE_LOW +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_EDGE_LOW_BITS _u(0x00000004) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_EDGE_LOW_MSB _u(2) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_EDGE_LOW_LSB _u(2) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_LEVEL_HIGH_MSB _u(1) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_LEVEL_HIGH_LSB _u(1) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_LEVEL_LOW_BITS _u(0x00000001) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_LEVEL_LOW_MSB _u(0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_LEVEL_LOW_LSB _u(0) +#define IO_QSPI_PROC0_INTE_GPIO_QSPI_SCLK_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_QSPI_PROC0_INTF +// Description : Interrupt Force for proc0 +#define IO_QSPI_PROC0_INTF_OFFSET _u(0x00000038) +#define IO_QSPI_PROC0_INTF_BITS _u(0x00ffffff) +#define IO_QSPI_PROC0_INTF_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_EDGE_HIGH_BITS _u(0x00800000) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_EDGE_HIGH_MSB _u(23) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_EDGE_HIGH_LSB _u(23) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_EDGE_LOW +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_EDGE_LOW_BITS _u(0x00400000) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_EDGE_LOW_MSB _u(22) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_EDGE_LOW_LSB _u(22) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_LEVEL_HIGH_MSB _u(21) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_LEVEL_HIGH_LSB _u(21) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_LEVEL_LOW_BITS _u(0x00100000) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_LEVEL_LOW_MSB _u(20) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_LEVEL_LOW_LSB _u(20) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD3_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_EDGE_HIGH_BITS _u(0x00080000) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_EDGE_HIGH_MSB _u(19) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_EDGE_HIGH_LSB _u(19) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_EDGE_LOW +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_EDGE_LOW_BITS _u(0x00040000) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_EDGE_LOW_MSB _u(18) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_EDGE_LOW_LSB _u(18) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_LEVEL_HIGH_MSB _u(17) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_LEVEL_HIGH_LSB _u(17) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_LEVEL_LOW_BITS _u(0x00010000) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_LEVEL_LOW_MSB _u(16) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_LEVEL_LOW_LSB _u(16) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD2_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_EDGE_HIGH_BITS _u(0x00008000) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_EDGE_HIGH_MSB _u(15) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_EDGE_HIGH_LSB _u(15) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_EDGE_LOW +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_EDGE_LOW_BITS _u(0x00004000) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_EDGE_LOW_MSB _u(14) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_EDGE_LOW_LSB _u(14) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_LEVEL_HIGH_MSB _u(13) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_LEVEL_HIGH_LSB _u(13) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_LEVEL_LOW_BITS _u(0x00001000) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_LEVEL_LOW_MSB _u(12) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_LEVEL_LOW_LSB _u(12) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD1_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_EDGE_HIGH_BITS _u(0x00000800) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_EDGE_HIGH_MSB _u(11) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_EDGE_HIGH_LSB _u(11) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_EDGE_LOW +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_EDGE_LOW_BITS _u(0x00000400) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_EDGE_LOW_MSB _u(10) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_EDGE_LOW_LSB _u(10) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_LEVEL_HIGH_MSB _u(9) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_LEVEL_HIGH_LSB _u(9) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_LEVEL_LOW_BITS _u(0x00000100) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_LEVEL_LOW_MSB _u(8) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_LEVEL_LOW_LSB _u(8) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SD0_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_EDGE_HIGH_BITS _u(0x00000080) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_EDGE_HIGH_MSB _u(7) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_EDGE_HIGH_LSB _u(7) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_EDGE_LOW +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_EDGE_LOW_BITS _u(0x00000040) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_EDGE_LOW_MSB _u(6) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_EDGE_LOW_LSB _u(6) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_LEVEL_HIGH_MSB _u(5) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_LEVEL_HIGH_LSB _u(5) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_LEVEL_LOW_BITS _u(0x00000010) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_LEVEL_LOW_MSB _u(4) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_LEVEL_LOW_LSB _u(4) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SS_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_EDGE_HIGH_BITS _u(0x00000008) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_EDGE_HIGH_MSB _u(3) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_EDGE_HIGH_LSB _u(3) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_EDGE_LOW +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_EDGE_LOW_BITS _u(0x00000004) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_EDGE_LOW_MSB _u(2) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_EDGE_LOW_LSB _u(2) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_LEVEL_HIGH_MSB _u(1) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_LEVEL_HIGH_LSB _u(1) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_LEVEL_LOW_BITS _u(0x00000001) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_LEVEL_LOW_MSB _u(0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_LEVEL_LOW_LSB _u(0) +#define IO_QSPI_PROC0_INTF_GPIO_QSPI_SCLK_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_QSPI_PROC0_INTS +// Description : Interrupt status after masking & forcing for proc0 +#define IO_QSPI_PROC0_INTS_OFFSET _u(0x0000003c) +#define IO_QSPI_PROC0_INTS_BITS _u(0x00ffffff) +#define IO_QSPI_PROC0_INTS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_EDGE_HIGH_BITS _u(0x00800000) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_EDGE_HIGH_MSB _u(23) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_EDGE_HIGH_LSB _u(23) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_EDGE_LOW +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_EDGE_LOW_BITS _u(0x00400000) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_EDGE_LOW_MSB _u(22) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_EDGE_LOW_LSB _u(22) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_LEVEL_HIGH_MSB _u(21) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_LEVEL_HIGH_LSB _u(21) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_LEVEL_LOW_BITS _u(0x00100000) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_LEVEL_LOW_MSB _u(20) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_LEVEL_LOW_LSB _u(20) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD3_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_EDGE_HIGH_BITS _u(0x00080000) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_EDGE_HIGH_MSB _u(19) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_EDGE_HIGH_LSB _u(19) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_EDGE_LOW +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_EDGE_LOW_BITS _u(0x00040000) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_EDGE_LOW_MSB _u(18) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_EDGE_LOW_LSB _u(18) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_LEVEL_HIGH_MSB _u(17) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_LEVEL_HIGH_LSB _u(17) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_LEVEL_LOW_BITS _u(0x00010000) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_LEVEL_LOW_MSB _u(16) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_LEVEL_LOW_LSB _u(16) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD2_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_EDGE_HIGH_BITS _u(0x00008000) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_EDGE_HIGH_MSB _u(15) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_EDGE_HIGH_LSB _u(15) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_EDGE_LOW +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_EDGE_LOW_BITS _u(0x00004000) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_EDGE_LOW_MSB _u(14) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_EDGE_LOW_LSB _u(14) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_LEVEL_HIGH_MSB _u(13) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_LEVEL_HIGH_LSB _u(13) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_LEVEL_LOW_BITS _u(0x00001000) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_LEVEL_LOW_MSB _u(12) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_LEVEL_LOW_LSB _u(12) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD1_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_EDGE_HIGH_BITS _u(0x00000800) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_EDGE_HIGH_MSB _u(11) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_EDGE_HIGH_LSB _u(11) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_EDGE_LOW +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_EDGE_LOW_BITS _u(0x00000400) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_EDGE_LOW_MSB _u(10) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_EDGE_LOW_LSB _u(10) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_LEVEL_HIGH_MSB _u(9) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_LEVEL_HIGH_LSB _u(9) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_LEVEL_LOW_BITS _u(0x00000100) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_LEVEL_LOW_MSB _u(8) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_LEVEL_LOW_LSB _u(8) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SD0_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_EDGE_HIGH_BITS _u(0x00000080) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_EDGE_HIGH_MSB _u(7) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_EDGE_HIGH_LSB _u(7) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_EDGE_LOW +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_EDGE_LOW_BITS _u(0x00000040) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_EDGE_LOW_MSB _u(6) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_EDGE_LOW_LSB _u(6) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_LEVEL_HIGH_MSB _u(5) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_LEVEL_HIGH_LSB _u(5) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_LEVEL_LOW_BITS _u(0x00000010) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_LEVEL_LOW_MSB _u(4) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_LEVEL_LOW_LSB _u(4) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SS_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_EDGE_HIGH_BITS _u(0x00000008) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_EDGE_HIGH_MSB _u(3) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_EDGE_HIGH_LSB _u(3) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_EDGE_LOW +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_EDGE_LOW_BITS _u(0x00000004) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_EDGE_LOW_MSB _u(2) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_EDGE_LOW_LSB _u(2) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_LEVEL_HIGH_MSB _u(1) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_LEVEL_HIGH_LSB _u(1) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_LEVEL_LOW_BITS _u(0x00000001) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_LEVEL_LOW_MSB _u(0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_LEVEL_LOW_LSB _u(0) +#define IO_QSPI_PROC0_INTS_GPIO_QSPI_SCLK_LEVEL_LOW_ACCESS "RO" +// ============================================================================= +// Register : IO_QSPI_PROC1_INTE +// Description : Interrupt Enable for proc1 +#define IO_QSPI_PROC1_INTE_OFFSET _u(0x00000040) +#define IO_QSPI_PROC1_INTE_BITS _u(0x00ffffff) +#define IO_QSPI_PROC1_INTE_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_EDGE_HIGH_BITS _u(0x00800000) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_EDGE_HIGH_MSB _u(23) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_EDGE_HIGH_LSB _u(23) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_EDGE_LOW +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_EDGE_LOW_BITS _u(0x00400000) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_EDGE_LOW_MSB _u(22) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_EDGE_LOW_LSB _u(22) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_LEVEL_HIGH_MSB _u(21) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_LEVEL_HIGH_LSB _u(21) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_LEVEL_LOW_BITS _u(0x00100000) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_LEVEL_LOW_MSB _u(20) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_LEVEL_LOW_LSB _u(20) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD3_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_EDGE_HIGH_BITS _u(0x00080000) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_EDGE_HIGH_MSB _u(19) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_EDGE_HIGH_LSB _u(19) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_EDGE_LOW +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_EDGE_LOW_BITS _u(0x00040000) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_EDGE_LOW_MSB _u(18) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_EDGE_LOW_LSB _u(18) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_LEVEL_HIGH_MSB _u(17) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_LEVEL_HIGH_LSB _u(17) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_LEVEL_LOW_BITS _u(0x00010000) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_LEVEL_LOW_MSB _u(16) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_LEVEL_LOW_LSB _u(16) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD2_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_EDGE_HIGH_BITS _u(0x00008000) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_EDGE_HIGH_MSB _u(15) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_EDGE_HIGH_LSB _u(15) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_EDGE_LOW +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_EDGE_LOW_BITS _u(0x00004000) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_EDGE_LOW_MSB _u(14) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_EDGE_LOW_LSB _u(14) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_LEVEL_HIGH_MSB _u(13) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_LEVEL_HIGH_LSB _u(13) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_LEVEL_LOW_BITS _u(0x00001000) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_LEVEL_LOW_MSB _u(12) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_LEVEL_LOW_LSB _u(12) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD1_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_EDGE_HIGH_BITS _u(0x00000800) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_EDGE_HIGH_MSB _u(11) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_EDGE_HIGH_LSB _u(11) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_EDGE_LOW +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_EDGE_LOW_BITS _u(0x00000400) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_EDGE_LOW_MSB _u(10) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_EDGE_LOW_LSB _u(10) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_LEVEL_HIGH_MSB _u(9) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_LEVEL_HIGH_LSB _u(9) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_LEVEL_LOW_BITS _u(0x00000100) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_LEVEL_LOW_MSB _u(8) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_LEVEL_LOW_LSB _u(8) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SD0_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_EDGE_HIGH_BITS _u(0x00000080) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_EDGE_HIGH_MSB _u(7) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_EDGE_HIGH_LSB _u(7) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_EDGE_LOW +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_EDGE_LOW_BITS _u(0x00000040) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_EDGE_LOW_MSB _u(6) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_EDGE_LOW_LSB _u(6) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_LEVEL_HIGH_MSB _u(5) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_LEVEL_HIGH_LSB _u(5) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_LEVEL_LOW_BITS _u(0x00000010) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_LEVEL_LOW_MSB _u(4) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_LEVEL_LOW_LSB _u(4) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SS_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_EDGE_HIGH_BITS _u(0x00000008) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_EDGE_HIGH_MSB _u(3) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_EDGE_HIGH_LSB _u(3) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_EDGE_LOW +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_EDGE_LOW_BITS _u(0x00000004) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_EDGE_LOW_MSB _u(2) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_EDGE_LOW_LSB _u(2) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_LEVEL_HIGH_MSB _u(1) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_LEVEL_HIGH_LSB _u(1) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_LEVEL_LOW_BITS _u(0x00000001) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_LEVEL_LOW_MSB _u(0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_LEVEL_LOW_LSB _u(0) +#define IO_QSPI_PROC1_INTE_GPIO_QSPI_SCLK_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_QSPI_PROC1_INTF +// Description : Interrupt Force for proc1 +#define IO_QSPI_PROC1_INTF_OFFSET _u(0x00000044) +#define IO_QSPI_PROC1_INTF_BITS _u(0x00ffffff) +#define IO_QSPI_PROC1_INTF_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_EDGE_HIGH_BITS _u(0x00800000) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_EDGE_HIGH_MSB _u(23) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_EDGE_HIGH_LSB _u(23) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_EDGE_LOW +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_EDGE_LOW_BITS _u(0x00400000) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_EDGE_LOW_MSB _u(22) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_EDGE_LOW_LSB _u(22) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_LEVEL_HIGH_MSB _u(21) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_LEVEL_HIGH_LSB _u(21) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_LEVEL_LOW_BITS _u(0x00100000) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_LEVEL_LOW_MSB _u(20) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_LEVEL_LOW_LSB _u(20) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD3_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_EDGE_HIGH_BITS _u(0x00080000) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_EDGE_HIGH_MSB _u(19) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_EDGE_HIGH_LSB _u(19) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_EDGE_LOW +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_EDGE_LOW_BITS _u(0x00040000) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_EDGE_LOW_MSB _u(18) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_EDGE_LOW_LSB _u(18) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_LEVEL_HIGH_MSB _u(17) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_LEVEL_HIGH_LSB _u(17) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_LEVEL_LOW_BITS _u(0x00010000) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_LEVEL_LOW_MSB _u(16) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_LEVEL_LOW_LSB _u(16) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD2_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_EDGE_HIGH_BITS _u(0x00008000) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_EDGE_HIGH_MSB _u(15) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_EDGE_HIGH_LSB _u(15) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_EDGE_LOW +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_EDGE_LOW_BITS _u(0x00004000) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_EDGE_LOW_MSB _u(14) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_EDGE_LOW_LSB _u(14) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_LEVEL_HIGH_MSB _u(13) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_LEVEL_HIGH_LSB _u(13) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_LEVEL_LOW_BITS _u(0x00001000) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_LEVEL_LOW_MSB _u(12) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_LEVEL_LOW_LSB _u(12) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD1_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_EDGE_HIGH_BITS _u(0x00000800) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_EDGE_HIGH_MSB _u(11) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_EDGE_HIGH_LSB _u(11) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_EDGE_LOW +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_EDGE_LOW_BITS _u(0x00000400) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_EDGE_LOW_MSB _u(10) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_EDGE_LOW_LSB _u(10) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_LEVEL_HIGH_MSB _u(9) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_LEVEL_HIGH_LSB _u(9) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_LEVEL_LOW_BITS _u(0x00000100) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_LEVEL_LOW_MSB _u(8) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_LEVEL_LOW_LSB _u(8) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SD0_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_EDGE_HIGH_BITS _u(0x00000080) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_EDGE_HIGH_MSB _u(7) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_EDGE_HIGH_LSB _u(7) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_EDGE_LOW +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_EDGE_LOW_BITS _u(0x00000040) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_EDGE_LOW_MSB _u(6) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_EDGE_LOW_LSB _u(6) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_LEVEL_HIGH_MSB _u(5) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_LEVEL_HIGH_LSB _u(5) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_LEVEL_LOW_BITS _u(0x00000010) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_LEVEL_LOW_MSB _u(4) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_LEVEL_LOW_LSB _u(4) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SS_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_EDGE_HIGH_BITS _u(0x00000008) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_EDGE_HIGH_MSB _u(3) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_EDGE_HIGH_LSB _u(3) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_EDGE_LOW +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_EDGE_LOW_BITS _u(0x00000004) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_EDGE_LOW_MSB _u(2) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_EDGE_LOW_LSB _u(2) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_LEVEL_HIGH_MSB _u(1) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_LEVEL_HIGH_LSB _u(1) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_LEVEL_LOW_BITS _u(0x00000001) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_LEVEL_LOW_MSB _u(0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_LEVEL_LOW_LSB _u(0) +#define IO_QSPI_PROC1_INTF_GPIO_QSPI_SCLK_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_QSPI_PROC1_INTS +// Description : Interrupt status after masking & forcing for proc1 +#define IO_QSPI_PROC1_INTS_OFFSET _u(0x00000048) +#define IO_QSPI_PROC1_INTS_BITS _u(0x00ffffff) +#define IO_QSPI_PROC1_INTS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_EDGE_HIGH_BITS _u(0x00800000) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_EDGE_HIGH_MSB _u(23) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_EDGE_HIGH_LSB _u(23) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_EDGE_LOW +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_EDGE_LOW_BITS _u(0x00400000) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_EDGE_LOW_MSB _u(22) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_EDGE_LOW_LSB _u(22) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_LEVEL_HIGH_MSB _u(21) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_LEVEL_HIGH_LSB _u(21) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_LEVEL_LOW_BITS _u(0x00100000) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_LEVEL_LOW_MSB _u(20) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_LEVEL_LOW_LSB _u(20) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD3_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_EDGE_HIGH_BITS _u(0x00080000) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_EDGE_HIGH_MSB _u(19) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_EDGE_HIGH_LSB _u(19) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_EDGE_LOW +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_EDGE_LOW_BITS _u(0x00040000) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_EDGE_LOW_MSB _u(18) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_EDGE_LOW_LSB _u(18) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_LEVEL_HIGH_MSB _u(17) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_LEVEL_HIGH_LSB _u(17) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_LEVEL_LOW_BITS _u(0x00010000) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_LEVEL_LOW_MSB _u(16) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_LEVEL_LOW_LSB _u(16) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD2_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_EDGE_HIGH_BITS _u(0x00008000) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_EDGE_HIGH_MSB _u(15) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_EDGE_HIGH_LSB _u(15) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_EDGE_LOW +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_EDGE_LOW_BITS _u(0x00004000) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_EDGE_LOW_MSB _u(14) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_EDGE_LOW_LSB _u(14) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_LEVEL_HIGH_MSB _u(13) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_LEVEL_HIGH_LSB _u(13) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_LEVEL_LOW_BITS _u(0x00001000) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_LEVEL_LOW_MSB _u(12) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_LEVEL_LOW_LSB _u(12) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD1_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_EDGE_HIGH_BITS _u(0x00000800) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_EDGE_HIGH_MSB _u(11) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_EDGE_HIGH_LSB _u(11) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_EDGE_LOW +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_EDGE_LOW_BITS _u(0x00000400) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_EDGE_LOW_MSB _u(10) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_EDGE_LOW_LSB _u(10) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_LEVEL_HIGH_MSB _u(9) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_LEVEL_HIGH_LSB _u(9) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_LEVEL_LOW_BITS _u(0x00000100) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_LEVEL_LOW_MSB _u(8) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_LEVEL_LOW_LSB _u(8) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SD0_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_EDGE_HIGH_BITS _u(0x00000080) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_EDGE_HIGH_MSB _u(7) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_EDGE_HIGH_LSB _u(7) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_EDGE_LOW +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_EDGE_LOW_BITS _u(0x00000040) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_EDGE_LOW_MSB _u(6) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_EDGE_LOW_LSB _u(6) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_LEVEL_HIGH_MSB _u(5) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_LEVEL_HIGH_LSB _u(5) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_LEVEL_LOW_BITS _u(0x00000010) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_LEVEL_LOW_MSB _u(4) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_LEVEL_LOW_LSB _u(4) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SS_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_EDGE_HIGH +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_EDGE_HIGH_BITS _u(0x00000008) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_EDGE_HIGH_MSB _u(3) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_EDGE_HIGH_LSB _u(3) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_EDGE_LOW +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_EDGE_LOW_BITS _u(0x00000004) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_EDGE_LOW_MSB _u(2) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_EDGE_LOW_LSB _u(2) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_LEVEL_HIGH +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_LEVEL_HIGH_MSB _u(1) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_LEVEL_HIGH_LSB _u(1) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_LEVEL_LOW +// Description : None +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_LEVEL_LOW_BITS _u(0x00000001) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_LEVEL_LOW_MSB _u(0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_LEVEL_LOW_LSB _u(0) +#define IO_QSPI_PROC1_INTS_GPIO_QSPI_SCLK_LEVEL_LOW_ACCESS "RO" +// ============================================================================= +// Register : IO_QSPI_DORMANT_WAKE_INTE +// Description : Interrupt Enable for dormant_wake +#define IO_QSPI_DORMANT_WAKE_INTE_OFFSET _u(0x0000004c) +#define IO_QSPI_DORMANT_WAKE_INTE_BITS _u(0x00ffffff) +#define IO_QSPI_DORMANT_WAKE_INTE_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_EDGE_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_EDGE_HIGH_BITS _u(0x00800000) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_EDGE_HIGH_MSB _u(23) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_EDGE_HIGH_LSB _u(23) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_EDGE_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_EDGE_LOW_BITS _u(0x00400000) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_EDGE_LOW_MSB _u(22) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_EDGE_LOW_LSB _u(22) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_LEVEL_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_LEVEL_HIGH_MSB _u(21) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_LEVEL_HIGH_LSB _u(21) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_LEVEL_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_LEVEL_LOW_BITS _u(0x00100000) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_LEVEL_LOW_MSB _u(20) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_LEVEL_LOW_LSB _u(20) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD3_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_EDGE_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_EDGE_HIGH_BITS _u(0x00080000) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_EDGE_HIGH_MSB _u(19) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_EDGE_HIGH_LSB _u(19) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_EDGE_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_EDGE_LOW_BITS _u(0x00040000) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_EDGE_LOW_MSB _u(18) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_EDGE_LOW_LSB _u(18) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_LEVEL_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_LEVEL_HIGH_MSB _u(17) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_LEVEL_HIGH_LSB _u(17) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_LEVEL_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_LEVEL_LOW_BITS _u(0x00010000) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_LEVEL_LOW_MSB _u(16) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_LEVEL_LOW_LSB _u(16) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD2_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_EDGE_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_EDGE_HIGH_BITS _u(0x00008000) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_EDGE_HIGH_MSB _u(15) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_EDGE_HIGH_LSB _u(15) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_EDGE_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_EDGE_LOW_BITS _u(0x00004000) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_EDGE_LOW_MSB _u(14) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_EDGE_LOW_LSB _u(14) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_LEVEL_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_LEVEL_HIGH_MSB _u(13) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_LEVEL_HIGH_LSB _u(13) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_LEVEL_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_LEVEL_LOW_BITS _u(0x00001000) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_LEVEL_LOW_MSB _u(12) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_LEVEL_LOW_LSB _u(12) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD1_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_EDGE_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_EDGE_HIGH_BITS _u(0x00000800) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_EDGE_HIGH_MSB _u(11) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_EDGE_HIGH_LSB _u(11) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_EDGE_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_EDGE_LOW_BITS _u(0x00000400) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_EDGE_LOW_MSB _u(10) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_EDGE_LOW_LSB _u(10) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_LEVEL_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_LEVEL_HIGH_MSB _u(9) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_LEVEL_HIGH_LSB _u(9) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_LEVEL_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_LEVEL_LOW_BITS _u(0x00000100) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_LEVEL_LOW_MSB _u(8) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_LEVEL_LOW_LSB _u(8) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SD0_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_EDGE_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_EDGE_HIGH_BITS _u(0x00000080) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_EDGE_HIGH_MSB _u(7) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_EDGE_HIGH_LSB _u(7) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_EDGE_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_EDGE_LOW_BITS _u(0x00000040) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_EDGE_LOW_MSB _u(6) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_EDGE_LOW_LSB _u(6) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_LEVEL_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_LEVEL_HIGH_MSB _u(5) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_LEVEL_HIGH_LSB _u(5) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_LEVEL_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_LEVEL_LOW_BITS _u(0x00000010) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_LEVEL_LOW_MSB _u(4) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_LEVEL_LOW_LSB _u(4) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SS_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_EDGE_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_EDGE_HIGH_BITS _u(0x00000008) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_EDGE_HIGH_MSB _u(3) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_EDGE_HIGH_LSB _u(3) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_EDGE_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_EDGE_LOW_BITS _u(0x00000004) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_EDGE_LOW_MSB _u(2) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_EDGE_LOW_LSB _u(2) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_LEVEL_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_LEVEL_HIGH_MSB _u(1) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_LEVEL_HIGH_LSB _u(1) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_LEVEL_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_LEVEL_LOW_BITS _u(0x00000001) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_LEVEL_LOW_MSB _u(0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_LEVEL_LOW_LSB _u(0) +#define IO_QSPI_DORMANT_WAKE_INTE_GPIO_QSPI_SCLK_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_QSPI_DORMANT_WAKE_INTF +// Description : Interrupt Force for dormant_wake +#define IO_QSPI_DORMANT_WAKE_INTF_OFFSET _u(0x00000050) +#define IO_QSPI_DORMANT_WAKE_INTF_BITS _u(0x00ffffff) +#define IO_QSPI_DORMANT_WAKE_INTF_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_EDGE_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_EDGE_HIGH_BITS _u(0x00800000) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_EDGE_HIGH_MSB _u(23) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_EDGE_HIGH_LSB _u(23) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_EDGE_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_EDGE_LOW_BITS _u(0x00400000) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_EDGE_LOW_MSB _u(22) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_EDGE_LOW_LSB _u(22) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_LEVEL_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_LEVEL_HIGH_MSB _u(21) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_LEVEL_HIGH_LSB _u(21) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_LEVEL_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_LEVEL_LOW_BITS _u(0x00100000) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_LEVEL_LOW_MSB _u(20) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_LEVEL_LOW_LSB _u(20) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD3_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_EDGE_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_EDGE_HIGH_BITS _u(0x00080000) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_EDGE_HIGH_MSB _u(19) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_EDGE_HIGH_LSB _u(19) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_EDGE_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_EDGE_LOW_BITS _u(0x00040000) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_EDGE_LOW_MSB _u(18) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_EDGE_LOW_LSB _u(18) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_LEVEL_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_LEVEL_HIGH_MSB _u(17) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_LEVEL_HIGH_LSB _u(17) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_LEVEL_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_LEVEL_LOW_BITS _u(0x00010000) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_LEVEL_LOW_MSB _u(16) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_LEVEL_LOW_LSB _u(16) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD2_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_EDGE_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_EDGE_HIGH_BITS _u(0x00008000) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_EDGE_HIGH_MSB _u(15) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_EDGE_HIGH_LSB _u(15) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_EDGE_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_EDGE_LOW_BITS _u(0x00004000) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_EDGE_LOW_MSB _u(14) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_EDGE_LOW_LSB _u(14) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_LEVEL_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_LEVEL_HIGH_MSB _u(13) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_LEVEL_HIGH_LSB _u(13) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_LEVEL_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_LEVEL_LOW_BITS _u(0x00001000) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_LEVEL_LOW_MSB _u(12) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_LEVEL_LOW_LSB _u(12) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD1_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_EDGE_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_EDGE_HIGH_BITS _u(0x00000800) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_EDGE_HIGH_MSB _u(11) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_EDGE_HIGH_LSB _u(11) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_EDGE_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_EDGE_LOW_BITS _u(0x00000400) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_EDGE_LOW_MSB _u(10) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_EDGE_LOW_LSB _u(10) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_LEVEL_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_LEVEL_HIGH_MSB _u(9) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_LEVEL_HIGH_LSB _u(9) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_LEVEL_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_LEVEL_LOW_BITS _u(0x00000100) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_LEVEL_LOW_MSB _u(8) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_LEVEL_LOW_LSB _u(8) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SD0_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_EDGE_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_EDGE_HIGH_BITS _u(0x00000080) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_EDGE_HIGH_MSB _u(7) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_EDGE_HIGH_LSB _u(7) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_EDGE_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_EDGE_LOW_BITS _u(0x00000040) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_EDGE_LOW_MSB _u(6) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_EDGE_LOW_LSB _u(6) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_LEVEL_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_LEVEL_HIGH_MSB _u(5) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_LEVEL_HIGH_LSB _u(5) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_LEVEL_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_LEVEL_LOW_BITS _u(0x00000010) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_LEVEL_LOW_MSB _u(4) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_LEVEL_LOW_LSB _u(4) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SS_LEVEL_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_EDGE_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_EDGE_HIGH_BITS _u(0x00000008) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_EDGE_HIGH_MSB _u(3) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_EDGE_HIGH_LSB _u(3) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_EDGE_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_EDGE_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_EDGE_LOW_BITS _u(0x00000004) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_EDGE_LOW_MSB _u(2) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_EDGE_LOW_LSB _u(2) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_EDGE_LOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_LEVEL_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_LEVEL_HIGH_MSB _u(1) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_LEVEL_HIGH_LSB _u(1) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_LEVEL_HIGH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_LEVEL_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_LEVEL_LOW_BITS _u(0x00000001) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_LEVEL_LOW_MSB _u(0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_LEVEL_LOW_LSB _u(0) +#define IO_QSPI_DORMANT_WAKE_INTF_GPIO_QSPI_SCLK_LEVEL_LOW_ACCESS "RW" +// ============================================================================= +// Register : IO_QSPI_DORMANT_WAKE_INTS +// Description : Interrupt status after masking & forcing for dormant_wake +#define IO_QSPI_DORMANT_WAKE_INTS_OFFSET _u(0x00000054) +#define IO_QSPI_DORMANT_WAKE_INTS_BITS _u(0x00ffffff) +#define IO_QSPI_DORMANT_WAKE_INTS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_EDGE_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_EDGE_HIGH_BITS _u(0x00800000) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_EDGE_HIGH_MSB _u(23) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_EDGE_HIGH_LSB _u(23) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_EDGE_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_EDGE_LOW_BITS _u(0x00400000) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_EDGE_LOW_MSB _u(22) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_EDGE_LOW_LSB _u(22) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_LEVEL_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_LEVEL_HIGH_BITS _u(0x00200000) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_LEVEL_HIGH_MSB _u(21) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_LEVEL_HIGH_LSB _u(21) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_LEVEL_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_LEVEL_LOW_BITS _u(0x00100000) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_LEVEL_LOW_MSB _u(20) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_LEVEL_LOW_LSB _u(20) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD3_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_EDGE_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_EDGE_HIGH_BITS _u(0x00080000) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_EDGE_HIGH_MSB _u(19) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_EDGE_HIGH_LSB _u(19) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_EDGE_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_EDGE_LOW_BITS _u(0x00040000) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_EDGE_LOW_MSB _u(18) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_EDGE_LOW_LSB _u(18) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_LEVEL_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_LEVEL_HIGH_BITS _u(0x00020000) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_LEVEL_HIGH_MSB _u(17) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_LEVEL_HIGH_LSB _u(17) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_LEVEL_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_LEVEL_LOW_BITS _u(0x00010000) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_LEVEL_LOW_MSB _u(16) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_LEVEL_LOW_LSB _u(16) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD2_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_EDGE_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_EDGE_HIGH_BITS _u(0x00008000) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_EDGE_HIGH_MSB _u(15) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_EDGE_HIGH_LSB _u(15) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_EDGE_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_EDGE_LOW_BITS _u(0x00004000) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_EDGE_LOW_MSB _u(14) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_EDGE_LOW_LSB _u(14) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_LEVEL_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_LEVEL_HIGH_BITS _u(0x00002000) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_LEVEL_HIGH_MSB _u(13) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_LEVEL_HIGH_LSB _u(13) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_LEVEL_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_LEVEL_LOW_BITS _u(0x00001000) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_LEVEL_LOW_MSB _u(12) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_LEVEL_LOW_LSB _u(12) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD1_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_EDGE_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_EDGE_HIGH_BITS _u(0x00000800) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_EDGE_HIGH_MSB _u(11) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_EDGE_HIGH_LSB _u(11) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_EDGE_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_EDGE_LOW_BITS _u(0x00000400) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_EDGE_LOW_MSB _u(10) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_EDGE_LOW_LSB _u(10) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_LEVEL_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_LEVEL_HIGH_BITS _u(0x00000200) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_LEVEL_HIGH_MSB _u(9) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_LEVEL_HIGH_LSB _u(9) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_LEVEL_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_LEVEL_LOW_BITS _u(0x00000100) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_LEVEL_LOW_MSB _u(8) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_LEVEL_LOW_LSB _u(8) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SD0_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_EDGE_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_EDGE_HIGH_BITS _u(0x00000080) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_EDGE_HIGH_MSB _u(7) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_EDGE_HIGH_LSB _u(7) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_EDGE_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_EDGE_LOW_BITS _u(0x00000040) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_EDGE_LOW_MSB _u(6) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_EDGE_LOW_LSB _u(6) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_LEVEL_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_LEVEL_HIGH_BITS _u(0x00000020) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_LEVEL_HIGH_MSB _u(5) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_LEVEL_HIGH_LSB _u(5) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_LEVEL_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_LEVEL_LOW_BITS _u(0x00000010) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_LEVEL_LOW_MSB _u(4) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_LEVEL_LOW_LSB _u(4) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SS_LEVEL_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_EDGE_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_EDGE_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_EDGE_HIGH_BITS _u(0x00000008) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_EDGE_HIGH_MSB _u(3) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_EDGE_HIGH_LSB _u(3) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_EDGE_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_EDGE_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_EDGE_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_EDGE_LOW_BITS _u(0x00000004) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_EDGE_LOW_MSB _u(2) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_EDGE_LOW_LSB _u(2) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_EDGE_LOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_LEVEL_HIGH +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_LEVEL_HIGH_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_LEVEL_HIGH_BITS _u(0x00000002) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_LEVEL_HIGH_MSB _u(1) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_LEVEL_HIGH_LSB _u(1) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_LEVEL_HIGH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_LEVEL_LOW +// Description : None +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_LEVEL_LOW_RESET _u(0x0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_LEVEL_LOW_BITS _u(0x00000001) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_LEVEL_LOW_MSB _u(0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_LEVEL_LOW_LSB _u(0) +#define IO_QSPI_DORMANT_WAKE_INTS_GPIO_QSPI_SCLK_LEVEL_LOW_ACCESS "RO" +// ============================================================================= +#endif // HARDWARE_REGS_IO_QSPI_DEFINED diff --git a/arkanoid/pico/hardware/regs/m0plus.h b/arkanoid/pico/hardware/regs/m0plus.h new file mode 100644 index 0000000..cef5ab0 --- /dev/null +++ b/arkanoid/pico/hardware/regs/m0plus.h @@ -0,0 +1,1149 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : M0PLUS +// Version : 1 +// Bus type : ahbl +// Description : None +// ============================================================================= +#ifndef HARDWARE_REGS_M0PLUS_DEFINED +#define HARDWARE_REGS_M0PLUS_DEFINED +// ============================================================================= +// Register : M0PLUS_SYST_CSR +// Description : Use the SysTick Control and Status Register to enable the +// SysTick features. +#define M0PLUS_SYST_CSR_OFFSET _u(0x0000e010) +#define M0PLUS_SYST_CSR_BITS _u(0x00010007) +#define M0PLUS_SYST_CSR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_SYST_CSR_COUNTFLAG +// Description : Returns 1 if timer counted to 0 since last time this was read. +// Clears on read by application or debugger. +#define M0PLUS_SYST_CSR_COUNTFLAG_RESET _u(0x0) +#define M0PLUS_SYST_CSR_COUNTFLAG_BITS _u(0x00010000) +#define M0PLUS_SYST_CSR_COUNTFLAG_MSB _u(16) +#define M0PLUS_SYST_CSR_COUNTFLAG_LSB _u(16) +#define M0PLUS_SYST_CSR_COUNTFLAG_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_SYST_CSR_CLKSOURCE +// Description : SysTick clock source. Always reads as one if SYST_CALIB reports +// NOREF. +// Selects the SysTick timer clock source: +// 0 = External reference clock. +// 1 = Processor clock. +#define M0PLUS_SYST_CSR_CLKSOURCE_RESET _u(0x0) +#define M0PLUS_SYST_CSR_CLKSOURCE_BITS _u(0x00000004) +#define M0PLUS_SYST_CSR_CLKSOURCE_MSB _u(2) +#define M0PLUS_SYST_CSR_CLKSOURCE_LSB _u(2) +#define M0PLUS_SYST_CSR_CLKSOURCE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_SYST_CSR_TICKINT +// Description : Enables SysTick exception request: +// 0 = Counting down to zero does not assert the SysTick exception +// request. +// 1 = Counting down to zero to asserts the SysTick exception +// request. +#define M0PLUS_SYST_CSR_TICKINT_RESET _u(0x0) +#define M0PLUS_SYST_CSR_TICKINT_BITS _u(0x00000002) +#define M0PLUS_SYST_CSR_TICKINT_MSB _u(1) +#define M0PLUS_SYST_CSR_TICKINT_LSB _u(1) +#define M0PLUS_SYST_CSR_TICKINT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_SYST_CSR_ENABLE +// Description : Enable SysTick counter: +// 0 = Counter disabled. +// 1 = Counter enabled. +#define M0PLUS_SYST_CSR_ENABLE_RESET _u(0x0) +#define M0PLUS_SYST_CSR_ENABLE_BITS _u(0x00000001) +#define M0PLUS_SYST_CSR_ENABLE_MSB _u(0) +#define M0PLUS_SYST_CSR_ENABLE_LSB _u(0) +#define M0PLUS_SYST_CSR_ENABLE_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_SYST_RVR +// Description : Use the SysTick Reload Value Register to specify the start +// value to load into the current value register when the counter +// reaches 0. It can be any value between 0 and 0x00FFFFFF. A +// start value of 0 is possible, but has no effect because the +// SysTick interrupt and COUNTFLAG are activated when counting +// from 1 to 0. The reset value of this register is UNKNOWN. +// To generate a multi-shot timer with a period of N processor +// clock cycles, use a RELOAD value of N-1. For example, if the +// SysTick interrupt is required every 100 clock pulses, set +// RELOAD to 99. +#define M0PLUS_SYST_RVR_OFFSET _u(0x0000e014) +#define M0PLUS_SYST_RVR_BITS _u(0x00ffffff) +#define M0PLUS_SYST_RVR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_SYST_RVR_RELOAD +// Description : Value to load into the SysTick Current Value Register when the +// counter reaches 0. +#define M0PLUS_SYST_RVR_RELOAD_RESET _u(0x000000) +#define M0PLUS_SYST_RVR_RELOAD_BITS _u(0x00ffffff) +#define M0PLUS_SYST_RVR_RELOAD_MSB _u(23) +#define M0PLUS_SYST_RVR_RELOAD_LSB _u(0) +#define M0PLUS_SYST_RVR_RELOAD_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_SYST_CVR +// Description : Use the SysTick Current Value Register to find the current +// value in the register. The reset value of this register is +// UNKNOWN. +#define M0PLUS_SYST_CVR_OFFSET _u(0x0000e018) +#define M0PLUS_SYST_CVR_BITS _u(0x00ffffff) +#define M0PLUS_SYST_CVR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_SYST_CVR_CURRENT +// Description : Reads return the current value of the SysTick counter. This +// register is write-clear. Writing to it with any value clears +// the register to 0. Clearing this register also clears the +// COUNTFLAG bit of the SysTick Control and Status Register. +#define M0PLUS_SYST_CVR_CURRENT_RESET _u(0x000000) +#define M0PLUS_SYST_CVR_CURRENT_BITS _u(0x00ffffff) +#define M0PLUS_SYST_CVR_CURRENT_MSB _u(23) +#define M0PLUS_SYST_CVR_CURRENT_LSB _u(0) +#define M0PLUS_SYST_CVR_CURRENT_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_SYST_CALIB +// Description : Use the SysTick Calibration Value Register to enable software +// to scale to any required speed using divide and multiply. +#define M0PLUS_SYST_CALIB_OFFSET _u(0x0000e01c) +#define M0PLUS_SYST_CALIB_BITS _u(0xc0ffffff) +#define M0PLUS_SYST_CALIB_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_SYST_CALIB_NOREF +// Description : If reads as 1, the Reference clock is not provided - the +// CLKSOURCE bit of the SysTick Control and Status register will +// be forced to 1 and cannot be cleared to 0. +#define M0PLUS_SYST_CALIB_NOREF_RESET _u(0x0) +#define M0PLUS_SYST_CALIB_NOREF_BITS _u(0x80000000) +#define M0PLUS_SYST_CALIB_NOREF_MSB _u(31) +#define M0PLUS_SYST_CALIB_NOREF_LSB _u(31) +#define M0PLUS_SYST_CALIB_NOREF_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_SYST_CALIB_SKEW +// Description : If reads as 1, the calibration value for 10ms is inexact (due +// to clock frequency). +#define M0PLUS_SYST_CALIB_SKEW_RESET _u(0x0) +#define M0PLUS_SYST_CALIB_SKEW_BITS _u(0x40000000) +#define M0PLUS_SYST_CALIB_SKEW_MSB _u(30) +#define M0PLUS_SYST_CALIB_SKEW_LSB _u(30) +#define M0PLUS_SYST_CALIB_SKEW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_SYST_CALIB_TENMS +// Description : An optional Reload value to be used for 10ms (100Hz) timing, +// subject to system clock skew errors. If the value reads as 0, +// the calibration value is not known. +#define M0PLUS_SYST_CALIB_TENMS_RESET _u(0x000000) +#define M0PLUS_SYST_CALIB_TENMS_BITS _u(0x00ffffff) +#define M0PLUS_SYST_CALIB_TENMS_MSB _u(23) +#define M0PLUS_SYST_CALIB_TENMS_LSB _u(0) +#define M0PLUS_SYST_CALIB_TENMS_ACCESS "RO" +// ============================================================================= +// Register : M0PLUS_NVIC_ISER +// Description : Use the Interrupt Set-Enable Register to enable interrupts and +// determine which interrupts are currently enabled. +// If a pending interrupt is enabled, the NVIC activates the +// interrupt based on its priority. If an interrupt is not +// enabled, asserting its interrupt signal changes the interrupt +// state to pending, but the NVIC never activates the interrupt, +// regardless of its priority. +#define M0PLUS_NVIC_ISER_OFFSET _u(0x0000e100) +#define M0PLUS_NVIC_ISER_BITS _u(0xffffffff) +#define M0PLUS_NVIC_ISER_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_ISER_SETENA +// Description : Interrupt set-enable bits. +// Write: +// 0 = No effect. +// 1 = Enable interrupt. +// Read: +// 0 = Interrupt disabled. +// 1 = Interrupt enabled. +#define M0PLUS_NVIC_ISER_SETENA_RESET _u(0x00000000) +#define M0PLUS_NVIC_ISER_SETENA_BITS _u(0xffffffff) +#define M0PLUS_NVIC_ISER_SETENA_MSB _u(31) +#define M0PLUS_NVIC_ISER_SETENA_LSB _u(0) +#define M0PLUS_NVIC_ISER_SETENA_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_NVIC_ICER +// Description : Use the Interrupt Clear-Enable Registers to disable interrupts +// and determine which interrupts are currently enabled. +#define M0PLUS_NVIC_ICER_OFFSET _u(0x0000e180) +#define M0PLUS_NVIC_ICER_BITS _u(0xffffffff) +#define M0PLUS_NVIC_ICER_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_ICER_CLRENA +// Description : Interrupt clear-enable bits. +// Write: +// 0 = No effect. +// 1 = Disable interrupt. +// Read: +// 0 = Interrupt disabled. +// 1 = Interrupt enabled. +#define M0PLUS_NVIC_ICER_CLRENA_RESET _u(0x00000000) +#define M0PLUS_NVIC_ICER_CLRENA_BITS _u(0xffffffff) +#define M0PLUS_NVIC_ICER_CLRENA_MSB _u(31) +#define M0PLUS_NVIC_ICER_CLRENA_LSB _u(0) +#define M0PLUS_NVIC_ICER_CLRENA_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_NVIC_ISPR +// Description : The NVIC_ISPR forces interrupts into the pending state, and +// shows which interrupts are pending. +#define M0PLUS_NVIC_ISPR_OFFSET _u(0x0000e200) +#define M0PLUS_NVIC_ISPR_BITS _u(0xffffffff) +#define M0PLUS_NVIC_ISPR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_ISPR_SETPEND +// Description : Interrupt set-pending bits. +// Write: +// 0 = No effect. +// 1 = Changes interrupt state to pending. +// Read: +// 0 = Interrupt is not pending. +// 1 = Interrupt is pending. +// Note: Writing 1 to the NVIC_ISPR bit corresponding to: +// An interrupt that is pending has no effect. +// A disabled interrupt sets the state of that interrupt to +// pending. +#define M0PLUS_NVIC_ISPR_SETPEND_RESET _u(0x00000000) +#define M0PLUS_NVIC_ISPR_SETPEND_BITS _u(0xffffffff) +#define M0PLUS_NVIC_ISPR_SETPEND_MSB _u(31) +#define M0PLUS_NVIC_ISPR_SETPEND_LSB _u(0) +#define M0PLUS_NVIC_ISPR_SETPEND_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_NVIC_ICPR +// Description : Use the Interrupt Clear-Pending Register to clear pending +// interrupts and determine which interrupts are currently +// pending. +#define M0PLUS_NVIC_ICPR_OFFSET _u(0x0000e280) +#define M0PLUS_NVIC_ICPR_BITS _u(0xffffffff) +#define M0PLUS_NVIC_ICPR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_ICPR_CLRPEND +// Description : Interrupt clear-pending bits. +// Write: +// 0 = No effect. +// 1 = Removes pending state and interrupt. +// Read: +// 0 = Interrupt is not pending. +// 1 = Interrupt is pending. +#define M0PLUS_NVIC_ICPR_CLRPEND_RESET _u(0x00000000) +#define M0PLUS_NVIC_ICPR_CLRPEND_BITS _u(0xffffffff) +#define M0PLUS_NVIC_ICPR_CLRPEND_MSB _u(31) +#define M0PLUS_NVIC_ICPR_CLRPEND_LSB _u(0) +#define M0PLUS_NVIC_ICPR_CLRPEND_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_NVIC_IPR0 +// Description : Use the Interrupt Priority Registers to assign a priority from +// 0 to 3 to each of the available interrupts. 0 is the highest +// priority, and 3 is the lowest. +// Note: Writing 1 to an NVIC_ICPR bit does not affect the active +// state of the corresponding interrupt. +// These registers are only word-accessible +#define M0PLUS_NVIC_IPR0_OFFSET _u(0x0000e400) +#define M0PLUS_NVIC_IPR0_BITS _u(0xc0c0c0c0) +#define M0PLUS_NVIC_IPR0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR0_IP_3 +// Description : Priority of interrupt 3 +#define M0PLUS_NVIC_IPR0_IP_3_RESET _u(0x0) +#define M0PLUS_NVIC_IPR0_IP_3_BITS _u(0xc0000000) +#define M0PLUS_NVIC_IPR0_IP_3_MSB _u(31) +#define M0PLUS_NVIC_IPR0_IP_3_LSB _u(30) +#define M0PLUS_NVIC_IPR0_IP_3_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR0_IP_2 +// Description : Priority of interrupt 2 +#define M0PLUS_NVIC_IPR0_IP_2_RESET _u(0x0) +#define M0PLUS_NVIC_IPR0_IP_2_BITS _u(0x00c00000) +#define M0PLUS_NVIC_IPR0_IP_2_MSB _u(23) +#define M0PLUS_NVIC_IPR0_IP_2_LSB _u(22) +#define M0PLUS_NVIC_IPR0_IP_2_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR0_IP_1 +// Description : Priority of interrupt 1 +#define M0PLUS_NVIC_IPR0_IP_1_RESET _u(0x0) +#define M0PLUS_NVIC_IPR0_IP_1_BITS _u(0x0000c000) +#define M0PLUS_NVIC_IPR0_IP_1_MSB _u(15) +#define M0PLUS_NVIC_IPR0_IP_1_LSB _u(14) +#define M0PLUS_NVIC_IPR0_IP_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR0_IP_0 +// Description : Priority of interrupt 0 +#define M0PLUS_NVIC_IPR0_IP_0_RESET _u(0x0) +#define M0PLUS_NVIC_IPR0_IP_0_BITS _u(0x000000c0) +#define M0PLUS_NVIC_IPR0_IP_0_MSB _u(7) +#define M0PLUS_NVIC_IPR0_IP_0_LSB _u(6) +#define M0PLUS_NVIC_IPR0_IP_0_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_NVIC_IPR1 +// Description : Use the Interrupt Priority Registers to assign a priority from +// 0 to 3 to each of the available interrupts. 0 is the highest +// priority, and 3 is the lowest. +#define M0PLUS_NVIC_IPR1_OFFSET _u(0x0000e404) +#define M0PLUS_NVIC_IPR1_BITS _u(0xc0c0c0c0) +#define M0PLUS_NVIC_IPR1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR1_IP_7 +// Description : Priority of interrupt 7 +#define M0PLUS_NVIC_IPR1_IP_7_RESET _u(0x0) +#define M0PLUS_NVIC_IPR1_IP_7_BITS _u(0xc0000000) +#define M0PLUS_NVIC_IPR1_IP_7_MSB _u(31) +#define M0PLUS_NVIC_IPR1_IP_7_LSB _u(30) +#define M0PLUS_NVIC_IPR1_IP_7_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR1_IP_6 +// Description : Priority of interrupt 6 +#define M0PLUS_NVIC_IPR1_IP_6_RESET _u(0x0) +#define M0PLUS_NVIC_IPR1_IP_6_BITS _u(0x00c00000) +#define M0PLUS_NVIC_IPR1_IP_6_MSB _u(23) +#define M0PLUS_NVIC_IPR1_IP_6_LSB _u(22) +#define M0PLUS_NVIC_IPR1_IP_6_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR1_IP_5 +// Description : Priority of interrupt 5 +#define M0PLUS_NVIC_IPR1_IP_5_RESET _u(0x0) +#define M0PLUS_NVIC_IPR1_IP_5_BITS _u(0x0000c000) +#define M0PLUS_NVIC_IPR1_IP_5_MSB _u(15) +#define M0PLUS_NVIC_IPR1_IP_5_LSB _u(14) +#define M0PLUS_NVIC_IPR1_IP_5_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR1_IP_4 +// Description : Priority of interrupt 4 +#define M0PLUS_NVIC_IPR1_IP_4_RESET _u(0x0) +#define M0PLUS_NVIC_IPR1_IP_4_BITS _u(0x000000c0) +#define M0PLUS_NVIC_IPR1_IP_4_MSB _u(7) +#define M0PLUS_NVIC_IPR1_IP_4_LSB _u(6) +#define M0PLUS_NVIC_IPR1_IP_4_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_NVIC_IPR2 +// Description : Use the Interrupt Priority Registers to assign a priority from +// 0 to 3 to each of the available interrupts. 0 is the highest +// priority, and 3 is the lowest. +#define M0PLUS_NVIC_IPR2_OFFSET _u(0x0000e408) +#define M0PLUS_NVIC_IPR2_BITS _u(0xc0c0c0c0) +#define M0PLUS_NVIC_IPR2_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR2_IP_11 +// Description : Priority of interrupt 11 +#define M0PLUS_NVIC_IPR2_IP_11_RESET _u(0x0) +#define M0PLUS_NVIC_IPR2_IP_11_BITS _u(0xc0000000) +#define M0PLUS_NVIC_IPR2_IP_11_MSB _u(31) +#define M0PLUS_NVIC_IPR2_IP_11_LSB _u(30) +#define M0PLUS_NVIC_IPR2_IP_11_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR2_IP_10 +// Description : Priority of interrupt 10 +#define M0PLUS_NVIC_IPR2_IP_10_RESET _u(0x0) +#define M0PLUS_NVIC_IPR2_IP_10_BITS _u(0x00c00000) +#define M0PLUS_NVIC_IPR2_IP_10_MSB _u(23) +#define M0PLUS_NVIC_IPR2_IP_10_LSB _u(22) +#define M0PLUS_NVIC_IPR2_IP_10_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR2_IP_9 +// Description : Priority of interrupt 9 +#define M0PLUS_NVIC_IPR2_IP_9_RESET _u(0x0) +#define M0PLUS_NVIC_IPR2_IP_9_BITS _u(0x0000c000) +#define M0PLUS_NVIC_IPR2_IP_9_MSB _u(15) +#define M0PLUS_NVIC_IPR2_IP_9_LSB _u(14) +#define M0PLUS_NVIC_IPR2_IP_9_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR2_IP_8 +// Description : Priority of interrupt 8 +#define M0PLUS_NVIC_IPR2_IP_8_RESET _u(0x0) +#define M0PLUS_NVIC_IPR2_IP_8_BITS _u(0x000000c0) +#define M0PLUS_NVIC_IPR2_IP_8_MSB _u(7) +#define M0PLUS_NVIC_IPR2_IP_8_LSB _u(6) +#define M0PLUS_NVIC_IPR2_IP_8_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_NVIC_IPR3 +// Description : Use the Interrupt Priority Registers to assign a priority from +// 0 to 3 to each of the available interrupts. 0 is the highest +// priority, and 3 is the lowest. +#define M0PLUS_NVIC_IPR3_OFFSET _u(0x0000e40c) +#define M0PLUS_NVIC_IPR3_BITS _u(0xc0c0c0c0) +#define M0PLUS_NVIC_IPR3_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR3_IP_15 +// Description : Priority of interrupt 15 +#define M0PLUS_NVIC_IPR3_IP_15_RESET _u(0x0) +#define M0PLUS_NVIC_IPR3_IP_15_BITS _u(0xc0000000) +#define M0PLUS_NVIC_IPR3_IP_15_MSB _u(31) +#define M0PLUS_NVIC_IPR3_IP_15_LSB _u(30) +#define M0PLUS_NVIC_IPR3_IP_15_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR3_IP_14 +// Description : Priority of interrupt 14 +#define M0PLUS_NVIC_IPR3_IP_14_RESET _u(0x0) +#define M0PLUS_NVIC_IPR3_IP_14_BITS _u(0x00c00000) +#define M0PLUS_NVIC_IPR3_IP_14_MSB _u(23) +#define M0PLUS_NVIC_IPR3_IP_14_LSB _u(22) +#define M0PLUS_NVIC_IPR3_IP_14_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR3_IP_13 +// Description : Priority of interrupt 13 +#define M0PLUS_NVIC_IPR3_IP_13_RESET _u(0x0) +#define M0PLUS_NVIC_IPR3_IP_13_BITS _u(0x0000c000) +#define M0PLUS_NVIC_IPR3_IP_13_MSB _u(15) +#define M0PLUS_NVIC_IPR3_IP_13_LSB _u(14) +#define M0PLUS_NVIC_IPR3_IP_13_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR3_IP_12 +// Description : Priority of interrupt 12 +#define M0PLUS_NVIC_IPR3_IP_12_RESET _u(0x0) +#define M0PLUS_NVIC_IPR3_IP_12_BITS _u(0x000000c0) +#define M0PLUS_NVIC_IPR3_IP_12_MSB _u(7) +#define M0PLUS_NVIC_IPR3_IP_12_LSB _u(6) +#define M0PLUS_NVIC_IPR3_IP_12_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_NVIC_IPR4 +// Description : Use the Interrupt Priority Registers to assign a priority from +// 0 to 3 to each of the available interrupts. 0 is the highest +// priority, and 3 is the lowest. +#define M0PLUS_NVIC_IPR4_OFFSET _u(0x0000e410) +#define M0PLUS_NVIC_IPR4_BITS _u(0xc0c0c0c0) +#define M0PLUS_NVIC_IPR4_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR4_IP_19 +// Description : Priority of interrupt 19 +#define M0PLUS_NVIC_IPR4_IP_19_RESET _u(0x0) +#define M0PLUS_NVIC_IPR4_IP_19_BITS _u(0xc0000000) +#define M0PLUS_NVIC_IPR4_IP_19_MSB _u(31) +#define M0PLUS_NVIC_IPR4_IP_19_LSB _u(30) +#define M0PLUS_NVIC_IPR4_IP_19_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR4_IP_18 +// Description : Priority of interrupt 18 +#define M0PLUS_NVIC_IPR4_IP_18_RESET _u(0x0) +#define M0PLUS_NVIC_IPR4_IP_18_BITS _u(0x00c00000) +#define M0PLUS_NVIC_IPR4_IP_18_MSB _u(23) +#define M0PLUS_NVIC_IPR4_IP_18_LSB _u(22) +#define M0PLUS_NVIC_IPR4_IP_18_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR4_IP_17 +// Description : Priority of interrupt 17 +#define M0PLUS_NVIC_IPR4_IP_17_RESET _u(0x0) +#define M0PLUS_NVIC_IPR4_IP_17_BITS _u(0x0000c000) +#define M0PLUS_NVIC_IPR4_IP_17_MSB _u(15) +#define M0PLUS_NVIC_IPR4_IP_17_LSB _u(14) +#define M0PLUS_NVIC_IPR4_IP_17_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR4_IP_16 +// Description : Priority of interrupt 16 +#define M0PLUS_NVIC_IPR4_IP_16_RESET _u(0x0) +#define M0PLUS_NVIC_IPR4_IP_16_BITS _u(0x000000c0) +#define M0PLUS_NVIC_IPR4_IP_16_MSB _u(7) +#define M0PLUS_NVIC_IPR4_IP_16_LSB _u(6) +#define M0PLUS_NVIC_IPR4_IP_16_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_NVIC_IPR5 +// Description : Use the Interrupt Priority Registers to assign a priority from +// 0 to 3 to each of the available interrupts. 0 is the highest +// priority, and 3 is the lowest. +#define M0PLUS_NVIC_IPR5_OFFSET _u(0x0000e414) +#define M0PLUS_NVIC_IPR5_BITS _u(0xc0c0c0c0) +#define M0PLUS_NVIC_IPR5_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR5_IP_23 +// Description : Priority of interrupt 23 +#define M0PLUS_NVIC_IPR5_IP_23_RESET _u(0x0) +#define M0PLUS_NVIC_IPR5_IP_23_BITS _u(0xc0000000) +#define M0PLUS_NVIC_IPR5_IP_23_MSB _u(31) +#define M0PLUS_NVIC_IPR5_IP_23_LSB _u(30) +#define M0PLUS_NVIC_IPR5_IP_23_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR5_IP_22 +// Description : Priority of interrupt 22 +#define M0PLUS_NVIC_IPR5_IP_22_RESET _u(0x0) +#define M0PLUS_NVIC_IPR5_IP_22_BITS _u(0x00c00000) +#define M0PLUS_NVIC_IPR5_IP_22_MSB _u(23) +#define M0PLUS_NVIC_IPR5_IP_22_LSB _u(22) +#define M0PLUS_NVIC_IPR5_IP_22_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR5_IP_21 +// Description : Priority of interrupt 21 +#define M0PLUS_NVIC_IPR5_IP_21_RESET _u(0x0) +#define M0PLUS_NVIC_IPR5_IP_21_BITS _u(0x0000c000) +#define M0PLUS_NVIC_IPR5_IP_21_MSB _u(15) +#define M0PLUS_NVIC_IPR5_IP_21_LSB _u(14) +#define M0PLUS_NVIC_IPR5_IP_21_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR5_IP_20 +// Description : Priority of interrupt 20 +#define M0PLUS_NVIC_IPR5_IP_20_RESET _u(0x0) +#define M0PLUS_NVIC_IPR5_IP_20_BITS _u(0x000000c0) +#define M0PLUS_NVIC_IPR5_IP_20_MSB _u(7) +#define M0PLUS_NVIC_IPR5_IP_20_LSB _u(6) +#define M0PLUS_NVIC_IPR5_IP_20_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_NVIC_IPR6 +// Description : Use the Interrupt Priority Registers to assign a priority from +// 0 to 3 to each of the available interrupts. 0 is the highest +// priority, and 3 is the lowest. +#define M0PLUS_NVIC_IPR6_OFFSET _u(0x0000e418) +#define M0PLUS_NVIC_IPR6_BITS _u(0xc0c0c0c0) +#define M0PLUS_NVIC_IPR6_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR6_IP_27 +// Description : Priority of interrupt 27 +#define M0PLUS_NVIC_IPR6_IP_27_RESET _u(0x0) +#define M0PLUS_NVIC_IPR6_IP_27_BITS _u(0xc0000000) +#define M0PLUS_NVIC_IPR6_IP_27_MSB _u(31) +#define M0PLUS_NVIC_IPR6_IP_27_LSB _u(30) +#define M0PLUS_NVIC_IPR6_IP_27_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR6_IP_26 +// Description : Priority of interrupt 26 +#define M0PLUS_NVIC_IPR6_IP_26_RESET _u(0x0) +#define M0PLUS_NVIC_IPR6_IP_26_BITS _u(0x00c00000) +#define M0PLUS_NVIC_IPR6_IP_26_MSB _u(23) +#define M0PLUS_NVIC_IPR6_IP_26_LSB _u(22) +#define M0PLUS_NVIC_IPR6_IP_26_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR6_IP_25 +// Description : Priority of interrupt 25 +#define M0PLUS_NVIC_IPR6_IP_25_RESET _u(0x0) +#define M0PLUS_NVIC_IPR6_IP_25_BITS _u(0x0000c000) +#define M0PLUS_NVIC_IPR6_IP_25_MSB _u(15) +#define M0PLUS_NVIC_IPR6_IP_25_LSB _u(14) +#define M0PLUS_NVIC_IPR6_IP_25_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR6_IP_24 +// Description : Priority of interrupt 24 +#define M0PLUS_NVIC_IPR6_IP_24_RESET _u(0x0) +#define M0PLUS_NVIC_IPR6_IP_24_BITS _u(0x000000c0) +#define M0PLUS_NVIC_IPR6_IP_24_MSB _u(7) +#define M0PLUS_NVIC_IPR6_IP_24_LSB _u(6) +#define M0PLUS_NVIC_IPR6_IP_24_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_NVIC_IPR7 +// Description : Use the Interrupt Priority Registers to assign a priority from +// 0 to 3 to each of the available interrupts. 0 is the highest +// priority, and 3 is the lowest. +#define M0PLUS_NVIC_IPR7_OFFSET _u(0x0000e41c) +#define M0PLUS_NVIC_IPR7_BITS _u(0xc0c0c0c0) +#define M0PLUS_NVIC_IPR7_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR7_IP_31 +// Description : Priority of interrupt 31 +#define M0PLUS_NVIC_IPR7_IP_31_RESET _u(0x0) +#define M0PLUS_NVIC_IPR7_IP_31_BITS _u(0xc0000000) +#define M0PLUS_NVIC_IPR7_IP_31_MSB _u(31) +#define M0PLUS_NVIC_IPR7_IP_31_LSB _u(30) +#define M0PLUS_NVIC_IPR7_IP_31_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR7_IP_30 +// Description : Priority of interrupt 30 +#define M0PLUS_NVIC_IPR7_IP_30_RESET _u(0x0) +#define M0PLUS_NVIC_IPR7_IP_30_BITS _u(0x00c00000) +#define M0PLUS_NVIC_IPR7_IP_30_MSB _u(23) +#define M0PLUS_NVIC_IPR7_IP_30_LSB _u(22) +#define M0PLUS_NVIC_IPR7_IP_30_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR7_IP_29 +// Description : Priority of interrupt 29 +#define M0PLUS_NVIC_IPR7_IP_29_RESET _u(0x0) +#define M0PLUS_NVIC_IPR7_IP_29_BITS _u(0x0000c000) +#define M0PLUS_NVIC_IPR7_IP_29_MSB _u(15) +#define M0PLUS_NVIC_IPR7_IP_29_LSB _u(14) +#define M0PLUS_NVIC_IPR7_IP_29_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_NVIC_IPR7_IP_28 +// Description : Priority of interrupt 28 +#define M0PLUS_NVIC_IPR7_IP_28_RESET _u(0x0) +#define M0PLUS_NVIC_IPR7_IP_28_BITS _u(0x000000c0) +#define M0PLUS_NVIC_IPR7_IP_28_MSB _u(7) +#define M0PLUS_NVIC_IPR7_IP_28_LSB _u(6) +#define M0PLUS_NVIC_IPR7_IP_28_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_CPUID +// Description : Read the CPU ID Base Register to determine: the ID number of +// the processor core, the version number of the processor core, +// the implementation details of the processor core. +#define M0PLUS_CPUID_OFFSET _u(0x0000ed00) +#define M0PLUS_CPUID_BITS _u(0xffffffff) +#define M0PLUS_CPUID_RESET _u(0x410cc601) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_CPUID_IMPLEMENTER +// Description : Implementor code: 0x41 = ARM +#define M0PLUS_CPUID_IMPLEMENTER_RESET _u(0x41) +#define M0PLUS_CPUID_IMPLEMENTER_BITS _u(0xff000000) +#define M0PLUS_CPUID_IMPLEMENTER_MSB _u(31) +#define M0PLUS_CPUID_IMPLEMENTER_LSB _u(24) +#define M0PLUS_CPUID_IMPLEMENTER_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_CPUID_VARIANT +// Description : Major revision number n in the rnpm revision status: +// 0x0 = Revision 0. +#define M0PLUS_CPUID_VARIANT_RESET _u(0x0) +#define M0PLUS_CPUID_VARIANT_BITS _u(0x00f00000) +#define M0PLUS_CPUID_VARIANT_MSB _u(23) +#define M0PLUS_CPUID_VARIANT_LSB _u(20) +#define M0PLUS_CPUID_VARIANT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_CPUID_ARCHITECTURE +// Description : Constant that defines the architecture of the processor: +// 0xC = ARMv6-M architecture. +#define M0PLUS_CPUID_ARCHITECTURE_RESET _u(0xc) +#define M0PLUS_CPUID_ARCHITECTURE_BITS _u(0x000f0000) +#define M0PLUS_CPUID_ARCHITECTURE_MSB _u(19) +#define M0PLUS_CPUID_ARCHITECTURE_LSB _u(16) +#define M0PLUS_CPUID_ARCHITECTURE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_CPUID_PARTNO +// Description : Number of processor within family: 0xC60 = Cortex-M0+ +#define M0PLUS_CPUID_PARTNO_RESET _u(0xc60) +#define M0PLUS_CPUID_PARTNO_BITS _u(0x0000fff0) +#define M0PLUS_CPUID_PARTNO_MSB _u(15) +#define M0PLUS_CPUID_PARTNO_LSB _u(4) +#define M0PLUS_CPUID_PARTNO_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_CPUID_REVISION +// Description : Minor revision number m in the rnpm revision status: +// 0x1 = Patch 1. +#define M0PLUS_CPUID_REVISION_RESET _u(0x1) +#define M0PLUS_CPUID_REVISION_BITS _u(0x0000000f) +#define M0PLUS_CPUID_REVISION_MSB _u(3) +#define M0PLUS_CPUID_REVISION_LSB _u(0) +#define M0PLUS_CPUID_REVISION_ACCESS "RO" +// ============================================================================= +// Register : M0PLUS_ICSR +// Description : Use the Interrupt Control State Register to set a pending +// Non-Maskable Interrupt (NMI), set or clear a pending PendSV, +// set or clear a pending SysTick, check for pending exceptions, +// check the vector number of the highest priority pended +// exception, check the vector number of the active exception. +#define M0PLUS_ICSR_OFFSET _u(0x0000ed04) +#define M0PLUS_ICSR_BITS _u(0x9edff1ff) +#define M0PLUS_ICSR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_ICSR_NMIPENDSET +// Description : Setting this bit will activate an NMI. Since NMI is the highest +// priority exception, it will activate as soon as it is +// registered. +// NMI set-pending bit. +// Write: +// 0 = No effect. +// 1 = Changes NMI exception state to pending. +// Read: +// 0 = NMI exception is not pending. +// 1 = NMI exception is pending. +// Because NMI is the highest-priority exception, normally the +// processor enters the NMI +// exception handler as soon as it detects a write of 1 to this +// bit. Entering the handler then clears +// this bit to 0. This means a read of this bit by the NMI +// exception handler returns 1 only if the +// NMI signal is reasserted while the processor is executing that +// handler. +#define M0PLUS_ICSR_NMIPENDSET_RESET _u(0x0) +#define M0PLUS_ICSR_NMIPENDSET_BITS _u(0x80000000) +#define M0PLUS_ICSR_NMIPENDSET_MSB _u(31) +#define M0PLUS_ICSR_NMIPENDSET_LSB _u(31) +#define M0PLUS_ICSR_NMIPENDSET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_ICSR_PENDSVSET +// Description : PendSV set-pending bit. +// Write: +// 0 = No effect. +// 1 = Changes PendSV exception state to pending. +// Read: +// 0 = PendSV exception is not pending. +// 1 = PendSV exception is pending. +// Writing 1 to this bit is the only way to set the PendSV +// exception state to pending. +#define M0PLUS_ICSR_PENDSVSET_RESET _u(0x0) +#define M0PLUS_ICSR_PENDSVSET_BITS _u(0x10000000) +#define M0PLUS_ICSR_PENDSVSET_MSB _u(28) +#define M0PLUS_ICSR_PENDSVSET_LSB _u(28) +#define M0PLUS_ICSR_PENDSVSET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_ICSR_PENDSVCLR +// Description : PendSV clear-pending bit. +// Write: +// 0 = No effect. +// 1 = Removes the pending state from the PendSV exception. +#define M0PLUS_ICSR_PENDSVCLR_RESET _u(0x0) +#define M0PLUS_ICSR_PENDSVCLR_BITS _u(0x08000000) +#define M0PLUS_ICSR_PENDSVCLR_MSB _u(27) +#define M0PLUS_ICSR_PENDSVCLR_LSB _u(27) +#define M0PLUS_ICSR_PENDSVCLR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_ICSR_PENDSTSET +// Description : SysTick exception set-pending bit. +// Write: +// 0 = No effect. +// 1 = Changes SysTick exception state to pending. +// Read: +// 0 = SysTick exception is not pending. +// 1 = SysTick exception is pending. +#define M0PLUS_ICSR_PENDSTSET_RESET _u(0x0) +#define M0PLUS_ICSR_PENDSTSET_BITS _u(0x04000000) +#define M0PLUS_ICSR_PENDSTSET_MSB _u(26) +#define M0PLUS_ICSR_PENDSTSET_LSB _u(26) +#define M0PLUS_ICSR_PENDSTSET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_ICSR_PENDSTCLR +// Description : SysTick exception clear-pending bit. +// Write: +// 0 = No effect. +// 1 = Removes the pending state from the SysTick exception. +// This bit is WO. On a register read its value is Unknown. +#define M0PLUS_ICSR_PENDSTCLR_RESET _u(0x0) +#define M0PLUS_ICSR_PENDSTCLR_BITS _u(0x02000000) +#define M0PLUS_ICSR_PENDSTCLR_MSB _u(25) +#define M0PLUS_ICSR_PENDSTCLR_LSB _u(25) +#define M0PLUS_ICSR_PENDSTCLR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_ICSR_ISRPREEMPT +// Description : The system can only access this bit when the core is halted. It +// indicates that a pending interrupt is to be taken in the next +// running cycle. If C_MASKINTS is clear in the Debug Halting +// Control and Status Register, the interrupt is serviced. +#define M0PLUS_ICSR_ISRPREEMPT_RESET _u(0x0) +#define M0PLUS_ICSR_ISRPREEMPT_BITS _u(0x00800000) +#define M0PLUS_ICSR_ISRPREEMPT_MSB _u(23) +#define M0PLUS_ICSR_ISRPREEMPT_LSB _u(23) +#define M0PLUS_ICSR_ISRPREEMPT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_ICSR_ISRPENDING +// Description : External interrupt pending flag +#define M0PLUS_ICSR_ISRPENDING_RESET _u(0x0) +#define M0PLUS_ICSR_ISRPENDING_BITS _u(0x00400000) +#define M0PLUS_ICSR_ISRPENDING_MSB _u(22) +#define M0PLUS_ICSR_ISRPENDING_LSB _u(22) +#define M0PLUS_ICSR_ISRPENDING_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_ICSR_VECTPENDING +// Description : Indicates the exception number for the highest priority pending +// exception: 0 = no pending exceptions. Non zero = The pending +// state includes the effect of memory-mapped enable and mask +// registers. It does not include the PRIMASK special-purpose +// register qualifier. +#define M0PLUS_ICSR_VECTPENDING_RESET _u(0x000) +#define M0PLUS_ICSR_VECTPENDING_BITS _u(0x001ff000) +#define M0PLUS_ICSR_VECTPENDING_MSB _u(20) +#define M0PLUS_ICSR_VECTPENDING_LSB _u(12) +#define M0PLUS_ICSR_VECTPENDING_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_ICSR_VECTACTIVE +// Description : Active exception number field. Reset clears the VECTACTIVE +// field. +#define M0PLUS_ICSR_VECTACTIVE_RESET _u(0x000) +#define M0PLUS_ICSR_VECTACTIVE_BITS _u(0x000001ff) +#define M0PLUS_ICSR_VECTACTIVE_MSB _u(8) +#define M0PLUS_ICSR_VECTACTIVE_LSB _u(0) +#define M0PLUS_ICSR_VECTACTIVE_ACCESS "RO" +// ============================================================================= +// Register : M0PLUS_VTOR +// Description : The VTOR holds the vector table offset address. +#define M0PLUS_VTOR_OFFSET _u(0x0000ed08) +#define M0PLUS_VTOR_BITS _u(0xffffff00) +#define M0PLUS_VTOR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_VTOR_TBLOFF +// Description : Bits [31:8] of the indicate the vector table offset address. +#define M0PLUS_VTOR_TBLOFF_RESET _u(0x000000) +#define M0PLUS_VTOR_TBLOFF_BITS _u(0xffffff00) +#define M0PLUS_VTOR_TBLOFF_MSB _u(31) +#define M0PLUS_VTOR_TBLOFF_LSB _u(8) +#define M0PLUS_VTOR_TBLOFF_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_AIRCR +// Description : Use the Application Interrupt and Reset Control Register to: +// determine data endianness, clear all active state information +// from debug halt mode, request a system reset. +#define M0PLUS_AIRCR_OFFSET _u(0x0000ed0c) +#define M0PLUS_AIRCR_BITS _u(0xffff8006) +#define M0PLUS_AIRCR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_AIRCR_VECTKEY +// Description : Register key: +// Reads as Unknown +// On writes, write 0x05FA to VECTKEY, otherwise the write is +// ignored. +#define M0PLUS_AIRCR_VECTKEY_RESET _u(0x0000) +#define M0PLUS_AIRCR_VECTKEY_BITS _u(0xffff0000) +#define M0PLUS_AIRCR_VECTKEY_MSB _u(31) +#define M0PLUS_AIRCR_VECTKEY_LSB _u(16) +#define M0PLUS_AIRCR_VECTKEY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_AIRCR_ENDIANESS +// Description : Data endianness implemented: +// 0 = Little-endian. +#define M0PLUS_AIRCR_ENDIANESS_RESET _u(0x0) +#define M0PLUS_AIRCR_ENDIANESS_BITS _u(0x00008000) +#define M0PLUS_AIRCR_ENDIANESS_MSB _u(15) +#define M0PLUS_AIRCR_ENDIANESS_LSB _u(15) +#define M0PLUS_AIRCR_ENDIANESS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_AIRCR_SYSRESETREQ +// Description : Writing 1 to this bit causes the SYSRESETREQ signal to the +// outer system to be asserted to request a reset. The intention +// is to force a large system reset of all major components except +// for debug. The C_HALT bit in the DHCSR is cleared as a result +// of the system reset requested. The debugger does not lose +// contact with the device. +#define M0PLUS_AIRCR_SYSRESETREQ_RESET _u(0x0) +#define M0PLUS_AIRCR_SYSRESETREQ_BITS _u(0x00000004) +#define M0PLUS_AIRCR_SYSRESETREQ_MSB _u(2) +#define M0PLUS_AIRCR_SYSRESETREQ_LSB _u(2) +#define M0PLUS_AIRCR_SYSRESETREQ_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_AIRCR_VECTCLRACTIVE +// Description : Clears all active state information for fixed and configurable +// exceptions. This bit: is self-clearing, can only be set by the +// DAP when the core is halted. When set: clears all active +// exception status of the processor, forces a return to Thread +// mode, forces an IPSR of 0. A debugger must re-initialize the +// stack. +#define M0PLUS_AIRCR_VECTCLRACTIVE_RESET _u(0x0) +#define M0PLUS_AIRCR_VECTCLRACTIVE_BITS _u(0x00000002) +#define M0PLUS_AIRCR_VECTCLRACTIVE_MSB _u(1) +#define M0PLUS_AIRCR_VECTCLRACTIVE_LSB _u(1) +#define M0PLUS_AIRCR_VECTCLRACTIVE_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_SCR +// Description : System Control Register. Use the System Control Register for +// power-management functions: signal to the system when the +// processor can enter a low power state, control how the +// processor enters and exits low power states. +#define M0PLUS_SCR_OFFSET _u(0x0000ed10) +#define M0PLUS_SCR_BITS _u(0x00000016) +#define M0PLUS_SCR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_SCR_SEVONPEND +// Description : Send Event on Pending bit: +// 0 = Only enabled interrupts or events can wakeup the processor, +// disabled interrupts are excluded. +// 1 = Enabled events and all interrupts, including disabled +// interrupts, can wakeup the processor. +// When an event or interrupt becomes pending, the event signal +// wakes up the processor from WFE. If the +// processor is not waiting for an event, the event is registered +// and affects the next WFE. +// The processor also wakes up on execution of an SEV instruction +// or an external event. +#define M0PLUS_SCR_SEVONPEND_RESET _u(0x0) +#define M0PLUS_SCR_SEVONPEND_BITS _u(0x00000010) +#define M0PLUS_SCR_SEVONPEND_MSB _u(4) +#define M0PLUS_SCR_SEVONPEND_LSB _u(4) +#define M0PLUS_SCR_SEVONPEND_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_SCR_SLEEPDEEP +// Description : Controls whether the processor uses sleep or deep sleep as its +// low power mode: +// 0 = Sleep. +// 1 = Deep sleep. +#define M0PLUS_SCR_SLEEPDEEP_RESET _u(0x0) +#define M0PLUS_SCR_SLEEPDEEP_BITS _u(0x00000004) +#define M0PLUS_SCR_SLEEPDEEP_MSB _u(2) +#define M0PLUS_SCR_SLEEPDEEP_LSB _u(2) +#define M0PLUS_SCR_SLEEPDEEP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_SCR_SLEEPONEXIT +// Description : Indicates sleep-on-exit when returning from Handler mode to +// Thread mode: +// 0 = Do not sleep when returning to Thread mode. +// 1 = Enter sleep, or deep sleep, on return from an ISR to Thread +// mode. +// Setting this bit to 1 enables an interrupt driven application +// to avoid returning to an empty main application. +#define M0PLUS_SCR_SLEEPONEXIT_RESET _u(0x0) +#define M0PLUS_SCR_SLEEPONEXIT_BITS _u(0x00000002) +#define M0PLUS_SCR_SLEEPONEXIT_MSB _u(1) +#define M0PLUS_SCR_SLEEPONEXIT_LSB _u(1) +#define M0PLUS_SCR_SLEEPONEXIT_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_CCR +// Description : The Configuration and Control Register permanently enables +// stack alignment and causes unaligned accesses to result in a +// Hard Fault. +#define M0PLUS_CCR_OFFSET _u(0x0000ed14) +#define M0PLUS_CCR_BITS _u(0x00000208) +#define M0PLUS_CCR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_CCR_STKALIGN +// Description : Always reads as one, indicates 8-byte stack alignment on +// exception entry. On exception entry, the processor uses bit[9] +// of the stacked PSR to indicate the stack alignment. On return +// from the exception it uses this stacked bit to restore the +// correct stack alignment. +#define M0PLUS_CCR_STKALIGN_RESET _u(0x0) +#define M0PLUS_CCR_STKALIGN_BITS _u(0x00000200) +#define M0PLUS_CCR_STKALIGN_MSB _u(9) +#define M0PLUS_CCR_STKALIGN_LSB _u(9) +#define M0PLUS_CCR_STKALIGN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_CCR_UNALIGN_TRP +// Description : Always reads as one, indicates that all unaligned accesses +// generate a HardFault. +#define M0PLUS_CCR_UNALIGN_TRP_RESET _u(0x0) +#define M0PLUS_CCR_UNALIGN_TRP_BITS _u(0x00000008) +#define M0PLUS_CCR_UNALIGN_TRP_MSB _u(3) +#define M0PLUS_CCR_UNALIGN_TRP_LSB _u(3) +#define M0PLUS_CCR_UNALIGN_TRP_ACCESS "RO" +// ============================================================================= +// Register : M0PLUS_SHPR2 +// Description : System handlers are a special class of exception handler that +// can have their priority set to any of the priority levels. Use +// the System Handler Priority Register 2 to set the priority of +// SVCall. +#define M0PLUS_SHPR2_OFFSET _u(0x0000ed1c) +#define M0PLUS_SHPR2_BITS _u(0xc0000000) +#define M0PLUS_SHPR2_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_SHPR2_PRI_11 +// Description : Priority of system handler 11, SVCall +#define M0PLUS_SHPR2_PRI_11_RESET _u(0x0) +#define M0PLUS_SHPR2_PRI_11_BITS _u(0xc0000000) +#define M0PLUS_SHPR2_PRI_11_MSB _u(31) +#define M0PLUS_SHPR2_PRI_11_LSB _u(30) +#define M0PLUS_SHPR2_PRI_11_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_SHPR3 +// Description : System handlers are a special class of exception handler that +// can have their priority set to any of the priority levels. Use +// the System Handler Priority Register 3 to set the priority of +// PendSV and SysTick. +#define M0PLUS_SHPR3_OFFSET _u(0x0000ed20) +#define M0PLUS_SHPR3_BITS _u(0xc0c00000) +#define M0PLUS_SHPR3_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_SHPR3_PRI_15 +// Description : Priority of system handler 15, SysTick +#define M0PLUS_SHPR3_PRI_15_RESET _u(0x0) +#define M0PLUS_SHPR3_PRI_15_BITS _u(0xc0000000) +#define M0PLUS_SHPR3_PRI_15_MSB _u(31) +#define M0PLUS_SHPR3_PRI_15_LSB _u(30) +#define M0PLUS_SHPR3_PRI_15_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_SHPR3_PRI_14 +// Description : Priority of system handler 14, PendSV +#define M0PLUS_SHPR3_PRI_14_RESET _u(0x0) +#define M0PLUS_SHPR3_PRI_14_BITS _u(0x00c00000) +#define M0PLUS_SHPR3_PRI_14_MSB _u(23) +#define M0PLUS_SHPR3_PRI_14_LSB _u(22) +#define M0PLUS_SHPR3_PRI_14_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_SHCSR +// Description : Use the System Handler Control and State Register to determine +// or clear the pending status of SVCall. +#define M0PLUS_SHCSR_OFFSET _u(0x0000ed24) +#define M0PLUS_SHCSR_BITS _u(0x00008000) +#define M0PLUS_SHCSR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_SHCSR_SVCALLPENDED +// Description : Reads as 1 if SVCall is Pending. Write 1 to set pending +// SVCall, write 0 to clear pending SVCall. +#define M0PLUS_SHCSR_SVCALLPENDED_RESET _u(0x0) +#define M0PLUS_SHCSR_SVCALLPENDED_BITS _u(0x00008000) +#define M0PLUS_SHCSR_SVCALLPENDED_MSB _u(15) +#define M0PLUS_SHCSR_SVCALLPENDED_LSB _u(15) +#define M0PLUS_SHCSR_SVCALLPENDED_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_MPU_TYPE +// Description : Read the MPU Type Register to determine if the processor +// implements an MPU, and how many regions the MPU supports. +#define M0PLUS_MPU_TYPE_OFFSET _u(0x0000ed90) +#define M0PLUS_MPU_TYPE_BITS _u(0x00ffff01) +#define M0PLUS_MPU_TYPE_RESET _u(0x00000800) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_MPU_TYPE_IREGION +// Description : Instruction region. Reads as zero as ARMv6-M only supports a +// unified MPU. +#define M0PLUS_MPU_TYPE_IREGION_RESET _u(0x00) +#define M0PLUS_MPU_TYPE_IREGION_BITS _u(0x00ff0000) +#define M0PLUS_MPU_TYPE_IREGION_MSB _u(23) +#define M0PLUS_MPU_TYPE_IREGION_LSB _u(16) +#define M0PLUS_MPU_TYPE_IREGION_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_MPU_TYPE_DREGION +// Description : Number of regions supported by the MPU. +#define M0PLUS_MPU_TYPE_DREGION_RESET _u(0x08) +#define M0PLUS_MPU_TYPE_DREGION_BITS _u(0x0000ff00) +#define M0PLUS_MPU_TYPE_DREGION_MSB _u(15) +#define M0PLUS_MPU_TYPE_DREGION_LSB _u(8) +#define M0PLUS_MPU_TYPE_DREGION_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_MPU_TYPE_SEPARATE +// Description : Indicates support for separate instruction and data address +// maps. Reads as 0 as ARMv6-M only supports a unified MPU. +#define M0PLUS_MPU_TYPE_SEPARATE_RESET _u(0x0) +#define M0PLUS_MPU_TYPE_SEPARATE_BITS _u(0x00000001) +#define M0PLUS_MPU_TYPE_SEPARATE_MSB _u(0) +#define M0PLUS_MPU_TYPE_SEPARATE_LSB _u(0) +#define M0PLUS_MPU_TYPE_SEPARATE_ACCESS "RO" +// ============================================================================= +// Register : M0PLUS_MPU_CTRL +// Description : Use the MPU Control Register to enable and disable the MPU, and +// to control whether the default memory map is enabled as a +// background region for privileged accesses, and whether the MPU +// is enabled for HardFaults and NMIs. +#define M0PLUS_MPU_CTRL_OFFSET _u(0x0000ed94) +#define M0PLUS_MPU_CTRL_BITS _u(0x00000007) +#define M0PLUS_MPU_CTRL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_MPU_CTRL_PRIVDEFENA +// Description : Controls whether the default memory map is enabled as a +// background region for privileged accesses. This bit is ignored +// when ENABLE is clear. +// 0 = If the MPU is enabled, disables use of the default memory +// map. Any memory access to a location not +// covered by any enabled region causes a fault. +// 1 = If the MPU is enabled, enables use of the default memory +// map as a background region for privileged software accesses. +// When enabled, the background region acts as if it is region +// number -1. Any region that is defined and enabled has priority +// over this default map. +#define M0PLUS_MPU_CTRL_PRIVDEFENA_RESET _u(0x0) +#define M0PLUS_MPU_CTRL_PRIVDEFENA_BITS _u(0x00000004) +#define M0PLUS_MPU_CTRL_PRIVDEFENA_MSB _u(2) +#define M0PLUS_MPU_CTRL_PRIVDEFENA_LSB _u(2) +#define M0PLUS_MPU_CTRL_PRIVDEFENA_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_MPU_CTRL_HFNMIENA +// Description : Controls the use of the MPU for HardFaults and NMIs. Setting +// this bit when ENABLE is clear results in UNPREDICTABLE +// behaviour. +// When the MPU is enabled: +// 0 = MPU is disabled during HardFault and NMI handlers, +// regardless of the value of the ENABLE bit. +// 1 = the MPU is enabled during HardFault and NMI handlers. +#define M0PLUS_MPU_CTRL_HFNMIENA_RESET _u(0x0) +#define M0PLUS_MPU_CTRL_HFNMIENA_BITS _u(0x00000002) +#define M0PLUS_MPU_CTRL_HFNMIENA_MSB _u(1) +#define M0PLUS_MPU_CTRL_HFNMIENA_LSB _u(1) +#define M0PLUS_MPU_CTRL_HFNMIENA_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_MPU_CTRL_ENABLE +// Description : Enables the MPU. If the MPU is disabled, privileged and +// unprivileged accesses use the default memory map. +// 0 = MPU disabled. +// 1 = MPU enabled. +#define M0PLUS_MPU_CTRL_ENABLE_RESET _u(0x0) +#define M0PLUS_MPU_CTRL_ENABLE_BITS _u(0x00000001) +#define M0PLUS_MPU_CTRL_ENABLE_MSB _u(0) +#define M0PLUS_MPU_CTRL_ENABLE_LSB _u(0) +#define M0PLUS_MPU_CTRL_ENABLE_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_MPU_RNR +// Description : Use the MPU Region Number Register to select the region +// currently accessed by MPU_RBAR and MPU_RASR. +#define M0PLUS_MPU_RNR_OFFSET _u(0x0000ed98) +#define M0PLUS_MPU_RNR_BITS _u(0x0000000f) +#define M0PLUS_MPU_RNR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_MPU_RNR_REGION +// Description : Indicates the MPU region referenced by the MPU_RBAR and +// MPU_RASR registers. +// The MPU supports 8 memory regions, so the permitted values of +// this field are 0-7. +#define M0PLUS_MPU_RNR_REGION_RESET _u(0x0) +#define M0PLUS_MPU_RNR_REGION_BITS _u(0x0000000f) +#define M0PLUS_MPU_RNR_REGION_MSB _u(3) +#define M0PLUS_MPU_RNR_REGION_LSB _u(0) +#define M0PLUS_MPU_RNR_REGION_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_MPU_RBAR +// Description : Read the MPU Region Base Address Register to determine the base +// address of the region identified by MPU_RNR. Write to update +// the base address of said region or that of a specified region, +// with whose number MPU_RNR will also be updated. +#define M0PLUS_MPU_RBAR_OFFSET _u(0x0000ed9c) +#define M0PLUS_MPU_RBAR_BITS _u(0xffffff1f) +#define M0PLUS_MPU_RBAR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_MPU_RBAR_ADDR +// Description : Base address of the region. +#define M0PLUS_MPU_RBAR_ADDR_RESET _u(0x000000) +#define M0PLUS_MPU_RBAR_ADDR_BITS _u(0xffffff00) +#define M0PLUS_MPU_RBAR_ADDR_MSB _u(31) +#define M0PLUS_MPU_RBAR_ADDR_LSB _u(8) +#define M0PLUS_MPU_RBAR_ADDR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_MPU_RBAR_VALID +// Description : On writes, indicates whether the write must update the base +// address of the region identified by the REGION field, updating +// the MPU_RNR to indicate this new region. +// Write: +// 0 = MPU_RNR not changed, and the processor: +// Updates the base address for the region specified in the +// MPU_RNR. +// Ignores the value of the REGION field. +// 1 = The processor: +// Updates the value of the MPU_RNR to the value of the REGION +// field. +// Updates the base address for the region specified in the REGION +// field. +// Always reads as zero. +#define M0PLUS_MPU_RBAR_VALID_RESET _u(0x0) +#define M0PLUS_MPU_RBAR_VALID_BITS _u(0x00000010) +#define M0PLUS_MPU_RBAR_VALID_MSB _u(4) +#define M0PLUS_MPU_RBAR_VALID_LSB _u(4) +#define M0PLUS_MPU_RBAR_VALID_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_MPU_RBAR_REGION +// Description : On writes, specifies the number of the region whose base +// address to update provided VALID is set written as 1. On reads, +// returns bits [3:0] of MPU_RNR. +#define M0PLUS_MPU_RBAR_REGION_RESET _u(0x0) +#define M0PLUS_MPU_RBAR_REGION_BITS _u(0x0000000f) +#define M0PLUS_MPU_RBAR_REGION_MSB _u(3) +#define M0PLUS_MPU_RBAR_REGION_LSB _u(0) +#define M0PLUS_MPU_RBAR_REGION_ACCESS "RW" +// ============================================================================= +// Register : M0PLUS_MPU_RASR +// Description : Use the MPU Region Attribute and Size Register to define the +// size, access behaviour and memory type of the region identified +// by MPU_RNR, and enable that region. +#define M0PLUS_MPU_RASR_OFFSET _u(0x0000eda0) +#define M0PLUS_MPU_RASR_BITS _u(0xffffff3f) +#define M0PLUS_MPU_RASR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : M0PLUS_MPU_RASR_ATTRS +// Description : The MPU Region Attribute field. Use to define the region +// attribute control. +// 28 = XN: Instruction access disable bit: +// 0 = Instruction fetches enabled. +// 1 = Instruction fetches disabled. +// 26:24 = AP: Access permission field +// 18 = S: Shareable bit +// 17 = C: Cacheable bit +// 16 = B: Bufferable bit +#define M0PLUS_MPU_RASR_ATTRS_RESET _u(0x0000) +#define M0PLUS_MPU_RASR_ATTRS_BITS _u(0xffff0000) +#define M0PLUS_MPU_RASR_ATTRS_MSB _u(31) +#define M0PLUS_MPU_RASR_ATTRS_LSB _u(16) +#define M0PLUS_MPU_RASR_ATTRS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_MPU_RASR_SRD +// Description : Subregion Disable. For regions of 256 bytes or larger, each bit +// of this field controls whether one of the eight equal +// subregions is enabled. +#define M0PLUS_MPU_RASR_SRD_RESET _u(0x00) +#define M0PLUS_MPU_RASR_SRD_BITS _u(0x0000ff00) +#define M0PLUS_MPU_RASR_SRD_MSB _u(15) +#define M0PLUS_MPU_RASR_SRD_LSB _u(8) +#define M0PLUS_MPU_RASR_SRD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_MPU_RASR_SIZE +// Description : Indicates the region size. Region size in bytes = 2^(SIZE+1). +// The minimum permitted value is 7 (b00111) = 256Bytes +#define M0PLUS_MPU_RASR_SIZE_RESET _u(0x00) +#define M0PLUS_MPU_RASR_SIZE_BITS _u(0x0000003e) +#define M0PLUS_MPU_RASR_SIZE_MSB _u(5) +#define M0PLUS_MPU_RASR_SIZE_LSB _u(1) +#define M0PLUS_MPU_RASR_SIZE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : M0PLUS_MPU_RASR_ENABLE +// Description : Enables the region. +#define M0PLUS_MPU_RASR_ENABLE_RESET _u(0x0) +#define M0PLUS_MPU_RASR_ENABLE_BITS _u(0x00000001) +#define M0PLUS_MPU_RASR_ENABLE_MSB _u(0) +#define M0PLUS_MPU_RASR_ENABLE_LSB _u(0) +#define M0PLUS_MPU_RASR_ENABLE_ACCESS "RW" +// ============================================================================= +#endif // HARDWARE_REGS_M0PLUS_DEFINED diff --git a/arkanoid/pico/hardware/regs/pads_bank0.h b/arkanoid/pico/hardware/regs/pads_bank0.h new file mode 100644 index 0000000..06102ac --- /dev/null +++ b/arkanoid/pico/hardware/regs/pads_bank0.h @@ -0,0 +1,2300 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : PADS_BANK0 +// Version : 1 +// Bus type : apb +// Description : None +// ============================================================================= +#ifndef HARDWARE_REGS_PADS_BANK0_DEFINED +#define HARDWARE_REGS_PADS_BANK0_DEFINED +// ============================================================================= +// Register : PADS_BANK0_VOLTAGE_SELECT +// Description : Voltage select. Per bank control +// 0x0 -> Set voltage to 3.3V (DVDD >= 2V5) +// 0x1 -> Set voltage to 1.8V (DVDD <= 1V8) +#define PADS_BANK0_VOLTAGE_SELECT_OFFSET _u(0x00000000) +#define PADS_BANK0_VOLTAGE_SELECT_BITS _u(0x00000001) +#define PADS_BANK0_VOLTAGE_SELECT_RESET _u(0x00000000) +#define PADS_BANK0_VOLTAGE_SELECT_MSB _u(0) +#define PADS_BANK0_VOLTAGE_SELECT_LSB _u(0) +#define PADS_BANK0_VOLTAGE_SELECT_ACCESS "RW" +#define PADS_BANK0_VOLTAGE_SELECT_VALUE_3V3 _u(0x0) +#define PADS_BANK0_VOLTAGE_SELECT_VALUE_1V8 _u(0x1) +// ============================================================================= +// Register : PADS_BANK0_GPIO0 +// Description : Pad control register +#define PADS_BANK0_GPIO0_OFFSET _u(0x00000004) +#define PADS_BANK0_GPIO0_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO0_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO0_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO0_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO0_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO0_OD_MSB _u(7) +#define PADS_BANK0_GPIO0_OD_LSB _u(7) +#define PADS_BANK0_GPIO0_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO0_IE +// Description : Input enable +#define PADS_BANK0_GPIO0_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO0_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO0_IE_MSB _u(6) +#define PADS_BANK0_GPIO0_IE_LSB _u(6) +#define PADS_BANK0_GPIO0_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO0_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO0_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO0_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO0_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO0_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO0_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO0_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO0_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO0_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO0_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO0_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO0_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO0_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO0_PUE_MSB _u(3) +#define PADS_BANK0_GPIO0_PUE_LSB _u(3) +#define PADS_BANK0_GPIO0_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO0_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO0_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO0_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO0_PDE_MSB _u(2) +#define PADS_BANK0_GPIO0_PDE_LSB _u(2) +#define PADS_BANK0_GPIO0_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO0_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO0_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO0_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO0_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO0_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO0_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO0_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO0_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO0_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO0_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO0_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO0_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO1 +// Description : Pad control register +#define PADS_BANK0_GPIO1_OFFSET _u(0x00000008) +#define PADS_BANK0_GPIO1_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO1_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO1_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO1_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO1_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO1_OD_MSB _u(7) +#define PADS_BANK0_GPIO1_OD_LSB _u(7) +#define PADS_BANK0_GPIO1_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO1_IE +// Description : Input enable +#define PADS_BANK0_GPIO1_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO1_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO1_IE_MSB _u(6) +#define PADS_BANK0_GPIO1_IE_LSB _u(6) +#define PADS_BANK0_GPIO1_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO1_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO1_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO1_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO1_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO1_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO1_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO1_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO1_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO1_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO1_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO1_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO1_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO1_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO1_PUE_MSB _u(3) +#define PADS_BANK0_GPIO1_PUE_LSB _u(3) +#define PADS_BANK0_GPIO1_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO1_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO1_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO1_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO1_PDE_MSB _u(2) +#define PADS_BANK0_GPIO1_PDE_LSB _u(2) +#define PADS_BANK0_GPIO1_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO1_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO1_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO1_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO1_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO1_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO1_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO1_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO1_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO1_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO1_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO1_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO1_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO2 +// Description : Pad control register +#define PADS_BANK0_GPIO2_OFFSET _u(0x0000000c) +#define PADS_BANK0_GPIO2_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO2_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO2_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO2_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO2_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO2_OD_MSB _u(7) +#define PADS_BANK0_GPIO2_OD_LSB _u(7) +#define PADS_BANK0_GPIO2_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO2_IE +// Description : Input enable +#define PADS_BANK0_GPIO2_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO2_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO2_IE_MSB _u(6) +#define PADS_BANK0_GPIO2_IE_LSB _u(6) +#define PADS_BANK0_GPIO2_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO2_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO2_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO2_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO2_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO2_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO2_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO2_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO2_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO2_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO2_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO2_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO2_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO2_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO2_PUE_MSB _u(3) +#define PADS_BANK0_GPIO2_PUE_LSB _u(3) +#define PADS_BANK0_GPIO2_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO2_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO2_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO2_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO2_PDE_MSB _u(2) +#define PADS_BANK0_GPIO2_PDE_LSB _u(2) +#define PADS_BANK0_GPIO2_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO2_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO2_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO2_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO2_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO2_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO2_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO2_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO2_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO2_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO2_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO2_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO2_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO3 +// Description : Pad control register +#define PADS_BANK0_GPIO3_OFFSET _u(0x00000010) +#define PADS_BANK0_GPIO3_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO3_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO3_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO3_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO3_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO3_OD_MSB _u(7) +#define PADS_BANK0_GPIO3_OD_LSB _u(7) +#define PADS_BANK0_GPIO3_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO3_IE +// Description : Input enable +#define PADS_BANK0_GPIO3_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO3_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO3_IE_MSB _u(6) +#define PADS_BANK0_GPIO3_IE_LSB _u(6) +#define PADS_BANK0_GPIO3_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO3_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO3_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO3_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO3_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO3_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO3_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO3_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO3_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO3_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO3_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO3_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO3_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO3_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO3_PUE_MSB _u(3) +#define PADS_BANK0_GPIO3_PUE_LSB _u(3) +#define PADS_BANK0_GPIO3_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO3_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO3_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO3_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO3_PDE_MSB _u(2) +#define PADS_BANK0_GPIO3_PDE_LSB _u(2) +#define PADS_BANK0_GPIO3_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO3_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO3_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO3_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO3_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO3_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO3_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO3_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO3_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO3_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO3_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO3_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO3_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO4 +// Description : Pad control register +#define PADS_BANK0_GPIO4_OFFSET _u(0x00000014) +#define PADS_BANK0_GPIO4_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO4_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO4_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO4_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO4_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO4_OD_MSB _u(7) +#define PADS_BANK0_GPIO4_OD_LSB _u(7) +#define PADS_BANK0_GPIO4_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO4_IE +// Description : Input enable +#define PADS_BANK0_GPIO4_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO4_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO4_IE_MSB _u(6) +#define PADS_BANK0_GPIO4_IE_LSB _u(6) +#define PADS_BANK0_GPIO4_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO4_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO4_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO4_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO4_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO4_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO4_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO4_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO4_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO4_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO4_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO4_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO4_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO4_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO4_PUE_MSB _u(3) +#define PADS_BANK0_GPIO4_PUE_LSB _u(3) +#define PADS_BANK0_GPIO4_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO4_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO4_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO4_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO4_PDE_MSB _u(2) +#define PADS_BANK0_GPIO4_PDE_LSB _u(2) +#define PADS_BANK0_GPIO4_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO4_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO4_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO4_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO4_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO4_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO4_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO4_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO4_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO4_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO4_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO4_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO4_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO5 +// Description : Pad control register +#define PADS_BANK0_GPIO5_OFFSET _u(0x00000018) +#define PADS_BANK0_GPIO5_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO5_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO5_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO5_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO5_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO5_OD_MSB _u(7) +#define PADS_BANK0_GPIO5_OD_LSB _u(7) +#define PADS_BANK0_GPIO5_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO5_IE +// Description : Input enable +#define PADS_BANK0_GPIO5_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO5_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO5_IE_MSB _u(6) +#define PADS_BANK0_GPIO5_IE_LSB _u(6) +#define PADS_BANK0_GPIO5_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO5_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO5_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO5_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO5_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO5_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO5_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO5_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO5_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO5_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO5_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO5_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO5_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO5_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO5_PUE_MSB _u(3) +#define PADS_BANK0_GPIO5_PUE_LSB _u(3) +#define PADS_BANK0_GPIO5_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO5_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO5_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO5_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO5_PDE_MSB _u(2) +#define PADS_BANK0_GPIO5_PDE_LSB _u(2) +#define PADS_BANK0_GPIO5_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO5_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO5_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO5_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO5_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO5_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO5_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO5_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO5_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO5_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO5_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO5_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO5_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO6 +// Description : Pad control register +#define PADS_BANK0_GPIO6_OFFSET _u(0x0000001c) +#define PADS_BANK0_GPIO6_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO6_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO6_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO6_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO6_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO6_OD_MSB _u(7) +#define PADS_BANK0_GPIO6_OD_LSB _u(7) +#define PADS_BANK0_GPIO6_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO6_IE +// Description : Input enable +#define PADS_BANK0_GPIO6_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO6_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO6_IE_MSB _u(6) +#define PADS_BANK0_GPIO6_IE_LSB _u(6) +#define PADS_BANK0_GPIO6_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO6_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO6_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO6_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO6_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO6_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO6_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO6_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO6_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO6_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO6_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO6_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO6_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO6_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO6_PUE_MSB _u(3) +#define PADS_BANK0_GPIO6_PUE_LSB _u(3) +#define PADS_BANK0_GPIO6_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO6_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO6_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO6_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO6_PDE_MSB _u(2) +#define PADS_BANK0_GPIO6_PDE_LSB _u(2) +#define PADS_BANK0_GPIO6_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO6_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO6_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO6_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO6_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO6_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO6_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO6_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO6_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO6_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO6_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO6_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO6_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO7 +// Description : Pad control register +#define PADS_BANK0_GPIO7_OFFSET _u(0x00000020) +#define PADS_BANK0_GPIO7_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO7_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO7_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO7_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO7_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO7_OD_MSB _u(7) +#define PADS_BANK0_GPIO7_OD_LSB _u(7) +#define PADS_BANK0_GPIO7_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO7_IE +// Description : Input enable +#define PADS_BANK0_GPIO7_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO7_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO7_IE_MSB _u(6) +#define PADS_BANK0_GPIO7_IE_LSB _u(6) +#define PADS_BANK0_GPIO7_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO7_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO7_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO7_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO7_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO7_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO7_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO7_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO7_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO7_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO7_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO7_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO7_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO7_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO7_PUE_MSB _u(3) +#define PADS_BANK0_GPIO7_PUE_LSB _u(3) +#define PADS_BANK0_GPIO7_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO7_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO7_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO7_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO7_PDE_MSB _u(2) +#define PADS_BANK0_GPIO7_PDE_LSB _u(2) +#define PADS_BANK0_GPIO7_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO7_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO7_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO7_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO7_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO7_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO7_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO7_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO7_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO7_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO7_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO7_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO7_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO8 +// Description : Pad control register +#define PADS_BANK0_GPIO8_OFFSET _u(0x00000024) +#define PADS_BANK0_GPIO8_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO8_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO8_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO8_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO8_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO8_OD_MSB _u(7) +#define PADS_BANK0_GPIO8_OD_LSB _u(7) +#define PADS_BANK0_GPIO8_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO8_IE +// Description : Input enable +#define PADS_BANK0_GPIO8_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO8_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO8_IE_MSB _u(6) +#define PADS_BANK0_GPIO8_IE_LSB _u(6) +#define PADS_BANK0_GPIO8_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO8_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO8_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO8_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO8_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO8_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO8_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO8_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO8_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO8_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO8_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO8_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO8_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO8_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO8_PUE_MSB _u(3) +#define PADS_BANK0_GPIO8_PUE_LSB _u(3) +#define PADS_BANK0_GPIO8_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO8_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO8_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO8_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO8_PDE_MSB _u(2) +#define PADS_BANK0_GPIO8_PDE_LSB _u(2) +#define PADS_BANK0_GPIO8_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO8_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO8_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO8_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO8_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO8_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO8_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO8_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO8_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO8_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO8_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO8_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO8_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO9 +// Description : Pad control register +#define PADS_BANK0_GPIO9_OFFSET _u(0x00000028) +#define PADS_BANK0_GPIO9_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO9_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO9_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO9_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO9_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO9_OD_MSB _u(7) +#define PADS_BANK0_GPIO9_OD_LSB _u(7) +#define PADS_BANK0_GPIO9_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO9_IE +// Description : Input enable +#define PADS_BANK0_GPIO9_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO9_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO9_IE_MSB _u(6) +#define PADS_BANK0_GPIO9_IE_LSB _u(6) +#define PADS_BANK0_GPIO9_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO9_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO9_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO9_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO9_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO9_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO9_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO9_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO9_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO9_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO9_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO9_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO9_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO9_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO9_PUE_MSB _u(3) +#define PADS_BANK0_GPIO9_PUE_LSB _u(3) +#define PADS_BANK0_GPIO9_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO9_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO9_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO9_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO9_PDE_MSB _u(2) +#define PADS_BANK0_GPIO9_PDE_LSB _u(2) +#define PADS_BANK0_GPIO9_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO9_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO9_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO9_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO9_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO9_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO9_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO9_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO9_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO9_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO9_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO9_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO9_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO10 +// Description : Pad control register +#define PADS_BANK0_GPIO10_OFFSET _u(0x0000002c) +#define PADS_BANK0_GPIO10_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO10_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO10_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO10_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO10_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO10_OD_MSB _u(7) +#define PADS_BANK0_GPIO10_OD_LSB _u(7) +#define PADS_BANK0_GPIO10_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO10_IE +// Description : Input enable +#define PADS_BANK0_GPIO10_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO10_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO10_IE_MSB _u(6) +#define PADS_BANK0_GPIO10_IE_LSB _u(6) +#define PADS_BANK0_GPIO10_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO10_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO10_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO10_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO10_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO10_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO10_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO10_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO10_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO10_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO10_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO10_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO10_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO10_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO10_PUE_MSB _u(3) +#define PADS_BANK0_GPIO10_PUE_LSB _u(3) +#define PADS_BANK0_GPIO10_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO10_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO10_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO10_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO10_PDE_MSB _u(2) +#define PADS_BANK0_GPIO10_PDE_LSB _u(2) +#define PADS_BANK0_GPIO10_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO10_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO10_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO10_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO10_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO10_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO10_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO10_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO10_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO10_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO10_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO10_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO10_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO11 +// Description : Pad control register +#define PADS_BANK0_GPIO11_OFFSET _u(0x00000030) +#define PADS_BANK0_GPIO11_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO11_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO11_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO11_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO11_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO11_OD_MSB _u(7) +#define PADS_BANK0_GPIO11_OD_LSB _u(7) +#define PADS_BANK0_GPIO11_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO11_IE +// Description : Input enable +#define PADS_BANK0_GPIO11_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO11_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO11_IE_MSB _u(6) +#define PADS_BANK0_GPIO11_IE_LSB _u(6) +#define PADS_BANK0_GPIO11_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO11_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO11_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO11_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO11_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO11_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO11_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO11_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO11_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO11_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO11_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO11_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO11_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO11_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO11_PUE_MSB _u(3) +#define PADS_BANK0_GPIO11_PUE_LSB _u(3) +#define PADS_BANK0_GPIO11_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO11_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO11_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO11_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO11_PDE_MSB _u(2) +#define PADS_BANK0_GPIO11_PDE_LSB _u(2) +#define PADS_BANK0_GPIO11_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO11_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO11_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO11_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO11_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO11_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO11_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO11_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO11_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO11_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO11_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO11_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO11_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO12 +// Description : Pad control register +#define PADS_BANK0_GPIO12_OFFSET _u(0x00000034) +#define PADS_BANK0_GPIO12_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO12_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO12_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO12_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO12_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO12_OD_MSB _u(7) +#define PADS_BANK0_GPIO12_OD_LSB _u(7) +#define PADS_BANK0_GPIO12_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO12_IE +// Description : Input enable +#define PADS_BANK0_GPIO12_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO12_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO12_IE_MSB _u(6) +#define PADS_BANK0_GPIO12_IE_LSB _u(6) +#define PADS_BANK0_GPIO12_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO12_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO12_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO12_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO12_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO12_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO12_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO12_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO12_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO12_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO12_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO12_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO12_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO12_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO12_PUE_MSB _u(3) +#define PADS_BANK0_GPIO12_PUE_LSB _u(3) +#define PADS_BANK0_GPIO12_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO12_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO12_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO12_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO12_PDE_MSB _u(2) +#define PADS_BANK0_GPIO12_PDE_LSB _u(2) +#define PADS_BANK0_GPIO12_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO12_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO12_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO12_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO12_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO12_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO12_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO12_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO12_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO12_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO12_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO12_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO12_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO13 +// Description : Pad control register +#define PADS_BANK0_GPIO13_OFFSET _u(0x00000038) +#define PADS_BANK0_GPIO13_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO13_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO13_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO13_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO13_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO13_OD_MSB _u(7) +#define PADS_BANK0_GPIO13_OD_LSB _u(7) +#define PADS_BANK0_GPIO13_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO13_IE +// Description : Input enable +#define PADS_BANK0_GPIO13_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO13_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO13_IE_MSB _u(6) +#define PADS_BANK0_GPIO13_IE_LSB _u(6) +#define PADS_BANK0_GPIO13_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO13_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO13_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO13_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO13_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO13_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO13_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO13_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO13_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO13_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO13_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO13_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO13_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO13_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO13_PUE_MSB _u(3) +#define PADS_BANK0_GPIO13_PUE_LSB _u(3) +#define PADS_BANK0_GPIO13_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO13_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO13_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO13_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO13_PDE_MSB _u(2) +#define PADS_BANK0_GPIO13_PDE_LSB _u(2) +#define PADS_BANK0_GPIO13_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO13_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO13_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO13_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO13_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO13_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO13_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO13_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO13_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO13_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO13_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO13_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO13_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO14 +// Description : Pad control register +#define PADS_BANK0_GPIO14_OFFSET _u(0x0000003c) +#define PADS_BANK0_GPIO14_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO14_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO14_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO14_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO14_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO14_OD_MSB _u(7) +#define PADS_BANK0_GPIO14_OD_LSB _u(7) +#define PADS_BANK0_GPIO14_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO14_IE +// Description : Input enable +#define PADS_BANK0_GPIO14_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO14_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO14_IE_MSB _u(6) +#define PADS_BANK0_GPIO14_IE_LSB _u(6) +#define PADS_BANK0_GPIO14_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO14_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO14_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO14_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO14_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO14_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO14_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO14_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO14_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO14_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO14_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO14_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO14_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO14_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO14_PUE_MSB _u(3) +#define PADS_BANK0_GPIO14_PUE_LSB _u(3) +#define PADS_BANK0_GPIO14_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO14_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO14_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO14_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO14_PDE_MSB _u(2) +#define PADS_BANK0_GPIO14_PDE_LSB _u(2) +#define PADS_BANK0_GPIO14_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO14_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO14_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO14_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO14_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO14_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO14_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO14_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO14_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO14_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO14_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO14_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO14_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO15 +// Description : Pad control register +#define PADS_BANK0_GPIO15_OFFSET _u(0x00000040) +#define PADS_BANK0_GPIO15_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO15_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO15_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO15_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO15_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO15_OD_MSB _u(7) +#define PADS_BANK0_GPIO15_OD_LSB _u(7) +#define PADS_BANK0_GPIO15_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO15_IE +// Description : Input enable +#define PADS_BANK0_GPIO15_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO15_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO15_IE_MSB _u(6) +#define PADS_BANK0_GPIO15_IE_LSB _u(6) +#define PADS_BANK0_GPIO15_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO15_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO15_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO15_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO15_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO15_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO15_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO15_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO15_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO15_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO15_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO15_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO15_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO15_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO15_PUE_MSB _u(3) +#define PADS_BANK0_GPIO15_PUE_LSB _u(3) +#define PADS_BANK0_GPIO15_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO15_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO15_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO15_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO15_PDE_MSB _u(2) +#define PADS_BANK0_GPIO15_PDE_LSB _u(2) +#define PADS_BANK0_GPIO15_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO15_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO15_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO15_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO15_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO15_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO15_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO15_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO15_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO15_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO15_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO15_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO15_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO16 +// Description : Pad control register +#define PADS_BANK0_GPIO16_OFFSET _u(0x00000044) +#define PADS_BANK0_GPIO16_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO16_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO16_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO16_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO16_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO16_OD_MSB _u(7) +#define PADS_BANK0_GPIO16_OD_LSB _u(7) +#define PADS_BANK0_GPIO16_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO16_IE +// Description : Input enable +#define PADS_BANK0_GPIO16_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO16_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO16_IE_MSB _u(6) +#define PADS_BANK0_GPIO16_IE_LSB _u(6) +#define PADS_BANK0_GPIO16_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO16_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO16_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO16_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO16_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO16_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO16_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO16_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO16_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO16_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO16_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO16_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO16_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO16_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO16_PUE_MSB _u(3) +#define PADS_BANK0_GPIO16_PUE_LSB _u(3) +#define PADS_BANK0_GPIO16_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO16_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO16_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO16_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO16_PDE_MSB _u(2) +#define PADS_BANK0_GPIO16_PDE_LSB _u(2) +#define PADS_BANK0_GPIO16_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO16_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO16_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO16_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO16_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO16_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO16_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO16_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO16_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO16_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO16_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO16_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO16_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO17 +// Description : Pad control register +#define PADS_BANK0_GPIO17_OFFSET _u(0x00000048) +#define PADS_BANK0_GPIO17_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO17_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO17_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO17_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO17_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO17_OD_MSB _u(7) +#define PADS_BANK0_GPIO17_OD_LSB _u(7) +#define PADS_BANK0_GPIO17_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO17_IE +// Description : Input enable +#define PADS_BANK0_GPIO17_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO17_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO17_IE_MSB _u(6) +#define PADS_BANK0_GPIO17_IE_LSB _u(6) +#define PADS_BANK0_GPIO17_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO17_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO17_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO17_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO17_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO17_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO17_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO17_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO17_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO17_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO17_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO17_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO17_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO17_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO17_PUE_MSB _u(3) +#define PADS_BANK0_GPIO17_PUE_LSB _u(3) +#define PADS_BANK0_GPIO17_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO17_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO17_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO17_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO17_PDE_MSB _u(2) +#define PADS_BANK0_GPIO17_PDE_LSB _u(2) +#define PADS_BANK0_GPIO17_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO17_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO17_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO17_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO17_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO17_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO17_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO17_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO17_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO17_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO17_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO17_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO17_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO18 +// Description : Pad control register +#define PADS_BANK0_GPIO18_OFFSET _u(0x0000004c) +#define PADS_BANK0_GPIO18_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO18_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO18_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO18_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO18_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO18_OD_MSB _u(7) +#define PADS_BANK0_GPIO18_OD_LSB _u(7) +#define PADS_BANK0_GPIO18_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO18_IE +// Description : Input enable +#define PADS_BANK0_GPIO18_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO18_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO18_IE_MSB _u(6) +#define PADS_BANK0_GPIO18_IE_LSB _u(6) +#define PADS_BANK0_GPIO18_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO18_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO18_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO18_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO18_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO18_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO18_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO18_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO18_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO18_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO18_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO18_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO18_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO18_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO18_PUE_MSB _u(3) +#define PADS_BANK0_GPIO18_PUE_LSB _u(3) +#define PADS_BANK0_GPIO18_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO18_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO18_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO18_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO18_PDE_MSB _u(2) +#define PADS_BANK0_GPIO18_PDE_LSB _u(2) +#define PADS_BANK0_GPIO18_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO18_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO18_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO18_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO18_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO18_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO18_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO18_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO18_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO18_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO18_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO18_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO18_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO19 +// Description : Pad control register +#define PADS_BANK0_GPIO19_OFFSET _u(0x00000050) +#define PADS_BANK0_GPIO19_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO19_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO19_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO19_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO19_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO19_OD_MSB _u(7) +#define PADS_BANK0_GPIO19_OD_LSB _u(7) +#define PADS_BANK0_GPIO19_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO19_IE +// Description : Input enable +#define PADS_BANK0_GPIO19_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO19_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO19_IE_MSB _u(6) +#define PADS_BANK0_GPIO19_IE_LSB _u(6) +#define PADS_BANK0_GPIO19_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO19_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO19_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO19_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO19_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO19_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO19_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO19_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO19_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO19_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO19_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO19_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO19_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO19_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO19_PUE_MSB _u(3) +#define PADS_BANK0_GPIO19_PUE_LSB _u(3) +#define PADS_BANK0_GPIO19_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO19_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO19_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO19_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO19_PDE_MSB _u(2) +#define PADS_BANK0_GPIO19_PDE_LSB _u(2) +#define PADS_BANK0_GPIO19_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO19_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO19_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO19_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO19_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO19_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO19_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO19_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO19_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO19_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO19_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO19_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO19_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO20 +// Description : Pad control register +#define PADS_BANK0_GPIO20_OFFSET _u(0x00000054) +#define PADS_BANK0_GPIO20_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO20_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO20_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO20_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO20_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO20_OD_MSB _u(7) +#define PADS_BANK0_GPIO20_OD_LSB _u(7) +#define PADS_BANK0_GPIO20_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO20_IE +// Description : Input enable +#define PADS_BANK0_GPIO20_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO20_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO20_IE_MSB _u(6) +#define PADS_BANK0_GPIO20_IE_LSB _u(6) +#define PADS_BANK0_GPIO20_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO20_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO20_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO20_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO20_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO20_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO20_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO20_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO20_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO20_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO20_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO20_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO20_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO20_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO20_PUE_MSB _u(3) +#define PADS_BANK0_GPIO20_PUE_LSB _u(3) +#define PADS_BANK0_GPIO20_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO20_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO20_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO20_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO20_PDE_MSB _u(2) +#define PADS_BANK0_GPIO20_PDE_LSB _u(2) +#define PADS_BANK0_GPIO20_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO20_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO20_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO20_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO20_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO20_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO20_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO20_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO20_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO20_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO20_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO20_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO20_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO21 +// Description : Pad control register +#define PADS_BANK0_GPIO21_OFFSET _u(0x00000058) +#define PADS_BANK0_GPIO21_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO21_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO21_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO21_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO21_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO21_OD_MSB _u(7) +#define PADS_BANK0_GPIO21_OD_LSB _u(7) +#define PADS_BANK0_GPIO21_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO21_IE +// Description : Input enable +#define PADS_BANK0_GPIO21_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO21_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO21_IE_MSB _u(6) +#define PADS_BANK0_GPIO21_IE_LSB _u(6) +#define PADS_BANK0_GPIO21_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO21_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO21_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO21_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO21_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO21_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO21_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO21_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO21_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO21_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO21_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO21_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO21_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO21_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO21_PUE_MSB _u(3) +#define PADS_BANK0_GPIO21_PUE_LSB _u(3) +#define PADS_BANK0_GPIO21_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO21_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO21_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO21_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO21_PDE_MSB _u(2) +#define PADS_BANK0_GPIO21_PDE_LSB _u(2) +#define PADS_BANK0_GPIO21_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO21_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO21_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO21_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO21_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO21_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO21_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO21_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO21_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO21_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO21_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO21_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO21_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO22 +// Description : Pad control register +#define PADS_BANK0_GPIO22_OFFSET _u(0x0000005c) +#define PADS_BANK0_GPIO22_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO22_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO22_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO22_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO22_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO22_OD_MSB _u(7) +#define PADS_BANK0_GPIO22_OD_LSB _u(7) +#define PADS_BANK0_GPIO22_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO22_IE +// Description : Input enable +#define PADS_BANK0_GPIO22_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO22_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO22_IE_MSB _u(6) +#define PADS_BANK0_GPIO22_IE_LSB _u(6) +#define PADS_BANK0_GPIO22_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO22_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO22_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO22_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO22_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO22_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO22_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO22_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO22_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO22_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO22_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO22_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO22_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO22_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO22_PUE_MSB _u(3) +#define PADS_BANK0_GPIO22_PUE_LSB _u(3) +#define PADS_BANK0_GPIO22_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO22_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO22_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO22_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO22_PDE_MSB _u(2) +#define PADS_BANK0_GPIO22_PDE_LSB _u(2) +#define PADS_BANK0_GPIO22_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO22_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO22_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO22_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO22_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO22_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO22_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO22_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO22_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO22_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO22_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO22_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO22_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO23 +// Description : Pad control register +#define PADS_BANK0_GPIO23_OFFSET _u(0x00000060) +#define PADS_BANK0_GPIO23_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO23_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO23_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO23_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO23_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO23_OD_MSB _u(7) +#define PADS_BANK0_GPIO23_OD_LSB _u(7) +#define PADS_BANK0_GPIO23_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO23_IE +// Description : Input enable +#define PADS_BANK0_GPIO23_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO23_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO23_IE_MSB _u(6) +#define PADS_BANK0_GPIO23_IE_LSB _u(6) +#define PADS_BANK0_GPIO23_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO23_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO23_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO23_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO23_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO23_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO23_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO23_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO23_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO23_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO23_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO23_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO23_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO23_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO23_PUE_MSB _u(3) +#define PADS_BANK0_GPIO23_PUE_LSB _u(3) +#define PADS_BANK0_GPIO23_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO23_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO23_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO23_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO23_PDE_MSB _u(2) +#define PADS_BANK0_GPIO23_PDE_LSB _u(2) +#define PADS_BANK0_GPIO23_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO23_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO23_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO23_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO23_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO23_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO23_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO23_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO23_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO23_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO23_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO23_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO23_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO24 +// Description : Pad control register +#define PADS_BANK0_GPIO24_OFFSET _u(0x00000064) +#define PADS_BANK0_GPIO24_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO24_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO24_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO24_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO24_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO24_OD_MSB _u(7) +#define PADS_BANK0_GPIO24_OD_LSB _u(7) +#define PADS_BANK0_GPIO24_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO24_IE +// Description : Input enable +#define PADS_BANK0_GPIO24_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO24_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO24_IE_MSB _u(6) +#define PADS_BANK0_GPIO24_IE_LSB _u(6) +#define PADS_BANK0_GPIO24_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO24_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO24_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO24_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO24_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO24_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO24_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO24_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO24_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO24_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO24_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO24_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO24_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO24_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO24_PUE_MSB _u(3) +#define PADS_BANK0_GPIO24_PUE_LSB _u(3) +#define PADS_BANK0_GPIO24_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO24_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO24_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO24_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO24_PDE_MSB _u(2) +#define PADS_BANK0_GPIO24_PDE_LSB _u(2) +#define PADS_BANK0_GPIO24_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO24_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO24_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO24_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO24_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO24_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO24_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO24_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO24_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO24_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO24_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO24_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO24_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO25 +// Description : Pad control register +#define PADS_BANK0_GPIO25_OFFSET _u(0x00000068) +#define PADS_BANK0_GPIO25_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO25_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO25_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO25_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO25_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO25_OD_MSB _u(7) +#define PADS_BANK0_GPIO25_OD_LSB _u(7) +#define PADS_BANK0_GPIO25_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO25_IE +// Description : Input enable +#define PADS_BANK0_GPIO25_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO25_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO25_IE_MSB _u(6) +#define PADS_BANK0_GPIO25_IE_LSB _u(6) +#define PADS_BANK0_GPIO25_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO25_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO25_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO25_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO25_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO25_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO25_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO25_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO25_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO25_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO25_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO25_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO25_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO25_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO25_PUE_MSB _u(3) +#define PADS_BANK0_GPIO25_PUE_LSB _u(3) +#define PADS_BANK0_GPIO25_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO25_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO25_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO25_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO25_PDE_MSB _u(2) +#define PADS_BANK0_GPIO25_PDE_LSB _u(2) +#define PADS_BANK0_GPIO25_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO25_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO25_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO25_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO25_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO25_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO25_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO25_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO25_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO25_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO25_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO25_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO25_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO26 +// Description : Pad control register +#define PADS_BANK0_GPIO26_OFFSET _u(0x0000006c) +#define PADS_BANK0_GPIO26_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO26_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO26_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO26_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO26_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO26_OD_MSB _u(7) +#define PADS_BANK0_GPIO26_OD_LSB _u(7) +#define PADS_BANK0_GPIO26_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO26_IE +// Description : Input enable +#define PADS_BANK0_GPIO26_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO26_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO26_IE_MSB _u(6) +#define PADS_BANK0_GPIO26_IE_LSB _u(6) +#define PADS_BANK0_GPIO26_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO26_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO26_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO26_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO26_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO26_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO26_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO26_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO26_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO26_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO26_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO26_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO26_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO26_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO26_PUE_MSB _u(3) +#define PADS_BANK0_GPIO26_PUE_LSB _u(3) +#define PADS_BANK0_GPIO26_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO26_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO26_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO26_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO26_PDE_MSB _u(2) +#define PADS_BANK0_GPIO26_PDE_LSB _u(2) +#define PADS_BANK0_GPIO26_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO26_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO26_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO26_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO26_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO26_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO26_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO26_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO26_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO26_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO26_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO26_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO26_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO27 +// Description : Pad control register +#define PADS_BANK0_GPIO27_OFFSET _u(0x00000070) +#define PADS_BANK0_GPIO27_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO27_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO27_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO27_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO27_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO27_OD_MSB _u(7) +#define PADS_BANK0_GPIO27_OD_LSB _u(7) +#define PADS_BANK0_GPIO27_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO27_IE +// Description : Input enable +#define PADS_BANK0_GPIO27_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO27_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO27_IE_MSB _u(6) +#define PADS_BANK0_GPIO27_IE_LSB _u(6) +#define PADS_BANK0_GPIO27_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO27_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO27_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO27_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO27_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO27_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO27_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO27_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO27_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO27_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO27_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO27_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO27_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO27_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO27_PUE_MSB _u(3) +#define PADS_BANK0_GPIO27_PUE_LSB _u(3) +#define PADS_BANK0_GPIO27_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO27_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO27_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO27_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO27_PDE_MSB _u(2) +#define PADS_BANK0_GPIO27_PDE_LSB _u(2) +#define PADS_BANK0_GPIO27_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO27_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO27_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO27_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO27_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO27_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO27_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO27_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO27_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO27_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO27_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO27_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO27_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO28 +// Description : Pad control register +#define PADS_BANK0_GPIO28_OFFSET _u(0x00000074) +#define PADS_BANK0_GPIO28_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO28_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO28_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO28_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO28_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO28_OD_MSB _u(7) +#define PADS_BANK0_GPIO28_OD_LSB _u(7) +#define PADS_BANK0_GPIO28_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO28_IE +// Description : Input enable +#define PADS_BANK0_GPIO28_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO28_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO28_IE_MSB _u(6) +#define PADS_BANK0_GPIO28_IE_LSB _u(6) +#define PADS_BANK0_GPIO28_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO28_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO28_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO28_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO28_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO28_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO28_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO28_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO28_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO28_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO28_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO28_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO28_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO28_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO28_PUE_MSB _u(3) +#define PADS_BANK0_GPIO28_PUE_LSB _u(3) +#define PADS_BANK0_GPIO28_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO28_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO28_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO28_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO28_PDE_MSB _u(2) +#define PADS_BANK0_GPIO28_PDE_LSB _u(2) +#define PADS_BANK0_GPIO28_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO28_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO28_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO28_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO28_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO28_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO28_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO28_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO28_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO28_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO28_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO28_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO28_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_GPIO29 +// Description : Pad control register +#define PADS_BANK0_GPIO29_OFFSET _u(0x00000078) +#define PADS_BANK0_GPIO29_BITS _u(0x000000ff) +#define PADS_BANK0_GPIO29_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO29_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_GPIO29_OD_RESET _u(0x0) +#define PADS_BANK0_GPIO29_OD_BITS _u(0x00000080) +#define PADS_BANK0_GPIO29_OD_MSB _u(7) +#define PADS_BANK0_GPIO29_OD_LSB _u(7) +#define PADS_BANK0_GPIO29_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO29_IE +// Description : Input enable +#define PADS_BANK0_GPIO29_IE_RESET _u(0x1) +#define PADS_BANK0_GPIO29_IE_BITS _u(0x00000040) +#define PADS_BANK0_GPIO29_IE_MSB _u(6) +#define PADS_BANK0_GPIO29_IE_LSB _u(6) +#define PADS_BANK0_GPIO29_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO29_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_GPIO29_DRIVE_RESET _u(0x1) +#define PADS_BANK0_GPIO29_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_GPIO29_DRIVE_MSB _u(5) +#define PADS_BANK0_GPIO29_DRIVE_LSB _u(4) +#define PADS_BANK0_GPIO29_DRIVE_ACCESS "RW" +#define PADS_BANK0_GPIO29_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_GPIO29_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_GPIO29_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_GPIO29_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO29_PUE +// Description : Pull up enable +#define PADS_BANK0_GPIO29_PUE_RESET _u(0x0) +#define PADS_BANK0_GPIO29_PUE_BITS _u(0x00000008) +#define PADS_BANK0_GPIO29_PUE_MSB _u(3) +#define PADS_BANK0_GPIO29_PUE_LSB _u(3) +#define PADS_BANK0_GPIO29_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO29_PDE +// Description : Pull down enable +#define PADS_BANK0_GPIO29_PDE_RESET _u(0x1) +#define PADS_BANK0_GPIO29_PDE_BITS _u(0x00000004) +#define PADS_BANK0_GPIO29_PDE_MSB _u(2) +#define PADS_BANK0_GPIO29_PDE_LSB _u(2) +#define PADS_BANK0_GPIO29_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO29_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_GPIO29_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_GPIO29_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_GPIO29_SCHMITT_MSB _u(1) +#define PADS_BANK0_GPIO29_SCHMITT_LSB _u(1) +#define PADS_BANK0_GPIO29_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_GPIO29_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_GPIO29_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_GPIO29_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_GPIO29_SLEWFAST_MSB _u(0) +#define PADS_BANK0_GPIO29_SLEWFAST_LSB _u(0) +#define PADS_BANK0_GPIO29_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_SWCLK +// Description : Pad control register +#define PADS_BANK0_SWCLK_OFFSET _u(0x0000007c) +#define PADS_BANK0_SWCLK_BITS _u(0x000000ff) +#define PADS_BANK0_SWCLK_RESET _u(0x000000da) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_SWCLK_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_SWCLK_OD_RESET _u(0x1) +#define PADS_BANK0_SWCLK_OD_BITS _u(0x00000080) +#define PADS_BANK0_SWCLK_OD_MSB _u(7) +#define PADS_BANK0_SWCLK_OD_LSB _u(7) +#define PADS_BANK0_SWCLK_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_SWCLK_IE +// Description : Input enable +#define PADS_BANK0_SWCLK_IE_RESET _u(0x1) +#define PADS_BANK0_SWCLK_IE_BITS _u(0x00000040) +#define PADS_BANK0_SWCLK_IE_MSB _u(6) +#define PADS_BANK0_SWCLK_IE_LSB _u(6) +#define PADS_BANK0_SWCLK_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_SWCLK_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_SWCLK_DRIVE_RESET _u(0x1) +#define PADS_BANK0_SWCLK_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_SWCLK_DRIVE_MSB _u(5) +#define PADS_BANK0_SWCLK_DRIVE_LSB _u(4) +#define PADS_BANK0_SWCLK_DRIVE_ACCESS "RW" +#define PADS_BANK0_SWCLK_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_SWCLK_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_SWCLK_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_SWCLK_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_SWCLK_PUE +// Description : Pull up enable +#define PADS_BANK0_SWCLK_PUE_RESET _u(0x1) +#define PADS_BANK0_SWCLK_PUE_BITS _u(0x00000008) +#define PADS_BANK0_SWCLK_PUE_MSB _u(3) +#define PADS_BANK0_SWCLK_PUE_LSB _u(3) +#define PADS_BANK0_SWCLK_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_SWCLK_PDE +// Description : Pull down enable +#define PADS_BANK0_SWCLK_PDE_RESET _u(0x0) +#define PADS_BANK0_SWCLK_PDE_BITS _u(0x00000004) +#define PADS_BANK0_SWCLK_PDE_MSB _u(2) +#define PADS_BANK0_SWCLK_PDE_LSB _u(2) +#define PADS_BANK0_SWCLK_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_SWCLK_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_SWCLK_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_SWCLK_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_SWCLK_SCHMITT_MSB _u(1) +#define PADS_BANK0_SWCLK_SCHMITT_LSB _u(1) +#define PADS_BANK0_SWCLK_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_SWCLK_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_SWCLK_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_SWCLK_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_SWCLK_SLEWFAST_MSB _u(0) +#define PADS_BANK0_SWCLK_SLEWFAST_LSB _u(0) +#define PADS_BANK0_SWCLK_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_BANK0_SWD +// Description : Pad control register +#define PADS_BANK0_SWD_OFFSET _u(0x00000080) +#define PADS_BANK0_SWD_BITS _u(0x000000ff) +#define PADS_BANK0_SWD_RESET _u(0x0000005a) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_SWD_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_BANK0_SWD_OD_RESET _u(0x0) +#define PADS_BANK0_SWD_OD_BITS _u(0x00000080) +#define PADS_BANK0_SWD_OD_MSB _u(7) +#define PADS_BANK0_SWD_OD_LSB _u(7) +#define PADS_BANK0_SWD_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_SWD_IE +// Description : Input enable +#define PADS_BANK0_SWD_IE_RESET _u(0x1) +#define PADS_BANK0_SWD_IE_BITS _u(0x00000040) +#define PADS_BANK0_SWD_IE_MSB _u(6) +#define PADS_BANK0_SWD_IE_LSB _u(6) +#define PADS_BANK0_SWD_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_SWD_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_BANK0_SWD_DRIVE_RESET _u(0x1) +#define PADS_BANK0_SWD_DRIVE_BITS _u(0x00000030) +#define PADS_BANK0_SWD_DRIVE_MSB _u(5) +#define PADS_BANK0_SWD_DRIVE_LSB _u(4) +#define PADS_BANK0_SWD_DRIVE_ACCESS "RW" +#define PADS_BANK0_SWD_DRIVE_VALUE_2MA _u(0x0) +#define PADS_BANK0_SWD_DRIVE_VALUE_4MA _u(0x1) +#define PADS_BANK0_SWD_DRIVE_VALUE_8MA _u(0x2) +#define PADS_BANK0_SWD_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_SWD_PUE +// Description : Pull up enable +#define PADS_BANK0_SWD_PUE_RESET _u(0x1) +#define PADS_BANK0_SWD_PUE_BITS _u(0x00000008) +#define PADS_BANK0_SWD_PUE_MSB _u(3) +#define PADS_BANK0_SWD_PUE_LSB _u(3) +#define PADS_BANK0_SWD_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_SWD_PDE +// Description : Pull down enable +#define PADS_BANK0_SWD_PDE_RESET _u(0x0) +#define PADS_BANK0_SWD_PDE_BITS _u(0x00000004) +#define PADS_BANK0_SWD_PDE_MSB _u(2) +#define PADS_BANK0_SWD_PDE_LSB _u(2) +#define PADS_BANK0_SWD_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_SWD_SCHMITT +// Description : Enable schmitt trigger +#define PADS_BANK0_SWD_SCHMITT_RESET _u(0x1) +#define PADS_BANK0_SWD_SCHMITT_BITS _u(0x00000002) +#define PADS_BANK0_SWD_SCHMITT_MSB _u(1) +#define PADS_BANK0_SWD_SCHMITT_LSB _u(1) +#define PADS_BANK0_SWD_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_BANK0_SWD_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_BANK0_SWD_SLEWFAST_RESET _u(0x0) +#define PADS_BANK0_SWD_SLEWFAST_BITS _u(0x00000001) +#define PADS_BANK0_SWD_SLEWFAST_MSB _u(0) +#define PADS_BANK0_SWD_SLEWFAST_LSB _u(0) +#define PADS_BANK0_SWD_SLEWFAST_ACCESS "RW" +// ============================================================================= +#endif // HARDWARE_REGS_PADS_BANK0_DEFINED diff --git a/arkanoid/pico/hardware/regs/pads_qspi.h b/arkanoid/pico/hardware/regs/pads_qspi.h new file mode 100644 index 0000000..b3a09e9 --- /dev/null +++ b/arkanoid/pico/hardware/regs/pads_qspi.h @@ -0,0 +1,454 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : PADS_QSPI +// Version : 1 +// Bus type : apb +// Description : None +// ============================================================================= +#ifndef HARDWARE_REGS_PADS_QSPI_DEFINED +#define HARDWARE_REGS_PADS_QSPI_DEFINED +// ============================================================================= +// Register : PADS_QSPI_VOLTAGE_SELECT +// Description : Voltage select. Per bank control +// 0x0 -> Set voltage to 3.3V (DVDD >= 2V5) +// 0x1 -> Set voltage to 1.8V (DVDD <= 1V8) +#define PADS_QSPI_VOLTAGE_SELECT_OFFSET _u(0x00000000) +#define PADS_QSPI_VOLTAGE_SELECT_BITS _u(0x00000001) +#define PADS_QSPI_VOLTAGE_SELECT_RESET _u(0x00000000) +#define PADS_QSPI_VOLTAGE_SELECT_MSB _u(0) +#define PADS_QSPI_VOLTAGE_SELECT_LSB _u(0) +#define PADS_QSPI_VOLTAGE_SELECT_ACCESS "RW" +#define PADS_QSPI_VOLTAGE_SELECT_VALUE_3V3 _u(0x0) +#define PADS_QSPI_VOLTAGE_SELECT_VALUE_1V8 _u(0x1) +// ============================================================================= +// Register : PADS_QSPI_GPIO_QSPI_SCLK +// Description : Pad control register +#define PADS_QSPI_GPIO_QSPI_SCLK_OFFSET _u(0x00000004) +#define PADS_QSPI_GPIO_QSPI_SCLK_BITS _u(0x000000ff) +#define PADS_QSPI_GPIO_QSPI_SCLK_RESET _u(0x00000056) +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SCLK_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_QSPI_GPIO_QSPI_SCLK_OD_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SCLK_OD_BITS _u(0x00000080) +#define PADS_QSPI_GPIO_QSPI_SCLK_OD_MSB _u(7) +#define PADS_QSPI_GPIO_QSPI_SCLK_OD_LSB _u(7) +#define PADS_QSPI_GPIO_QSPI_SCLK_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SCLK_IE +// Description : Input enable +#define PADS_QSPI_GPIO_QSPI_SCLK_IE_RESET _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SCLK_IE_BITS _u(0x00000040) +#define PADS_QSPI_GPIO_QSPI_SCLK_IE_MSB _u(6) +#define PADS_QSPI_GPIO_QSPI_SCLK_IE_LSB _u(6) +#define PADS_QSPI_GPIO_QSPI_SCLK_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SCLK_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_QSPI_GPIO_QSPI_SCLK_DRIVE_RESET _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SCLK_DRIVE_BITS _u(0x00000030) +#define PADS_QSPI_GPIO_QSPI_SCLK_DRIVE_MSB _u(5) +#define PADS_QSPI_GPIO_QSPI_SCLK_DRIVE_LSB _u(4) +#define PADS_QSPI_GPIO_QSPI_SCLK_DRIVE_ACCESS "RW" +#define PADS_QSPI_GPIO_QSPI_SCLK_DRIVE_VALUE_2MA _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SCLK_DRIVE_VALUE_4MA _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SCLK_DRIVE_VALUE_8MA _u(0x2) +#define PADS_QSPI_GPIO_QSPI_SCLK_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SCLK_PUE +// Description : Pull up enable +#define PADS_QSPI_GPIO_QSPI_SCLK_PUE_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SCLK_PUE_BITS _u(0x00000008) +#define PADS_QSPI_GPIO_QSPI_SCLK_PUE_MSB _u(3) +#define PADS_QSPI_GPIO_QSPI_SCLK_PUE_LSB _u(3) +#define PADS_QSPI_GPIO_QSPI_SCLK_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SCLK_PDE +// Description : Pull down enable +#define PADS_QSPI_GPIO_QSPI_SCLK_PDE_RESET _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SCLK_PDE_BITS _u(0x00000004) +#define PADS_QSPI_GPIO_QSPI_SCLK_PDE_MSB _u(2) +#define PADS_QSPI_GPIO_QSPI_SCLK_PDE_LSB _u(2) +#define PADS_QSPI_GPIO_QSPI_SCLK_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SCLK_SCHMITT +// Description : Enable schmitt trigger +#define PADS_QSPI_GPIO_QSPI_SCLK_SCHMITT_RESET _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SCLK_SCHMITT_BITS _u(0x00000002) +#define PADS_QSPI_GPIO_QSPI_SCLK_SCHMITT_MSB _u(1) +#define PADS_QSPI_GPIO_QSPI_SCLK_SCHMITT_LSB _u(1) +#define PADS_QSPI_GPIO_QSPI_SCLK_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SCLK_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_QSPI_GPIO_QSPI_SCLK_SLEWFAST_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SCLK_SLEWFAST_BITS _u(0x00000001) +#define PADS_QSPI_GPIO_QSPI_SCLK_SLEWFAST_MSB _u(0) +#define PADS_QSPI_GPIO_QSPI_SCLK_SLEWFAST_LSB _u(0) +#define PADS_QSPI_GPIO_QSPI_SCLK_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_QSPI_GPIO_QSPI_SD0 +// Description : Pad control register +#define PADS_QSPI_GPIO_QSPI_SD0_OFFSET _u(0x00000008) +#define PADS_QSPI_GPIO_QSPI_SD0_BITS _u(0x000000ff) +#define PADS_QSPI_GPIO_QSPI_SD0_RESET _u(0x00000052) +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD0_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_QSPI_GPIO_QSPI_SD0_OD_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SD0_OD_BITS _u(0x00000080) +#define PADS_QSPI_GPIO_QSPI_SD0_OD_MSB _u(7) +#define PADS_QSPI_GPIO_QSPI_SD0_OD_LSB _u(7) +#define PADS_QSPI_GPIO_QSPI_SD0_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD0_IE +// Description : Input enable +#define PADS_QSPI_GPIO_QSPI_SD0_IE_RESET _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SD0_IE_BITS _u(0x00000040) +#define PADS_QSPI_GPIO_QSPI_SD0_IE_MSB _u(6) +#define PADS_QSPI_GPIO_QSPI_SD0_IE_LSB _u(6) +#define PADS_QSPI_GPIO_QSPI_SD0_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD0_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_QSPI_GPIO_QSPI_SD0_DRIVE_RESET _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SD0_DRIVE_BITS _u(0x00000030) +#define PADS_QSPI_GPIO_QSPI_SD0_DRIVE_MSB _u(5) +#define PADS_QSPI_GPIO_QSPI_SD0_DRIVE_LSB _u(4) +#define PADS_QSPI_GPIO_QSPI_SD0_DRIVE_ACCESS "RW" +#define PADS_QSPI_GPIO_QSPI_SD0_DRIVE_VALUE_2MA _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SD0_DRIVE_VALUE_4MA _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SD0_DRIVE_VALUE_8MA _u(0x2) +#define PADS_QSPI_GPIO_QSPI_SD0_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD0_PUE +// Description : Pull up enable +#define PADS_QSPI_GPIO_QSPI_SD0_PUE_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SD0_PUE_BITS _u(0x00000008) +#define PADS_QSPI_GPIO_QSPI_SD0_PUE_MSB _u(3) +#define PADS_QSPI_GPIO_QSPI_SD0_PUE_LSB _u(3) +#define PADS_QSPI_GPIO_QSPI_SD0_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD0_PDE +// Description : Pull down enable +#define PADS_QSPI_GPIO_QSPI_SD0_PDE_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SD0_PDE_BITS _u(0x00000004) +#define PADS_QSPI_GPIO_QSPI_SD0_PDE_MSB _u(2) +#define PADS_QSPI_GPIO_QSPI_SD0_PDE_LSB _u(2) +#define PADS_QSPI_GPIO_QSPI_SD0_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD0_SCHMITT +// Description : Enable schmitt trigger +#define PADS_QSPI_GPIO_QSPI_SD0_SCHMITT_RESET _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SD0_SCHMITT_BITS _u(0x00000002) +#define PADS_QSPI_GPIO_QSPI_SD0_SCHMITT_MSB _u(1) +#define PADS_QSPI_GPIO_QSPI_SD0_SCHMITT_LSB _u(1) +#define PADS_QSPI_GPIO_QSPI_SD0_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD0_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_QSPI_GPIO_QSPI_SD0_SLEWFAST_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SD0_SLEWFAST_BITS _u(0x00000001) +#define PADS_QSPI_GPIO_QSPI_SD0_SLEWFAST_MSB _u(0) +#define PADS_QSPI_GPIO_QSPI_SD0_SLEWFAST_LSB _u(0) +#define PADS_QSPI_GPIO_QSPI_SD0_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_QSPI_GPIO_QSPI_SD1 +// Description : Pad control register +#define PADS_QSPI_GPIO_QSPI_SD1_OFFSET _u(0x0000000c) +#define PADS_QSPI_GPIO_QSPI_SD1_BITS _u(0x000000ff) +#define PADS_QSPI_GPIO_QSPI_SD1_RESET _u(0x00000052) +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD1_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_QSPI_GPIO_QSPI_SD1_OD_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SD1_OD_BITS _u(0x00000080) +#define PADS_QSPI_GPIO_QSPI_SD1_OD_MSB _u(7) +#define PADS_QSPI_GPIO_QSPI_SD1_OD_LSB _u(7) +#define PADS_QSPI_GPIO_QSPI_SD1_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD1_IE +// Description : Input enable +#define PADS_QSPI_GPIO_QSPI_SD1_IE_RESET _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SD1_IE_BITS _u(0x00000040) +#define PADS_QSPI_GPIO_QSPI_SD1_IE_MSB _u(6) +#define PADS_QSPI_GPIO_QSPI_SD1_IE_LSB _u(6) +#define PADS_QSPI_GPIO_QSPI_SD1_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD1_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_QSPI_GPIO_QSPI_SD1_DRIVE_RESET _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SD1_DRIVE_BITS _u(0x00000030) +#define PADS_QSPI_GPIO_QSPI_SD1_DRIVE_MSB _u(5) +#define PADS_QSPI_GPIO_QSPI_SD1_DRIVE_LSB _u(4) +#define PADS_QSPI_GPIO_QSPI_SD1_DRIVE_ACCESS "RW" +#define PADS_QSPI_GPIO_QSPI_SD1_DRIVE_VALUE_2MA _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SD1_DRIVE_VALUE_4MA _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SD1_DRIVE_VALUE_8MA _u(0x2) +#define PADS_QSPI_GPIO_QSPI_SD1_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD1_PUE +// Description : Pull up enable +#define PADS_QSPI_GPIO_QSPI_SD1_PUE_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SD1_PUE_BITS _u(0x00000008) +#define PADS_QSPI_GPIO_QSPI_SD1_PUE_MSB _u(3) +#define PADS_QSPI_GPIO_QSPI_SD1_PUE_LSB _u(3) +#define PADS_QSPI_GPIO_QSPI_SD1_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD1_PDE +// Description : Pull down enable +#define PADS_QSPI_GPIO_QSPI_SD1_PDE_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SD1_PDE_BITS _u(0x00000004) +#define PADS_QSPI_GPIO_QSPI_SD1_PDE_MSB _u(2) +#define PADS_QSPI_GPIO_QSPI_SD1_PDE_LSB _u(2) +#define PADS_QSPI_GPIO_QSPI_SD1_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD1_SCHMITT +// Description : Enable schmitt trigger +#define PADS_QSPI_GPIO_QSPI_SD1_SCHMITT_RESET _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SD1_SCHMITT_BITS _u(0x00000002) +#define PADS_QSPI_GPIO_QSPI_SD1_SCHMITT_MSB _u(1) +#define PADS_QSPI_GPIO_QSPI_SD1_SCHMITT_LSB _u(1) +#define PADS_QSPI_GPIO_QSPI_SD1_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD1_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_QSPI_GPIO_QSPI_SD1_SLEWFAST_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SD1_SLEWFAST_BITS _u(0x00000001) +#define PADS_QSPI_GPIO_QSPI_SD1_SLEWFAST_MSB _u(0) +#define PADS_QSPI_GPIO_QSPI_SD1_SLEWFAST_LSB _u(0) +#define PADS_QSPI_GPIO_QSPI_SD1_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_QSPI_GPIO_QSPI_SD2 +// Description : Pad control register +#define PADS_QSPI_GPIO_QSPI_SD2_OFFSET _u(0x00000010) +#define PADS_QSPI_GPIO_QSPI_SD2_BITS _u(0x000000ff) +#define PADS_QSPI_GPIO_QSPI_SD2_RESET _u(0x00000052) +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD2_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_QSPI_GPIO_QSPI_SD2_OD_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SD2_OD_BITS _u(0x00000080) +#define PADS_QSPI_GPIO_QSPI_SD2_OD_MSB _u(7) +#define PADS_QSPI_GPIO_QSPI_SD2_OD_LSB _u(7) +#define PADS_QSPI_GPIO_QSPI_SD2_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD2_IE +// Description : Input enable +#define PADS_QSPI_GPIO_QSPI_SD2_IE_RESET _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SD2_IE_BITS _u(0x00000040) +#define PADS_QSPI_GPIO_QSPI_SD2_IE_MSB _u(6) +#define PADS_QSPI_GPIO_QSPI_SD2_IE_LSB _u(6) +#define PADS_QSPI_GPIO_QSPI_SD2_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD2_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_QSPI_GPIO_QSPI_SD2_DRIVE_RESET _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SD2_DRIVE_BITS _u(0x00000030) +#define PADS_QSPI_GPIO_QSPI_SD2_DRIVE_MSB _u(5) +#define PADS_QSPI_GPIO_QSPI_SD2_DRIVE_LSB _u(4) +#define PADS_QSPI_GPIO_QSPI_SD2_DRIVE_ACCESS "RW" +#define PADS_QSPI_GPIO_QSPI_SD2_DRIVE_VALUE_2MA _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SD2_DRIVE_VALUE_4MA _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SD2_DRIVE_VALUE_8MA _u(0x2) +#define PADS_QSPI_GPIO_QSPI_SD2_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD2_PUE +// Description : Pull up enable +#define PADS_QSPI_GPIO_QSPI_SD2_PUE_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SD2_PUE_BITS _u(0x00000008) +#define PADS_QSPI_GPIO_QSPI_SD2_PUE_MSB _u(3) +#define PADS_QSPI_GPIO_QSPI_SD2_PUE_LSB _u(3) +#define PADS_QSPI_GPIO_QSPI_SD2_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD2_PDE +// Description : Pull down enable +#define PADS_QSPI_GPIO_QSPI_SD2_PDE_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SD2_PDE_BITS _u(0x00000004) +#define PADS_QSPI_GPIO_QSPI_SD2_PDE_MSB _u(2) +#define PADS_QSPI_GPIO_QSPI_SD2_PDE_LSB _u(2) +#define PADS_QSPI_GPIO_QSPI_SD2_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD2_SCHMITT +// Description : Enable schmitt trigger +#define PADS_QSPI_GPIO_QSPI_SD2_SCHMITT_RESET _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SD2_SCHMITT_BITS _u(0x00000002) +#define PADS_QSPI_GPIO_QSPI_SD2_SCHMITT_MSB _u(1) +#define PADS_QSPI_GPIO_QSPI_SD2_SCHMITT_LSB _u(1) +#define PADS_QSPI_GPIO_QSPI_SD2_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD2_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_QSPI_GPIO_QSPI_SD2_SLEWFAST_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SD2_SLEWFAST_BITS _u(0x00000001) +#define PADS_QSPI_GPIO_QSPI_SD2_SLEWFAST_MSB _u(0) +#define PADS_QSPI_GPIO_QSPI_SD2_SLEWFAST_LSB _u(0) +#define PADS_QSPI_GPIO_QSPI_SD2_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_QSPI_GPIO_QSPI_SD3 +// Description : Pad control register +#define PADS_QSPI_GPIO_QSPI_SD3_OFFSET _u(0x00000014) +#define PADS_QSPI_GPIO_QSPI_SD3_BITS _u(0x000000ff) +#define PADS_QSPI_GPIO_QSPI_SD3_RESET _u(0x00000052) +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD3_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_QSPI_GPIO_QSPI_SD3_OD_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SD3_OD_BITS _u(0x00000080) +#define PADS_QSPI_GPIO_QSPI_SD3_OD_MSB _u(7) +#define PADS_QSPI_GPIO_QSPI_SD3_OD_LSB _u(7) +#define PADS_QSPI_GPIO_QSPI_SD3_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD3_IE +// Description : Input enable +#define PADS_QSPI_GPIO_QSPI_SD3_IE_RESET _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SD3_IE_BITS _u(0x00000040) +#define PADS_QSPI_GPIO_QSPI_SD3_IE_MSB _u(6) +#define PADS_QSPI_GPIO_QSPI_SD3_IE_LSB _u(6) +#define PADS_QSPI_GPIO_QSPI_SD3_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD3_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_QSPI_GPIO_QSPI_SD3_DRIVE_RESET _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SD3_DRIVE_BITS _u(0x00000030) +#define PADS_QSPI_GPIO_QSPI_SD3_DRIVE_MSB _u(5) +#define PADS_QSPI_GPIO_QSPI_SD3_DRIVE_LSB _u(4) +#define PADS_QSPI_GPIO_QSPI_SD3_DRIVE_ACCESS "RW" +#define PADS_QSPI_GPIO_QSPI_SD3_DRIVE_VALUE_2MA _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SD3_DRIVE_VALUE_4MA _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SD3_DRIVE_VALUE_8MA _u(0x2) +#define PADS_QSPI_GPIO_QSPI_SD3_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD3_PUE +// Description : Pull up enable +#define PADS_QSPI_GPIO_QSPI_SD3_PUE_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SD3_PUE_BITS _u(0x00000008) +#define PADS_QSPI_GPIO_QSPI_SD3_PUE_MSB _u(3) +#define PADS_QSPI_GPIO_QSPI_SD3_PUE_LSB _u(3) +#define PADS_QSPI_GPIO_QSPI_SD3_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD3_PDE +// Description : Pull down enable +#define PADS_QSPI_GPIO_QSPI_SD3_PDE_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SD3_PDE_BITS _u(0x00000004) +#define PADS_QSPI_GPIO_QSPI_SD3_PDE_MSB _u(2) +#define PADS_QSPI_GPIO_QSPI_SD3_PDE_LSB _u(2) +#define PADS_QSPI_GPIO_QSPI_SD3_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD3_SCHMITT +// Description : Enable schmitt trigger +#define PADS_QSPI_GPIO_QSPI_SD3_SCHMITT_RESET _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SD3_SCHMITT_BITS _u(0x00000002) +#define PADS_QSPI_GPIO_QSPI_SD3_SCHMITT_MSB _u(1) +#define PADS_QSPI_GPIO_QSPI_SD3_SCHMITT_LSB _u(1) +#define PADS_QSPI_GPIO_QSPI_SD3_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SD3_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_QSPI_GPIO_QSPI_SD3_SLEWFAST_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SD3_SLEWFAST_BITS _u(0x00000001) +#define PADS_QSPI_GPIO_QSPI_SD3_SLEWFAST_MSB _u(0) +#define PADS_QSPI_GPIO_QSPI_SD3_SLEWFAST_LSB _u(0) +#define PADS_QSPI_GPIO_QSPI_SD3_SLEWFAST_ACCESS "RW" +// ============================================================================= +// Register : PADS_QSPI_GPIO_QSPI_SS +// Description : Pad control register +#define PADS_QSPI_GPIO_QSPI_SS_OFFSET _u(0x00000018) +#define PADS_QSPI_GPIO_QSPI_SS_BITS _u(0x000000ff) +#define PADS_QSPI_GPIO_QSPI_SS_RESET _u(0x0000005a) +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SS_OD +// Description : Output disable. Has priority over output enable from +// peripherals +#define PADS_QSPI_GPIO_QSPI_SS_OD_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SS_OD_BITS _u(0x00000080) +#define PADS_QSPI_GPIO_QSPI_SS_OD_MSB _u(7) +#define PADS_QSPI_GPIO_QSPI_SS_OD_LSB _u(7) +#define PADS_QSPI_GPIO_QSPI_SS_OD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SS_IE +// Description : Input enable +#define PADS_QSPI_GPIO_QSPI_SS_IE_RESET _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SS_IE_BITS _u(0x00000040) +#define PADS_QSPI_GPIO_QSPI_SS_IE_MSB _u(6) +#define PADS_QSPI_GPIO_QSPI_SS_IE_LSB _u(6) +#define PADS_QSPI_GPIO_QSPI_SS_IE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SS_DRIVE +// Description : Drive strength. +// 0x0 -> 2mA +// 0x1 -> 4mA +// 0x2 -> 8mA +// 0x3 -> 12mA +#define PADS_QSPI_GPIO_QSPI_SS_DRIVE_RESET _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SS_DRIVE_BITS _u(0x00000030) +#define PADS_QSPI_GPIO_QSPI_SS_DRIVE_MSB _u(5) +#define PADS_QSPI_GPIO_QSPI_SS_DRIVE_LSB _u(4) +#define PADS_QSPI_GPIO_QSPI_SS_DRIVE_ACCESS "RW" +#define PADS_QSPI_GPIO_QSPI_SS_DRIVE_VALUE_2MA _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SS_DRIVE_VALUE_4MA _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SS_DRIVE_VALUE_8MA _u(0x2) +#define PADS_QSPI_GPIO_QSPI_SS_DRIVE_VALUE_12MA _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SS_PUE +// Description : Pull up enable +#define PADS_QSPI_GPIO_QSPI_SS_PUE_RESET _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SS_PUE_BITS _u(0x00000008) +#define PADS_QSPI_GPIO_QSPI_SS_PUE_MSB _u(3) +#define PADS_QSPI_GPIO_QSPI_SS_PUE_LSB _u(3) +#define PADS_QSPI_GPIO_QSPI_SS_PUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SS_PDE +// Description : Pull down enable +#define PADS_QSPI_GPIO_QSPI_SS_PDE_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SS_PDE_BITS _u(0x00000004) +#define PADS_QSPI_GPIO_QSPI_SS_PDE_MSB _u(2) +#define PADS_QSPI_GPIO_QSPI_SS_PDE_LSB _u(2) +#define PADS_QSPI_GPIO_QSPI_SS_PDE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SS_SCHMITT +// Description : Enable schmitt trigger +#define PADS_QSPI_GPIO_QSPI_SS_SCHMITT_RESET _u(0x1) +#define PADS_QSPI_GPIO_QSPI_SS_SCHMITT_BITS _u(0x00000002) +#define PADS_QSPI_GPIO_QSPI_SS_SCHMITT_MSB _u(1) +#define PADS_QSPI_GPIO_QSPI_SS_SCHMITT_LSB _u(1) +#define PADS_QSPI_GPIO_QSPI_SS_SCHMITT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PADS_QSPI_GPIO_QSPI_SS_SLEWFAST +// Description : Slew rate control. 1 = Fast, 0 = Slow +#define PADS_QSPI_GPIO_QSPI_SS_SLEWFAST_RESET _u(0x0) +#define PADS_QSPI_GPIO_QSPI_SS_SLEWFAST_BITS _u(0x00000001) +#define PADS_QSPI_GPIO_QSPI_SS_SLEWFAST_MSB _u(0) +#define PADS_QSPI_GPIO_QSPI_SS_SLEWFAST_LSB _u(0) +#define PADS_QSPI_GPIO_QSPI_SS_SLEWFAST_ACCESS "RW" +// ============================================================================= +#endif // HARDWARE_REGS_PADS_QSPI_DEFINED diff --git a/arkanoid/pico/hardware/regs/pio.h b/arkanoid/pico/hardware/regs/pio.h new file mode 100644 index 0000000..b231882 --- /dev/null +++ b/arkanoid/pico/hardware/regs/pio.h @@ -0,0 +1,2764 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : PIO +// Version : 1 +// Bus type : ahbl +// Description : Programmable IO block +// ============================================================================= +#ifndef HARDWARE_REGS_PIO_DEFINED +#define HARDWARE_REGS_PIO_DEFINED +// ============================================================================= +// Register : PIO_CTRL +// Description : PIO control register +#define PIO_CTRL_OFFSET _u(0x00000000) +#define PIO_CTRL_BITS _u(0x00000fff) +#define PIO_CTRL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PIO_CTRL_CLKDIV_RESTART +// Description : Restart a state machine's clock divider from an initial phase +// of 0. Clock dividers are free-running, so once started, their +// output (including fractional jitter) is completely determined +// by the integer/fractional divisor configured in SMx_CLKDIV. +// This means that, if multiple clock dividers with the same +// divisor are restarted simultaneously, by writing multiple 1 +// bits to this field, the execution clocks of those state +// machines will run in precise lockstep. +// +// Note that setting/clearing SM_ENABLE does not stop the clock +// divider from running, so once multiple state machines' clocks +// are synchronised, it is safe to disable/reenable a state +// machine, whilst keeping the clock dividers in sync. +// +// Note also that CLKDIV_RESTART can be written to whilst the +// state machine is running, and this is useful to resynchronise +// clock dividers after the divisors (SMx_CLKDIV) have been +// changed on-the-fly. +#define PIO_CTRL_CLKDIV_RESTART_RESET _u(0x0) +#define PIO_CTRL_CLKDIV_RESTART_BITS _u(0x00000f00) +#define PIO_CTRL_CLKDIV_RESTART_MSB _u(11) +#define PIO_CTRL_CLKDIV_RESTART_LSB _u(8) +#define PIO_CTRL_CLKDIV_RESTART_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : PIO_CTRL_SM_RESTART +// Description : Write 1 to instantly clear internal SM state which may be +// otherwise difficult to access and will affect future execution. +// +// Specifically, the following are cleared: input and output shift +// counters; the contents of the input shift register; the delay +// counter; the waiting-on-IRQ state; any stalled instruction +// written to SMx_INSTR or run by OUT/MOV EXEC; any pin write left +// asserted due to OUT_STICKY. +#define PIO_CTRL_SM_RESTART_RESET _u(0x0) +#define PIO_CTRL_SM_RESTART_BITS _u(0x000000f0) +#define PIO_CTRL_SM_RESTART_MSB _u(7) +#define PIO_CTRL_SM_RESTART_LSB _u(4) +#define PIO_CTRL_SM_RESTART_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : PIO_CTRL_SM_ENABLE +// Description : Enable/disable each of the four state machines by writing 1/0 +// to each of these four bits. When disabled, a state machine will +// cease executing instructions, except those written directly to +// SMx_INSTR by the system. Multiple bits can be set/cleared at +// once to run/halt multiple state machines simultaneously. +#define PIO_CTRL_SM_ENABLE_RESET _u(0x0) +#define PIO_CTRL_SM_ENABLE_BITS _u(0x0000000f) +#define PIO_CTRL_SM_ENABLE_MSB _u(3) +#define PIO_CTRL_SM_ENABLE_LSB _u(0) +#define PIO_CTRL_SM_ENABLE_ACCESS "RW" +// ============================================================================= +// Register : PIO_FSTAT +// Description : FIFO status register +#define PIO_FSTAT_OFFSET _u(0x00000004) +#define PIO_FSTAT_BITS _u(0x0f0f0f0f) +#define PIO_FSTAT_RESET _u(0x0f000f00) +// ----------------------------------------------------------------------------- +// Field : PIO_FSTAT_TXEMPTY +// Description : State machine TX FIFO is empty +#define PIO_FSTAT_TXEMPTY_RESET _u(0xf) +#define PIO_FSTAT_TXEMPTY_BITS _u(0x0f000000) +#define PIO_FSTAT_TXEMPTY_MSB _u(27) +#define PIO_FSTAT_TXEMPTY_LSB _u(24) +#define PIO_FSTAT_TXEMPTY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_FSTAT_TXFULL +// Description : State machine TX FIFO is full +#define PIO_FSTAT_TXFULL_RESET _u(0x0) +#define PIO_FSTAT_TXFULL_BITS _u(0x000f0000) +#define PIO_FSTAT_TXFULL_MSB _u(19) +#define PIO_FSTAT_TXFULL_LSB _u(16) +#define PIO_FSTAT_TXFULL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_FSTAT_RXEMPTY +// Description : State machine RX FIFO is empty +#define PIO_FSTAT_RXEMPTY_RESET _u(0xf) +#define PIO_FSTAT_RXEMPTY_BITS _u(0x00000f00) +#define PIO_FSTAT_RXEMPTY_MSB _u(11) +#define PIO_FSTAT_RXEMPTY_LSB _u(8) +#define PIO_FSTAT_RXEMPTY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_FSTAT_RXFULL +// Description : State machine RX FIFO is full +#define PIO_FSTAT_RXFULL_RESET _u(0x0) +#define PIO_FSTAT_RXFULL_BITS _u(0x0000000f) +#define PIO_FSTAT_RXFULL_MSB _u(3) +#define PIO_FSTAT_RXFULL_LSB _u(0) +#define PIO_FSTAT_RXFULL_ACCESS "RO" +// ============================================================================= +// Register : PIO_FDEBUG +// Description : FIFO debug register +#define PIO_FDEBUG_OFFSET _u(0x00000008) +#define PIO_FDEBUG_BITS _u(0x0f0f0f0f) +#define PIO_FDEBUG_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PIO_FDEBUG_TXSTALL +// Description : State machine has stalled on empty TX FIFO during a blocking +// PULL, or an OUT with autopull enabled. Write 1 to clear. +#define PIO_FDEBUG_TXSTALL_RESET _u(0x0) +#define PIO_FDEBUG_TXSTALL_BITS _u(0x0f000000) +#define PIO_FDEBUG_TXSTALL_MSB _u(27) +#define PIO_FDEBUG_TXSTALL_LSB _u(24) +#define PIO_FDEBUG_TXSTALL_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : PIO_FDEBUG_TXOVER +// Description : TX FIFO overflow (i.e. write-on-full by the system) has +// occurred. Write 1 to clear. Note that write-on-full does not +// alter the state or contents of the FIFO in any way, but the +// data that the system attempted to write is dropped, so if this +// flag is set, your software has quite likely dropped some data +// on the floor. +#define PIO_FDEBUG_TXOVER_RESET _u(0x0) +#define PIO_FDEBUG_TXOVER_BITS _u(0x000f0000) +#define PIO_FDEBUG_TXOVER_MSB _u(19) +#define PIO_FDEBUG_TXOVER_LSB _u(16) +#define PIO_FDEBUG_TXOVER_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : PIO_FDEBUG_RXUNDER +// Description : RX FIFO underflow (i.e. read-on-empty by the system) has +// occurred. Write 1 to clear. Note that read-on-empty does not +// perturb the state of the FIFO in any way, but the data returned +// by reading from an empty FIFO is undefined, so this flag +// generally only becomes set due to some kind of software error. +#define PIO_FDEBUG_RXUNDER_RESET _u(0x0) +#define PIO_FDEBUG_RXUNDER_BITS _u(0x00000f00) +#define PIO_FDEBUG_RXUNDER_MSB _u(11) +#define PIO_FDEBUG_RXUNDER_LSB _u(8) +#define PIO_FDEBUG_RXUNDER_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : PIO_FDEBUG_RXSTALL +// Description : State machine has stalled on full RX FIFO during a blocking +// PUSH, or an IN with autopush enabled. This flag is also set +// when a nonblocking PUSH to a full FIFO took place, in which +// case the state machine has dropped data. Write 1 to clear. +#define PIO_FDEBUG_RXSTALL_RESET _u(0x0) +#define PIO_FDEBUG_RXSTALL_BITS _u(0x0000000f) +#define PIO_FDEBUG_RXSTALL_MSB _u(3) +#define PIO_FDEBUG_RXSTALL_LSB _u(0) +#define PIO_FDEBUG_RXSTALL_ACCESS "WC" +// ============================================================================= +// Register : PIO_FLEVEL +// Description : FIFO levels +#define PIO_FLEVEL_OFFSET _u(0x0000000c) +#define PIO_FLEVEL_BITS _u(0xffffffff) +#define PIO_FLEVEL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PIO_FLEVEL_RX3 +// Description : None +#define PIO_FLEVEL_RX3_RESET _u(0x0) +#define PIO_FLEVEL_RX3_BITS _u(0xf0000000) +#define PIO_FLEVEL_RX3_MSB _u(31) +#define PIO_FLEVEL_RX3_LSB _u(28) +#define PIO_FLEVEL_RX3_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_FLEVEL_TX3 +// Description : None +#define PIO_FLEVEL_TX3_RESET _u(0x0) +#define PIO_FLEVEL_TX3_BITS _u(0x0f000000) +#define PIO_FLEVEL_TX3_MSB _u(27) +#define PIO_FLEVEL_TX3_LSB _u(24) +#define PIO_FLEVEL_TX3_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_FLEVEL_RX2 +// Description : None +#define PIO_FLEVEL_RX2_RESET _u(0x0) +#define PIO_FLEVEL_RX2_BITS _u(0x00f00000) +#define PIO_FLEVEL_RX2_MSB _u(23) +#define PIO_FLEVEL_RX2_LSB _u(20) +#define PIO_FLEVEL_RX2_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_FLEVEL_TX2 +// Description : None +#define PIO_FLEVEL_TX2_RESET _u(0x0) +#define PIO_FLEVEL_TX2_BITS _u(0x000f0000) +#define PIO_FLEVEL_TX2_MSB _u(19) +#define PIO_FLEVEL_TX2_LSB _u(16) +#define PIO_FLEVEL_TX2_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_FLEVEL_RX1 +// Description : None +#define PIO_FLEVEL_RX1_RESET _u(0x0) +#define PIO_FLEVEL_RX1_BITS _u(0x0000f000) +#define PIO_FLEVEL_RX1_MSB _u(15) +#define PIO_FLEVEL_RX1_LSB _u(12) +#define PIO_FLEVEL_RX1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_FLEVEL_TX1 +// Description : None +#define PIO_FLEVEL_TX1_RESET _u(0x0) +#define PIO_FLEVEL_TX1_BITS _u(0x00000f00) +#define PIO_FLEVEL_TX1_MSB _u(11) +#define PIO_FLEVEL_TX1_LSB _u(8) +#define PIO_FLEVEL_TX1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_FLEVEL_RX0 +// Description : None +#define PIO_FLEVEL_RX0_RESET _u(0x0) +#define PIO_FLEVEL_RX0_BITS _u(0x000000f0) +#define PIO_FLEVEL_RX0_MSB _u(7) +#define PIO_FLEVEL_RX0_LSB _u(4) +#define PIO_FLEVEL_RX0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_FLEVEL_TX0 +// Description : None +#define PIO_FLEVEL_TX0_RESET _u(0x0) +#define PIO_FLEVEL_TX0_BITS _u(0x0000000f) +#define PIO_FLEVEL_TX0_MSB _u(3) +#define PIO_FLEVEL_TX0_LSB _u(0) +#define PIO_FLEVEL_TX0_ACCESS "RO" +// ============================================================================= +// Register : PIO_TXF0 +// Description : Direct write access to the TX FIFO for this state machine. Each +// write pushes one word to the FIFO. Attempting to write to a +// full FIFO has no effect on the FIFO state or contents, and sets +// the sticky FDEBUG_TXOVER error flag for this FIFO. +#define PIO_TXF0_OFFSET _u(0x00000010) +#define PIO_TXF0_BITS _u(0xffffffff) +#define PIO_TXF0_RESET _u(0x00000000) +#define PIO_TXF0_MSB _u(31) +#define PIO_TXF0_LSB _u(0) +#define PIO_TXF0_ACCESS "WF" +// ============================================================================= +// Register : PIO_TXF1 +// Description : Direct write access to the TX FIFO for this state machine. Each +// write pushes one word to the FIFO. Attempting to write to a +// full FIFO has no effect on the FIFO state or contents, and sets +// the sticky FDEBUG_TXOVER error flag for this FIFO. +#define PIO_TXF1_OFFSET _u(0x00000014) +#define PIO_TXF1_BITS _u(0xffffffff) +#define PIO_TXF1_RESET _u(0x00000000) +#define PIO_TXF1_MSB _u(31) +#define PIO_TXF1_LSB _u(0) +#define PIO_TXF1_ACCESS "WF" +// ============================================================================= +// Register : PIO_TXF2 +// Description : Direct write access to the TX FIFO for this state machine. Each +// write pushes one word to the FIFO. Attempting to write to a +// full FIFO has no effect on the FIFO state or contents, and sets +// the sticky FDEBUG_TXOVER error flag for this FIFO. +#define PIO_TXF2_OFFSET _u(0x00000018) +#define PIO_TXF2_BITS _u(0xffffffff) +#define PIO_TXF2_RESET _u(0x00000000) +#define PIO_TXF2_MSB _u(31) +#define PIO_TXF2_LSB _u(0) +#define PIO_TXF2_ACCESS "WF" +// ============================================================================= +// Register : PIO_TXF3 +// Description : Direct write access to the TX FIFO for this state machine. Each +// write pushes one word to the FIFO. Attempting to write to a +// full FIFO has no effect on the FIFO state or contents, and sets +// the sticky FDEBUG_TXOVER error flag for this FIFO. +#define PIO_TXF3_OFFSET _u(0x0000001c) +#define PIO_TXF3_BITS _u(0xffffffff) +#define PIO_TXF3_RESET _u(0x00000000) +#define PIO_TXF3_MSB _u(31) +#define PIO_TXF3_LSB _u(0) +#define PIO_TXF3_ACCESS "WF" +// ============================================================================= +// Register : PIO_RXF0 +// Description : Direct read access to the RX FIFO for this state machine. Each +// read pops one word from the FIFO. Attempting to read from an +// empty FIFO has no effect on the FIFO state, and sets the sticky +// FDEBUG_RXUNDER error flag for this FIFO. The data returned to +// the system on a read from an empty FIFO is undefined. +#define PIO_RXF0_OFFSET _u(0x00000020) +#define PIO_RXF0_BITS _u(0xffffffff) +#define PIO_RXF0_RESET "-" +#define PIO_RXF0_MSB _u(31) +#define PIO_RXF0_LSB _u(0) +#define PIO_RXF0_ACCESS "RF" +// ============================================================================= +// Register : PIO_RXF1 +// Description : Direct read access to the RX FIFO for this state machine. Each +// read pops one word from the FIFO. Attempting to read from an +// empty FIFO has no effect on the FIFO state, and sets the sticky +// FDEBUG_RXUNDER error flag for this FIFO. The data returned to +// the system on a read from an empty FIFO is undefined. +#define PIO_RXF1_OFFSET _u(0x00000024) +#define PIO_RXF1_BITS _u(0xffffffff) +#define PIO_RXF1_RESET "-" +#define PIO_RXF1_MSB _u(31) +#define PIO_RXF1_LSB _u(0) +#define PIO_RXF1_ACCESS "RF" +// ============================================================================= +// Register : PIO_RXF2 +// Description : Direct read access to the RX FIFO for this state machine. Each +// read pops one word from the FIFO. Attempting to read from an +// empty FIFO has no effect on the FIFO state, and sets the sticky +// FDEBUG_RXUNDER error flag for this FIFO. The data returned to +// the system on a read from an empty FIFO is undefined. +#define PIO_RXF2_OFFSET _u(0x00000028) +#define PIO_RXF2_BITS _u(0xffffffff) +#define PIO_RXF2_RESET "-" +#define PIO_RXF2_MSB _u(31) +#define PIO_RXF2_LSB _u(0) +#define PIO_RXF2_ACCESS "RF" +// ============================================================================= +// Register : PIO_RXF3 +// Description : Direct read access to the RX FIFO for this state machine. Each +// read pops one word from the FIFO. Attempting to read from an +// empty FIFO has no effect on the FIFO state, and sets the sticky +// FDEBUG_RXUNDER error flag for this FIFO. The data returned to +// the system on a read from an empty FIFO is undefined. +#define PIO_RXF3_OFFSET _u(0x0000002c) +#define PIO_RXF3_BITS _u(0xffffffff) +#define PIO_RXF3_RESET "-" +#define PIO_RXF3_MSB _u(31) +#define PIO_RXF3_LSB _u(0) +#define PIO_RXF3_ACCESS "RF" +// ============================================================================= +// Register : PIO_IRQ +// Description : State machine IRQ flags register. Write 1 to clear. There are 8 +// state machine IRQ flags, which can be set, cleared, and waited +// on by the state machines. There's no fixed association between +// flags and state machines -- any state machine can use any flag. +// +// Any of the 8 flags can be used for timing synchronisation +// between state machines, using IRQ and WAIT instructions. The +// lower four of these flags are also routed out to system-level +// interrupt requests, alongside FIFO status interrupts -- see +// e.g. IRQ0_INTE. +#define PIO_IRQ_OFFSET _u(0x00000030) +#define PIO_IRQ_BITS _u(0x000000ff) +#define PIO_IRQ_RESET _u(0x00000000) +#define PIO_IRQ_MSB _u(7) +#define PIO_IRQ_LSB _u(0) +#define PIO_IRQ_ACCESS "WC" +// ============================================================================= +// Register : PIO_IRQ_FORCE +// Description : Writing a 1 to each of these bits will forcibly assert the +// corresponding IRQ. Note this is different to the INTF register: +// writing here affects PIO internal state. INTF just asserts the +// processor-facing IRQ signal for testing ISRs, and is not +// visible to the state machines. +#define PIO_IRQ_FORCE_OFFSET _u(0x00000034) +#define PIO_IRQ_FORCE_BITS _u(0x000000ff) +#define PIO_IRQ_FORCE_RESET _u(0x00000000) +#define PIO_IRQ_FORCE_MSB _u(7) +#define PIO_IRQ_FORCE_LSB _u(0) +#define PIO_IRQ_FORCE_ACCESS "WF" +// ============================================================================= +// Register : PIO_INPUT_SYNC_BYPASS +// Description : There is a 2-flipflop synchronizer on each GPIO input, which +// protects PIO logic from metastabilities. This increases input +// delay, and for fast synchronous IO (e.g. SPI) these +// synchronizers may need to be bypassed. Each bit in this +// register corresponds to one GPIO. +// 0 -> input is synchronized (default) +// 1 -> synchronizer is bypassed +// If in doubt, leave this register as all zeroes. +#define PIO_INPUT_SYNC_BYPASS_OFFSET _u(0x00000038) +#define PIO_INPUT_SYNC_BYPASS_BITS _u(0xffffffff) +#define PIO_INPUT_SYNC_BYPASS_RESET _u(0x00000000) +#define PIO_INPUT_SYNC_BYPASS_MSB _u(31) +#define PIO_INPUT_SYNC_BYPASS_LSB _u(0) +#define PIO_INPUT_SYNC_BYPASS_ACCESS "RW" +// ============================================================================= +// Register : PIO_DBG_PADOUT +// Description : Read to sample the pad output values PIO is currently driving +// to the GPIOs. On RP2040 there are 30 GPIOs, so the two most +// significant bits are hardwired to 0. +#define PIO_DBG_PADOUT_OFFSET _u(0x0000003c) +#define PIO_DBG_PADOUT_BITS _u(0xffffffff) +#define PIO_DBG_PADOUT_RESET _u(0x00000000) +#define PIO_DBG_PADOUT_MSB _u(31) +#define PIO_DBG_PADOUT_LSB _u(0) +#define PIO_DBG_PADOUT_ACCESS "RO" +// ============================================================================= +// Register : PIO_DBG_PADOE +// Description : Read to sample the pad output enables (direction) PIO is +// currently driving to the GPIOs. On RP2040 there are 30 GPIOs, +// so the two most significant bits are hardwired to 0. +#define PIO_DBG_PADOE_OFFSET _u(0x00000040) +#define PIO_DBG_PADOE_BITS _u(0xffffffff) +#define PIO_DBG_PADOE_RESET _u(0x00000000) +#define PIO_DBG_PADOE_MSB _u(31) +#define PIO_DBG_PADOE_LSB _u(0) +#define PIO_DBG_PADOE_ACCESS "RO" +// ============================================================================= +// Register : PIO_DBG_CFGINFO +// Description : The PIO hardware has some free parameters that may vary between +// chip products. +// These should be provided in the chip datasheet, but are also +// exposed here. +#define PIO_DBG_CFGINFO_OFFSET _u(0x00000044) +#define PIO_DBG_CFGINFO_BITS _u(0x003f0f3f) +#define PIO_DBG_CFGINFO_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PIO_DBG_CFGINFO_IMEM_SIZE +// Description : The size of the instruction memory, measured in units of one +// instruction +#define PIO_DBG_CFGINFO_IMEM_SIZE_RESET "-" +#define PIO_DBG_CFGINFO_IMEM_SIZE_BITS _u(0x003f0000) +#define PIO_DBG_CFGINFO_IMEM_SIZE_MSB _u(21) +#define PIO_DBG_CFGINFO_IMEM_SIZE_LSB _u(16) +#define PIO_DBG_CFGINFO_IMEM_SIZE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_DBG_CFGINFO_SM_COUNT +// Description : The number of state machines this PIO instance is equipped +// with. +#define PIO_DBG_CFGINFO_SM_COUNT_RESET "-" +#define PIO_DBG_CFGINFO_SM_COUNT_BITS _u(0x00000f00) +#define PIO_DBG_CFGINFO_SM_COUNT_MSB _u(11) +#define PIO_DBG_CFGINFO_SM_COUNT_LSB _u(8) +#define PIO_DBG_CFGINFO_SM_COUNT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_DBG_CFGINFO_FIFO_DEPTH +// Description : The depth of the state machine TX/RX FIFOs, measured in words. +// Joining fifos via SHIFTCTRL_FJOIN gives one FIFO with double +// this depth. +#define PIO_DBG_CFGINFO_FIFO_DEPTH_RESET "-" +#define PIO_DBG_CFGINFO_FIFO_DEPTH_BITS _u(0x0000003f) +#define PIO_DBG_CFGINFO_FIFO_DEPTH_MSB _u(5) +#define PIO_DBG_CFGINFO_FIFO_DEPTH_LSB _u(0) +#define PIO_DBG_CFGINFO_FIFO_DEPTH_ACCESS "RO" +// ============================================================================= +// Register : PIO_INSTR_MEM0 +// Description : Write-only access to instruction memory location 0 +#define PIO_INSTR_MEM0_OFFSET _u(0x00000048) +#define PIO_INSTR_MEM0_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM0_RESET _u(0x00000000) +#define PIO_INSTR_MEM0_MSB _u(15) +#define PIO_INSTR_MEM0_LSB _u(0) +#define PIO_INSTR_MEM0_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM1 +// Description : Write-only access to instruction memory location 1 +#define PIO_INSTR_MEM1_OFFSET _u(0x0000004c) +#define PIO_INSTR_MEM1_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM1_RESET _u(0x00000000) +#define PIO_INSTR_MEM1_MSB _u(15) +#define PIO_INSTR_MEM1_LSB _u(0) +#define PIO_INSTR_MEM1_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM2 +// Description : Write-only access to instruction memory location 2 +#define PIO_INSTR_MEM2_OFFSET _u(0x00000050) +#define PIO_INSTR_MEM2_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM2_RESET _u(0x00000000) +#define PIO_INSTR_MEM2_MSB _u(15) +#define PIO_INSTR_MEM2_LSB _u(0) +#define PIO_INSTR_MEM2_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM3 +// Description : Write-only access to instruction memory location 3 +#define PIO_INSTR_MEM3_OFFSET _u(0x00000054) +#define PIO_INSTR_MEM3_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM3_RESET _u(0x00000000) +#define PIO_INSTR_MEM3_MSB _u(15) +#define PIO_INSTR_MEM3_LSB _u(0) +#define PIO_INSTR_MEM3_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM4 +// Description : Write-only access to instruction memory location 4 +#define PIO_INSTR_MEM4_OFFSET _u(0x00000058) +#define PIO_INSTR_MEM4_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM4_RESET _u(0x00000000) +#define PIO_INSTR_MEM4_MSB _u(15) +#define PIO_INSTR_MEM4_LSB _u(0) +#define PIO_INSTR_MEM4_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM5 +// Description : Write-only access to instruction memory location 5 +#define PIO_INSTR_MEM5_OFFSET _u(0x0000005c) +#define PIO_INSTR_MEM5_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM5_RESET _u(0x00000000) +#define PIO_INSTR_MEM5_MSB _u(15) +#define PIO_INSTR_MEM5_LSB _u(0) +#define PIO_INSTR_MEM5_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM6 +// Description : Write-only access to instruction memory location 6 +#define PIO_INSTR_MEM6_OFFSET _u(0x00000060) +#define PIO_INSTR_MEM6_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM6_RESET _u(0x00000000) +#define PIO_INSTR_MEM6_MSB _u(15) +#define PIO_INSTR_MEM6_LSB _u(0) +#define PIO_INSTR_MEM6_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM7 +// Description : Write-only access to instruction memory location 7 +#define PIO_INSTR_MEM7_OFFSET _u(0x00000064) +#define PIO_INSTR_MEM7_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM7_RESET _u(0x00000000) +#define PIO_INSTR_MEM7_MSB _u(15) +#define PIO_INSTR_MEM7_LSB _u(0) +#define PIO_INSTR_MEM7_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM8 +// Description : Write-only access to instruction memory location 8 +#define PIO_INSTR_MEM8_OFFSET _u(0x00000068) +#define PIO_INSTR_MEM8_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM8_RESET _u(0x00000000) +#define PIO_INSTR_MEM8_MSB _u(15) +#define PIO_INSTR_MEM8_LSB _u(0) +#define PIO_INSTR_MEM8_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM9 +// Description : Write-only access to instruction memory location 9 +#define PIO_INSTR_MEM9_OFFSET _u(0x0000006c) +#define PIO_INSTR_MEM9_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM9_RESET _u(0x00000000) +#define PIO_INSTR_MEM9_MSB _u(15) +#define PIO_INSTR_MEM9_LSB _u(0) +#define PIO_INSTR_MEM9_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM10 +// Description : Write-only access to instruction memory location 10 +#define PIO_INSTR_MEM10_OFFSET _u(0x00000070) +#define PIO_INSTR_MEM10_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM10_RESET _u(0x00000000) +#define PIO_INSTR_MEM10_MSB _u(15) +#define PIO_INSTR_MEM10_LSB _u(0) +#define PIO_INSTR_MEM10_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM11 +// Description : Write-only access to instruction memory location 11 +#define PIO_INSTR_MEM11_OFFSET _u(0x00000074) +#define PIO_INSTR_MEM11_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM11_RESET _u(0x00000000) +#define PIO_INSTR_MEM11_MSB _u(15) +#define PIO_INSTR_MEM11_LSB _u(0) +#define PIO_INSTR_MEM11_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM12 +// Description : Write-only access to instruction memory location 12 +#define PIO_INSTR_MEM12_OFFSET _u(0x00000078) +#define PIO_INSTR_MEM12_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM12_RESET _u(0x00000000) +#define PIO_INSTR_MEM12_MSB _u(15) +#define PIO_INSTR_MEM12_LSB _u(0) +#define PIO_INSTR_MEM12_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM13 +// Description : Write-only access to instruction memory location 13 +#define PIO_INSTR_MEM13_OFFSET _u(0x0000007c) +#define PIO_INSTR_MEM13_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM13_RESET _u(0x00000000) +#define PIO_INSTR_MEM13_MSB _u(15) +#define PIO_INSTR_MEM13_LSB _u(0) +#define PIO_INSTR_MEM13_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM14 +// Description : Write-only access to instruction memory location 14 +#define PIO_INSTR_MEM14_OFFSET _u(0x00000080) +#define PIO_INSTR_MEM14_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM14_RESET _u(0x00000000) +#define PIO_INSTR_MEM14_MSB _u(15) +#define PIO_INSTR_MEM14_LSB _u(0) +#define PIO_INSTR_MEM14_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM15 +// Description : Write-only access to instruction memory location 15 +#define PIO_INSTR_MEM15_OFFSET _u(0x00000084) +#define PIO_INSTR_MEM15_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM15_RESET _u(0x00000000) +#define PIO_INSTR_MEM15_MSB _u(15) +#define PIO_INSTR_MEM15_LSB _u(0) +#define PIO_INSTR_MEM15_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM16 +// Description : Write-only access to instruction memory location 16 +#define PIO_INSTR_MEM16_OFFSET _u(0x00000088) +#define PIO_INSTR_MEM16_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM16_RESET _u(0x00000000) +#define PIO_INSTR_MEM16_MSB _u(15) +#define PIO_INSTR_MEM16_LSB _u(0) +#define PIO_INSTR_MEM16_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM17 +// Description : Write-only access to instruction memory location 17 +#define PIO_INSTR_MEM17_OFFSET _u(0x0000008c) +#define PIO_INSTR_MEM17_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM17_RESET _u(0x00000000) +#define PIO_INSTR_MEM17_MSB _u(15) +#define PIO_INSTR_MEM17_LSB _u(0) +#define PIO_INSTR_MEM17_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM18 +// Description : Write-only access to instruction memory location 18 +#define PIO_INSTR_MEM18_OFFSET _u(0x00000090) +#define PIO_INSTR_MEM18_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM18_RESET _u(0x00000000) +#define PIO_INSTR_MEM18_MSB _u(15) +#define PIO_INSTR_MEM18_LSB _u(0) +#define PIO_INSTR_MEM18_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM19 +// Description : Write-only access to instruction memory location 19 +#define PIO_INSTR_MEM19_OFFSET _u(0x00000094) +#define PIO_INSTR_MEM19_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM19_RESET _u(0x00000000) +#define PIO_INSTR_MEM19_MSB _u(15) +#define PIO_INSTR_MEM19_LSB _u(0) +#define PIO_INSTR_MEM19_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM20 +// Description : Write-only access to instruction memory location 20 +#define PIO_INSTR_MEM20_OFFSET _u(0x00000098) +#define PIO_INSTR_MEM20_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM20_RESET _u(0x00000000) +#define PIO_INSTR_MEM20_MSB _u(15) +#define PIO_INSTR_MEM20_LSB _u(0) +#define PIO_INSTR_MEM20_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM21 +// Description : Write-only access to instruction memory location 21 +#define PIO_INSTR_MEM21_OFFSET _u(0x0000009c) +#define PIO_INSTR_MEM21_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM21_RESET _u(0x00000000) +#define PIO_INSTR_MEM21_MSB _u(15) +#define PIO_INSTR_MEM21_LSB _u(0) +#define PIO_INSTR_MEM21_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM22 +// Description : Write-only access to instruction memory location 22 +#define PIO_INSTR_MEM22_OFFSET _u(0x000000a0) +#define PIO_INSTR_MEM22_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM22_RESET _u(0x00000000) +#define PIO_INSTR_MEM22_MSB _u(15) +#define PIO_INSTR_MEM22_LSB _u(0) +#define PIO_INSTR_MEM22_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM23 +// Description : Write-only access to instruction memory location 23 +#define PIO_INSTR_MEM23_OFFSET _u(0x000000a4) +#define PIO_INSTR_MEM23_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM23_RESET _u(0x00000000) +#define PIO_INSTR_MEM23_MSB _u(15) +#define PIO_INSTR_MEM23_LSB _u(0) +#define PIO_INSTR_MEM23_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM24 +// Description : Write-only access to instruction memory location 24 +#define PIO_INSTR_MEM24_OFFSET _u(0x000000a8) +#define PIO_INSTR_MEM24_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM24_RESET _u(0x00000000) +#define PIO_INSTR_MEM24_MSB _u(15) +#define PIO_INSTR_MEM24_LSB _u(0) +#define PIO_INSTR_MEM24_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM25 +// Description : Write-only access to instruction memory location 25 +#define PIO_INSTR_MEM25_OFFSET _u(0x000000ac) +#define PIO_INSTR_MEM25_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM25_RESET _u(0x00000000) +#define PIO_INSTR_MEM25_MSB _u(15) +#define PIO_INSTR_MEM25_LSB _u(0) +#define PIO_INSTR_MEM25_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM26 +// Description : Write-only access to instruction memory location 26 +#define PIO_INSTR_MEM26_OFFSET _u(0x000000b0) +#define PIO_INSTR_MEM26_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM26_RESET _u(0x00000000) +#define PIO_INSTR_MEM26_MSB _u(15) +#define PIO_INSTR_MEM26_LSB _u(0) +#define PIO_INSTR_MEM26_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM27 +// Description : Write-only access to instruction memory location 27 +#define PIO_INSTR_MEM27_OFFSET _u(0x000000b4) +#define PIO_INSTR_MEM27_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM27_RESET _u(0x00000000) +#define PIO_INSTR_MEM27_MSB _u(15) +#define PIO_INSTR_MEM27_LSB _u(0) +#define PIO_INSTR_MEM27_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM28 +// Description : Write-only access to instruction memory location 28 +#define PIO_INSTR_MEM28_OFFSET _u(0x000000b8) +#define PIO_INSTR_MEM28_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM28_RESET _u(0x00000000) +#define PIO_INSTR_MEM28_MSB _u(15) +#define PIO_INSTR_MEM28_LSB _u(0) +#define PIO_INSTR_MEM28_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM29 +// Description : Write-only access to instruction memory location 29 +#define PIO_INSTR_MEM29_OFFSET _u(0x000000bc) +#define PIO_INSTR_MEM29_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM29_RESET _u(0x00000000) +#define PIO_INSTR_MEM29_MSB _u(15) +#define PIO_INSTR_MEM29_LSB _u(0) +#define PIO_INSTR_MEM29_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM30 +// Description : Write-only access to instruction memory location 30 +#define PIO_INSTR_MEM30_OFFSET _u(0x000000c0) +#define PIO_INSTR_MEM30_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM30_RESET _u(0x00000000) +#define PIO_INSTR_MEM30_MSB _u(15) +#define PIO_INSTR_MEM30_LSB _u(0) +#define PIO_INSTR_MEM30_ACCESS "WO" +// ============================================================================= +// Register : PIO_INSTR_MEM31 +// Description : Write-only access to instruction memory location 31 +#define PIO_INSTR_MEM31_OFFSET _u(0x000000c4) +#define PIO_INSTR_MEM31_BITS _u(0x0000ffff) +#define PIO_INSTR_MEM31_RESET _u(0x00000000) +#define PIO_INSTR_MEM31_MSB _u(15) +#define PIO_INSTR_MEM31_LSB _u(0) +#define PIO_INSTR_MEM31_ACCESS "WO" +// ============================================================================= +// Register : PIO_SM0_CLKDIV +// Description : Clock divisor register for state machine 0 +// Frequency = clock freq / (CLKDIV_INT + CLKDIV_FRAC / 256) +#define PIO_SM0_CLKDIV_OFFSET _u(0x000000c8) +#define PIO_SM0_CLKDIV_BITS _u(0xffffff00) +#define PIO_SM0_CLKDIV_RESET _u(0x00010000) +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_CLKDIV_INT +// Description : Effective frequency is sysclk/(int + frac/256). +// Value of 0 is interpreted as 65536. If INT is 0, FRAC must also +// be 0. +#define PIO_SM0_CLKDIV_INT_RESET _u(0x0001) +#define PIO_SM0_CLKDIV_INT_BITS _u(0xffff0000) +#define PIO_SM0_CLKDIV_INT_MSB _u(31) +#define PIO_SM0_CLKDIV_INT_LSB _u(16) +#define PIO_SM0_CLKDIV_INT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_CLKDIV_FRAC +// Description : Fractional part of clock divisor +#define PIO_SM0_CLKDIV_FRAC_RESET _u(0x00) +#define PIO_SM0_CLKDIV_FRAC_BITS _u(0x0000ff00) +#define PIO_SM0_CLKDIV_FRAC_MSB _u(15) +#define PIO_SM0_CLKDIV_FRAC_LSB _u(8) +#define PIO_SM0_CLKDIV_FRAC_ACCESS "RW" +// ============================================================================= +// Register : PIO_SM0_EXECCTRL +// Description : Execution/behavioural settings for state machine 0 +#define PIO_SM0_EXECCTRL_OFFSET _u(0x000000cc) +#define PIO_SM0_EXECCTRL_BITS _u(0xffffff9f) +#define PIO_SM0_EXECCTRL_RESET _u(0x0001f000) +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_EXECCTRL_EXEC_STALLED +// Description : If 1, an instruction written to SMx_INSTR is stalled, and +// latched by the state machine. Will clear to 0 once this +// instruction completes. +#define PIO_SM0_EXECCTRL_EXEC_STALLED_RESET _u(0x0) +#define PIO_SM0_EXECCTRL_EXEC_STALLED_BITS _u(0x80000000) +#define PIO_SM0_EXECCTRL_EXEC_STALLED_MSB _u(31) +#define PIO_SM0_EXECCTRL_EXEC_STALLED_LSB _u(31) +#define PIO_SM0_EXECCTRL_EXEC_STALLED_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_EXECCTRL_SIDE_EN +// Description : If 1, the MSB of the Delay/Side-set instruction field is used +// as side-set enable, rather than a side-set data bit. This +// allows instructions to perform side-set optionally, rather than +// on every instruction, but the maximum possible side-set width +// is reduced from 5 to 4. Note that the value of +// PINCTRL_SIDESET_COUNT is inclusive of this enable bit. +#define PIO_SM0_EXECCTRL_SIDE_EN_RESET _u(0x0) +#define PIO_SM0_EXECCTRL_SIDE_EN_BITS _u(0x40000000) +#define PIO_SM0_EXECCTRL_SIDE_EN_MSB _u(30) +#define PIO_SM0_EXECCTRL_SIDE_EN_LSB _u(30) +#define PIO_SM0_EXECCTRL_SIDE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_EXECCTRL_SIDE_PINDIR +// Description : If 1, side-set data is asserted to pin directions, instead of +// pin values +#define PIO_SM0_EXECCTRL_SIDE_PINDIR_RESET _u(0x0) +#define PIO_SM0_EXECCTRL_SIDE_PINDIR_BITS _u(0x20000000) +#define PIO_SM0_EXECCTRL_SIDE_PINDIR_MSB _u(29) +#define PIO_SM0_EXECCTRL_SIDE_PINDIR_LSB _u(29) +#define PIO_SM0_EXECCTRL_SIDE_PINDIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_EXECCTRL_JMP_PIN +// Description : The GPIO number to use as condition for JMP PIN. Unaffected by +// input mapping. +#define PIO_SM0_EXECCTRL_JMP_PIN_RESET _u(0x00) +#define PIO_SM0_EXECCTRL_JMP_PIN_BITS _u(0x1f000000) +#define PIO_SM0_EXECCTRL_JMP_PIN_MSB _u(28) +#define PIO_SM0_EXECCTRL_JMP_PIN_LSB _u(24) +#define PIO_SM0_EXECCTRL_JMP_PIN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_EXECCTRL_OUT_EN_SEL +// Description : Which data bit to use for inline OUT enable +#define PIO_SM0_EXECCTRL_OUT_EN_SEL_RESET _u(0x00) +#define PIO_SM0_EXECCTRL_OUT_EN_SEL_BITS _u(0x00f80000) +#define PIO_SM0_EXECCTRL_OUT_EN_SEL_MSB _u(23) +#define PIO_SM0_EXECCTRL_OUT_EN_SEL_LSB _u(19) +#define PIO_SM0_EXECCTRL_OUT_EN_SEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_EXECCTRL_INLINE_OUT_EN +// Description : If 1, use a bit of OUT data as an auxiliary write enable +// When used in conjunction with OUT_STICKY, writes with an enable +// of 0 will +// deassert the latest pin write. This can create useful +// masking/override behaviour +// due to the priority ordering of state machine pin writes (SM0 < +// SM1 < ...) +#define PIO_SM0_EXECCTRL_INLINE_OUT_EN_RESET _u(0x0) +#define PIO_SM0_EXECCTRL_INLINE_OUT_EN_BITS _u(0x00040000) +#define PIO_SM0_EXECCTRL_INLINE_OUT_EN_MSB _u(18) +#define PIO_SM0_EXECCTRL_INLINE_OUT_EN_LSB _u(18) +#define PIO_SM0_EXECCTRL_INLINE_OUT_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_EXECCTRL_OUT_STICKY +// Description : Continuously assert the most recent OUT/SET to the pins +#define PIO_SM0_EXECCTRL_OUT_STICKY_RESET _u(0x0) +#define PIO_SM0_EXECCTRL_OUT_STICKY_BITS _u(0x00020000) +#define PIO_SM0_EXECCTRL_OUT_STICKY_MSB _u(17) +#define PIO_SM0_EXECCTRL_OUT_STICKY_LSB _u(17) +#define PIO_SM0_EXECCTRL_OUT_STICKY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_EXECCTRL_WRAP_TOP +// Description : After reaching this address, execution is wrapped to +// wrap_bottom. +// If the instruction is a jump, and the jump condition is true, +// the jump takes priority. +#define PIO_SM0_EXECCTRL_WRAP_TOP_RESET _u(0x1f) +#define PIO_SM0_EXECCTRL_WRAP_TOP_BITS _u(0x0001f000) +#define PIO_SM0_EXECCTRL_WRAP_TOP_MSB _u(16) +#define PIO_SM0_EXECCTRL_WRAP_TOP_LSB _u(12) +#define PIO_SM0_EXECCTRL_WRAP_TOP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_EXECCTRL_WRAP_BOTTOM +// Description : After reaching wrap_top, execution is wrapped to this address. +#define PIO_SM0_EXECCTRL_WRAP_BOTTOM_RESET _u(0x00) +#define PIO_SM0_EXECCTRL_WRAP_BOTTOM_BITS _u(0x00000f80) +#define PIO_SM0_EXECCTRL_WRAP_BOTTOM_MSB _u(11) +#define PIO_SM0_EXECCTRL_WRAP_BOTTOM_LSB _u(7) +#define PIO_SM0_EXECCTRL_WRAP_BOTTOM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_EXECCTRL_STATUS_SEL +// Description : Comparison used for the MOV x, STATUS instruction. +// 0x0 -> All-ones if TX FIFO level < N, otherwise all-zeroes +// 0x1 -> All-ones if RX FIFO level < N, otherwise all-zeroes +#define PIO_SM0_EXECCTRL_STATUS_SEL_RESET _u(0x0) +#define PIO_SM0_EXECCTRL_STATUS_SEL_BITS _u(0x00000010) +#define PIO_SM0_EXECCTRL_STATUS_SEL_MSB _u(4) +#define PIO_SM0_EXECCTRL_STATUS_SEL_LSB _u(4) +#define PIO_SM0_EXECCTRL_STATUS_SEL_ACCESS "RW" +#define PIO_SM0_EXECCTRL_STATUS_SEL_VALUE_TXLEVEL _u(0x0) +#define PIO_SM0_EXECCTRL_STATUS_SEL_VALUE_RXLEVEL _u(0x1) +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_EXECCTRL_STATUS_N +// Description : Comparison level for the MOV x, STATUS instruction +#define PIO_SM0_EXECCTRL_STATUS_N_RESET _u(0x0) +#define PIO_SM0_EXECCTRL_STATUS_N_BITS _u(0x0000000f) +#define PIO_SM0_EXECCTRL_STATUS_N_MSB _u(3) +#define PIO_SM0_EXECCTRL_STATUS_N_LSB _u(0) +#define PIO_SM0_EXECCTRL_STATUS_N_ACCESS "RW" +// ============================================================================= +// Register : PIO_SM0_SHIFTCTRL +// Description : Control behaviour of the input/output shift registers for state +// machine 0 +#define PIO_SM0_SHIFTCTRL_OFFSET _u(0x000000d0) +#define PIO_SM0_SHIFTCTRL_BITS _u(0xffff0000) +#define PIO_SM0_SHIFTCTRL_RESET _u(0x000c0000) +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_SHIFTCTRL_FJOIN_RX +// Description : When 1, RX FIFO steals the TX FIFO's storage, and becomes twice +// as deep. +// TX FIFO is disabled as a result (always reads as both full and +// empty). +// FIFOs are flushed when this bit is changed. +#define PIO_SM0_SHIFTCTRL_FJOIN_RX_RESET _u(0x0) +#define PIO_SM0_SHIFTCTRL_FJOIN_RX_BITS _u(0x80000000) +#define PIO_SM0_SHIFTCTRL_FJOIN_RX_MSB _u(31) +#define PIO_SM0_SHIFTCTRL_FJOIN_RX_LSB _u(31) +#define PIO_SM0_SHIFTCTRL_FJOIN_RX_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_SHIFTCTRL_FJOIN_TX +// Description : When 1, TX FIFO steals the RX FIFO's storage, and becomes twice +// as deep. +// RX FIFO is disabled as a result (always reads as both full and +// empty). +// FIFOs are flushed when this bit is changed. +#define PIO_SM0_SHIFTCTRL_FJOIN_TX_RESET _u(0x0) +#define PIO_SM0_SHIFTCTRL_FJOIN_TX_BITS _u(0x40000000) +#define PIO_SM0_SHIFTCTRL_FJOIN_TX_MSB _u(30) +#define PIO_SM0_SHIFTCTRL_FJOIN_TX_LSB _u(30) +#define PIO_SM0_SHIFTCTRL_FJOIN_TX_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_SHIFTCTRL_PULL_THRESH +// Description : Number of bits shifted out of OSR before autopull, or +// conditional pull (PULL IFEMPTY), will take place. +// Write 0 for value of 32. +#define PIO_SM0_SHIFTCTRL_PULL_THRESH_RESET _u(0x00) +#define PIO_SM0_SHIFTCTRL_PULL_THRESH_BITS _u(0x3e000000) +#define PIO_SM0_SHIFTCTRL_PULL_THRESH_MSB _u(29) +#define PIO_SM0_SHIFTCTRL_PULL_THRESH_LSB _u(25) +#define PIO_SM0_SHIFTCTRL_PULL_THRESH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_SHIFTCTRL_PUSH_THRESH +// Description : Number of bits shifted into ISR before autopush, or conditional +// push (PUSH IFFULL), will take place. +// Write 0 for value of 32. +#define PIO_SM0_SHIFTCTRL_PUSH_THRESH_RESET _u(0x00) +#define PIO_SM0_SHIFTCTRL_PUSH_THRESH_BITS _u(0x01f00000) +#define PIO_SM0_SHIFTCTRL_PUSH_THRESH_MSB _u(24) +#define PIO_SM0_SHIFTCTRL_PUSH_THRESH_LSB _u(20) +#define PIO_SM0_SHIFTCTRL_PUSH_THRESH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_SHIFTCTRL_OUT_SHIFTDIR +// Description : 1 = shift out of output shift register to right. 0 = to left. +#define PIO_SM0_SHIFTCTRL_OUT_SHIFTDIR_RESET _u(0x1) +#define PIO_SM0_SHIFTCTRL_OUT_SHIFTDIR_BITS _u(0x00080000) +#define PIO_SM0_SHIFTCTRL_OUT_SHIFTDIR_MSB _u(19) +#define PIO_SM0_SHIFTCTRL_OUT_SHIFTDIR_LSB _u(19) +#define PIO_SM0_SHIFTCTRL_OUT_SHIFTDIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_SHIFTCTRL_IN_SHIFTDIR +// Description : 1 = shift input shift register to right (data enters from +// left). 0 = to left. +#define PIO_SM0_SHIFTCTRL_IN_SHIFTDIR_RESET _u(0x1) +#define PIO_SM0_SHIFTCTRL_IN_SHIFTDIR_BITS _u(0x00040000) +#define PIO_SM0_SHIFTCTRL_IN_SHIFTDIR_MSB _u(18) +#define PIO_SM0_SHIFTCTRL_IN_SHIFTDIR_LSB _u(18) +#define PIO_SM0_SHIFTCTRL_IN_SHIFTDIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_SHIFTCTRL_AUTOPULL +// Description : Pull automatically when the output shift register is emptied, +// i.e. on or following an OUT instruction which causes the output +// shift counter to reach or exceed PULL_THRESH. +#define PIO_SM0_SHIFTCTRL_AUTOPULL_RESET _u(0x0) +#define PIO_SM0_SHIFTCTRL_AUTOPULL_BITS _u(0x00020000) +#define PIO_SM0_SHIFTCTRL_AUTOPULL_MSB _u(17) +#define PIO_SM0_SHIFTCTRL_AUTOPULL_LSB _u(17) +#define PIO_SM0_SHIFTCTRL_AUTOPULL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_SHIFTCTRL_AUTOPUSH +// Description : Push automatically when the input shift register is filled, +// i.e. on an IN instruction which causes the input shift counter +// to reach or exceed PUSH_THRESH. +#define PIO_SM0_SHIFTCTRL_AUTOPUSH_RESET _u(0x0) +#define PIO_SM0_SHIFTCTRL_AUTOPUSH_BITS _u(0x00010000) +#define PIO_SM0_SHIFTCTRL_AUTOPUSH_MSB _u(16) +#define PIO_SM0_SHIFTCTRL_AUTOPUSH_LSB _u(16) +#define PIO_SM0_SHIFTCTRL_AUTOPUSH_ACCESS "RW" +// ============================================================================= +// Register : PIO_SM0_ADDR +// Description : Current instruction address of state machine 0 +#define PIO_SM0_ADDR_OFFSET _u(0x000000d4) +#define PIO_SM0_ADDR_BITS _u(0x0000001f) +#define PIO_SM0_ADDR_RESET _u(0x00000000) +#define PIO_SM0_ADDR_MSB _u(4) +#define PIO_SM0_ADDR_LSB _u(0) +#define PIO_SM0_ADDR_ACCESS "RO" +// ============================================================================= +// Register : PIO_SM0_INSTR +// Description : Read to see the instruction currently addressed by state +// machine 0's program counter +// Write to execute an instruction immediately (including jumps) +// and then resume execution. +#define PIO_SM0_INSTR_OFFSET _u(0x000000d8) +#define PIO_SM0_INSTR_BITS _u(0x0000ffff) +#define PIO_SM0_INSTR_RESET "-" +#define PIO_SM0_INSTR_MSB _u(15) +#define PIO_SM0_INSTR_LSB _u(0) +#define PIO_SM0_INSTR_ACCESS "RW" +// ============================================================================= +// Register : PIO_SM0_PINCTRL +// Description : State machine pin control +#define PIO_SM0_PINCTRL_OFFSET _u(0x000000dc) +#define PIO_SM0_PINCTRL_BITS _u(0xffffffff) +#define PIO_SM0_PINCTRL_RESET _u(0x14000000) +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_PINCTRL_SIDESET_COUNT +// Description : The number of MSBs of the Delay/Side-set instruction field +// which are used for side-set. Inclusive of the enable bit, if +// present. Minimum of 0 (all delay bits, no side-set) and maximum +// of 5 (all side-set, no delay). +#define PIO_SM0_PINCTRL_SIDESET_COUNT_RESET _u(0x0) +#define PIO_SM0_PINCTRL_SIDESET_COUNT_BITS _u(0xe0000000) +#define PIO_SM0_PINCTRL_SIDESET_COUNT_MSB _u(31) +#define PIO_SM0_PINCTRL_SIDESET_COUNT_LSB _u(29) +#define PIO_SM0_PINCTRL_SIDESET_COUNT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_PINCTRL_SET_COUNT +// Description : The number of pins asserted by a SET. In the range 0 to 5 +// inclusive. +#define PIO_SM0_PINCTRL_SET_COUNT_RESET _u(0x5) +#define PIO_SM0_PINCTRL_SET_COUNT_BITS _u(0x1c000000) +#define PIO_SM0_PINCTRL_SET_COUNT_MSB _u(28) +#define PIO_SM0_PINCTRL_SET_COUNT_LSB _u(26) +#define PIO_SM0_PINCTRL_SET_COUNT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_PINCTRL_OUT_COUNT +// Description : The number of pins asserted by an OUT PINS, OUT PINDIRS or MOV +// PINS instruction. In the range 0 to 32 inclusive. +#define PIO_SM0_PINCTRL_OUT_COUNT_RESET _u(0x00) +#define PIO_SM0_PINCTRL_OUT_COUNT_BITS _u(0x03f00000) +#define PIO_SM0_PINCTRL_OUT_COUNT_MSB _u(25) +#define PIO_SM0_PINCTRL_OUT_COUNT_LSB _u(20) +#define PIO_SM0_PINCTRL_OUT_COUNT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_PINCTRL_IN_BASE +// Description : The pin which is mapped to the least-significant bit of a state +// machine's IN data bus. Higher-numbered pins are mapped to +// consecutively more-significant data bits, with a modulo of 32 +// applied to pin number. +#define PIO_SM0_PINCTRL_IN_BASE_RESET _u(0x00) +#define PIO_SM0_PINCTRL_IN_BASE_BITS _u(0x000f8000) +#define PIO_SM0_PINCTRL_IN_BASE_MSB _u(19) +#define PIO_SM0_PINCTRL_IN_BASE_LSB _u(15) +#define PIO_SM0_PINCTRL_IN_BASE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_PINCTRL_SIDESET_BASE +// Description : The lowest-numbered pin that will be affected by a side-set +// operation. The MSBs of an instruction's side-set/delay field +// (up to 5, determined by SIDESET_COUNT) are used for side-set +// data, with the remaining LSBs used for delay. The +// least-significant bit of the side-set portion is the bit +// written to this pin, with more-significant bits written to +// higher-numbered pins. +#define PIO_SM0_PINCTRL_SIDESET_BASE_RESET _u(0x00) +#define PIO_SM0_PINCTRL_SIDESET_BASE_BITS _u(0x00007c00) +#define PIO_SM0_PINCTRL_SIDESET_BASE_MSB _u(14) +#define PIO_SM0_PINCTRL_SIDESET_BASE_LSB _u(10) +#define PIO_SM0_PINCTRL_SIDESET_BASE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_PINCTRL_SET_BASE +// Description : The lowest-numbered pin that will be affected by a SET PINS or +// SET PINDIRS instruction. The data written to this pin is the +// least-significant bit of the SET data. +#define PIO_SM0_PINCTRL_SET_BASE_RESET _u(0x00) +#define PIO_SM0_PINCTRL_SET_BASE_BITS _u(0x000003e0) +#define PIO_SM0_PINCTRL_SET_BASE_MSB _u(9) +#define PIO_SM0_PINCTRL_SET_BASE_LSB _u(5) +#define PIO_SM0_PINCTRL_SET_BASE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM0_PINCTRL_OUT_BASE +// Description : The lowest-numbered pin that will be affected by an OUT PINS, +// OUT PINDIRS or MOV PINS instruction. The data written to this +// pin will always be the least-significant bit of the OUT or MOV +// data. +#define PIO_SM0_PINCTRL_OUT_BASE_RESET _u(0x00) +#define PIO_SM0_PINCTRL_OUT_BASE_BITS _u(0x0000001f) +#define PIO_SM0_PINCTRL_OUT_BASE_MSB _u(4) +#define PIO_SM0_PINCTRL_OUT_BASE_LSB _u(0) +#define PIO_SM0_PINCTRL_OUT_BASE_ACCESS "RW" +// ============================================================================= +// Register : PIO_SM1_CLKDIV +// Description : Clock divisor register for state machine 1 +// Frequency = clock freq / (CLKDIV_INT + CLKDIV_FRAC / 256) +#define PIO_SM1_CLKDIV_OFFSET _u(0x000000e0) +#define PIO_SM1_CLKDIV_BITS _u(0xffffff00) +#define PIO_SM1_CLKDIV_RESET _u(0x00010000) +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_CLKDIV_INT +// Description : Effective frequency is sysclk/(int + frac/256). +// Value of 0 is interpreted as 65536. If INT is 0, FRAC must also +// be 0. +#define PIO_SM1_CLKDIV_INT_RESET _u(0x0001) +#define PIO_SM1_CLKDIV_INT_BITS _u(0xffff0000) +#define PIO_SM1_CLKDIV_INT_MSB _u(31) +#define PIO_SM1_CLKDIV_INT_LSB _u(16) +#define PIO_SM1_CLKDIV_INT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_CLKDIV_FRAC +// Description : Fractional part of clock divisor +#define PIO_SM1_CLKDIV_FRAC_RESET _u(0x00) +#define PIO_SM1_CLKDIV_FRAC_BITS _u(0x0000ff00) +#define PIO_SM1_CLKDIV_FRAC_MSB _u(15) +#define PIO_SM1_CLKDIV_FRAC_LSB _u(8) +#define PIO_SM1_CLKDIV_FRAC_ACCESS "RW" +// ============================================================================= +// Register : PIO_SM1_EXECCTRL +// Description : Execution/behavioural settings for state machine 1 +#define PIO_SM1_EXECCTRL_OFFSET _u(0x000000e4) +#define PIO_SM1_EXECCTRL_BITS _u(0xffffff9f) +#define PIO_SM1_EXECCTRL_RESET _u(0x0001f000) +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_EXECCTRL_EXEC_STALLED +// Description : If 1, an instruction written to SMx_INSTR is stalled, and +// latched by the state machine. Will clear to 0 once this +// instruction completes. +#define PIO_SM1_EXECCTRL_EXEC_STALLED_RESET _u(0x0) +#define PIO_SM1_EXECCTRL_EXEC_STALLED_BITS _u(0x80000000) +#define PIO_SM1_EXECCTRL_EXEC_STALLED_MSB _u(31) +#define PIO_SM1_EXECCTRL_EXEC_STALLED_LSB _u(31) +#define PIO_SM1_EXECCTRL_EXEC_STALLED_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_EXECCTRL_SIDE_EN +// Description : If 1, the MSB of the Delay/Side-set instruction field is used +// as side-set enable, rather than a side-set data bit. This +// allows instructions to perform side-set optionally, rather than +// on every instruction, but the maximum possible side-set width +// is reduced from 5 to 4. Note that the value of +// PINCTRL_SIDESET_COUNT is inclusive of this enable bit. +#define PIO_SM1_EXECCTRL_SIDE_EN_RESET _u(0x0) +#define PIO_SM1_EXECCTRL_SIDE_EN_BITS _u(0x40000000) +#define PIO_SM1_EXECCTRL_SIDE_EN_MSB _u(30) +#define PIO_SM1_EXECCTRL_SIDE_EN_LSB _u(30) +#define PIO_SM1_EXECCTRL_SIDE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_EXECCTRL_SIDE_PINDIR +// Description : If 1, side-set data is asserted to pin directions, instead of +// pin values +#define PIO_SM1_EXECCTRL_SIDE_PINDIR_RESET _u(0x0) +#define PIO_SM1_EXECCTRL_SIDE_PINDIR_BITS _u(0x20000000) +#define PIO_SM1_EXECCTRL_SIDE_PINDIR_MSB _u(29) +#define PIO_SM1_EXECCTRL_SIDE_PINDIR_LSB _u(29) +#define PIO_SM1_EXECCTRL_SIDE_PINDIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_EXECCTRL_JMP_PIN +// Description : The GPIO number to use as condition for JMP PIN. Unaffected by +// input mapping. +#define PIO_SM1_EXECCTRL_JMP_PIN_RESET _u(0x00) +#define PIO_SM1_EXECCTRL_JMP_PIN_BITS _u(0x1f000000) +#define PIO_SM1_EXECCTRL_JMP_PIN_MSB _u(28) +#define PIO_SM1_EXECCTRL_JMP_PIN_LSB _u(24) +#define PIO_SM1_EXECCTRL_JMP_PIN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_EXECCTRL_OUT_EN_SEL +// Description : Which data bit to use for inline OUT enable +#define PIO_SM1_EXECCTRL_OUT_EN_SEL_RESET _u(0x00) +#define PIO_SM1_EXECCTRL_OUT_EN_SEL_BITS _u(0x00f80000) +#define PIO_SM1_EXECCTRL_OUT_EN_SEL_MSB _u(23) +#define PIO_SM1_EXECCTRL_OUT_EN_SEL_LSB _u(19) +#define PIO_SM1_EXECCTRL_OUT_EN_SEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_EXECCTRL_INLINE_OUT_EN +// Description : If 1, use a bit of OUT data as an auxiliary write enable +// When used in conjunction with OUT_STICKY, writes with an enable +// of 0 will +// deassert the latest pin write. This can create useful +// masking/override behaviour +// due to the priority ordering of state machine pin writes (SM0 < +// SM1 < ...) +#define PIO_SM1_EXECCTRL_INLINE_OUT_EN_RESET _u(0x0) +#define PIO_SM1_EXECCTRL_INLINE_OUT_EN_BITS _u(0x00040000) +#define PIO_SM1_EXECCTRL_INLINE_OUT_EN_MSB _u(18) +#define PIO_SM1_EXECCTRL_INLINE_OUT_EN_LSB _u(18) +#define PIO_SM1_EXECCTRL_INLINE_OUT_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_EXECCTRL_OUT_STICKY +// Description : Continuously assert the most recent OUT/SET to the pins +#define PIO_SM1_EXECCTRL_OUT_STICKY_RESET _u(0x0) +#define PIO_SM1_EXECCTRL_OUT_STICKY_BITS _u(0x00020000) +#define PIO_SM1_EXECCTRL_OUT_STICKY_MSB _u(17) +#define PIO_SM1_EXECCTRL_OUT_STICKY_LSB _u(17) +#define PIO_SM1_EXECCTRL_OUT_STICKY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_EXECCTRL_WRAP_TOP +// Description : After reaching this address, execution is wrapped to +// wrap_bottom. +// If the instruction is a jump, and the jump condition is true, +// the jump takes priority. +#define PIO_SM1_EXECCTRL_WRAP_TOP_RESET _u(0x1f) +#define PIO_SM1_EXECCTRL_WRAP_TOP_BITS _u(0x0001f000) +#define PIO_SM1_EXECCTRL_WRAP_TOP_MSB _u(16) +#define PIO_SM1_EXECCTRL_WRAP_TOP_LSB _u(12) +#define PIO_SM1_EXECCTRL_WRAP_TOP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_EXECCTRL_WRAP_BOTTOM +// Description : After reaching wrap_top, execution is wrapped to this address. +#define PIO_SM1_EXECCTRL_WRAP_BOTTOM_RESET _u(0x00) +#define PIO_SM1_EXECCTRL_WRAP_BOTTOM_BITS _u(0x00000f80) +#define PIO_SM1_EXECCTRL_WRAP_BOTTOM_MSB _u(11) +#define PIO_SM1_EXECCTRL_WRAP_BOTTOM_LSB _u(7) +#define PIO_SM1_EXECCTRL_WRAP_BOTTOM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_EXECCTRL_STATUS_SEL +// Description : Comparison used for the MOV x, STATUS instruction. +// 0x0 -> All-ones if TX FIFO level < N, otherwise all-zeroes +// 0x1 -> All-ones if RX FIFO level < N, otherwise all-zeroes +#define PIO_SM1_EXECCTRL_STATUS_SEL_RESET _u(0x0) +#define PIO_SM1_EXECCTRL_STATUS_SEL_BITS _u(0x00000010) +#define PIO_SM1_EXECCTRL_STATUS_SEL_MSB _u(4) +#define PIO_SM1_EXECCTRL_STATUS_SEL_LSB _u(4) +#define PIO_SM1_EXECCTRL_STATUS_SEL_ACCESS "RW" +#define PIO_SM1_EXECCTRL_STATUS_SEL_VALUE_TXLEVEL _u(0x0) +#define PIO_SM1_EXECCTRL_STATUS_SEL_VALUE_RXLEVEL _u(0x1) +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_EXECCTRL_STATUS_N +// Description : Comparison level for the MOV x, STATUS instruction +#define PIO_SM1_EXECCTRL_STATUS_N_RESET _u(0x0) +#define PIO_SM1_EXECCTRL_STATUS_N_BITS _u(0x0000000f) +#define PIO_SM1_EXECCTRL_STATUS_N_MSB _u(3) +#define PIO_SM1_EXECCTRL_STATUS_N_LSB _u(0) +#define PIO_SM1_EXECCTRL_STATUS_N_ACCESS "RW" +// ============================================================================= +// Register : PIO_SM1_SHIFTCTRL +// Description : Control behaviour of the input/output shift registers for state +// machine 1 +#define PIO_SM1_SHIFTCTRL_OFFSET _u(0x000000e8) +#define PIO_SM1_SHIFTCTRL_BITS _u(0xffff0000) +#define PIO_SM1_SHIFTCTRL_RESET _u(0x000c0000) +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_SHIFTCTRL_FJOIN_RX +// Description : When 1, RX FIFO steals the TX FIFO's storage, and becomes twice +// as deep. +// TX FIFO is disabled as a result (always reads as both full and +// empty). +// FIFOs are flushed when this bit is changed. +#define PIO_SM1_SHIFTCTRL_FJOIN_RX_RESET _u(0x0) +#define PIO_SM1_SHIFTCTRL_FJOIN_RX_BITS _u(0x80000000) +#define PIO_SM1_SHIFTCTRL_FJOIN_RX_MSB _u(31) +#define PIO_SM1_SHIFTCTRL_FJOIN_RX_LSB _u(31) +#define PIO_SM1_SHIFTCTRL_FJOIN_RX_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_SHIFTCTRL_FJOIN_TX +// Description : When 1, TX FIFO steals the RX FIFO's storage, and becomes twice +// as deep. +// RX FIFO is disabled as a result (always reads as both full and +// empty). +// FIFOs are flushed when this bit is changed. +#define PIO_SM1_SHIFTCTRL_FJOIN_TX_RESET _u(0x0) +#define PIO_SM1_SHIFTCTRL_FJOIN_TX_BITS _u(0x40000000) +#define PIO_SM1_SHIFTCTRL_FJOIN_TX_MSB _u(30) +#define PIO_SM1_SHIFTCTRL_FJOIN_TX_LSB _u(30) +#define PIO_SM1_SHIFTCTRL_FJOIN_TX_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_SHIFTCTRL_PULL_THRESH +// Description : Number of bits shifted out of OSR before autopull, or +// conditional pull (PULL IFEMPTY), will take place. +// Write 0 for value of 32. +#define PIO_SM1_SHIFTCTRL_PULL_THRESH_RESET _u(0x00) +#define PIO_SM1_SHIFTCTRL_PULL_THRESH_BITS _u(0x3e000000) +#define PIO_SM1_SHIFTCTRL_PULL_THRESH_MSB _u(29) +#define PIO_SM1_SHIFTCTRL_PULL_THRESH_LSB _u(25) +#define PIO_SM1_SHIFTCTRL_PULL_THRESH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_SHIFTCTRL_PUSH_THRESH +// Description : Number of bits shifted into ISR before autopush, or conditional +// push (PUSH IFFULL), will take place. +// Write 0 for value of 32. +#define PIO_SM1_SHIFTCTRL_PUSH_THRESH_RESET _u(0x00) +#define PIO_SM1_SHIFTCTRL_PUSH_THRESH_BITS _u(0x01f00000) +#define PIO_SM1_SHIFTCTRL_PUSH_THRESH_MSB _u(24) +#define PIO_SM1_SHIFTCTRL_PUSH_THRESH_LSB _u(20) +#define PIO_SM1_SHIFTCTRL_PUSH_THRESH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_SHIFTCTRL_OUT_SHIFTDIR +// Description : 1 = shift out of output shift register to right. 0 = to left. +#define PIO_SM1_SHIFTCTRL_OUT_SHIFTDIR_RESET _u(0x1) +#define PIO_SM1_SHIFTCTRL_OUT_SHIFTDIR_BITS _u(0x00080000) +#define PIO_SM1_SHIFTCTRL_OUT_SHIFTDIR_MSB _u(19) +#define PIO_SM1_SHIFTCTRL_OUT_SHIFTDIR_LSB _u(19) +#define PIO_SM1_SHIFTCTRL_OUT_SHIFTDIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_SHIFTCTRL_IN_SHIFTDIR +// Description : 1 = shift input shift register to right (data enters from +// left). 0 = to left. +#define PIO_SM1_SHIFTCTRL_IN_SHIFTDIR_RESET _u(0x1) +#define PIO_SM1_SHIFTCTRL_IN_SHIFTDIR_BITS _u(0x00040000) +#define PIO_SM1_SHIFTCTRL_IN_SHIFTDIR_MSB _u(18) +#define PIO_SM1_SHIFTCTRL_IN_SHIFTDIR_LSB _u(18) +#define PIO_SM1_SHIFTCTRL_IN_SHIFTDIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_SHIFTCTRL_AUTOPULL +// Description : Pull automatically when the output shift register is emptied, +// i.e. on or following an OUT instruction which causes the output +// shift counter to reach or exceed PULL_THRESH. +#define PIO_SM1_SHIFTCTRL_AUTOPULL_RESET _u(0x0) +#define PIO_SM1_SHIFTCTRL_AUTOPULL_BITS _u(0x00020000) +#define PIO_SM1_SHIFTCTRL_AUTOPULL_MSB _u(17) +#define PIO_SM1_SHIFTCTRL_AUTOPULL_LSB _u(17) +#define PIO_SM1_SHIFTCTRL_AUTOPULL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_SHIFTCTRL_AUTOPUSH +// Description : Push automatically when the input shift register is filled, +// i.e. on an IN instruction which causes the input shift counter +// to reach or exceed PUSH_THRESH. +#define PIO_SM1_SHIFTCTRL_AUTOPUSH_RESET _u(0x0) +#define PIO_SM1_SHIFTCTRL_AUTOPUSH_BITS _u(0x00010000) +#define PIO_SM1_SHIFTCTRL_AUTOPUSH_MSB _u(16) +#define PIO_SM1_SHIFTCTRL_AUTOPUSH_LSB _u(16) +#define PIO_SM1_SHIFTCTRL_AUTOPUSH_ACCESS "RW" +// ============================================================================= +// Register : PIO_SM1_ADDR +// Description : Current instruction address of state machine 1 +#define PIO_SM1_ADDR_OFFSET _u(0x000000ec) +#define PIO_SM1_ADDR_BITS _u(0x0000001f) +#define PIO_SM1_ADDR_RESET _u(0x00000000) +#define PIO_SM1_ADDR_MSB _u(4) +#define PIO_SM1_ADDR_LSB _u(0) +#define PIO_SM1_ADDR_ACCESS "RO" +// ============================================================================= +// Register : PIO_SM1_INSTR +// Description : Read to see the instruction currently addressed by state +// machine 1's program counter +// Write to execute an instruction immediately (including jumps) +// and then resume execution. +#define PIO_SM1_INSTR_OFFSET _u(0x000000f0) +#define PIO_SM1_INSTR_BITS _u(0x0000ffff) +#define PIO_SM1_INSTR_RESET "-" +#define PIO_SM1_INSTR_MSB _u(15) +#define PIO_SM1_INSTR_LSB _u(0) +#define PIO_SM1_INSTR_ACCESS "RW" +// ============================================================================= +// Register : PIO_SM1_PINCTRL +// Description : State machine pin control +#define PIO_SM1_PINCTRL_OFFSET _u(0x000000f4) +#define PIO_SM1_PINCTRL_BITS _u(0xffffffff) +#define PIO_SM1_PINCTRL_RESET _u(0x14000000) +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_PINCTRL_SIDESET_COUNT +// Description : The number of MSBs of the Delay/Side-set instruction field +// which are used for side-set. Inclusive of the enable bit, if +// present. Minimum of 0 (all delay bits, no side-set) and maximum +// of 5 (all side-set, no delay). +#define PIO_SM1_PINCTRL_SIDESET_COUNT_RESET _u(0x0) +#define PIO_SM1_PINCTRL_SIDESET_COUNT_BITS _u(0xe0000000) +#define PIO_SM1_PINCTRL_SIDESET_COUNT_MSB _u(31) +#define PIO_SM1_PINCTRL_SIDESET_COUNT_LSB _u(29) +#define PIO_SM1_PINCTRL_SIDESET_COUNT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_PINCTRL_SET_COUNT +// Description : The number of pins asserted by a SET. In the range 0 to 5 +// inclusive. +#define PIO_SM1_PINCTRL_SET_COUNT_RESET _u(0x5) +#define PIO_SM1_PINCTRL_SET_COUNT_BITS _u(0x1c000000) +#define PIO_SM1_PINCTRL_SET_COUNT_MSB _u(28) +#define PIO_SM1_PINCTRL_SET_COUNT_LSB _u(26) +#define PIO_SM1_PINCTRL_SET_COUNT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_PINCTRL_OUT_COUNT +// Description : The number of pins asserted by an OUT PINS, OUT PINDIRS or MOV +// PINS instruction. In the range 0 to 32 inclusive. +#define PIO_SM1_PINCTRL_OUT_COUNT_RESET _u(0x00) +#define PIO_SM1_PINCTRL_OUT_COUNT_BITS _u(0x03f00000) +#define PIO_SM1_PINCTRL_OUT_COUNT_MSB _u(25) +#define PIO_SM1_PINCTRL_OUT_COUNT_LSB _u(20) +#define PIO_SM1_PINCTRL_OUT_COUNT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_PINCTRL_IN_BASE +// Description : The pin which is mapped to the least-significant bit of a state +// machine's IN data bus. Higher-numbered pins are mapped to +// consecutively more-significant data bits, with a modulo of 32 +// applied to pin number. +#define PIO_SM1_PINCTRL_IN_BASE_RESET _u(0x00) +#define PIO_SM1_PINCTRL_IN_BASE_BITS _u(0x000f8000) +#define PIO_SM1_PINCTRL_IN_BASE_MSB _u(19) +#define PIO_SM1_PINCTRL_IN_BASE_LSB _u(15) +#define PIO_SM1_PINCTRL_IN_BASE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_PINCTRL_SIDESET_BASE +// Description : The lowest-numbered pin that will be affected by a side-set +// operation. The MSBs of an instruction's side-set/delay field +// (up to 5, determined by SIDESET_COUNT) are used for side-set +// data, with the remaining LSBs used for delay. The +// least-significant bit of the side-set portion is the bit +// written to this pin, with more-significant bits written to +// higher-numbered pins. +#define PIO_SM1_PINCTRL_SIDESET_BASE_RESET _u(0x00) +#define PIO_SM1_PINCTRL_SIDESET_BASE_BITS _u(0x00007c00) +#define PIO_SM1_PINCTRL_SIDESET_BASE_MSB _u(14) +#define PIO_SM1_PINCTRL_SIDESET_BASE_LSB _u(10) +#define PIO_SM1_PINCTRL_SIDESET_BASE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_PINCTRL_SET_BASE +// Description : The lowest-numbered pin that will be affected by a SET PINS or +// SET PINDIRS instruction. The data written to this pin is the +// least-significant bit of the SET data. +#define PIO_SM1_PINCTRL_SET_BASE_RESET _u(0x00) +#define PIO_SM1_PINCTRL_SET_BASE_BITS _u(0x000003e0) +#define PIO_SM1_PINCTRL_SET_BASE_MSB _u(9) +#define PIO_SM1_PINCTRL_SET_BASE_LSB _u(5) +#define PIO_SM1_PINCTRL_SET_BASE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM1_PINCTRL_OUT_BASE +// Description : The lowest-numbered pin that will be affected by an OUT PINS, +// OUT PINDIRS or MOV PINS instruction. The data written to this +// pin will always be the least-significant bit of the OUT or MOV +// data. +#define PIO_SM1_PINCTRL_OUT_BASE_RESET _u(0x00) +#define PIO_SM1_PINCTRL_OUT_BASE_BITS _u(0x0000001f) +#define PIO_SM1_PINCTRL_OUT_BASE_MSB _u(4) +#define PIO_SM1_PINCTRL_OUT_BASE_LSB _u(0) +#define PIO_SM1_PINCTRL_OUT_BASE_ACCESS "RW" +// ============================================================================= +// Register : PIO_SM2_CLKDIV +// Description : Clock divisor register for state machine 2 +// Frequency = clock freq / (CLKDIV_INT + CLKDIV_FRAC / 256) +#define PIO_SM2_CLKDIV_OFFSET _u(0x000000f8) +#define PIO_SM2_CLKDIV_BITS _u(0xffffff00) +#define PIO_SM2_CLKDIV_RESET _u(0x00010000) +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_CLKDIV_INT +// Description : Effective frequency is sysclk/(int + frac/256). +// Value of 0 is interpreted as 65536. If INT is 0, FRAC must also +// be 0. +#define PIO_SM2_CLKDIV_INT_RESET _u(0x0001) +#define PIO_SM2_CLKDIV_INT_BITS _u(0xffff0000) +#define PIO_SM2_CLKDIV_INT_MSB _u(31) +#define PIO_SM2_CLKDIV_INT_LSB _u(16) +#define PIO_SM2_CLKDIV_INT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_CLKDIV_FRAC +// Description : Fractional part of clock divisor +#define PIO_SM2_CLKDIV_FRAC_RESET _u(0x00) +#define PIO_SM2_CLKDIV_FRAC_BITS _u(0x0000ff00) +#define PIO_SM2_CLKDIV_FRAC_MSB _u(15) +#define PIO_SM2_CLKDIV_FRAC_LSB _u(8) +#define PIO_SM2_CLKDIV_FRAC_ACCESS "RW" +// ============================================================================= +// Register : PIO_SM2_EXECCTRL +// Description : Execution/behavioural settings for state machine 2 +#define PIO_SM2_EXECCTRL_OFFSET _u(0x000000fc) +#define PIO_SM2_EXECCTRL_BITS _u(0xffffff9f) +#define PIO_SM2_EXECCTRL_RESET _u(0x0001f000) +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_EXECCTRL_EXEC_STALLED +// Description : If 1, an instruction written to SMx_INSTR is stalled, and +// latched by the state machine. Will clear to 0 once this +// instruction completes. +#define PIO_SM2_EXECCTRL_EXEC_STALLED_RESET _u(0x0) +#define PIO_SM2_EXECCTRL_EXEC_STALLED_BITS _u(0x80000000) +#define PIO_SM2_EXECCTRL_EXEC_STALLED_MSB _u(31) +#define PIO_SM2_EXECCTRL_EXEC_STALLED_LSB _u(31) +#define PIO_SM2_EXECCTRL_EXEC_STALLED_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_EXECCTRL_SIDE_EN +// Description : If 1, the MSB of the Delay/Side-set instruction field is used +// as side-set enable, rather than a side-set data bit. This +// allows instructions to perform side-set optionally, rather than +// on every instruction, but the maximum possible side-set width +// is reduced from 5 to 4. Note that the value of +// PINCTRL_SIDESET_COUNT is inclusive of this enable bit. +#define PIO_SM2_EXECCTRL_SIDE_EN_RESET _u(0x0) +#define PIO_SM2_EXECCTRL_SIDE_EN_BITS _u(0x40000000) +#define PIO_SM2_EXECCTRL_SIDE_EN_MSB _u(30) +#define PIO_SM2_EXECCTRL_SIDE_EN_LSB _u(30) +#define PIO_SM2_EXECCTRL_SIDE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_EXECCTRL_SIDE_PINDIR +// Description : If 1, side-set data is asserted to pin directions, instead of +// pin values +#define PIO_SM2_EXECCTRL_SIDE_PINDIR_RESET _u(0x0) +#define PIO_SM2_EXECCTRL_SIDE_PINDIR_BITS _u(0x20000000) +#define PIO_SM2_EXECCTRL_SIDE_PINDIR_MSB _u(29) +#define PIO_SM2_EXECCTRL_SIDE_PINDIR_LSB _u(29) +#define PIO_SM2_EXECCTRL_SIDE_PINDIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_EXECCTRL_JMP_PIN +// Description : The GPIO number to use as condition for JMP PIN. Unaffected by +// input mapping. +#define PIO_SM2_EXECCTRL_JMP_PIN_RESET _u(0x00) +#define PIO_SM2_EXECCTRL_JMP_PIN_BITS _u(0x1f000000) +#define PIO_SM2_EXECCTRL_JMP_PIN_MSB _u(28) +#define PIO_SM2_EXECCTRL_JMP_PIN_LSB _u(24) +#define PIO_SM2_EXECCTRL_JMP_PIN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_EXECCTRL_OUT_EN_SEL +// Description : Which data bit to use for inline OUT enable +#define PIO_SM2_EXECCTRL_OUT_EN_SEL_RESET _u(0x00) +#define PIO_SM2_EXECCTRL_OUT_EN_SEL_BITS _u(0x00f80000) +#define PIO_SM2_EXECCTRL_OUT_EN_SEL_MSB _u(23) +#define PIO_SM2_EXECCTRL_OUT_EN_SEL_LSB _u(19) +#define PIO_SM2_EXECCTRL_OUT_EN_SEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_EXECCTRL_INLINE_OUT_EN +// Description : If 1, use a bit of OUT data as an auxiliary write enable +// When used in conjunction with OUT_STICKY, writes with an enable +// of 0 will +// deassert the latest pin write. This can create useful +// masking/override behaviour +// due to the priority ordering of state machine pin writes (SM0 < +// SM1 < ...) +#define PIO_SM2_EXECCTRL_INLINE_OUT_EN_RESET _u(0x0) +#define PIO_SM2_EXECCTRL_INLINE_OUT_EN_BITS _u(0x00040000) +#define PIO_SM2_EXECCTRL_INLINE_OUT_EN_MSB _u(18) +#define PIO_SM2_EXECCTRL_INLINE_OUT_EN_LSB _u(18) +#define PIO_SM2_EXECCTRL_INLINE_OUT_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_EXECCTRL_OUT_STICKY +// Description : Continuously assert the most recent OUT/SET to the pins +#define PIO_SM2_EXECCTRL_OUT_STICKY_RESET _u(0x0) +#define PIO_SM2_EXECCTRL_OUT_STICKY_BITS _u(0x00020000) +#define PIO_SM2_EXECCTRL_OUT_STICKY_MSB _u(17) +#define PIO_SM2_EXECCTRL_OUT_STICKY_LSB _u(17) +#define PIO_SM2_EXECCTRL_OUT_STICKY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_EXECCTRL_WRAP_TOP +// Description : After reaching this address, execution is wrapped to +// wrap_bottom. +// If the instruction is a jump, and the jump condition is true, +// the jump takes priority. +#define PIO_SM2_EXECCTRL_WRAP_TOP_RESET _u(0x1f) +#define PIO_SM2_EXECCTRL_WRAP_TOP_BITS _u(0x0001f000) +#define PIO_SM2_EXECCTRL_WRAP_TOP_MSB _u(16) +#define PIO_SM2_EXECCTRL_WRAP_TOP_LSB _u(12) +#define PIO_SM2_EXECCTRL_WRAP_TOP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_EXECCTRL_WRAP_BOTTOM +// Description : After reaching wrap_top, execution is wrapped to this address. +#define PIO_SM2_EXECCTRL_WRAP_BOTTOM_RESET _u(0x00) +#define PIO_SM2_EXECCTRL_WRAP_BOTTOM_BITS _u(0x00000f80) +#define PIO_SM2_EXECCTRL_WRAP_BOTTOM_MSB _u(11) +#define PIO_SM2_EXECCTRL_WRAP_BOTTOM_LSB _u(7) +#define PIO_SM2_EXECCTRL_WRAP_BOTTOM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_EXECCTRL_STATUS_SEL +// Description : Comparison used for the MOV x, STATUS instruction. +// 0x0 -> All-ones if TX FIFO level < N, otherwise all-zeroes +// 0x1 -> All-ones if RX FIFO level < N, otherwise all-zeroes +#define PIO_SM2_EXECCTRL_STATUS_SEL_RESET _u(0x0) +#define PIO_SM2_EXECCTRL_STATUS_SEL_BITS _u(0x00000010) +#define PIO_SM2_EXECCTRL_STATUS_SEL_MSB _u(4) +#define PIO_SM2_EXECCTRL_STATUS_SEL_LSB _u(4) +#define PIO_SM2_EXECCTRL_STATUS_SEL_ACCESS "RW" +#define PIO_SM2_EXECCTRL_STATUS_SEL_VALUE_TXLEVEL _u(0x0) +#define PIO_SM2_EXECCTRL_STATUS_SEL_VALUE_RXLEVEL _u(0x1) +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_EXECCTRL_STATUS_N +// Description : Comparison level for the MOV x, STATUS instruction +#define PIO_SM2_EXECCTRL_STATUS_N_RESET _u(0x0) +#define PIO_SM2_EXECCTRL_STATUS_N_BITS _u(0x0000000f) +#define PIO_SM2_EXECCTRL_STATUS_N_MSB _u(3) +#define PIO_SM2_EXECCTRL_STATUS_N_LSB _u(0) +#define PIO_SM2_EXECCTRL_STATUS_N_ACCESS "RW" +// ============================================================================= +// Register : PIO_SM2_SHIFTCTRL +// Description : Control behaviour of the input/output shift registers for state +// machine 2 +#define PIO_SM2_SHIFTCTRL_OFFSET _u(0x00000100) +#define PIO_SM2_SHIFTCTRL_BITS _u(0xffff0000) +#define PIO_SM2_SHIFTCTRL_RESET _u(0x000c0000) +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_SHIFTCTRL_FJOIN_RX +// Description : When 1, RX FIFO steals the TX FIFO's storage, and becomes twice +// as deep. +// TX FIFO is disabled as a result (always reads as both full and +// empty). +// FIFOs are flushed when this bit is changed. +#define PIO_SM2_SHIFTCTRL_FJOIN_RX_RESET _u(0x0) +#define PIO_SM2_SHIFTCTRL_FJOIN_RX_BITS _u(0x80000000) +#define PIO_SM2_SHIFTCTRL_FJOIN_RX_MSB _u(31) +#define PIO_SM2_SHIFTCTRL_FJOIN_RX_LSB _u(31) +#define PIO_SM2_SHIFTCTRL_FJOIN_RX_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_SHIFTCTRL_FJOIN_TX +// Description : When 1, TX FIFO steals the RX FIFO's storage, and becomes twice +// as deep. +// RX FIFO is disabled as a result (always reads as both full and +// empty). +// FIFOs are flushed when this bit is changed. +#define PIO_SM2_SHIFTCTRL_FJOIN_TX_RESET _u(0x0) +#define PIO_SM2_SHIFTCTRL_FJOIN_TX_BITS _u(0x40000000) +#define PIO_SM2_SHIFTCTRL_FJOIN_TX_MSB _u(30) +#define PIO_SM2_SHIFTCTRL_FJOIN_TX_LSB _u(30) +#define PIO_SM2_SHIFTCTRL_FJOIN_TX_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_SHIFTCTRL_PULL_THRESH +// Description : Number of bits shifted out of OSR before autopull, or +// conditional pull (PULL IFEMPTY), will take place. +// Write 0 for value of 32. +#define PIO_SM2_SHIFTCTRL_PULL_THRESH_RESET _u(0x00) +#define PIO_SM2_SHIFTCTRL_PULL_THRESH_BITS _u(0x3e000000) +#define PIO_SM2_SHIFTCTRL_PULL_THRESH_MSB _u(29) +#define PIO_SM2_SHIFTCTRL_PULL_THRESH_LSB _u(25) +#define PIO_SM2_SHIFTCTRL_PULL_THRESH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_SHIFTCTRL_PUSH_THRESH +// Description : Number of bits shifted into ISR before autopush, or conditional +// push (PUSH IFFULL), will take place. +// Write 0 for value of 32. +#define PIO_SM2_SHIFTCTRL_PUSH_THRESH_RESET _u(0x00) +#define PIO_SM2_SHIFTCTRL_PUSH_THRESH_BITS _u(0x01f00000) +#define PIO_SM2_SHIFTCTRL_PUSH_THRESH_MSB _u(24) +#define PIO_SM2_SHIFTCTRL_PUSH_THRESH_LSB _u(20) +#define PIO_SM2_SHIFTCTRL_PUSH_THRESH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_SHIFTCTRL_OUT_SHIFTDIR +// Description : 1 = shift out of output shift register to right. 0 = to left. +#define PIO_SM2_SHIFTCTRL_OUT_SHIFTDIR_RESET _u(0x1) +#define PIO_SM2_SHIFTCTRL_OUT_SHIFTDIR_BITS _u(0x00080000) +#define PIO_SM2_SHIFTCTRL_OUT_SHIFTDIR_MSB _u(19) +#define PIO_SM2_SHIFTCTRL_OUT_SHIFTDIR_LSB _u(19) +#define PIO_SM2_SHIFTCTRL_OUT_SHIFTDIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_SHIFTCTRL_IN_SHIFTDIR +// Description : 1 = shift input shift register to right (data enters from +// left). 0 = to left. +#define PIO_SM2_SHIFTCTRL_IN_SHIFTDIR_RESET _u(0x1) +#define PIO_SM2_SHIFTCTRL_IN_SHIFTDIR_BITS _u(0x00040000) +#define PIO_SM2_SHIFTCTRL_IN_SHIFTDIR_MSB _u(18) +#define PIO_SM2_SHIFTCTRL_IN_SHIFTDIR_LSB _u(18) +#define PIO_SM2_SHIFTCTRL_IN_SHIFTDIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_SHIFTCTRL_AUTOPULL +// Description : Pull automatically when the output shift register is emptied, +// i.e. on or following an OUT instruction which causes the output +// shift counter to reach or exceed PULL_THRESH. +#define PIO_SM2_SHIFTCTRL_AUTOPULL_RESET _u(0x0) +#define PIO_SM2_SHIFTCTRL_AUTOPULL_BITS _u(0x00020000) +#define PIO_SM2_SHIFTCTRL_AUTOPULL_MSB _u(17) +#define PIO_SM2_SHIFTCTRL_AUTOPULL_LSB _u(17) +#define PIO_SM2_SHIFTCTRL_AUTOPULL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_SHIFTCTRL_AUTOPUSH +// Description : Push automatically when the input shift register is filled, +// i.e. on an IN instruction which causes the input shift counter +// to reach or exceed PUSH_THRESH. +#define PIO_SM2_SHIFTCTRL_AUTOPUSH_RESET _u(0x0) +#define PIO_SM2_SHIFTCTRL_AUTOPUSH_BITS _u(0x00010000) +#define PIO_SM2_SHIFTCTRL_AUTOPUSH_MSB _u(16) +#define PIO_SM2_SHIFTCTRL_AUTOPUSH_LSB _u(16) +#define PIO_SM2_SHIFTCTRL_AUTOPUSH_ACCESS "RW" +// ============================================================================= +// Register : PIO_SM2_ADDR +// Description : Current instruction address of state machine 2 +#define PIO_SM2_ADDR_OFFSET _u(0x00000104) +#define PIO_SM2_ADDR_BITS _u(0x0000001f) +#define PIO_SM2_ADDR_RESET _u(0x00000000) +#define PIO_SM2_ADDR_MSB _u(4) +#define PIO_SM2_ADDR_LSB _u(0) +#define PIO_SM2_ADDR_ACCESS "RO" +// ============================================================================= +// Register : PIO_SM2_INSTR +// Description : Read to see the instruction currently addressed by state +// machine 2's program counter +// Write to execute an instruction immediately (including jumps) +// and then resume execution. +#define PIO_SM2_INSTR_OFFSET _u(0x00000108) +#define PIO_SM2_INSTR_BITS _u(0x0000ffff) +#define PIO_SM2_INSTR_RESET "-" +#define PIO_SM2_INSTR_MSB _u(15) +#define PIO_SM2_INSTR_LSB _u(0) +#define PIO_SM2_INSTR_ACCESS "RW" +// ============================================================================= +// Register : PIO_SM2_PINCTRL +// Description : State machine pin control +#define PIO_SM2_PINCTRL_OFFSET _u(0x0000010c) +#define PIO_SM2_PINCTRL_BITS _u(0xffffffff) +#define PIO_SM2_PINCTRL_RESET _u(0x14000000) +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_PINCTRL_SIDESET_COUNT +// Description : The number of MSBs of the Delay/Side-set instruction field +// which are used for side-set. Inclusive of the enable bit, if +// present. Minimum of 0 (all delay bits, no side-set) and maximum +// of 5 (all side-set, no delay). +#define PIO_SM2_PINCTRL_SIDESET_COUNT_RESET _u(0x0) +#define PIO_SM2_PINCTRL_SIDESET_COUNT_BITS _u(0xe0000000) +#define PIO_SM2_PINCTRL_SIDESET_COUNT_MSB _u(31) +#define PIO_SM2_PINCTRL_SIDESET_COUNT_LSB _u(29) +#define PIO_SM2_PINCTRL_SIDESET_COUNT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_PINCTRL_SET_COUNT +// Description : The number of pins asserted by a SET. In the range 0 to 5 +// inclusive. +#define PIO_SM2_PINCTRL_SET_COUNT_RESET _u(0x5) +#define PIO_SM2_PINCTRL_SET_COUNT_BITS _u(0x1c000000) +#define PIO_SM2_PINCTRL_SET_COUNT_MSB _u(28) +#define PIO_SM2_PINCTRL_SET_COUNT_LSB _u(26) +#define PIO_SM2_PINCTRL_SET_COUNT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_PINCTRL_OUT_COUNT +// Description : The number of pins asserted by an OUT PINS, OUT PINDIRS or MOV +// PINS instruction. In the range 0 to 32 inclusive. +#define PIO_SM2_PINCTRL_OUT_COUNT_RESET _u(0x00) +#define PIO_SM2_PINCTRL_OUT_COUNT_BITS _u(0x03f00000) +#define PIO_SM2_PINCTRL_OUT_COUNT_MSB _u(25) +#define PIO_SM2_PINCTRL_OUT_COUNT_LSB _u(20) +#define PIO_SM2_PINCTRL_OUT_COUNT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_PINCTRL_IN_BASE +// Description : The pin which is mapped to the least-significant bit of a state +// machine's IN data bus. Higher-numbered pins are mapped to +// consecutively more-significant data bits, with a modulo of 32 +// applied to pin number. +#define PIO_SM2_PINCTRL_IN_BASE_RESET _u(0x00) +#define PIO_SM2_PINCTRL_IN_BASE_BITS _u(0x000f8000) +#define PIO_SM2_PINCTRL_IN_BASE_MSB _u(19) +#define PIO_SM2_PINCTRL_IN_BASE_LSB _u(15) +#define PIO_SM2_PINCTRL_IN_BASE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_PINCTRL_SIDESET_BASE +// Description : The lowest-numbered pin that will be affected by a side-set +// operation. The MSBs of an instruction's side-set/delay field +// (up to 5, determined by SIDESET_COUNT) are used for side-set +// data, with the remaining LSBs used for delay. The +// least-significant bit of the side-set portion is the bit +// written to this pin, with more-significant bits written to +// higher-numbered pins. +#define PIO_SM2_PINCTRL_SIDESET_BASE_RESET _u(0x00) +#define PIO_SM2_PINCTRL_SIDESET_BASE_BITS _u(0x00007c00) +#define PIO_SM2_PINCTRL_SIDESET_BASE_MSB _u(14) +#define PIO_SM2_PINCTRL_SIDESET_BASE_LSB _u(10) +#define PIO_SM2_PINCTRL_SIDESET_BASE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_PINCTRL_SET_BASE +// Description : The lowest-numbered pin that will be affected by a SET PINS or +// SET PINDIRS instruction. The data written to this pin is the +// least-significant bit of the SET data. +#define PIO_SM2_PINCTRL_SET_BASE_RESET _u(0x00) +#define PIO_SM2_PINCTRL_SET_BASE_BITS _u(0x000003e0) +#define PIO_SM2_PINCTRL_SET_BASE_MSB _u(9) +#define PIO_SM2_PINCTRL_SET_BASE_LSB _u(5) +#define PIO_SM2_PINCTRL_SET_BASE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM2_PINCTRL_OUT_BASE +// Description : The lowest-numbered pin that will be affected by an OUT PINS, +// OUT PINDIRS or MOV PINS instruction. The data written to this +// pin will always be the least-significant bit of the OUT or MOV +// data. +#define PIO_SM2_PINCTRL_OUT_BASE_RESET _u(0x00) +#define PIO_SM2_PINCTRL_OUT_BASE_BITS _u(0x0000001f) +#define PIO_SM2_PINCTRL_OUT_BASE_MSB _u(4) +#define PIO_SM2_PINCTRL_OUT_BASE_LSB _u(0) +#define PIO_SM2_PINCTRL_OUT_BASE_ACCESS "RW" +// ============================================================================= +// Register : PIO_SM3_CLKDIV +// Description : Clock divisor register for state machine 3 +// Frequency = clock freq / (CLKDIV_INT + CLKDIV_FRAC / 256) +#define PIO_SM3_CLKDIV_OFFSET _u(0x00000110) +#define PIO_SM3_CLKDIV_BITS _u(0xffffff00) +#define PIO_SM3_CLKDIV_RESET _u(0x00010000) +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_CLKDIV_INT +// Description : Effective frequency is sysclk/(int + frac/256). +// Value of 0 is interpreted as 65536. If INT is 0, FRAC must also +// be 0. +#define PIO_SM3_CLKDIV_INT_RESET _u(0x0001) +#define PIO_SM3_CLKDIV_INT_BITS _u(0xffff0000) +#define PIO_SM3_CLKDIV_INT_MSB _u(31) +#define PIO_SM3_CLKDIV_INT_LSB _u(16) +#define PIO_SM3_CLKDIV_INT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_CLKDIV_FRAC +// Description : Fractional part of clock divisor +#define PIO_SM3_CLKDIV_FRAC_RESET _u(0x00) +#define PIO_SM3_CLKDIV_FRAC_BITS _u(0x0000ff00) +#define PIO_SM3_CLKDIV_FRAC_MSB _u(15) +#define PIO_SM3_CLKDIV_FRAC_LSB _u(8) +#define PIO_SM3_CLKDIV_FRAC_ACCESS "RW" +// ============================================================================= +// Register : PIO_SM3_EXECCTRL +// Description : Execution/behavioural settings for state machine 3 +#define PIO_SM3_EXECCTRL_OFFSET _u(0x00000114) +#define PIO_SM3_EXECCTRL_BITS _u(0xffffff9f) +#define PIO_SM3_EXECCTRL_RESET _u(0x0001f000) +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_EXECCTRL_EXEC_STALLED +// Description : If 1, an instruction written to SMx_INSTR is stalled, and +// latched by the state machine. Will clear to 0 once this +// instruction completes. +#define PIO_SM3_EXECCTRL_EXEC_STALLED_RESET _u(0x0) +#define PIO_SM3_EXECCTRL_EXEC_STALLED_BITS _u(0x80000000) +#define PIO_SM3_EXECCTRL_EXEC_STALLED_MSB _u(31) +#define PIO_SM3_EXECCTRL_EXEC_STALLED_LSB _u(31) +#define PIO_SM3_EXECCTRL_EXEC_STALLED_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_EXECCTRL_SIDE_EN +// Description : If 1, the MSB of the Delay/Side-set instruction field is used +// as side-set enable, rather than a side-set data bit. This +// allows instructions to perform side-set optionally, rather than +// on every instruction, but the maximum possible side-set width +// is reduced from 5 to 4. Note that the value of +// PINCTRL_SIDESET_COUNT is inclusive of this enable bit. +#define PIO_SM3_EXECCTRL_SIDE_EN_RESET _u(0x0) +#define PIO_SM3_EXECCTRL_SIDE_EN_BITS _u(0x40000000) +#define PIO_SM3_EXECCTRL_SIDE_EN_MSB _u(30) +#define PIO_SM3_EXECCTRL_SIDE_EN_LSB _u(30) +#define PIO_SM3_EXECCTRL_SIDE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_EXECCTRL_SIDE_PINDIR +// Description : If 1, side-set data is asserted to pin directions, instead of +// pin values +#define PIO_SM3_EXECCTRL_SIDE_PINDIR_RESET _u(0x0) +#define PIO_SM3_EXECCTRL_SIDE_PINDIR_BITS _u(0x20000000) +#define PIO_SM3_EXECCTRL_SIDE_PINDIR_MSB _u(29) +#define PIO_SM3_EXECCTRL_SIDE_PINDIR_LSB _u(29) +#define PIO_SM3_EXECCTRL_SIDE_PINDIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_EXECCTRL_JMP_PIN +// Description : The GPIO number to use as condition for JMP PIN. Unaffected by +// input mapping. +#define PIO_SM3_EXECCTRL_JMP_PIN_RESET _u(0x00) +#define PIO_SM3_EXECCTRL_JMP_PIN_BITS _u(0x1f000000) +#define PIO_SM3_EXECCTRL_JMP_PIN_MSB _u(28) +#define PIO_SM3_EXECCTRL_JMP_PIN_LSB _u(24) +#define PIO_SM3_EXECCTRL_JMP_PIN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_EXECCTRL_OUT_EN_SEL +// Description : Which data bit to use for inline OUT enable +#define PIO_SM3_EXECCTRL_OUT_EN_SEL_RESET _u(0x00) +#define PIO_SM3_EXECCTRL_OUT_EN_SEL_BITS _u(0x00f80000) +#define PIO_SM3_EXECCTRL_OUT_EN_SEL_MSB _u(23) +#define PIO_SM3_EXECCTRL_OUT_EN_SEL_LSB _u(19) +#define PIO_SM3_EXECCTRL_OUT_EN_SEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_EXECCTRL_INLINE_OUT_EN +// Description : If 1, use a bit of OUT data as an auxiliary write enable +// When used in conjunction with OUT_STICKY, writes with an enable +// of 0 will +// deassert the latest pin write. This can create useful +// masking/override behaviour +// due to the priority ordering of state machine pin writes (SM0 < +// SM1 < ...) +#define PIO_SM3_EXECCTRL_INLINE_OUT_EN_RESET _u(0x0) +#define PIO_SM3_EXECCTRL_INLINE_OUT_EN_BITS _u(0x00040000) +#define PIO_SM3_EXECCTRL_INLINE_OUT_EN_MSB _u(18) +#define PIO_SM3_EXECCTRL_INLINE_OUT_EN_LSB _u(18) +#define PIO_SM3_EXECCTRL_INLINE_OUT_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_EXECCTRL_OUT_STICKY +// Description : Continuously assert the most recent OUT/SET to the pins +#define PIO_SM3_EXECCTRL_OUT_STICKY_RESET _u(0x0) +#define PIO_SM3_EXECCTRL_OUT_STICKY_BITS _u(0x00020000) +#define PIO_SM3_EXECCTRL_OUT_STICKY_MSB _u(17) +#define PIO_SM3_EXECCTRL_OUT_STICKY_LSB _u(17) +#define PIO_SM3_EXECCTRL_OUT_STICKY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_EXECCTRL_WRAP_TOP +// Description : After reaching this address, execution is wrapped to +// wrap_bottom. +// If the instruction is a jump, and the jump condition is true, +// the jump takes priority. +#define PIO_SM3_EXECCTRL_WRAP_TOP_RESET _u(0x1f) +#define PIO_SM3_EXECCTRL_WRAP_TOP_BITS _u(0x0001f000) +#define PIO_SM3_EXECCTRL_WRAP_TOP_MSB _u(16) +#define PIO_SM3_EXECCTRL_WRAP_TOP_LSB _u(12) +#define PIO_SM3_EXECCTRL_WRAP_TOP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_EXECCTRL_WRAP_BOTTOM +// Description : After reaching wrap_top, execution is wrapped to this address. +#define PIO_SM3_EXECCTRL_WRAP_BOTTOM_RESET _u(0x00) +#define PIO_SM3_EXECCTRL_WRAP_BOTTOM_BITS _u(0x00000f80) +#define PIO_SM3_EXECCTRL_WRAP_BOTTOM_MSB _u(11) +#define PIO_SM3_EXECCTRL_WRAP_BOTTOM_LSB _u(7) +#define PIO_SM3_EXECCTRL_WRAP_BOTTOM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_EXECCTRL_STATUS_SEL +// Description : Comparison used for the MOV x, STATUS instruction. +// 0x0 -> All-ones if TX FIFO level < N, otherwise all-zeroes +// 0x1 -> All-ones if RX FIFO level < N, otherwise all-zeroes +#define PIO_SM3_EXECCTRL_STATUS_SEL_RESET _u(0x0) +#define PIO_SM3_EXECCTRL_STATUS_SEL_BITS _u(0x00000010) +#define PIO_SM3_EXECCTRL_STATUS_SEL_MSB _u(4) +#define PIO_SM3_EXECCTRL_STATUS_SEL_LSB _u(4) +#define PIO_SM3_EXECCTRL_STATUS_SEL_ACCESS "RW" +#define PIO_SM3_EXECCTRL_STATUS_SEL_VALUE_TXLEVEL _u(0x0) +#define PIO_SM3_EXECCTRL_STATUS_SEL_VALUE_RXLEVEL _u(0x1) +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_EXECCTRL_STATUS_N +// Description : Comparison level for the MOV x, STATUS instruction +#define PIO_SM3_EXECCTRL_STATUS_N_RESET _u(0x0) +#define PIO_SM3_EXECCTRL_STATUS_N_BITS _u(0x0000000f) +#define PIO_SM3_EXECCTRL_STATUS_N_MSB _u(3) +#define PIO_SM3_EXECCTRL_STATUS_N_LSB _u(0) +#define PIO_SM3_EXECCTRL_STATUS_N_ACCESS "RW" +// ============================================================================= +// Register : PIO_SM3_SHIFTCTRL +// Description : Control behaviour of the input/output shift registers for state +// machine 3 +#define PIO_SM3_SHIFTCTRL_OFFSET _u(0x00000118) +#define PIO_SM3_SHIFTCTRL_BITS _u(0xffff0000) +#define PIO_SM3_SHIFTCTRL_RESET _u(0x000c0000) +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_SHIFTCTRL_FJOIN_RX +// Description : When 1, RX FIFO steals the TX FIFO's storage, and becomes twice +// as deep. +// TX FIFO is disabled as a result (always reads as both full and +// empty). +// FIFOs are flushed when this bit is changed. +#define PIO_SM3_SHIFTCTRL_FJOIN_RX_RESET _u(0x0) +#define PIO_SM3_SHIFTCTRL_FJOIN_RX_BITS _u(0x80000000) +#define PIO_SM3_SHIFTCTRL_FJOIN_RX_MSB _u(31) +#define PIO_SM3_SHIFTCTRL_FJOIN_RX_LSB _u(31) +#define PIO_SM3_SHIFTCTRL_FJOIN_RX_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_SHIFTCTRL_FJOIN_TX +// Description : When 1, TX FIFO steals the RX FIFO's storage, and becomes twice +// as deep. +// RX FIFO is disabled as a result (always reads as both full and +// empty). +// FIFOs are flushed when this bit is changed. +#define PIO_SM3_SHIFTCTRL_FJOIN_TX_RESET _u(0x0) +#define PIO_SM3_SHIFTCTRL_FJOIN_TX_BITS _u(0x40000000) +#define PIO_SM3_SHIFTCTRL_FJOIN_TX_MSB _u(30) +#define PIO_SM3_SHIFTCTRL_FJOIN_TX_LSB _u(30) +#define PIO_SM3_SHIFTCTRL_FJOIN_TX_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_SHIFTCTRL_PULL_THRESH +// Description : Number of bits shifted out of OSR before autopull, or +// conditional pull (PULL IFEMPTY), will take place. +// Write 0 for value of 32. +#define PIO_SM3_SHIFTCTRL_PULL_THRESH_RESET _u(0x00) +#define PIO_SM3_SHIFTCTRL_PULL_THRESH_BITS _u(0x3e000000) +#define PIO_SM3_SHIFTCTRL_PULL_THRESH_MSB _u(29) +#define PIO_SM3_SHIFTCTRL_PULL_THRESH_LSB _u(25) +#define PIO_SM3_SHIFTCTRL_PULL_THRESH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_SHIFTCTRL_PUSH_THRESH +// Description : Number of bits shifted into ISR before autopush, or conditional +// push (PUSH IFFULL), will take place. +// Write 0 for value of 32. +#define PIO_SM3_SHIFTCTRL_PUSH_THRESH_RESET _u(0x00) +#define PIO_SM3_SHIFTCTRL_PUSH_THRESH_BITS _u(0x01f00000) +#define PIO_SM3_SHIFTCTRL_PUSH_THRESH_MSB _u(24) +#define PIO_SM3_SHIFTCTRL_PUSH_THRESH_LSB _u(20) +#define PIO_SM3_SHIFTCTRL_PUSH_THRESH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_SHIFTCTRL_OUT_SHIFTDIR +// Description : 1 = shift out of output shift register to right. 0 = to left. +#define PIO_SM3_SHIFTCTRL_OUT_SHIFTDIR_RESET _u(0x1) +#define PIO_SM3_SHIFTCTRL_OUT_SHIFTDIR_BITS _u(0x00080000) +#define PIO_SM3_SHIFTCTRL_OUT_SHIFTDIR_MSB _u(19) +#define PIO_SM3_SHIFTCTRL_OUT_SHIFTDIR_LSB _u(19) +#define PIO_SM3_SHIFTCTRL_OUT_SHIFTDIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_SHIFTCTRL_IN_SHIFTDIR +// Description : 1 = shift input shift register to right (data enters from +// left). 0 = to left. +#define PIO_SM3_SHIFTCTRL_IN_SHIFTDIR_RESET _u(0x1) +#define PIO_SM3_SHIFTCTRL_IN_SHIFTDIR_BITS _u(0x00040000) +#define PIO_SM3_SHIFTCTRL_IN_SHIFTDIR_MSB _u(18) +#define PIO_SM3_SHIFTCTRL_IN_SHIFTDIR_LSB _u(18) +#define PIO_SM3_SHIFTCTRL_IN_SHIFTDIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_SHIFTCTRL_AUTOPULL +// Description : Pull automatically when the output shift register is emptied, +// i.e. on or following an OUT instruction which causes the output +// shift counter to reach or exceed PULL_THRESH. +#define PIO_SM3_SHIFTCTRL_AUTOPULL_RESET _u(0x0) +#define PIO_SM3_SHIFTCTRL_AUTOPULL_BITS _u(0x00020000) +#define PIO_SM3_SHIFTCTRL_AUTOPULL_MSB _u(17) +#define PIO_SM3_SHIFTCTRL_AUTOPULL_LSB _u(17) +#define PIO_SM3_SHIFTCTRL_AUTOPULL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_SHIFTCTRL_AUTOPUSH +// Description : Push automatically when the input shift register is filled, +// i.e. on an IN instruction which causes the input shift counter +// to reach or exceed PUSH_THRESH. +#define PIO_SM3_SHIFTCTRL_AUTOPUSH_RESET _u(0x0) +#define PIO_SM3_SHIFTCTRL_AUTOPUSH_BITS _u(0x00010000) +#define PIO_SM3_SHIFTCTRL_AUTOPUSH_MSB _u(16) +#define PIO_SM3_SHIFTCTRL_AUTOPUSH_LSB _u(16) +#define PIO_SM3_SHIFTCTRL_AUTOPUSH_ACCESS "RW" +// ============================================================================= +// Register : PIO_SM3_ADDR +// Description : Current instruction address of state machine 3 +#define PIO_SM3_ADDR_OFFSET _u(0x0000011c) +#define PIO_SM3_ADDR_BITS _u(0x0000001f) +#define PIO_SM3_ADDR_RESET _u(0x00000000) +#define PIO_SM3_ADDR_MSB _u(4) +#define PIO_SM3_ADDR_LSB _u(0) +#define PIO_SM3_ADDR_ACCESS "RO" +// ============================================================================= +// Register : PIO_SM3_INSTR +// Description : Read to see the instruction currently addressed by state +// machine 3's program counter +// Write to execute an instruction immediately (including jumps) +// and then resume execution. +#define PIO_SM3_INSTR_OFFSET _u(0x00000120) +#define PIO_SM3_INSTR_BITS _u(0x0000ffff) +#define PIO_SM3_INSTR_RESET "-" +#define PIO_SM3_INSTR_MSB _u(15) +#define PIO_SM3_INSTR_LSB _u(0) +#define PIO_SM3_INSTR_ACCESS "RW" +// ============================================================================= +// Register : PIO_SM3_PINCTRL +// Description : State machine pin control +#define PIO_SM3_PINCTRL_OFFSET _u(0x00000124) +#define PIO_SM3_PINCTRL_BITS _u(0xffffffff) +#define PIO_SM3_PINCTRL_RESET _u(0x14000000) +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_PINCTRL_SIDESET_COUNT +// Description : The number of MSBs of the Delay/Side-set instruction field +// which are used for side-set. Inclusive of the enable bit, if +// present. Minimum of 0 (all delay bits, no side-set) and maximum +// of 5 (all side-set, no delay). +#define PIO_SM3_PINCTRL_SIDESET_COUNT_RESET _u(0x0) +#define PIO_SM3_PINCTRL_SIDESET_COUNT_BITS _u(0xe0000000) +#define PIO_SM3_PINCTRL_SIDESET_COUNT_MSB _u(31) +#define PIO_SM3_PINCTRL_SIDESET_COUNT_LSB _u(29) +#define PIO_SM3_PINCTRL_SIDESET_COUNT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_PINCTRL_SET_COUNT +// Description : The number of pins asserted by a SET. In the range 0 to 5 +// inclusive. +#define PIO_SM3_PINCTRL_SET_COUNT_RESET _u(0x5) +#define PIO_SM3_PINCTRL_SET_COUNT_BITS _u(0x1c000000) +#define PIO_SM3_PINCTRL_SET_COUNT_MSB _u(28) +#define PIO_SM3_PINCTRL_SET_COUNT_LSB _u(26) +#define PIO_SM3_PINCTRL_SET_COUNT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_PINCTRL_OUT_COUNT +// Description : The number of pins asserted by an OUT PINS, OUT PINDIRS or MOV +// PINS instruction. In the range 0 to 32 inclusive. +#define PIO_SM3_PINCTRL_OUT_COUNT_RESET _u(0x00) +#define PIO_SM3_PINCTRL_OUT_COUNT_BITS _u(0x03f00000) +#define PIO_SM3_PINCTRL_OUT_COUNT_MSB _u(25) +#define PIO_SM3_PINCTRL_OUT_COUNT_LSB _u(20) +#define PIO_SM3_PINCTRL_OUT_COUNT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_PINCTRL_IN_BASE +// Description : The pin which is mapped to the least-significant bit of a state +// machine's IN data bus. Higher-numbered pins are mapped to +// consecutively more-significant data bits, with a modulo of 32 +// applied to pin number. +#define PIO_SM3_PINCTRL_IN_BASE_RESET _u(0x00) +#define PIO_SM3_PINCTRL_IN_BASE_BITS _u(0x000f8000) +#define PIO_SM3_PINCTRL_IN_BASE_MSB _u(19) +#define PIO_SM3_PINCTRL_IN_BASE_LSB _u(15) +#define PIO_SM3_PINCTRL_IN_BASE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_PINCTRL_SIDESET_BASE +// Description : The lowest-numbered pin that will be affected by a side-set +// operation. The MSBs of an instruction's side-set/delay field +// (up to 5, determined by SIDESET_COUNT) are used for side-set +// data, with the remaining LSBs used for delay. The +// least-significant bit of the side-set portion is the bit +// written to this pin, with more-significant bits written to +// higher-numbered pins. +#define PIO_SM3_PINCTRL_SIDESET_BASE_RESET _u(0x00) +#define PIO_SM3_PINCTRL_SIDESET_BASE_BITS _u(0x00007c00) +#define PIO_SM3_PINCTRL_SIDESET_BASE_MSB _u(14) +#define PIO_SM3_PINCTRL_SIDESET_BASE_LSB _u(10) +#define PIO_SM3_PINCTRL_SIDESET_BASE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_PINCTRL_SET_BASE +// Description : The lowest-numbered pin that will be affected by a SET PINS or +// SET PINDIRS instruction. The data written to this pin is the +// least-significant bit of the SET data. +#define PIO_SM3_PINCTRL_SET_BASE_RESET _u(0x00) +#define PIO_SM3_PINCTRL_SET_BASE_BITS _u(0x000003e0) +#define PIO_SM3_PINCTRL_SET_BASE_MSB _u(9) +#define PIO_SM3_PINCTRL_SET_BASE_LSB _u(5) +#define PIO_SM3_PINCTRL_SET_BASE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_SM3_PINCTRL_OUT_BASE +// Description : The lowest-numbered pin that will be affected by an OUT PINS, +// OUT PINDIRS or MOV PINS instruction. The data written to this +// pin will always be the least-significant bit of the OUT or MOV +// data. +#define PIO_SM3_PINCTRL_OUT_BASE_RESET _u(0x00) +#define PIO_SM3_PINCTRL_OUT_BASE_BITS _u(0x0000001f) +#define PIO_SM3_PINCTRL_OUT_BASE_MSB _u(4) +#define PIO_SM3_PINCTRL_OUT_BASE_LSB _u(0) +#define PIO_SM3_PINCTRL_OUT_BASE_ACCESS "RW" +// ============================================================================= +// Register : PIO_INTR +// Description : Raw Interrupts +#define PIO_INTR_OFFSET _u(0x00000128) +#define PIO_INTR_BITS _u(0x00000fff) +#define PIO_INTR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PIO_INTR_SM3 +// Description : None +#define PIO_INTR_SM3_RESET _u(0x0) +#define PIO_INTR_SM3_BITS _u(0x00000800) +#define PIO_INTR_SM3_MSB _u(11) +#define PIO_INTR_SM3_LSB _u(11) +#define PIO_INTR_SM3_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_INTR_SM2 +// Description : None +#define PIO_INTR_SM2_RESET _u(0x0) +#define PIO_INTR_SM2_BITS _u(0x00000400) +#define PIO_INTR_SM2_MSB _u(10) +#define PIO_INTR_SM2_LSB _u(10) +#define PIO_INTR_SM2_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_INTR_SM1 +// Description : None +#define PIO_INTR_SM1_RESET _u(0x0) +#define PIO_INTR_SM1_BITS _u(0x00000200) +#define PIO_INTR_SM1_MSB _u(9) +#define PIO_INTR_SM1_LSB _u(9) +#define PIO_INTR_SM1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_INTR_SM0 +// Description : None +#define PIO_INTR_SM0_RESET _u(0x0) +#define PIO_INTR_SM0_BITS _u(0x00000100) +#define PIO_INTR_SM0_MSB _u(8) +#define PIO_INTR_SM0_LSB _u(8) +#define PIO_INTR_SM0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_INTR_SM3_TXNFULL +// Description : None +#define PIO_INTR_SM3_TXNFULL_RESET _u(0x0) +#define PIO_INTR_SM3_TXNFULL_BITS _u(0x00000080) +#define PIO_INTR_SM3_TXNFULL_MSB _u(7) +#define PIO_INTR_SM3_TXNFULL_LSB _u(7) +#define PIO_INTR_SM3_TXNFULL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_INTR_SM2_TXNFULL +// Description : None +#define PIO_INTR_SM2_TXNFULL_RESET _u(0x0) +#define PIO_INTR_SM2_TXNFULL_BITS _u(0x00000040) +#define PIO_INTR_SM2_TXNFULL_MSB _u(6) +#define PIO_INTR_SM2_TXNFULL_LSB _u(6) +#define PIO_INTR_SM2_TXNFULL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_INTR_SM1_TXNFULL +// Description : None +#define PIO_INTR_SM1_TXNFULL_RESET _u(0x0) +#define PIO_INTR_SM1_TXNFULL_BITS _u(0x00000020) +#define PIO_INTR_SM1_TXNFULL_MSB _u(5) +#define PIO_INTR_SM1_TXNFULL_LSB _u(5) +#define PIO_INTR_SM1_TXNFULL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_INTR_SM0_TXNFULL +// Description : None +#define PIO_INTR_SM0_TXNFULL_RESET _u(0x0) +#define PIO_INTR_SM0_TXNFULL_BITS _u(0x00000010) +#define PIO_INTR_SM0_TXNFULL_MSB _u(4) +#define PIO_INTR_SM0_TXNFULL_LSB _u(4) +#define PIO_INTR_SM0_TXNFULL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_INTR_SM3_RXNEMPTY +// Description : None +#define PIO_INTR_SM3_RXNEMPTY_RESET _u(0x0) +#define PIO_INTR_SM3_RXNEMPTY_BITS _u(0x00000008) +#define PIO_INTR_SM3_RXNEMPTY_MSB _u(3) +#define PIO_INTR_SM3_RXNEMPTY_LSB _u(3) +#define PIO_INTR_SM3_RXNEMPTY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_INTR_SM2_RXNEMPTY +// Description : None +#define PIO_INTR_SM2_RXNEMPTY_RESET _u(0x0) +#define PIO_INTR_SM2_RXNEMPTY_BITS _u(0x00000004) +#define PIO_INTR_SM2_RXNEMPTY_MSB _u(2) +#define PIO_INTR_SM2_RXNEMPTY_LSB _u(2) +#define PIO_INTR_SM2_RXNEMPTY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_INTR_SM1_RXNEMPTY +// Description : None +#define PIO_INTR_SM1_RXNEMPTY_RESET _u(0x0) +#define PIO_INTR_SM1_RXNEMPTY_BITS _u(0x00000002) +#define PIO_INTR_SM1_RXNEMPTY_MSB _u(1) +#define PIO_INTR_SM1_RXNEMPTY_LSB _u(1) +#define PIO_INTR_SM1_RXNEMPTY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_INTR_SM0_RXNEMPTY +// Description : None +#define PIO_INTR_SM0_RXNEMPTY_RESET _u(0x0) +#define PIO_INTR_SM0_RXNEMPTY_BITS _u(0x00000001) +#define PIO_INTR_SM0_RXNEMPTY_MSB _u(0) +#define PIO_INTR_SM0_RXNEMPTY_LSB _u(0) +#define PIO_INTR_SM0_RXNEMPTY_ACCESS "RO" +// ============================================================================= +// Register : PIO_IRQ0_INTE +// Description : Interrupt Enable for irq0 +#define PIO_IRQ0_INTE_OFFSET _u(0x0000012c) +#define PIO_IRQ0_INTE_BITS _u(0x00000fff) +#define PIO_IRQ0_INTE_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTE_SM3 +// Description : None +#define PIO_IRQ0_INTE_SM3_RESET _u(0x0) +#define PIO_IRQ0_INTE_SM3_BITS _u(0x00000800) +#define PIO_IRQ0_INTE_SM3_MSB _u(11) +#define PIO_IRQ0_INTE_SM3_LSB _u(11) +#define PIO_IRQ0_INTE_SM3_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTE_SM2 +// Description : None +#define PIO_IRQ0_INTE_SM2_RESET _u(0x0) +#define PIO_IRQ0_INTE_SM2_BITS _u(0x00000400) +#define PIO_IRQ0_INTE_SM2_MSB _u(10) +#define PIO_IRQ0_INTE_SM2_LSB _u(10) +#define PIO_IRQ0_INTE_SM2_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTE_SM1 +// Description : None +#define PIO_IRQ0_INTE_SM1_RESET _u(0x0) +#define PIO_IRQ0_INTE_SM1_BITS _u(0x00000200) +#define PIO_IRQ0_INTE_SM1_MSB _u(9) +#define PIO_IRQ0_INTE_SM1_LSB _u(9) +#define PIO_IRQ0_INTE_SM1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTE_SM0 +// Description : None +#define PIO_IRQ0_INTE_SM0_RESET _u(0x0) +#define PIO_IRQ0_INTE_SM0_BITS _u(0x00000100) +#define PIO_IRQ0_INTE_SM0_MSB _u(8) +#define PIO_IRQ0_INTE_SM0_LSB _u(8) +#define PIO_IRQ0_INTE_SM0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTE_SM3_TXNFULL +// Description : None +#define PIO_IRQ0_INTE_SM3_TXNFULL_RESET _u(0x0) +#define PIO_IRQ0_INTE_SM3_TXNFULL_BITS _u(0x00000080) +#define PIO_IRQ0_INTE_SM3_TXNFULL_MSB _u(7) +#define PIO_IRQ0_INTE_SM3_TXNFULL_LSB _u(7) +#define PIO_IRQ0_INTE_SM3_TXNFULL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTE_SM2_TXNFULL +// Description : None +#define PIO_IRQ0_INTE_SM2_TXNFULL_RESET _u(0x0) +#define PIO_IRQ0_INTE_SM2_TXNFULL_BITS _u(0x00000040) +#define PIO_IRQ0_INTE_SM2_TXNFULL_MSB _u(6) +#define PIO_IRQ0_INTE_SM2_TXNFULL_LSB _u(6) +#define PIO_IRQ0_INTE_SM2_TXNFULL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTE_SM1_TXNFULL +// Description : None +#define PIO_IRQ0_INTE_SM1_TXNFULL_RESET _u(0x0) +#define PIO_IRQ0_INTE_SM1_TXNFULL_BITS _u(0x00000020) +#define PIO_IRQ0_INTE_SM1_TXNFULL_MSB _u(5) +#define PIO_IRQ0_INTE_SM1_TXNFULL_LSB _u(5) +#define PIO_IRQ0_INTE_SM1_TXNFULL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTE_SM0_TXNFULL +// Description : None +#define PIO_IRQ0_INTE_SM0_TXNFULL_RESET _u(0x0) +#define PIO_IRQ0_INTE_SM0_TXNFULL_BITS _u(0x00000010) +#define PIO_IRQ0_INTE_SM0_TXNFULL_MSB _u(4) +#define PIO_IRQ0_INTE_SM0_TXNFULL_LSB _u(4) +#define PIO_IRQ0_INTE_SM0_TXNFULL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTE_SM3_RXNEMPTY +// Description : None +#define PIO_IRQ0_INTE_SM3_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ0_INTE_SM3_RXNEMPTY_BITS _u(0x00000008) +#define PIO_IRQ0_INTE_SM3_RXNEMPTY_MSB _u(3) +#define PIO_IRQ0_INTE_SM3_RXNEMPTY_LSB _u(3) +#define PIO_IRQ0_INTE_SM3_RXNEMPTY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTE_SM2_RXNEMPTY +// Description : None +#define PIO_IRQ0_INTE_SM2_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ0_INTE_SM2_RXNEMPTY_BITS _u(0x00000004) +#define PIO_IRQ0_INTE_SM2_RXNEMPTY_MSB _u(2) +#define PIO_IRQ0_INTE_SM2_RXNEMPTY_LSB _u(2) +#define PIO_IRQ0_INTE_SM2_RXNEMPTY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTE_SM1_RXNEMPTY +// Description : None +#define PIO_IRQ0_INTE_SM1_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ0_INTE_SM1_RXNEMPTY_BITS _u(0x00000002) +#define PIO_IRQ0_INTE_SM1_RXNEMPTY_MSB _u(1) +#define PIO_IRQ0_INTE_SM1_RXNEMPTY_LSB _u(1) +#define PIO_IRQ0_INTE_SM1_RXNEMPTY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTE_SM0_RXNEMPTY +// Description : None +#define PIO_IRQ0_INTE_SM0_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ0_INTE_SM0_RXNEMPTY_BITS _u(0x00000001) +#define PIO_IRQ0_INTE_SM0_RXNEMPTY_MSB _u(0) +#define PIO_IRQ0_INTE_SM0_RXNEMPTY_LSB _u(0) +#define PIO_IRQ0_INTE_SM0_RXNEMPTY_ACCESS "RW" +// ============================================================================= +// Register : PIO_IRQ0_INTF +// Description : Interrupt Force for irq0 +#define PIO_IRQ0_INTF_OFFSET _u(0x00000130) +#define PIO_IRQ0_INTF_BITS _u(0x00000fff) +#define PIO_IRQ0_INTF_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTF_SM3 +// Description : None +#define PIO_IRQ0_INTF_SM3_RESET _u(0x0) +#define PIO_IRQ0_INTF_SM3_BITS _u(0x00000800) +#define PIO_IRQ0_INTF_SM3_MSB _u(11) +#define PIO_IRQ0_INTF_SM3_LSB _u(11) +#define PIO_IRQ0_INTF_SM3_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTF_SM2 +// Description : None +#define PIO_IRQ0_INTF_SM2_RESET _u(0x0) +#define PIO_IRQ0_INTF_SM2_BITS _u(0x00000400) +#define PIO_IRQ0_INTF_SM2_MSB _u(10) +#define PIO_IRQ0_INTF_SM2_LSB _u(10) +#define PIO_IRQ0_INTF_SM2_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTF_SM1 +// Description : None +#define PIO_IRQ0_INTF_SM1_RESET _u(0x0) +#define PIO_IRQ0_INTF_SM1_BITS _u(0x00000200) +#define PIO_IRQ0_INTF_SM1_MSB _u(9) +#define PIO_IRQ0_INTF_SM1_LSB _u(9) +#define PIO_IRQ0_INTF_SM1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTF_SM0 +// Description : None +#define PIO_IRQ0_INTF_SM0_RESET _u(0x0) +#define PIO_IRQ0_INTF_SM0_BITS _u(0x00000100) +#define PIO_IRQ0_INTF_SM0_MSB _u(8) +#define PIO_IRQ0_INTF_SM0_LSB _u(8) +#define PIO_IRQ0_INTF_SM0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTF_SM3_TXNFULL +// Description : None +#define PIO_IRQ0_INTF_SM3_TXNFULL_RESET _u(0x0) +#define PIO_IRQ0_INTF_SM3_TXNFULL_BITS _u(0x00000080) +#define PIO_IRQ0_INTF_SM3_TXNFULL_MSB _u(7) +#define PIO_IRQ0_INTF_SM3_TXNFULL_LSB _u(7) +#define PIO_IRQ0_INTF_SM3_TXNFULL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTF_SM2_TXNFULL +// Description : None +#define PIO_IRQ0_INTF_SM2_TXNFULL_RESET _u(0x0) +#define PIO_IRQ0_INTF_SM2_TXNFULL_BITS _u(0x00000040) +#define PIO_IRQ0_INTF_SM2_TXNFULL_MSB _u(6) +#define PIO_IRQ0_INTF_SM2_TXNFULL_LSB _u(6) +#define PIO_IRQ0_INTF_SM2_TXNFULL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTF_SM1_TXNFULL +// Description : None +#define PIO_IRQ0_INTF_SM1_TXNFULL_RESET _u(0x0) +#define PIO_IRQ0_INTF_SM1_TXNFULL_BITS _u(0x00000020) +#define PIO_IRQ0_INTF_SM1_TXNFULL_MSB _u(5) +#define PIO_IRQ0_INTF_SM1_TXNFULL_LSB _u(5) +#define PIO_IRQ0_INTF_SM1_TXNFULL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTF_SM0_TXNFULL +// Description : None +#define PIO_IRQ0_INTF_SM0_TXNFULL_RESET _u(0x0) +#define PIO_IRQ0_INTF_SM0_TXNFULL_BITS _u(0x00000010) +#define PIO_IRQ0_INTF_SM0_TXNFULL_MSB _u(4) +#define PIO_IRQ0_INTF_SM0_TXNFULL_LSB _u(4) +#define PIO_IRQ0_INTF_SM0_TXNFULL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTF_SM3_RXNEMPTY +// Description : None +#define PIO_IRQ0_INTF_SM3_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ0_INTF_SM3_RXNEMPTY_BITS _u(0x00000008) +#define PIO_IRQ0_INTF_SM3_RXNEMPTY_MSB _u(3) +#define PIO_IRQ0_INTF_SM3_RXNEMPTY_LSB _u(3) +#define PIO_IRQ0_INTF_SM3_RXNEMPTY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTF_SM2_RXNEMPTY +// Description : None +#define PIO_IRQ0_INTF_SM2_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ0_INTF_SM2_RXNEMPTY_BITS _u(0x00000004) +#define PIO_IRQ0_INTF_SM2_RXNEMPTY_MSB _u(2) +#define PIO_IRQ0_INTF_SM2_RXNEMPTY_LSB _u(2) +#define PIO_IRQ0_INTF_SM2_RXNEMPTY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTF_SM1_RXNEMPTY +// Description : None +#define PIO_IRQ0_INTF_SM1_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ0_INTF_SM1_RXNEMPTY_BITS _u(0x00000002) +#define PIO_IRQ0_INTF_SM1_RXNEMPTY_MSB _u(1) +#define PIO_IRQ0_INTF_SM1_RXNEMPTY_LSB _u(1) +#define PIO_IRQ0_INTF_SM1_RXNEMPTY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTF_SM0_RXNEMPTY +// Description : None +#define PIO_IRQ0_INTF_SM0_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ0_INTF_SM0_RXNEMPTY_BITS _u(0x00000001) +#define PIO_IRQ0_INTF_SM0_RXNEMPTY_MSB _u(0) +#define PIO_IRQ0_INTF_SM0_RXNEMPTY_LSB _u(0) +#define PIO_IRQ0_INTF_SM0_RXNEMPTY_ACCESS "RW" +// ============================================================================= +// Register : PIO_IRQ0_INTS +// Description : Interrupt status after masking & forcing for irq0 +#define PIO_IRQ0_INTS_OFFSET _u(0x00000134) +#define PIO_IRQ0_INTS_BITS _u(0x00000fff) +#define PIO_IRQ0_INTS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTS_SM3 +// Description : None +#define PIO_IRQ0_INTS_SM3_RESET _u(0x0) +#define PIO_IRQ0_INTS_SM3_BITS _u(0x00000800) +#define PIO_IRQ0_INTS_SM3_MSB _u(11) +#define PIO_IRQ0_INTS_SM3_LSB _u(11) +#define PIO_IRQ0_INTS_SM3_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTS_SM2 +// Description : None +#define PIO_IRQ0_INTS_SM2_RESET _u(0x0) +#define PIO_IRQ0_INTS_SM2_BITS _u(0x00000400) +#define PIO_IRQ0_INTS_SM2_MSB _u(10) +#define PIO_IRQ0_INTS_SM2_LSB _u(10) +#define PIO_IRQ0_INTS_SM2_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTS_SM1 +// Description : None +#define PIO_IRQ0_INTS_SM1_RESET _u(0x0) +#define PIO_IRQ0_INTS_SM1_BITS _u(0x00000200) +#define PIO_IRQ0_INTS_SM1_MSB _u(9) +#define PIO_IRQ0_INTS_SM1_LSB _u(9) +#define PIO_IRQ0_INTS_SM1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTS_SM0 +// Description : None +#define PIO_IRQ0_INTS_SM0_RESET _u(0x0) +#define PIO_IRQ0_INTS_SM0_BITS _u(0x00000100) +#define PIO_IRQ0_INTS_SM0_MSB _u(8) +#define PIO_IRQ0_INTS_SM0_LSB _u(8) +#define PIO_IRQ0_INTS_SM0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTS_SM3_TXNFULL +// Description : None +#define PIO_IRQ0_INTS_SM3_TXNFULL_RESET _u(0x0) +#define PIO_IRQ0_INTS_SM3_TXNFULL_BITS _u(0x00000080) +#define PIO_IRQ0_INTS_SM3_TXNFULL_MSB _u(7) +#define PIO_IRQ0_INTS_SM3_TXNFULL_LSB _u(7) +#define PIO_IRQ0_INTS_SM3_TXNFULL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTS_SM2_TXNFULL +// Description : None +#define PIO_IRQ0_INTS_SM2_TXNFULL_RESET _u(0x0) +#define PIO_IRQ0_INTS_SM2_TXNFULL_BITS _u(0x00000040) +#define PIO_IRQ0_INTS_SM2_TXNFULL_MSB _u(6) +#define PIO_IRQ0_INTS_SM2_TXNFULL_LSB _u(6) +#define PIO_IRQ0_INTS_SM2_TXNFULL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTS_SM1_TXNFULL +// Description : None +#define PIO_IRQ0_INTS_SM1_TXNFULL_RESET _u(0x0) +#define PIO_IRQ0_INTS_SM1_TXNFULL_BITS _u(0x00000020) +#define PIO_IRQ0_INTS_SM1_TXNFULL_MSB _u(5) +#define PIO_IRQ0_INTS_SM1_TXNFULL_LSB _u(5) +#define PIO_IRQ0_INTS_SM1_TXNFULL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTS_SM0_TXNFULL +// Description : None +#define PIO_IRQ0_INTS_SM0_TXNFULL_RESET _u(0x0) +#define PIO_IRQ0_INTS_SM0_TXNFULL_BITS _u(0x00000010) +#define PIO_IRQ0_INTS_SM0_TXNFULL_MSB _u(4) +#define PIO_IRQ0_INTS_SM0_TXNFULL_LSB _u(4) +#define PIO_IRQ0_INTS_SM0_TXNFULL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTS_SM3_RXNEMPTY +// Description : None +#define PIO_IRQ0_INTS_SM3_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ0_INTS_SM3_RXNEMPTY_BITS _u(0x00000008) +#define PIO_IRQ0_INTS_SM3_RXNEMPTY_MSB _u(3) +#define PIO_IRQ0_INTS_SM3_RXNEMPTY_LSB _u(3) +#define PIO_IRQ0_INTS_SM3_RXNEMPTY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTS_SM2_RXNEMPTY +// Description : None +#define PIO_IRQ0_INTS_SM2_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ0_INTS_SM2_RXNEMPTY_BITS _u(0x00000004) +#define PIO_IRQ0_INTS_SM2_RXNEMPTY_MSB _u(2) +#define PIO_IRQ0_INTS_SM2_RXNEMPTY_LSB _u(2) +#define PIO_IRQ0_INTS_SM2_RXNEMPTY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTS_SM1_RXNEMPTY +// Description : None +#define PIO_IRQ0_INTS_SM1_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ0_INTS_SM1_RXNEMPTY_BITS _u(0x00000002) +#define PIO_IRQ0_INTS_SM1_RXNEMPTY_MSB _u(1) +#define PIO_IRQ0_INTS_SM1_RXNEMPTY_LSB _u(1) +#define PIO_IRQ0_INTS_SM1_RXNEMPTY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ0_INTS_SM0_RXNEMPTY +// Description : None +#define PIO_IRQ0_INTS_SM0_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ0_INTS_SM0_RXNEMPTY_BITS _u(0x00000001) +#define PIO_IRQ0_INTS_SM0_RXNEMPTY_MSB _u(0) +#define PIO_IRQ0_INTS_SM0_RXNEMPTY_LSB _u(0) +#define PIO_IRQ0_INTS_SM0_RXNEMPTY_ACCESS "RO" +// ============================================================================= +// Register : PIO_IRQ1_INTE +// Description : Interrupt Enable for irq1 +#define PIO_IRQ1_INTE_OFFSET _u(0x00000138) +#define PIO_IRQ1_INTE_BITS _u(0x00000fff) +#define PIO_IRQ1_INTE_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTE_SM3 +// Description : None +#define PIO_IRQ1_INTE_SM3_RESET _u(0x0) +#define PIO_IRQ1_INTE_SM3_BITS _u(0x00000800) +#define PIO_IRQ1_INTE_SM3_MSB _u(11) +#define PIO_IRQ1_INTE_SM3_LSB _u(11) +#define PIO_IRQ1_INTE_SM3_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTE_SM2 +// Description : None +#define PIO_IRQ1_INTE_SM2_RESET _u(0x0) +#define PIO_IRQ1_INTE_SM2_BITS _u(0x00000400) +#define PIO_IRQ1_INTE_SM2_MSB _u(10) +#define PIO_IRQ1_INTE_SM2_LSB _u(10) +#define PIO_IRQ1_INTE_SM2_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTE_SM1 +// Description : None +#define PIO_IRQ1_INTE_SM1_RESET _u(0x0) +#define PIO_IRQ1_INTE_SM1_BITS _u(0x00000200) +#define PIO_IRQ1_INTE_SM1_MSB _u(9) +#define PIO_IRQ1_INTE_SM1_LSB _u(9) +#define PIO_IRQ1_INTE_SM1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTE_SM0 +// Description : None +#define PIO_IRQ1_INTE_SM0_RESET _u(0x0) +#define PIO_IRQ1_INTE_SM0_BITS _u(0x00000100) +#define PIO_IRQ1_INTE_SM0_MSB _u(8) +#define PIO_IRQ1_INTE_SM0_LSB _u(8) +#define PIO_IRQ1_INTE_SM0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTE_SM3_TXNFULL +// Description : None +#define PIO_IRQ1_INTE_SM3_TXNFULL_RESET _u(0x0) +#define PIO_IRQ1_INTE_SM3_TXNFULL_BITS _u(0x00000080) +#define PIO_IRQ1_INTE_SM3_TXNFULL_MSB _u(7) +#define PIO_IRQ1_INTE_SM3_TXNFULL_LSB _u(7) +#define PIO_IRQ1_INTE_SM3_TXNFULL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTE_SM2_TXNFULL +// Description : None +#define PIO_IRQ1_INTE_SM2_TXNFULL_RESET _u(0x0) +#define PIO_IRQ1_INTE_SM2_TXNFULL_BITS _u(0x00000040) +#define PIO_IRQ1_INTE_SM2_TXNFULL_MSB _u(6) +#define PIO_IRQ1_INTE_SM2_TXNFULL_LSB _u(6) +#define PIO_IRQ1_INTE_SM2_TXNFULL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTE_SM1_TXNFULL +// Description : None +#define PIO_IRQ1_INTE_SM1_TXNFULL_RESET _u(0x0) +#define PIO_IRQ1_INTE_SM1_TXNFULL_BITS _u(0x00000020) +#define PIO_IRQ1_INTE_SM1_TXNFULL_MSB _u(5) +#define PIO_IRQ1_INTE_SM1_TXNFULL_LSB _u(5) +#define PIO_IRQ1_INTE_SM1_TXNFULL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTE_SM0_TXNFULL +// Description : None +#define PIO_IRQ1_INTE_SM0_TXNFULL_RESET _u(0x0) +#define PIO_IRQ1_INTE_SM0_TXNFULL_BITS _u(0x00000010) +#define PIO_IRQ1_INTE_SM0_TXNFULL_MSB _u(4) +#define PIO_IRQ1_INTE_SM0_TXNFULL_LSB _u(4) +#define PIO_IRQ1_INTE_SM0_TXNFULL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTE_SM3_RXNEMPTY +// Description : None +#define PIO_IRQ1_INTE_SM3_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ1_INTE_SM3_RXNEMPTY_BITS _u(0x00000008) +#define PIO_IRQ1_INTE_SM3_RXNEMPTY_MSB _u(3) +#define PIO_IRQ1_INTE_SM3_RXNEMPTY_LSB _u(3) +#define PIO_IRQ1_INTE_SM3_RXNEMPTY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTE_SM2_RXNEMPTY +// Description : None +#define PIO_IRQ1_INTE_SM2_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ1_INTE_SM2_RXNEMPTY_BITS _u(0x00000004) +#define PIO_IRQ1_INTE_SM2_RXNEMPTY_MSB _u(2) +#define PIO_IRQ1_INTE_SM2_RXNEMPTY_LSB _u(2) +#define PIO_IRQ1_INTE_SM2_RXNEMPTY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTE_SM1_RXNEMPTY +// Description : None +#define PIO_IRQ1_INTE_SM1_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ1_INTE_SM1_RXNEMPTY_BITS _u(0x00000002) +#define PIO_IRQ1_INTE_SM1_RXNEMPTY_MSB _u(1) +#define PIO_IRQ1_INTE_SM1_RXNEMPTY_LSB _u(1) +#define PIO_IRQ1_INTE_SM1_RXNEMPTY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTE_SM0_RXNEMPTY +// Description : None +#define PIO_IRQ1_INTE_SM0_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ1_INTE_SM0_RXNEMPTY_BITS _u(0x00000001) +#define PIO_IRQ1_INTE_SM0_RXNEMPTY_MSB _u(0) +#define PIO_IRQ1_INTE_SM0_RXNEMPTY_LSB _u(0) +#define PIO_IRQ1_INTE_SM0_RXNEMPTY_ACCESS "RW" +// ============================================================================= +// Register : PIO_IRQ1_INTF +// Description : Interrupt Force for irq1 +#define PIO_IRQ1_INTF_OFFSET _u(0x0000013c) +#define PIO_IRQ1_INTF_BITS _u(0x00000fff) +#define PIO_IRQ1_INTF_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTF_SM3 +// Description : None +#define PIO_IRQ1_INTF_SM3_RESET _u(0x0) +#define PIO_IRQ1_INTF_SM3_BITS _u(0x00000800) +#define PIO_IRQ1_INTF_SM3_MSB _u(11) +#define PIO_IRQ1_INTF_SM3_LSB _u(11) +#define PIO_IRQ1_INTF_SM3_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTF_SM2 +// Description : None +#define PIO_IRQ1_INTF_SM2_RESET _u(0x0) +#define PIO_IRQ1_INTF_SM2_BITS _u(0x00000400) +#define PIO_IRQ1_INTF_SM2_MSB _u(10) +#define PIO_IRQ1_INTF_SM2_LSB _u(10) +#define PIO_IRQ1_INTF_SM2_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTF_SM1 +// Description : None +#define PIO_IRQ1_INTF_SM1_RESET _u(0x0) +#define PIO_IRQ1_INTF_SM1_BITS _u(0x00000200) +#define PIO_IRQ1_INTF_SM1_MSB _u(9) +#define PIO_IRQ1_INTF_SM1_LSB _u(9) +#define PIO_IRQ1_INTF_SM1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTF_SM0 +// Description : None +#define PIO_IRQ1_INTF_SM0_RESET _u(0x0) +#define PIO_IRQ1_INTF_SM0_BITS _u(0x00000100) +#define PIO_IRQ1_INTF_SM0_MSB _u(8) +#define PIO_IRQ1_INTF_SM0_LSB _u(8) +#define PIO_IRQ1_INTF_SM0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTF_SM3_TXNFULL +// Description : None +#define PIO_IRQ1_INTF_SM3_TXNFULL_RESET _u(0x0) +#define PIO_IRQ1_INTF_SM3_TXNFULL_BITS _u(0x00000080) +#define PIO_IRQ1_INTF_SM3_TXNFULL_MSB _u(7) +#define PIO_IRQ1_INTF_SM3_TXNFULL_LSB _u(7) +#define PIO_IRQ1_INTF_SM3_TXNFULL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTF_SM2_TXNFULL +// Description : None +#define PIO_IRQ1_INTF_SM2_TXNFULL_RESET _u(0x0) +#define PIO_IRQ1_INTF_SM2_TXNFULL_BITS _u(0x00000040) +#define PIO_IRQ1_INTF_SM2_TXNFULL_MSB _u(6) +#define PIO_IRQ1_INTF_SM2_TXNFULL_LSB _u(6) +#define PIO_IRQ1_INTF_SM2_TXNFULL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTF_SM1_TXNFULL +// Description : None +#define PIO_IRQ1_INTF_SM1_TXNFULL_RESET _u(0x0) +#define PIO_IRQ1_INTF_SM1_TXNFULL_BITS _u(0x00000020) +#define PIO_IRQ1_INTF_SM1_TXNFULL_MSB _u(5) +#define PIO_IRQ1_INTF_SM1_TXNFULL_LSB _u(5) +#define PIO_IRQ1_INTF_SM1_TXNFULL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTF_SM0_TXNFULL +// Description : None +#define PIO_IRQ1_INTF_SM0_TXNFULL_RESET _u(0x0) +#define PIO_IRQ1_INTF_SM0_TXNFULL_BITS _u(0x00000010) +#define PIO_IRQ1_INTF_SM0_TXNFULL_MSB _u(4) +#define PIO_IRQ1_INTF_SM0_TXNFULL_LSB _u(4) +#define PIO_IRQ1_INTF_SM0_TXNFULL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTF_SM3_RXNEMPTY +// Description : None +#define PIO_IRQ1_INTF_SM3_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ1_INTF_SM3_RXNEMPTY_BITS _u(0x00000008) +#define PIO_IRQ1_INTF_SM3_RXNEMPTY_MSB _u(3) +#define PIO_IRQ1_INTF_SM3_RXNEMPTY_LSB _u(3) +#define PIO_IRQ1_INTF_SM3_RXNEMPTY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTF_SM2_RXNEMPTY +// Description : None +#define PIO_IRQ1_INTF_SM2_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ1_INTF_SM2_RXNEMPTY_BITS _u(0x00000004) +#define PIO_IRQ1_INTF_SM2_RXNEMPTY_MSB _u(2) +#define PIO_IRQ1_INTF_SM2_RXNEMPTY_LSB _u(2) +#define PIO_IRQ1_INTF_SM2_RXNEMPTY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTF_SM1_RXNEMPTY +// Description : None +#define PIO_IRQ1_INTF_SM1_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ1_INTF_SM1_RXNEMPTY_BITS _u(0x00000002) +#define PIO_IRQ1_INTF_SM1_RXNEMPTY_MSB _u(1) +#define PIO_IRQ1_INTF_SM1_RXNEMPTY_LSB _u(1) +#define PIO_IRQ1_INTF_SM1_RXNEMPTY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTF_SM0_RXNEMPTY +// Description : None +#define PIO_IRQ1_INTF_SM0_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ1_INTF_SM0_RXNEMPTY_BITS _u(0x00000001) +#define PIO_IRQ1_INTF_SM0_RXNEMPTY_MSB _u(0) +#define PIO_IRQ1_INTF_SM0_RXNEMPTY_LSB _u(0) +#define PIO_IRQ1_INTF_SM0_RXNEMPTY_ACCESS "RW" +// ============================================================================= +// Register : PIO_IRQ1_INTS +// Description : Interrupt status after masking & forcing for irq1 +#define PIO_IRQ1_INTS_OFFSET _u(0x00000140) +#define PIO_IRQ1_INTS_BITS _u(0x00000fff) +#define PIO_IRQ1_INTS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTS_SM3 +// Description : None +#define PIO_IRQ1_INTS_SM3_RESET _u(0x0) +#define PIO_IRQ1_INTS_SM3_BITS _u(0x00000800) +#define PIO_IRQ1_INTS_SM3_MSB _u(11) +#define PIO_IRQ1_INTS_SM3_LSB _u(11) +#define PIO_IRQ1_INTS_SM3_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTS_SM2 +// Description : None +#define PIO_IRQ1_INTS_SM2_RESET _u(0x0) +#define PIO_IRQ1_INTS_SM2_BITS _u(0x00000400) +#define PIO_IRQ1_INTS_SM2_MSB _u(10) +#define PIO_IRQ1_INTS_SM2_LSB _u(10) +#define PIO_IRQ1_INTS_SM2_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTS_SM1 +// Description : None +#define PIO_IRQ1_INTS_SM1_RESET _u(0x0) +#define PIO_IRQ1_INTS_SM1_BITS _u(0x00000200) +#define PIO_IRQ1_INTS_SM1_MSB _u(9) +#define PIO_IRQ1_INTS_SM1_LSB _u(9) +#define PIO_IRQ1_INTS_SM1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTS_SM0 +// Description : None +#define PIO_IRQ1_INTS_SM0_RESET _u(0x0) +#define PIO_IRQ1_INTS_SM0_BITS _u(0x00000100) +#define PIO_IRQ1_INTS_SM0_MSB _u(8) +#define PIO_IRQ1_INTS_SM0_LSB _u(8) +#define PIO_IRQ1_INTS_SM0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTS_SM3_TXNFULL +// Description : None +#define PIO_IRQ1_INTS_SM3_TXNFULL_RESET _u(0x0) +#define PIO_IRQ1_INTS_SM3_TXNFULL_BITS _u(0x00000080) +#define PIO_IRQ1_INTS_SM3_TXNFULL_MSB _u(7) +#define PIO_IRQ1_INTS_SM3_TXNFULL_LSB _u(7) +#define PIO_IRQ1_INTS_SM3_TXNFULL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTS_SM2_TXNFULL +// Description : None +#define PIO_IRQ1_INTS_SM2_TXNFULL_RESET _u(0x0) +#define PIO_IRQ1_INTS_SM2_TXNFULL_BITS _u(0x00000040) +#define PIO_IRQ1_INTS_SM2_TXNFULL_MSB _u(6) +#define PIO_IRQ1_INTS_SM2_TXNFULL_LSB _u(6) +#define PIO_IRQ1_INTS_SM2_TXNFULL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTS_SM1_TXNFULL +// Description : None +#define PIO_IRQ1_INTS_SM1_TXNFULL_RESET _u(0x0) +#define PIO_IRQ1_INTS_SM1_TXNFULL_BITS _u(0x00000020) +#define PIO_IRQ1_INTS_SM1_TXNFULL_MSB _u(5) +#define PIO_IRQ1_INTS_SM1_TXNFULL_LSB _u(5) +#define PIO_IRQ1_INTS_SM1_TXNFULL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTS_SM0_TXNFULL +// Description : None +#define PIO_IRQ1_INTS_SM0_TXNFULL_RESET _u(0x0) +#define PIO_IRQ1_INTS_SM0_TXNFULL_BITS _u(0x00000010) +#define PIO_IRQ1_INTS_SM0_TXNFULL_MSB _u(4) +#define PIO_IRQ1_INTS_SM0_TXNFULL_LSB _u(4) +#define PIO_IRQ1_INTS_SM0_TXNFULL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTS_SM3_RXNEMPTY +// Description : None +#define PIO_IRQ1_INTS_SM3_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ1_INTS_SM3_RXNEMPTY_BITS _u(0x00000008) +#define PIO_IRQ1_INTS_SM3_RXNEMPTY_MSB _u(3) +#define PIO_IRQ1_INTS_SM3_RXNEMPTY_LSB _u(3) +#define PIO_IRQ1_INTS_SM3_RXNEMPTY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTS_SM2_RXNEMPTY +// Description : None +#define PIO_IRQ1_INTS_SM2_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ1_INTS_SM2_RXNEMPTY_BITS _u(0x00000004) +#define PIO_IRQ1_INTS_SM2_RXNEMPTY_MSB _u(2) +#define PIO_IRQ1_INTS_SM2_RXNEMPTY_LSB _u(2) +#define PIO_IRQ1_INTS_SM2_RXNEMPTY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTS_SM1_RXNEMPTY +// Description : None +#define PIO_IRQ1_INTS_SM1_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ1_INTS_SM1_RXNEMPTY_BITS _u(0x00000002) +#define PIO_IRQ1_INTS_SM1_RXNEMPTY_MSB _u(1) +#define PIO_IRQ1_INTS_SM1_RXNEMPTY_LSB _u(1) +#define PIO_IRQ1_INTS_SM1_RXNEMPTY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PIO_IRQ1_INTS_SM0_RXNEMPTY +// Description : None +#define PIO_IRQ1_INTS_SM0_RXNEMPTY_RESET _u(0x0) +#define PIO_IRQ1_INTS_SM0_RXNEMPTY_BITS _u(0x00000001) +#define PIO_IRQ1_INTS_SM0_RXNEMPTY_MSB _u(0) +#define PIO_IRQ1_INTS_SM0_RXNEMPTY_LSB _u(0) +#define PIO_IRQ1_INTS_SM0_RXNEMPTY_ACCESS "RO" +// ============================================================================= +#endif // HARDWARE_REGS_PIO_DEFINED diff --git a/arkanoid/pico/hardware/regs/pll.h b/arkanoid/pico/hardware/regs/pll.h new file mode 100644 index 0000000..a0f5ad0 --- /dev/null +++ b/arkanoid/pico/hardware/regs/pll.h @@ -0,0 +1,135 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : PLL +// Version : 1 +// Bus type : apb +// Description : None +// ============================================================================= +#ifndef HARDWARE_REGS_PLL_DEFINED +#define HARDWARE_REGS_PLL_DEFINED +// ============================================================================= +// Register : PLL_CS +// Description : Control and Status +// GENERAL CONSTRAINTS: +// Reference clock frequency min=5MHz, max=800MHz +// Feedback divider min=16, max=320 +// VCO frequency min=400MHz, max=1600MHz +#define PLL_CS_OFFSET _u(0x00000000) +#define PLL_CS_BITS _u(0x8000013f) +#define PLL_CS_RESET _u(0x00000001) +// ----------------------------------------------------------------------------- +// Field : PLL_CS_LOCK +// Description : PLL is locked +#define PLL_CS_LOCK_RESET _u(0x0) +#define PLL_CS_LOCK_BITS _u(0x80000000) +#define PLL_CS_LOCK_MSB _u(31) +#define PLL_CS_LOCK_LSB _u(31) +#define PLL_CS_LOCK_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PLL_CS_BYPASS +// Description : Passes the reference clock to the output instead of the divided +// VCO. The VCO continues to run so the user can switch between +// the reference clock and the divided VCO but the output will +// glitch when doing so. +#define PLL_CS_BYPASS_RESET _u(0x0) +#define PLL_CS_BYPASS_BITS _u(0x00000100) +#define PLL_CS_BYPASS_MSB _u(8) +#define PLL_CS_BYPASS_LSB _u(8) +#define PLL_CS_BYPASS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PLL_CS_REFDIV +// Description : Divides the PLL input reference clock. +// Behaviour is undefined for div=0. +// PLL output will be unpredictable during refdiv changes, wait +// for lock=1 before using it. +#define PLL_CS_REFDIV_RESET _u(0x01) +#define PLL_CS_REFDIV_BITS _u(0x0000003f) +#define PLL_CS_REFDIV_MSB _u(5) +#define PLL_CS_REFDIV_LSB _u(0) +#define PLL_CS_REFDIV_ACCESS "RW" +// ============================================================================= +// Register : PLL_PWR +// Description : Controls the PLL power modes. +#define PLL_PWR_OFFSET _u(0x00000004) +#define PLL_PWR_BITS _u(0x0000002d) +#define PLL_PWR_RESET _u(0x0000002d) +// ----------------------------------------------------------------------------- +// Field : PLL_PWR_VCOPD +// Description : PLL VCO powerdown +// To save power set high when PLL output not required or +// bypass=1. +#define PLL_PWR_VCOPD_RESET _u(0x1) +#define PLL_PWR_VCOPD_BITS _u(0x00000020) +#define PLL_PWR_VCOPD_MSB _u(5) +#define PLL_PWR_VCOPD_LSB _u(5) +#define PLL_PWR_VCOPD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PLL_PWR_POSTDIVPD +// Description : PLL post divider powerdown +// To save power set high when PLL output not required or +// bypass=1. +#define PLL_PWR_POSTDIVPD_RESET _u(0x1) +#define PLL_PWR_POSTDIVPD_BITS _u(0x00000008) +#define PLL_PWR_POSTDIVPD_MSB _u(3) +#define PLL_PWR_POSTDIVPD_LSB _u(3) +#define PLL_PWR_POSTDIVPD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PLL_PWR_DSMPD +// Description : PLL DSM powerdown +// Nothing is achieved by setting this low. +#define PLL_PWR_DSMPD_RESET _u(0x1) +#define PLL_PWR_DSMPD_BITS _u(0x00000004) +#define PLL_PWR_DSMPD_MSB _u(2) +#define PLL_PWR_DSMPD_LSB _u(2) +#define PLL_PWR_DSMPD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PLL_PWR_PD +// Description : PLL powerdown +// To save power set high when PLL output not required. +#define PLL_PWR_PD_RESET _u(0x1) +#define PLL_PWR_PD_BITS _u(0x00000001) +#define PLL_PWR_PD_MSB _u(0) +#define PLL_PWR_PD_LSB _u(0) +#define PLL_PWR_PD_ACCESS "RW" +// ============================================================================= +// Register : PLL_FBDIV_INT +// Description : Feedback divisor +// (note: this PLL does not support fractional division) +// see ctrl reg description for constraints +#define PLL_FBDIV_INT_OFFSET _u(0x00000008) +#define PLL_FBDIV_INT_BITS _u(0x00000fff) +#define PLL_FBDIV_INT_RESET _u(0x00000000) +#define PLL_FBDIV_INT_MSB _u(11) +#define PLL_FBDIV_INT_LSB _u(0) +#define PLL_FBDIV_INT_ACCESS "RW" +// ============================================================================= +// Register : PLL_PRIM +// Description : Controls the PLL post dividers for the primary output +// (note: this PLL does not have a secondary output) +// the primary output is driven from VCO divided by +// postdiv1*postdiv2 +#define PLL_PRIM_OFFSET _u(0x0000000c) +#define PLL_PRIM_BITS _u(0x00077000) +#define PLL_PRIM_RESET _u(0x00077000) +// ----------------------------------------------------------------------------- +// Field : PLL_PRIM_POSTDIV1 +// Description : divide by 1-7 +#define PLL_PRIM_POSTDIV1_RESET _u(0x7) +#define PLL_PRIM_POSTDIV1_BITS _u(0x00070000) +#define PLL_PRIM_POSTDIV1_MSB _u(18) +#define PLL_PRIM_POSTDIV1_LSB _u(16) +#define PLL_PRIM_POSTDIV1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PLL_PRIM_POSTDIV2 +// Description : divide by 1-7 +#define PLL_PRIM_POSTDIV2_RESET _u(0x7) +#define PLL_PRIM_POSTDIV2_BITS _u(0x00007000) +#define PLL_PRIM_POSTDIV2_MSB _u(14) +#define PLL_PRIM_POSTDIV2_LSB _u(12) +#define PLL_PRIM_POSTDIV2_ACCESS "RW" +// ============================================================================= +#endif // HARDWARE_REGS_PLL_DEFINED diff --git a/arkanoid/pico/hardware/regs/psm.h b/arkanoid/pico/hardware/regs/psm.h new file mode 100644 index 0000000..8810ae8 --- /dev/null +++ b/arkanoid/pico/hardware/regs/psm.h @@ -0,0 +1,584 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : PSM +// Version : 1 +// Bus type : apb +// Description : None +// ============================================================================= +#ifndef HARDWARE_REGS_PSM_DEFINED +#define HARDWARE_REGS_PSM_DEFINED +// ============================================================================= +// Register : PSM_FRCE_ON +// Description : Force block out of reset (i.e. power it on) +#define PSM_FRCE_ON_OFFSET _u(0x00000000) +#define PSM_FRCE_ON_BITS _u(0x0001ffff) +#define PSM_FRCE_ON_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_ON_PROC1 +// Description : None +#define PSM_FRCE_ON_PROC1_RESET _u(0x0) +#define PSM_FRCE_ON_PROC1_BITS _u(0x00010000) +#define PSM_FRCE_ON_PROC1_MSB _u(16) +#define PSM_FRCE_ON_PROC1_LSB _u(16) +#define PSM_FRCE_ON_PROC1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_ON_PROC0 +// Description : None +#define PSM_FRCE_ON_PROC0_RESET _u(0x0) +#define PSM_FRCE_ON_PROC0_BITS _u(0x00008000) +#define PSM_FRCE_ON_PROC0_MSB _u(15) +#define PSM_FRCE_ON_PROC0_LSB _u(15) +#define PSM_FRCE_ON_PROC0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_ON_SIO +// Description : None +#define PSM_FRCE_ON_SIO_RESET _u(0x0) +#define PSM_FRCE_ON_SIO_BITS _u(0x00004000) +#define PSM_FRCE_ON_SIO_MSB _u(14) +#define PSM_FRCE_ON_SIO_LSB _u(14) +#define PSM_FRCE_ON_SIO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_ON_VREG_AND_CHIP_RESET +// Description : None +#define PSM_FRCE_ON_VREG_AND_CHIP_RESET_RESET _u(0x0) +#define PSM_FRCE_ON_VREG_AND_CHIP_RESET_BITS _u(0x00002000) +#define PSM_FRCE_ON_VREG_AND_CHIP_RESET_MSB _u(13) +#define PSM_FRCE_ON_VREG_AND_CHIP_RESET_LSB _u(13) +#define PSM_FRCE_ON_VREG_AND_CHIP_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_ON_XIP +// Description : None +#define PSM_FRCE_ON_XIP_RESET _u(0x0) +#define PSM_FRCE_ON_XIP_BITS _u(0x00001000) +#define PSM_FRCE_ON_XIP_MSB _u(12) +#define PSM_FRCE_ON_XIP_LSB _u(12) +#define PSM_FRCE_ON_XIP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_ON_SRAM5 +// Description : None +#define PSM_FRCE_ON_SRAM5_RESET _u(0x0) +#define PSM_FRCE_ON_SRAM5_BITS _u(0x00000800) +#define PSM_FRCE_ON_SRAM5_MSB _u(11) +#define PSM_FRCE_ON_SRAM5_LSB _u(11) +#define PSM_FRCE_ON_SRAM5_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_ON_SRAM4 +// Description : None +#define PSM_FRCE_ON_SRAM4_RESET _u(0x0) +#define PSM_FRCE_ON_SRAM4_BITS _u(0x00000400) +#define PSM_FRCE_ON_SRAM4_MSB _u(10) +#define PSM_FRCE_ON_SRAM4_LSB _u(10) +#define PSM_FRCE_ON_SRAM4_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_ON_SRAM3 +// Description : None +#define PSM_FRCE_ON_SRAM3_RESET _u(0x0) +#define PSM_FRCE_ON_SRAM3_BITS _u(0x00000200) +#define PSM_FRCE_ON_SRAM3_MSB _u(9) +#define PSM_FRCE_ON_SRAM3_LSB _u(9) +#define PSM_FRCE_ON_SRAM3_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_ON_SRAM2 +// Description : None +#define PSM_FRCE_ON_SRAM2_RESET _u(0x0) +#define PSM_FRCE_ON_SRAM2_BITS _u(0x00000100) +#define PSM_FRCE_ON_SRAM2_MSB _u(8) +#define PSM_FRCE_ON_SRAM2_LSB _u(8) +#define PSM_FRCE_ON_SRAM2_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_ON_SRAM1 +// Description : None +#define PSM_FRCE_ON_SRAM1_RESET _u(0x0) +#define PSM_FRCE_ON_SRAM1_BITS _u(0x00000080) +#define PSM_FRCE_ON_SRAM1_MSB _u(7) +#define PSM_FRCE_ON_SRAM1_LSB _u(7) +#define PSM_FRCE_ON_SRAM1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_ON_SRAM0 +// Description : None +#define PSM_FRCE_ON_SRAM0_RESET _u(0x0) +#define PSM_FRCE_ON_SRAM0_BITS _u(0x00000040) +#define PSM_FRCE_ON_SRAM0_MSB _u(6) +#define PSM_FRCE_ON_SRAM0_LSB _u(6) +#define PSM_FRCE_ON_SRAM0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_ON_ROM +// Description : None +#define PSM_FRCE_ON_ROM_RESET _u(0x0) +#define PSM_FRCE_ON_ROM_BITS _u(0x00000020) +#define PSM_FRCE_ON_ROM_MSB _u(5) +#define PSM_FRCE_ON_ROM_LSB _u(5) +#define PSM_FRCE_ON_ROM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_ON_BUSFABRIC +// Description : None +#define PSM_FRCE_ON_BUSFABRIC_RESET _u(0x0) +#define PSM_FRCE_ON_BUSFABRIC_BITS _u(0x00000010) +#define PSM_FRCE_ON_BUSFABRIC_MSB _u(4) +#define PSM_FRCE_ON_BUSFABRIC_LSB _u(4) +#define PSM_FRCE_ON_BUSFABRIC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_ON_RESETS +// Description : None +#define PSM_FRCE_ON_RESETS_RESET _u(0x0) +#define PSM_FRCE_ON_RESETS_BITS _u(0x00000008) +#define PSM_FRCE_ON_RESETS_MSB _u(3) +#define PSM_FRCE_ON_RESETS_LSB _u(3) +#define PSM_FRCE_ON_RESETS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_ON_CLOCKS +// Description : None +#define PSM_FRCE_ON_CLOCKS_RESET _u(0x0) +#define PSM_FRCE_ON_CLOCKS_BITS _u(0x00000004) +#define PSM_FRCE_ON_CLOCKS_MSB _u(2) +#define PSM_FRCE_ON_CLOCKS_LSB _u(2) +#define PSM_FRCE_ON_CLOCKS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_ON_XOSC +// Description : None +#define PSM_FRCE_ON_XOSC_RESET _u(0x0) +#define PSM_FRCE_ON_XOSC_BITS _u(0x00000002) +#define PSM_FRCE_ON_XOSC_MSB _u(1) +#define PSM_FRCE_ON_XOSC_LSB _u(1) +#define PSM_FRCE_ON_XOSC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_ON_ROSC +// Description : None +#define PSM_FRCE_ON_ROSC_RESET _u(0x0) +#define PSM_FRCE_ON_ROSC_BITS _u(0x00000001) +#define PSM_FRCE_ON_ROSC_MSB _u(0) +#define PSM_FRCE_ON_ROSC_LSB _u(0) +#define PSM_FRCE_ON_ROSC_ACCESS "RW" +// ============================================================================= +// Register : PSM_FRCE_OFF +// Description : Force into reset (i.e. power it off) +#define PSM_FRCE_OFF_OFFSET _u(0x00000004) +#define PSM_FRCE_OFF_BITS _u(0x0001ffff) +#define PSM_FRCE_OFF_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_OFF_PROC1 +// Description : None +#define PSM_FRCE_OFF_PROC1_RESET _u(0x0) +#define PSM_FRCE_OFF_PROC1_BITS _u(0x00010000) +#define PSM_FRCE_OFF_PROC1_MSB _u(16) +#define PSM_FRCE_OFF_PROC1_LSB _u(16) +#define PSM_FRCE_OFF_PROC1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_OFF_PROC0 +// Description : None +#define PSM_FRCE_OFF_PROC0_RESET _u(0x0) +#define PSM_FRCE_OFF_PROC0_BITS _u(0x00008000) +#define PSM_FRCE_OFF_PROC0_MSB _u(15) +#define PSM_FRCE_OFF_PROC0_LSB _u(15) +#define PSM_FRCE_OFF_PROC0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_OFF_SIO +// Description : None +#define PSM_FRCE_OFF_SIO_RESET _u(0x0) +#define PSM_FRCE_OFF_SIO_BITS _u(0x00004000) +#define PSM_FRCE_OFF_SIO_MSB _u(14) +#define PSM_FRCE_OFF_SIO_LSB _u(14) +#define PSM_FRCE_OFF_SIO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_OFF_VREG_AND_CHIP_RESET +// Description : None +#define PSM_FRCE_OFF_VREG_AND_CHIP_RESET_RESET _u(0x0) +#define PSM_FRCE_OFF_VREG_AND_CHIP_RESET_BITS _u(0x00002000) +#define PSM_FRCE_OFF_VREG_AND_CHIP_RESET_MSB _u(13) +#define PSM_FRCE_OFF_VREG_AND_CHIP_RESET_LSB _u(13) +#define PSM_FRCE_OFF_VREG_AND_CHIP_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_OFF_XIP +// Description : None +#define PSM_FRCE_OFF_XIP_RESET _u(0x0) +#define PSM_FRCE_OFF_XIP_BITS _u(0x00001000) +#define PSM_FRCE_OFF_XIP_MSB _u(12) +#define PSM_FRCE_OFF_XIP_LSB _u(12) +#define PSM_FRCE_OFF_XIP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_OFF_SRAM5 +// Description : None +#define PSM_FRCE_OFF_SRAM5_RESET _u(0x0) +#define PSM_FRCE_OFF_SRAM5_BITS _u(0x00000800) +#define PSM_FRCE_OFF_SRAM5_MSB _u(11) +#define PSM_FRCE_OFF_SRAM5_LSB _u(11) +#define PSM_FRCE_OFF_SRAM5_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_OFF_SRAM4 +// Description : None +#define PSM_FRCE_OFF_SRAM4_RESET _u(0x0) +#define PSM_FRCE_OFF_SRAM4_BITS _u(0x00000400) +#define PSM_FRCE_OFF_SRAM4_MSB _u(10) +#define PSM_FRCE_OFF_SRAM4_LSB _u(10) +#define PSM_FRCE_OFF_SRAM4_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_OFF_SRAM3 +// Description : None +#define PSM_FRCE_OFF_SRAM3_RESET _u(0x0) +#define PSM_FRCE_OFF_SRAM3_BITS _u(0x00000200) +#define PSM_FRCE_OFF_SRAM3_MSB _u(9) +#define PSM_FRCE_OFF_SRAM3_LSB _u(9) +#define PSM_FRCE_OFF_SRAM3_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_OFF_SRAM2 +// Description : None +#define PSM_FRCE_OFF_SRAM2_RESET _u(0x0) +#define PSM_FRCE_OFF_SRAM2_BITS _u(0x00000100) +#define PSM_FRCE_OFF_SRAM2_MSB _u(8) +#define PSM_FRCE_OFF_SRAM2_LSB _u(8) +#define PSM_FRCE_OFF_SRAM2_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_OFF_SRAM1 +// Description : None +#define PSM_FRCE_OFF_SRAM1_RESET _u(0x0) +#define PSM_FRCE_OFF_SRAM1_BITS _u(0x00000080) +#define PSM_FRCE_OFF_SRAM1_MSB _u(7) +#define PSM_FRCE_OFF_SRAM1_LSB _u(7) +#define PSM_FRCE_OFF_SRAM1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_OFF_SRAM0 +// Description : None +#define PSM_FRCE_OFF_SRAM0_RESET _u(0x0) +#define PSM_FRCE_OFF_SRAM0_BITS _u(0x00000040) +#define PSM_FRCE_OFF_SRAM0_MSB _u(6) +#define PSM_FRCE_OFF_SRAM0_LSB _u(6) +#define PSM_FRCE_OFF_SRAM0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_OFF_ROM +// Description : None +#define PSM_FRCE_OFF_ROM_RESET _u(0x0) +#define PSM_FRCE_OFF_ROM_BITS _u(0x00000020) +#define PSM_FRCE_OFF_ROM_MSB _u(5) +#define PSM_FRCE_OFF_ROM_LSB _u(5) +#define PSM_FRCE_OFF_ROM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_OFF_BUSFABRIC +// Description : None +#define PSM_FRCE_OFF_BUSFABRIC_RESET _u(0x0) +#define PSM_FRCE_OFF_BUSFABRIC_BITS _u(0x00000010) +#define PSM_FRCE_OFF_BUSFABRIC_MSB _u(4) +#define PSM_FRCE_OFF_BUSFABRIC_LSB _u(4) +#define PSM_FRCE_OFF_BUSFABRIC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_OFF_RESETS +// Description : None +#define PSM_FRCE_OFF_RESETS_RESET _u(0x0) +#define PSM_FRCE_OFF_RESETS_BITS _u(0x00000008) +#define PSM_FRCE_OFF_RESETS_MSB _u(3) +#define PSM_FRCE_OFF_RESETS_LSB _u(3) +#define PSM_FRCE_OFF_RESETS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_OFF_CLOCKS +// Description : None +#define PSM_FRCE_OFF_CLOCKS_RESET _u(0x0) +#define PSM_FRCE_OFF_CLOCKS_BITS _u(0x00000004) +#define PSM_FRCE_OFF_CLOCKS_MSB _u(2) +#define PSM_FRCE_OFF_CLOCKS_LSB _u(2) +#define PSM_FRCE_OFF_CLOCKS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_OFF_XOSC +// Description : None +#define PSM_FRCE_OFF_XOSC_RESET _u(0x0) +#define PSM_FRCE_OFF_XOSC_BITS _u(0x00000002) +#define PSM_FRCE_OFF_XOSC_MSB _u(1) +#define PSM_FRCE_OFF_XOSC_LSB _u(1) +#define PSM_FRCE_OFF_XOSC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_FRCE_OFF_ROSC +// Description : None +#define PSM_FRCE_OFF_ROSC_RESET _u(0x0) +#define PSM_FRCE_OFF_ROSC_BITS _u(0x00000001) +#define PSM_FRCE_OFF_ROSC_MSB _u(0) +#define PSM_FRCE_OFF_ROSC_LSB _u(0) +#define PSM_FRCE_OFF_ROSC_ACCESS "RW" +// ============================================================================= +// Register : PSM_WDSEL +// Description : Set to 1 if this peripheral should be reset when the watchdog +// fires. +#define PSM_WDSEL_OFFSET _u(0x00000008) +#define PSM_WDSEL_BITS _u(0x0001ffff) +#define PSM_WDSEL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PSM_WDSEL_PROC1 +// Description : None +#define PSM_WDSEL_PROC1_RESET _u(0x0) +#define PSM_WDSEL_PROC1_BITS _u(0x00010000) +#define PSM_WDSEL_PROC1_MSB _u(16) +#define PSM_WDSEL_PROC1_LSB _u(16) +#define PSM_WDSEL_PROC1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_WDSEL_PROC0 +// Description : None +#define PSM_WDSEL_PROC0_RESET _u(0x0) +#define PSM_WDSEL_PROC0_BITS _u(0x00008000) +#define PSM_WDSEL_PROC0_MSB _u(15) +#define PSM_WDSEL_PROC0_LSB _u(15) +#define PSM_WDSEL_PROC0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_WDSEL_SIO +// Description : None +#define PSM_WDSEL_SIO_RESET _u(0x0) +#define PSM_WDSEL_SIO_BITS _u(0x00004000) +#define PSM_WDSEL_SIO_MSB _u(14) +#define PSM_WDSEL_SIO_LSB _u(14) +#define PSM_WDSEL_SIO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_WDSEL_VREG_AND_CHIP_RESET +// Description : None +#define PSM_WDSEL_VREG_AND_CHIP_RESET_RESET _u(0x0) +#define PSM_WDSEL_VREG_AND_CHIP_RESET_BITS _u(0x00002000) +#define PSM_WDSEL_VREG_AND_CHIP_RESET_MSB _u(13) +#define PSM_WDSEL_VREG_AND_CHIP_RESET_LSB _u(13) +#define PSM_WDSEL_VREG_AND_CHIP_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_WDSEL_XIP +// Description : None +#define PSM_WDSEL_XIP_RESET _u(0x0) +#define PSM_WDSEL_XIP_BITS _u(0x00001000) +#define PSM_WDSEL_XIP_MSB _u(12) +#define PSM_WDSEL_XIP_LSB _u(12) +#define PSM_WDSEL_XIP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_WDSEL_SRAM5 +// Description : None +#define PSM_WDSEL_SRAM5_RESET _u(0x0) +#define PSM_WDSEL_SRAM5_BITS _u(0x00000800) +#define PSM_WDSEL_SRAM5_MSB _u(11) +#define PSM_WDSEL_SRAM5_LSB _u(11) +#define PSM_WDSEL_SRAM5_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_WDSEL_SRAM4 +// Description : None +#define PSM_WDSEL_SRAM4_RESET _u(0x0) +#define PSM_WDSEL_SRAM4_BITS _u(0x00000400) +#define PSM_WDSEL_SRAM4_MSB _u(10) +#define PSM_WDSEL_SRAM4_LSB _u(10) +#define PSM_WDSEL_SRAM4_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_WDSEL_SRAM3 +// Description : None +#define PSM_WDSEL_SRAM3_RESET _u(0x0) +#define PSM_WDSEL_SRAM3_BITS _u(0x00000200) +#define PSM_WDSEL_SRAM3_MSB _u(9) +#define PSM_WDSEL_SRAM3_LSB _u(9) +#define PSM_WDSEL_SRAM3_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_WDSEL_SRAM2 +// Description : None +#define PSM_WDSEL_SRAM2_RESET _u(0x0) +#define PSM_WDSEL_SRAM2_BITS _u(0x00000100) +#define PSM_WDSEL_SRAM2_MSB _u(8) +#define PSM_WDSEL_SRAM2_LSB _u(8) +#define PSM_WDSEL_SRAM2_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_WDSEL_SRAM1 +// Description : None +#define PSM_WDSEL_SRAM1_RESET _u(0x0) +#define PSM_WDSEL_SRAM1_BITS _u(0x00000080) +#define PSM_WDSEL_SRAM1_MSB _u(7) +#define PSM_WDSEL_SRAM1_LSB _u(7) +#define PSM_WDSEL_SRAM1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_WDSEL_SRAM0 +// Description : None +#define PSM_WDSEL_SRAM0_RESET _u(0x0) +#define PSM_WDSEL_SRAM0_BITS _u(0x00000040) +#define PSM_WDSEL_SRAM0_MSB _u(6) +#define PSM_WDSEL_SRAM0_LSB _u(6) +#define PSM_WDSEL_SRAM0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_WDSEL_ROM +// Description : None +#define PSM_WDSEL_ROM_RESET _u(0x0) +#define PSM_WDSEL_ROM_BITS _u(0x00000020) +#define PSM_WDSEL_ROM_MSB _u(5) +#define PSM_WDSEL_ROM_LSB _u(5) +#define PSM_WDSEL_ROM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_WDSEL_BUSFABRIC +// Description : None +#define PSM_WDSEL_BUSFABRIC_RESET _u(0x0) +#define PSM_WDSEL_BUSFABRIC_BITS _u(0x00000010) +#define PSM_WDSEL_BUSFABRIC_MSB _u(4) +#define PSM_WDSEL_BUSFABRIC_LSB _u(4) +#define PSM_WDSEL_BUSFABRIC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_WDSEL_RESETS +// Description : None +#define PSM_WDSEL_RESETS_RESET _u(0x0) +#define PSM_WDSEL_RESETS_BITS _u(0x00000008) +#define PSM_WDSEL_RESETS_MSB _u(3) +#define PSM_WDSEL_RESETS_LSB _u(3) +#define PSM_WDSEL_RESETS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_WDSEL_CLOCKS +// Description : None +#define PSM_WDSEL_CLOCKS_RESET _u(0x0) +#define PSM_WDSEL_CLOCKS_BITS _u(0x00000004) +#define PSM_WDSEL_CLOCKS_MSB _u(2) +#define PSM_WDSEL_CLOCKS_LSB _u(2) +#define PSM_WDSEL_CLOCKS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_WDSEL_XOSC +// Description : None +#define PSM_WDSEL_XOSC_RESET _u(0x0) +#define PSM_WDSEL_XOSC_BITS _u(0x00000002) +#define PSM_WDSEL_XOSC_MSB _u(1) +#define PSM_WDSEL_XOSC_LSB _u(1) +#define PSM_WDSEL_XOSC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PSM_WDSEL_ROSC +// Description : None +#define PSM_WDSEL_ROSC_RESET _u(0x0) +#define PSM_WDSEL_ROSC_BITS _u(0x00000001) +#define PSM_WDSEL_ROSC_MSB _u(0) +#define PSM_WDSEL_ROSC_LSB _u(0) +#define PSM_WDSEL_ROSC_ACCESS "RW" +// ============================================================================= +// Register : PSM_DONE +// Description : Indicates the peripheral's registers are ready to access. +#define PSM_DONE_OFFSET _u(0x0000000c) +#define PSM_DONE_BITS _u(0x0001ffff) +#define PSM_DONE_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PSM_DONE_PROC1 +// Description : None +#define PSM_DONE_PROC1_RESET _u(0x0) +#define PSM_DONE_PROC1_BITS _u(0x00010000) +#define PSM_DONE_PROC1_MSB _u(16) +#define PSM_DONE_PROC1_LSB _u(16) +#define PSM_DONE_PROC1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PSM_DONE_PROC0 +// Description : None +#define PSM_DONE_PROC0_RESET _u(0x0) +#define PSM_DONE_PROC0_BITS _u(0x00008000) +#define PSM_DONE_PROC0_MSB _u(15) +#define PSM_DONE_PROC0_LSB _u(15) +#define PSM_DONE_PROC0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PSM_DONE_SIO +// Description : None +#define PSM_DONE_SIO_RESET _u(0x0) +#define PSM_DONE_SIO_BITS _u(0x00004000) +#define PSM_DONE_SIO_MSB _u(14) +#define PSM_DONE_SIO_LSB _u(14) +#define PSM_DONE_SIO_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PSM_DONE_VREG_AND_CHIP_RESET +// Description : None +#define PSM_DONE_VREG_AND_CHIP_RESET_RESET _u(0x0) +#define PSM_DONE_VREG_AND_CHIP_RESET_BITS _u(0x00002000) +#define PSM_DONE_VREG_AND_CHIP_RESET_MSB _u(13) +#define PSM_DONE_VREG_AND_CHIP_RESET_LSB _u(13) +#define PSM_DONE_VREG_AND_CHIP_RESET_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PSM_DONE_XIP +// Description : None +#define PSM_DONE_XIP_RESET _u(0x0) +#define PSM_DONE_XIP_BITS _u(0x00001000) +#define PSM_DONE_XIP_MSB _u(12) +#define PSM_DONE_XIP_LSB _u(12) +#define PSM_DONE_XIP_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PSM_DONE_SRAM5 +// Description : None +#define PSM_DONE_SRAM5_RESET _u(0x0) +#define PSM_DONE_SRAM5_BITS _u(0x00000800) +#define PSM_DONE_SRAM5_MSB _u(11) +#define PSM_DONE_SRAM5_LSB _u(11) +#define PSM_DONE_SRAM5_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PSM_DONE_SRAM4 +// Description : None +#define PSM_DONE_SRAM4_RESET _u(0x0) +#define PSM_DONE_SRAM4_BITS _u(0x00000400) +#define PSM_DONE_SRAM4_MSB _u(10) +#define PSM_DONE_SRAM4_LSB _u(10) +#define PSM_DONE_SRAM4_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PSM_DONE_SRAM3 +// Description : None +#define PSM_DONE_SRAM3_RESET _u(0x0) +#define PSM_DONE_SRAM3_BITS _u(0x00000200) +#define PSM_DONE_SRAM3_MSB _u(9) +#define PSM_DONE_SRAM3_LSB _u(9) +#define PSM_DONE_SRAM3_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PSM_DONE_SRAM2 +// Description : None +#define PSM_DONE_SRAM2_RESET _u(0x0) +#define PSM_DONE_SRAM2_BITS _u(0x00000100) +#define PSM_DONE_SRAM2_MSB _u(8) +#define PSM_DONE_SRAM2_LSB _u(8) +#define PSM_DONE_SRAM2_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PSM_DONE_SRAM1 +// Description : None +#define PSM_DONE_SRAM1_RESET _u(0x0) +#define PSM_DONE_SRAM1_BITS _u(0x00000080) +#define PSM_DONE_SRAM1_MSB _u(7) +#define PSM_DONE_SRAM1_LSB _u(7) +#define PSM_DONE_SRAM1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PSM_DONE_SRAM0 +// Description : None +#define PSM_DONE_SRAM0_RESET _u(0x0) +#define PSM_DONE_SRAM0_BITS _u(0x00000040) +#define PSM_DONE_SRAM0_MSB _u(6) +#define PSM_DONE_SRAM0_LSB _u(6) +#define PSM_DONE_SRAM0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PSM_DONE_ROM +// Description : None +#define PSM_DONE_ROM_RESET _u(0x0) +#define PSM_DONE_ROM_BITS _u(0x00000020) +#define PSM_DONE_ROM_MSB _u(5) +#define PSM_DONE_ROM_LSB _u(5) +#define PSM_DONE_ROM_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PSM_DONE_BUSFABRIC +// Description : None +#define PSM_DONE_BUSFABRIC_RESET _u(0x0) +#define PSM_DONE_BUSFABRIC_BITS _u(0x00000010) +#define PSM_DONE_BUSFABRIC_MSB _u(4) +#define PSM_DONE_BUSFABRIC_LSB _u(4) +#define PSM_DONE_BUSFABRIC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PSM_DONE_RESETS +// Description : None +#define PSM_DONE_RESETS_RESET _u(0x0) +#define PSM_DONE_RESETS_BITS _u(0x00000008) +#define PSM_DONE_RESETS_MSB _u(3) +#define PSM_DONE_RESETS_LSB _u(3) +#define PSM_DONE_RESETS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PSM_DONE_CLOCKS +// Description : None +#define PSM_DONE_CLOCKS_RESET _u(0x0) +#define PSM_DONE_CLOCKS_BITS _u(0x00000004) +#define PSM_DONE_CLOCKS_MSB _u(2) +#define PSM_DONE_CLOCKS_LSB _u(2) +#define PSM_DONE_CLOCKS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PSM_DONE_XOSC +// Description : None +#define PSM_DONE_XOSC_RESET _u(0x0) +#define PSM_DONE_XOSC_BITS _u(0x00000002) +#define PSM_DONE_XOSC_MSB _u(1) +#define PSM_DONE_XOSC_LSB _u(1) +#define PSM_DONE_XOSC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PSM_DONE_ROSC +// Description : None +#define PSM_DONE_ROSC_RESET _u(0x0) +#define PSM_DONE_ROSC_BITS _u(0x00000001) +#define PSM_DONE_ROSC_MSB _u(0) +#define PSM_DONE_ROSC_LSB _u(0) +#define PSM_DONE_ROSC_ACCESS "RO" +// ============================================================================= +#endif // HARDWARE_REGS_PSM_DEFINED diff --git a/arkanoid/pico/hardware/regs/pwm.h b/arkanoid/pico/hardware/regs/pwm.h new file mode 100644 index 0000000..a853597 --- /dev/null +++ b/arkanoid/pico/hardware/regs/pwm.h @@ -0,0 +1,1505 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : PWM +// Version : 1 +// Bus type : apb +// Description : Simple PWM +// ============================================================================= +#ifndef HARDWARE_REGS_PWM_DEFINED +#define HARDWARE_REGS_PWM_DEFINED +// ============================================================================= +// Register : PWM_CH0_CSR +// Description : Control and status register +#define PWM_CH0_CSR_OFFSET _u(0x00000000) +#define PWM_CH0_CSR_BITS _u(0x000000ff) +#define PWM_CH0_CSR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_CH0_CSR_PH_ADV +// Description : Advance the phase of the counter by 1 count, while it is +// running. +// Self-clearing. Write a 1, and poll until low. Counter must be +// running +// at less than full speed (div_int + div_frac / 16 > 1) +#define PWM_CH0_CSR_PH_ADV_RESET _u(0x0) +#define PWM_CH0_CSR_PH_ADV_BITS _u(0x00000080) +#define PWM_CH0_CSR_PH_ADV_MSB _u(7) +#define PWM_CH0_CSR_PH_ADV_LSB _u(7) +#define PWM_CH0_CSR_PH_ADV_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : PWM_CH0_CSR_PH_RET +// Description : Retard the phase of the counter by 1 count, while it is +// running. +// Self-clearing. Write a 1, and poll until low. Counter must be +// running. +#define PWM_CH0_CSR_PH_RET_RESET _u(0x0) +#define PWM_CH0_CSR_PH_RET_BITS _u(0x00000040) +#define PWM_CH0_CSR_PH_RET_MSB _u(6) +#define PWM_CH0_CSR_PH_RET_LSB _u(6) +#define PWM_CH0_CSR_PH_RET_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : PWM_CH0_CSR_DIVMODE +// Description : 0x0 -> Free-running counting at rate dictated by fractional +// divider +// 0x1 -> Fractional divider operation is gated by the PWM B pin. +// 0x2 -> Counter advances with each rising edge of the PWM B pin. +// 0x3 -> Counter advances with each falling edge of the PWM B +// pin. +#define PWM_CH0_CSR_DIVMODE_RESET _u(0x0) +#define PWM_CH0_CSR_DIVMODE_BITS _u(0x00000030) +#define PWM_CH0_CSR_DIVMODE_MSB _u(5) +#define PWM_CH0_CSR_DIVMODE_LSB _u(4) +#define PWM_CH0_CSR_DIVMODE_ACCESS "RW" +#define PWM_CH0_CSR_DIVMODE_VALUE_DIV _u(0x0) +#define PWM_CH0_CSR_DIVMODE_VALUE_LEVEL _u(0x1) +#define PWM_CH0_CSR_DIVMODE_VALUE_RISE _u(0x2) +#define PWM_CH0_CSR_DIVMODE_VALUE_FALL _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PWM_CH0_CSR_B_INV +// Description : Invert output B +#define PWM_CH0_CSR_B_INV_RESET _u(0x0) +#define PWM_CH0_CSR_B_INV_BITS _u(0x00000008) +#define PWM_CH0_CSR_B_INV_MSB _u(3) +#define PWM_CH0_CSR_B_INV_LSB _u(3) +#define PWM_CH0_CSR_B_INV_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH0_CSR_A_INV +// Description : Invert output A +#define PWM_CH0_CSR_A_INV_RESET _u(0x0) +#define PWM_CH0_CSR_A_INV_BITS _u(0x00000004) +#define PWM_CH0_CSR_A_INV_MSB _u(2) +#define PWM_CH0_CSR_A_INV_LSB _u(2) +#define PWM_CH0_CSR_A_INV_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH0_CSR_PH_CORRECT +// Description : 1: Enable phase-correct modulation. 0: Trailing-edge +#define PWM_CH0_CSR_PH_CORRECT_RESET _u(0x0) +#define PWM_CH0_CSR_PH_CORRECT_BITS _u(0x00000002) +#define PWM_CH0_CSR_PH_CORRECT_MSB _u(1) +#define PWM_CH0_CSR_PH_CORRECT_LSB _u(1) +#define PWM_CH0_CSR_PH_CORRECT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH0_CSR_EN +// Description : Enable the PWM channel. +#define PWM_CH0_CSR_EN_RESET _u(0x0) +#define PWM_CH0_CSR_EN_BITS _u(0x00000001) +#define PWM_CH0_CSR_EN_MSB _u(0) +#define PWM_CH0_CSR_EN_LSB _u(0) +#define PWM_CH0_CSR_EN_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH0_DIV +// Description : INT and FRAC form a fixed-point fractional number. +// Counting rate is system clock frequency divided by this number. +// Fractional division uses simple 1st-order sigma-delta. +#define PWM_CH0_DIV_OFFSET _u(0x00000004) +#define PWM_CH0_DIV_BITS _u(0x00000fff) +#define PWM_CH0_DIV_RESET _u(0x00000010) +// ----------------------------------------------------------------------------- +// Field : PWM_CH0_DIV_INT +// Description : None +#define PWM_CH0_DIV_INT_RESET _u(0x01) +#define PWM_CH0_DIV_INT_BITS _u(0x00000ff0) +#define PWM_CH0_DIV_INT_MSB _u(11) +#define PWM_CH0_DIV_INT_LSB _u(4) +#define PWM_CH0_DIV_INT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH0_DIV_FRAC +// Description : None +#define PWM_CH0_DIV_FRAC_RESET _u(0x0) +#define PWM_CH0_DIV_FRAC_BITS _u(0x0000000f) +#define PWM_CH0_DIV_FRAC_MSB _u(3) +#define PWM_CH0_DIV_FRAC_LSB _u(0) +#define PWM_CH0_DIV_FRAC_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH0_CTR +// Description : Direct access to the PWM counter +#define PWM_CH0_CTR_OFFSET _u(0x00000008) +#define PWM_CH0_CTR_BITS _u(0x0000ffff) +#define PWM_CH0_CTR_RESET _u(0x00000000) +#define PWM_CH0_CTR_MSB _u(15) +#define PWM_CH0_CTR_LSB _u(0) +#define PWM_CH0_CTR_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH0_CC +// Description : Counter compare values +#define PWM_CH0_CC_OFFSET _u(0x0000000c) +#define PWM_CH0_CC_BITS _u(0xffffffff) +#define PWM_CH0_CC_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_CH0_CC_B +// Description : None +#define PWM_CH0_CC_B_RESET _u(0x0000) +#define PWM_CH0_CC_B_BITS _u(0xffff0000) +#define PWM_CH0_CC_B_MSB _u(31) +#define PWM_CH0_CC_B_LSB _u(16) +#define PWM_CH0_CC_B_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH0_CC_A +// Description : None +#define PWM_CH0_CC_A_RESET _u(0x0000) +#define PWM_CH0_CC_A_BITS _u(0x0000ffff) +#define PWM_CH0_CC_A_MSB _u(15) +#define PWM_CH0_CC_A_LSB _u(0) +#define PWM_CH0_CC_A_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH0_TOP +// Description : Counter wrap value +#define PWM_CH0_TOP_OFFSET _u(0x00000010) +#define PWM_CH0_TOP_BITS _u(0x0000ffff) +#define PWM_CH0_TOP_RESET _u(0x0000ffff) +#define PWM_CH0_TOP_MSB _u(15) +#define PWM_CH0_TOP_LSB _u(0) +#define PWM_CH0_TOP_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH1_CSR +// Description : Control and status register +#define PWM_CH1_CSR_OFFSET _u(0x00000014) +#define PWM_CH1_CSR_BITS _u(0x000000ff) +#define PWM_CH1_CSR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_CH1_CSR_PH_ADV +// Description : Advance the phase of the counter by 1 count, while it is +// running. +// Self-clearing. Write a 1, and poll until low. Counter must be +// running +// at less than full speed (div_int + div_frac / 16 > 1) +#define PWM_CH1_CSR_PH_ADV_RESET _u(0x0) +#define PWM_CH1_CSR_PH_ADV_BITS _u(0x00000080) +#define PWM_CH1_CSR_PH_ADV_MSB _u(7) +#define PWM_CH1_CSR_PH_ADV_LSB _u(7) +#define PWM_CH1_CSR_PH_ADV_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : PWM_CH1_CSR_PH_RET +// Description : Retard the phase of the counter by 1 count, while it is +// running. +// Self-clearing. Write a 1, and poll until low. Counter must be +// running. +#define PWM_CH1_CSR_PH_RET_RESET _u(0x0) +#define PWM_CH1_CSR_PH_RET_BITS _u(0x00000040) +#define PWM_CH1_CSR_PH_RET_MSB _u(6) +#define PWM_CH1_CSR_PH_RET_LSB _u(6) +#define PWM_CH1_CSR_PH_RET_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : PWM_CH1_CSR_DIVMODE +// Description : 0x0 -> Free-running counting at rate dictated by fractional +// divider +// 0x1 -> Fractional divider operation is gated by the PWM B pin. +// 0x2 -> Counter advances with each rising edge of the PWM B pin. +// 0x3 -> Counter advances with each falling edge of the PWM B +// pin. +#define PWM_CH1_CSR_DIVMODE_RESET _u(0x0) +#define PWM_CH1_CSR_DIVMODE_BITS _u(0x00000030) +#define PWM_CH1_CSR_DIVMODE_MSB _u(5) +#define PWM_CH1_CSR_DIVMODE_LSB _u(4) +#define PWM_CH1_CSR_DIVMODE_ACCESS "RW" +#define PWM_CH1_CSR_DIVMODE_VALUE_DIV _u(0x0) +#define PWM_CH1_CSR_DIVMODE_VALUE_LEVEL _u(0x1) +#define PWM_CH1_CSR_DIVMODE_VALUE_RISE _u(0x2) +#define PWM_CH1_CSR_DIVMODE_VALUE_FALL _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PWM_CH1_CSR_B_INV +// Description : Invert output B +#define PWM_CH1_CSR_B_INV_RESET _u(0x0) +#define PWM_CH1_CSR_B_INV_BITS _u(0x00000008) +#define PWM_CH1_CSR_B_INV_MSB _u(3) +#define PWM_CH1_CSR_B_INV_LSB _u(3) +#define PWM_CH1_CSR_B_INV_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH1_CSR_A_INV +// Description : Invert output A +#define PWM_CH1_CSR_A_INV_RESET _u(0x0) +#define PWM_CH1_CSR_A_INV_BITS _u(0x00000004) +#define PWM_CH1_CSR_A_INV_MSB _u(2) +#define PWM_CH1_CSR_A_INV_LSB _u(2) +#define PWM_CH1_CSR_A_INV_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH1_CSR_PH_CORRECT +// Description : 1: Enable phase-correct modulation. 0: Trailing-edge +#define PWM_CH1_CSR_PH_CORRECT_RESET _u(0x0) +#define PWM_CH1_CSR_PH_CORRECT_BITS _u(0x00000002) +#define PWM_CH1_CSR_PH_CORRECT_MSB _u(1) +#define PWM_CH1_CSR_PH_CORRECT_LSB _u(1) +#define PWM_CH1_CSR_PH_CORRECT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH1_CSR_EN +// Description : Enable the PWM channel. +#define PWM_CH1_CSR_EN_RESET _u(0x0) +#define PWM_CH1_CSR_EN_BITS _u(0x00000001) +#define PWM_CH1_CSR_EN_MSB _u(0) +#define PWM_CH1_CSR_EN_LSB _u(0) +#define PWM_CH1_CSR_EN_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH1_DIV +// Description : INT and FRAC form a fixed-point fractional number. +// Counting rate is system clock frequency divided by this number. +// Fractional division uses simple 1st-order sigma-delta. +#define PWM_CH1_DIV_OFFSET _u(0x00000018) +#define PWM_CH1_DIV_BITS _u(0x00000fff) +#define PWM_CH1_DIV_RESET _u(0x00000010) +// ----------------------------------------------------------------------------- +// Field : PWM_CH1_DIV_INT +// Description : None +#define PWM_CH1_DIV_INT_RESET _u(0x01) +#define PWM_CH1_DIV_INT_BITS _u(0x00000ff0) +#define PWM_CH1_DIV_INT_MSB _u(11) +#define PWM_CH1_DIV_INT_LSB _u(4) +#define PWM_CH1_DIV_INT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH1_DIV_FRAC +// Description : None +#define PWM_CH1_DIV_FRAC_RESET _u(0x0) +#define PWM_CH1_DIV_FRAC_BITS _u(0x0000000f) +#define PWM_CH1_DIV_FRAC_MSB _u(3) +#define PWM_CH1_DIV_FRAC_LSB _u(0) +#define PWM_CH1_DIV_FRAC_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH1_CTR +// Description : Direct access to the PWM counter +#define PWM_CH1_CTR_OFFSET _u(0x0000001c) +#define PWM_CH1_CTR_BITS _u(0x0000ffff) +#define PWM_CH1_CTR_RESET _u(0x00000000) +#define PWM_CH1_CTR_MSB _u(15) +#define PWM_CH1_CTR_LSB _u(0) +#define PWM_CH1_CTR_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH1_CC +// Description : Counter compare values +#define PWM_CH1_CC_OFFSET _u(0x00000020) +#define PWM_CH1_CC_BITS _u(0xffffffff) +#define PWM_CH1_CC_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_CH1_CC_B +// Description : None +#define PWM_CH1_CC_B_RESET _u(0x0000) +#define PWM_CH1_CC_B_BITS _u(0xffff0000) +#define PWM_CH1_CC_B_MSB _u(31) +#define PWM_CH1_CC_B_LSB _u(16) +#define PWM_CH1_CC_B_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH1_CC_A +// Description : None +#define PWM_CH1_CC_A_RESET _u(0x0000) +#define PWM_CH1_CC_A_BITS _u(0x0000ffff) +#define PWM_CH1_CC_A_MSB _u(15) +#define PWM_CH1_CC_A_LSB _u(0) +#define PWM_CH1_CC_A_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH1_TOP +// Description : Counter wrap value +#define PWM_CH1_TOP_OFFSET _u(0x00000024) +#define PWM_CH1_TOP_BITS _u(0x0000ffff) +#define PWM_CH1_TOP_RESET _u(0x0000ffff) +#define PWM_CH1_TOP_MSB _u(15) +#define PWM_CH1_TOP_LSB _u(0) +#define PWM_CH1_TOP_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH2_CSR +// Description : Control and status register +#define PWM_CH2_CSR_OFFSET _u(0x00000028) +#define PWM_CH2_CSR_BITS _u(0x000000ff) +#define PWM_CH2_CSR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_CH2_CSR_PH_ADV +// Description : Advance the phase of the counter by 1 count, while it is +// running. +// Self-clearing. Write a 1, and poll until low. Counter must be +// running +// at less than full speed (div_int + div_frac / 16 > 1) +#define PWM_CH2_CSR_PH_ADV_RESET _u(0x0) +#define PWM_CH2_CSR_PH_ADV_BITS _u(0x00000080) +#define PWM_CH2_CSR_PH_ADV_MSB _u(7) +#define PWM_CH2_CSR_PH_ADV_LSB _u(7) +#define PWM_CH2_CSR_PH_ADV_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : PWM_CH2_CSR_PH_RET +// Description : Retard the phase of the counter by 1 count, while it is +// running. +// Self-clearing. Write a 1, and poll until low. Counter must be +// running. +#define PWM_CH2_CSR_PH_RET_RESET _u(0x0) +#define PWM_CH2_CSR_PH_RET_BITS _u(0x00000040) +#define PWM_CH2_CSR_PH_RET_MSB _u(6) +#define PWM_CH2_CSR_PH_RET_LSB _u(6) +#define PWM_CH2_CSR_PH_RET_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : PWM_CH2_CSR_DIVMODE +// Description : 0x0 -> Free-running counting at rate dictated by fractional +// divider +// 0x1 -> Fractional divider operation is gated by the PWM B pin. +// 0x2 -> Counter advances with each rising edge of the PWM B pin. +// 0x3 -> Counter advances with each falling edge of the PWM B +// pin. +#define PWM_CH2_CSR_DIVMODE_RESET _u(0x0) +#define PWM_CH2_CSR_DIVMODE_BITS _u(0x00000030) +#define PWM_CH2_CSR_DIVMODE_MSB _u(5) +#define PWM_CH2_CSR_DIVMODE_LSB _u(4) +#define PWM_CH2_CSR_DIVMODE_ACCESS "RW" +#define PWM_CH2_CSR_DIVMODE_VALUE_DIV _u(0x0) +#define PWM_CH2_CSR_DIVMODE_VALUE_LEVEL _u(0x1) +#define PWM_CH2_CSR_DIVMODE_VALUE_RISE _u(0x2) +#define PWM_CH2_CSR_DIVMODE_VALUE_FALL _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PWM_CH2_CSR_B_INV +// Description : Invert output B +#define PWM_CH2_CSR_B_INV_RESET _u(0x0) +#define PWM_CH2_CSR_B_INV_BITS _u(0x00000008) +#define PWM_CH2_CSR_B_INV_MSB _u(3) +#define PWM_CH2_CSR_B_INV_LSB _u(3) +#define PWM_CH2_CSR_B_INV_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH2_CSR_A_INV +// Description : Invert output A +#define PWM_CH2_CSR_A_INV_RESET _u(0x0) +#define PWM_CH2_CSR_A_INV_BITS _u(0x00000004) +#define PWM_CH2_CSR_A_INV_MSB _u(2) +#define PWM_CH2_CSR_A_INV_LSB _u(2) +#define PWM_CH2_CSR_A_INV_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH2_CSR_PH_CORRECT +// Description : 1: Enable phase-correct modulation. 0: Trailing-edge +#define PWM_CH2_CSR_PH_CORRECT_RESET _u(0x0) +#define PWM_CH2_CSR_PH_CORRECT_BITS _u(0x00000002) +#define PWM_CH2_CSR_PH_CORRECT_MSB _u(1) +#define PWM_CH2_CSR_PH_CORRECT_LSB _u(1) +#define PWM_CH2_CSR_PH_CORRECT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH2_CSR_EN +// Description : Enable the PWM channel. +#define PWM_CH2_CSR_EN_RESET _u(0x0) +#define PWM_CH2_CSR_EN_BITS _u(0x00000001) +#define PWM_CH2_CSR_EN_MSB _u(0) +#define PWM_CH2_CSR_EN_LSB _u(0) +#define PWM_CH2_CSR_EN_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH2_DIV +// Description : INT and FRAC form a fixed-point fractional number. +// Counting rate is system clock frequency divided by this number. +// Fractional division uses simple 1st-order sigma-delta. +#define PWM_CH2_DIV_OFFSET _u(0x0000002c) +#define PWM_CH2_DIV_BITS _u(0x00000fff) +#define PWM_CH2_DIV_RESET _u(0x00000010) +// ----------------------------------------------------------------------------- +// Field : PWM_CH2_DIV_INT +// Description : None +#define PWM_CH2_DIV_INT_RESET _u(0x01) +#define PWM_CH2_DIV_INT_BITS _u(0x00000ff0) +#define PWM_CH2_DIV_INT_MSB _u(11) +#define PWM_CH2_DIV_INT_LSB _u(4) +#define PWM_CH2_DIV_INT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH2_DIV_FRAC +// Description : None +#define PWM_CH2_DIV_FRAC_RESET _u(0x0) +#define PWM_CH2_DIV_FRAC_BITS _u(0x0000000f) +#define PWM_CH2_DIV_FRAC_MSB _u(3) +#define PWM_CH2_DIV_FRAC_LSB _u(0) +#define PWM_CH2_DIV_FRAC_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH2_CTR +// Description : Direct access to the PWM counter +#define PWM_CH2_CTR_OFFSET _u(0x00000030) +#define PWM_CH2_CTR_BITS _u(0x0000ffff) +#define PWM_CH2_CTR_RESET _u(0x00000000) +#define PWM_CH2_CTR_MSB _u(15) +#define PWM_CH2_CTR_LSB _u(0) +#define PWM_CH2_CTR_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH2_CC +// Description : Counter compare values +#define PWM_CH2_CC_OFFSET _u(0x00000034) +#define PWM_CH2_CC_BITS _u(0xffffffff) +#define PWM_CH2_CC_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_CH2_CC_B +// Description : None +#define PWM_CH2_CC_B_RESET _u(0x0000) +#define PWM_CH2_CC_B_BITS _u(0xffff0000) +#define PWM_CH2_CC_B_MSB _u(31) +#define PWM_CH2_CC_B_LSB _u(16) +#define PWM_CH2_CC_B_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH2_CC_A +// Description : None +#define PWM_CH2_CC_A_RESET _u(0x0000) +#define PWM_CH2_CC_A_BITS _u(0x0000ffff) +#define PWM_CH2_CC_A_MSB _u(15) +#define PWM_CH2_CC_A_LSB _u(0) +#define PWM_CH2_CC_A_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH2_TOP +// Description : Counter wrap value +#define PWM_CH2_TOP_OFFSET _u(0x00000038) +#define PWM_CH2_TOP_BITS _u(0x0000ffff) +#define PWM_CH2_TOP_RESET _u(0x0000ffff) +#define PWM_CH2_TOP_MSB _u(15) +#define PWM_CH2_TOP_LSB _u(0) +#define PWM_CH2_TOP_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH3_CSR +// Description : Control and status register +#define PWM_CH3_CSR_OFFSET _u(0x0000003c) +#define PWM_CH3_CSR_BITS _u(0x000000ff) +#define PWM_CH3_CSR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_CH3_CSR_PH_ADV +// Description : Advance the phase of the counter by 1 count, while it is +// running. +// Self-clearing. Write a 1, and poll until low. Counter must be +// running +// at less than full speed (div_int + div_frac / 16 > 1) +#define PWM_CH3_CSR_PH_ADV_RESET _u(0x0) +#define PWM_CH3_CSR_PH_ADV_BITS _u(0x00000080) +#define PWM_CH3_CSR_PH_ADV_MSB _u(7) +#define PWM_CH3_CSR_PH_ADV_LSB _u(7) +#define PWM_CH3_CSR_PH_ADV_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : PWM_CH3_CSR_PH_RET +// Description : Retard the phase of the counter by 1 count, while it is +// running. +// Self-clearing. Write a 1, and poll until low. Counter must be +// running. +#define PWM_CH3_CSR_PH_RET_RESET _u(0x0) +#define PWM_CH3_CSR_PH_RET_BITS _u(0x00000040) +#define PWM_CH3_CSR_PH_RET_MSB _u(6) +#define PWM_CH3_CSR_PH_RET_LSB _u(6) +#define PWM_CH3_CSR_PH_RET_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : PWM_CH3_CSR_DIVMODE +// Description : 0x0 -> Free-running counting at rate dictated by fractional +// divider +// 0x1 -> Fractional divider operation is gated by the PWM B pin. +// 0x2 -> Counter advances with each rising edge of the PWM B pin. +// 0x3 -> Counter advances with each falling edge of the PWM B +// pin. +#define PWM_CH3_CSR_DIVMODE_RESET _u(0x0) +#define PWM_CH3_CSR_DIVMODE_BITS _u(0x00000030) +#define PWM_CH3_CSR_DIVMODE_MSB _u(5) +#define PWM_CH3_CSR_DIVMODE_LSB _u(4) +#define PWM_CH3_CSR_DIVMODE_ACCESS "RW" +#define PWM_CH3_CSR_DIVMODE_VALUE_DIV _u(0x0) +#define PWM_CH3_CSR_DIVMODE_VALUE_LEVEL _u(0x1) +#define PWM_CH3_CSR_DIVMODE_VALUE_RISE _u(0x2) +#define PWM_CH3_CSR_DIVMODE_VALUE_FALL _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PWM_CH3_CSR_B_INV +// Description : Invert output B +#define PWM_CH3_CSR_B_INV_RESET _u(0x0) +#define PWM_CH3_CSR_B_INV_BITS _u(0x00000008) +#define PWM_CH3_CSR_B_INV_MSB _u(3) +#define PWM_CH3_CSR_B_INV_LSB _u(3) +#define PWM_CH3_CSR_B_INV_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH3_CSR_A_INV +// Description : Invert output A +#define PWM_CH3_CSR_A_INV_RESET _u(0x0) +#define PWM_CH3_CSR_A_INV_BITS _u(0x00000004) +#define PWM_CH3_CSR_A_INV_MSB _u(2) +#define PWM_CH3_CSR_A_INV_LSB _u(2) +#define PWM_CH3_CSR_A_INV_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH3_CSR_PH_CORRECT +// Description : 1: Enable phase-correct modulation. 0: Trailing-edge +#define PWM_CH3_CSR_PH_CORRECT_RESET _u(0x0) +#define PWM_CH3_CSR_PH_CORRECT_BITS _u(0x00000002) +#define PWM_CH3_CSR_PH_CORRECT_MSB _u(1) +#define PWM_CH3_CSR_PH_CORRECT_LSB _u(1) +#define PWM_CH3_CSR_PH_CORRECT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH3_CSR_EN +// Description : Enable the PWM channel. +#define PWM_CH3_CSR_EN_RESET _u(0x0) +#define PWM_CH3_CSR_EN_BITS _u(0x00000001) +#define PWM_CH3_CSR_EN_MSB _u(0) +#define PWM_CH3_CSR_EN_LSB _u(0) +#define PWM_CH3_CSR_EN_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH3_DIV +// Description : INT and FRAC form a fixed-point fractional number. +// Counting rate is system clock frequency divided by this number. +// Fractional division uses simple 1st-order sigma-delta. +#define PWM_CH3_DIV_OFFSET _u(0x00000040) +#define PWM_CH3_DIV_BITS _u(0x00000fff) +#define PWM_CH3_DIV_RESET _u(0x00000010) +// ----------------------------------------------------------------------------- +// Field : PWM_CH3_DIV_INT +// Description : None +#define PWM_CH3_DIV_INT_RESET _u(0x01) +#define PWM_CH3_DIV_INT_BITS _u(0x00000ff0) +#define PWM_CH3_DIV_INT_MSB _u(11) +#define PWM_CH3_DIV_INT_LSB _u(4) +#define PWM_CH3_DIV_INT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH3_DIV_FRAC +// Description : None +#define PWM_CH3_DIV_FRAC_RESET _u(0x0) +#define PWM_CH3_DIV_FRAC_BITS _u(0x0000000f) +#define PWM_CH3_DIV_FRAC_MSB _u(3) +#define PWM_CH3_DIV_FRAC_LSB _u(0) +#define PWM_CH3_DIV_FRAC_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH3_CTR +// Description : Direct access to the PWM counter +#define PWM_CH3_CTR_OFFSET _u(0x00000044) +#define PWM_CH3_CTR_BITS _u(0x0000ffff) +#define PWM_CH3_CTR_RESET _u(0x00000000) +#define PWM_CH3_CTR_MSB _u(15) +#define PWM_CH3_CTR_LSB _u(0) +#define PWM_CH3_CTR_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH3_CC +// Description : Counter compare values +#define PWM_CH3_CC_OFFSET _u(0x00000048) +#define PWM_CH3_CC_BITS _u(0xffffffff) +#define PWM_CH3_CC_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_CH3_CC_B +// Description : None +#define PWM_CH3_CC_B_RESET _u(0x0000) +#define PWM_CH3_CC_B_BITS _u(0xffff0000) +#define PWM_CH3_CC_B_MSB _u(31) +#define PWM_CH3_CC_B_LSB _u(16) +#define PWM_CH3_CC_B_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH3_CC_A +// Description : None +#define PWM_CH3_CC_A_RESET _u(0x0000) +#define PWM_CH3_CC_A_BITS _u(0x0000ffff) +#define PWM_CH3_CC_A_MSB _u(15) +#define PWM_CH3_CC_A_LSB _u(0) +#define PWM_CH3_CC_A_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH3_TOP +// Description : Counter wrap value +#define PWM_CH3_TOP_OFFSET _u(0x0000004c) +#define PWM_CH3_TOP_BITS _u(0x0000ffff) +#define PWM_CH3_TOP_RESET _u(0x0000ffff) +#define PWM_CH3_TOP_MSB _u(15) +#define PWM_CH3_TOP_LSB _u(0) +#define PWM_CH3_TOP_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH4_CSR +// Description : Control and status register +#define PWM_CH4_CSR_OFFSET _u(0x00000050) +#define PWM_CH4_CSR_BITS _u(0x000000ff) +#define PWM_CH4_CSR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_CH4_CSR_PH_ADV +// Description : Advance the phase of the counter by 1 count, while it is +// running. +// Self-clearing. Write a 1, and poll until low. Counter must be +// running +// at less than full speed (div_int + div_frac / 16 > 1) +#define PWM_CH4_CSR_PH_ADV_RESET _u(0x0) +#define PWM_CH4_CSR_PH_ADV_BITS _u(0x00000080) +#define PWM_CH4_CSR_PH_ADV_MSB _u(7) +#define PWM_CH4_CSR_PH_ADV_LSB _u(7) +#define PWM_CH4_CSR_PH_ADV_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : PWM_CH4_CSR_PH_RET +// Description : Retard the phase of the counter by 1 count, while it is +// running. +// Self-clearing. Write a 1, and poll until low. Counter must be +// running. +#define PWM_CH4_CSR_PH_RET_RESET _u(0x0) +#define PWM_CH4_CSR_PH_RET_BITS _u(0x00000040) +#define PWM_CH4_CSR_PH_RET_MSB _u(6) +#define PWM_CH4_CSR_PH_RET_LSB _u(6) +#define PWM_CH4_CSR_PH_RET_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : PWM_CH4_CSR_DIVMODE +// Description : 0x0 -> Free-running counting at rate dictated by fractional +// divider +// 0x1 -> Fractional divider operation is gated by the PWM B pin. +// 0x2 -> Counter advances with each rising edge of the PWM B pin. +// 0x3 -> Counter advances with each falling edge of the PWM B +// pin. +#define PWM_CH4_CSR_DIVMODE_RESET _u(0x0) +#define PWM_CH4_CSR_DIVMODE_BITS _u(0x00000030) +#define PWM_CH4_CSR_DIVMODE_MSB _u(5) +#define PWM_CH4_CSR_DIVMODE_LSB _u(4) +#define PWM_CH4_CSR_DIVMODE_ACCESS "RW" +#define PWM_CH4_CSR_DIVMODE_VALUE_DIV _u(0x0) +#define PWM_CH4_CSR_DIVMODE_VALUE_LEVEL _u(0x1) +#define PWM_CH4_CSR_DIVMODE_VALUE_RISE _u(0x2) +#define PWM_CH4_CSR_DIVMODE_VALUE_FALL _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PWM_CH4_CSR_B_INV +// Description : Invert output B +#define PWM_CH4_CSR_B_INV_RESET _u(0x0) +#define PWM_CH4_CSR_B_INV_BITS _u(0x00000008) +#define PWM_CH4_CSR_B_INV_MSB _u(3) +#define PWM_CH4_CSR_B_INV_LSB _u(3) +#define PWM_CH4_CSR_B_INV_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH4_CSR_A_INV +// Description : Invert output A +#define PWM_CH4_CSR_A_INV_RESET _u(0x0) +#define PWM_CH4_CSR_A_INV_BITS _u(0x00000004) +#define PWM_CH4_CSR_A_INV_MSB _u(2) +#define PWM_CH4_CSR_A_INV_LSB _u(2) +#define PWM_CH4_CSR_A_INV_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH4_CSR_PH_CORRECT +// Description : 1: Enable phase-correct modulation. 0: Trailing-edge +#define PWM_CH4_CSR_PH_CORRECT_RESET _u(0x0) +#define PWM_CH4_CSR_PH_CORRECT_BITS _u(0x00000002) +#define PWM_CH4_CSR_PH_CORRECT_MSB _u(1) +#define PWM_CH4_CSR_PH_CORRECT_LSB _u(1) +#define PWM_CH4_CSR_PH_CORRECT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH4_CSR_EN +// Description : Enable the PWM channel. +#define PWM_CH4_CSR_EN_RESET _u(0x0) +#define PWM_CH4_CSR_EN_BITS _u(0x00000001) +#define PWM_CH4_CSR_EN_MSB _u(0) +#define PWM_CH4_CSR_EN_LSB _u(0) +#define PWM_CH4_CSR_EN_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH4_DIV +// Description : INT and FRAC form a fixed-point fractional number. +// Counting rate is system clock frequency divided by this number. +// Fractional division uses simple 1st-order sigma-delta. +#define PWM_CH4_DIV_OFFSET _u(0x00000054) +#define PWM_CH4_DIV_BITS _u(0x00000fff) +#define PWM_CH4_DIV_RESET _u(0x00000010) +// ----------------------------------------------------------------------------- +// Field : PWM_CH4_DIV_INT +// Description : None +#define PWM_CH4_DIV_INT_RESET _u(0x01) +#define PWM_CH4_DIV_INT_BITS _u(0x00000ff0) +#define PWM_CH4_DIV_INT_MSB _u(11) +#define PWM_CH4_DIV_INT_LSB _u(4) +#define PWM_CH4_DIV_INT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH4_DIV_FRAC +// Description : None +#define PWM_CH4_DIV_FRAC_RESET _u(0x0) +#define PWM_CH4_DIV_FRAC_BITS _u(0x0000000f) +#define PWM_CH4_DIV_FRAC_MSB _u(3) +#define PWM_CH4_DIV_FRAC_LSB _u(0) +#define PWM_CH4_DIV_FRAC_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH4_CTR +// Description : Direct access to the PWM counter +#define PWM_CH4_CTR_OFFSET _u(0x00000058) +#define PWM_CH4_CTR_BITS _u(0x0000ffff) +#define PWM_CH4_CTR_RESET _u(0x00000000) +#define PWM_CH4_CTR_MSB _u(15) +#define PWM_CH4_CTR_LSB _u(0) +#define PWM_CH4_CTR_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH4_CC +// Description : Counter compare values +#define PWM_CH4_CC_OFFSET _u(0x0000005c) +#define PWM_CH4_CC_BITS _u(0xffffffff) +#define PWM_CH4_CC_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_CH4_CC_B +// Description : None +#define PWM_CH4_CC_B_RESET _u(0x0000) +#define PWM_CH4_CC_B_BITS _u(0xffff0000) +#define PWM_CH4_CC_B_MSB _u(31) +#define PWM_CH4_CC_B_LSB _u(16) +#define PWM_CH4_CC_B_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH4_CC_A +// Description : None +#define PWM_CH4_CC_A_RESET _u(0x0000) +#define PWM_CH4_CC_A_BITS _u(0x0000ffff) +#define PWM_CH4_CC_A_MSB _u(15) +#define PWM_CH4_CC_A_LSB _u(0) +#define PWM_CH4_CC_A_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH4_TOP +// Description : Counter wrap value +#define PWM_CH4_TOP_OFFSET _u(0x00000060) +#define PWM_CH4_TOP_BITS _u(0x0000ffff) +#define PWM_CH4_TOP_RESET _u(0x0000ffff) +#define PWM_CH4_TOP_MSB _u(15) +#define PWM_CH4_TOP_LSB _u(0) +#define PWM_CH4_TOP_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH5_CSR +// Description : Control and status register +#define PWM_CH5_CSR_OFFSET _u(0x00000064) +#define PWM_CH5_CSR_BITS _u(0x000000ff) +#define PWM_CH5_CSR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_CH5_CSR_PH_ADV +// Description : Advance the phase of the counter by 1 count, while it is +// running. +// Self-clearing. Write a 1, and poll until low. Counter must be +// running +// at less than full speed (div_int + div_frac / 16 > 1) +#define PWM_CH5_CSR_PH_ADV_RESET _u(0x0) +#define PWM_CH5_CSR_PH_ADV_BITS _u(0x00000080) +#define PWM_CH5_CSR_PH_ADV_MSB _u(7) +#define PWM_CH5_CSR_PH_ADV_LSB _u(7) +#define PWM_CH5_CSR_PH_ADV_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : PWM_CH5_CSR_PH_RET +// Description : Retard the phase of the counter by 1 count, while it is +// running. +// Self-clearing. Write a 1, and poll until low. Counter must be +// running. +#define PWM_CH5_CSR_PH_RET_RESET _u(0x0) +#define PWM_CH5_CSR_PH_RET_BITS _u(0x00000040) +#define PWM_CH5_CSR_PH_RET_MSB _u(6) +#define PWM_CH5_CSR_PH_RET_LSB _u(6) +#define PWM_CH5_CSR_PH_RET_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : PWM_CH5_CSR_DIVMODE +// Description : 0x0 -> Free-running counting at rate dictated by fractional +// divider +// 0x1 -> Fractional divider operation is gated by the PWM B pin. +// 0x2 -> Counter advances with each rising edge of the PWM B pin. +// 0x3 -> Counter advances with each falling edge of the PWM B +// pin. +#define PWM_CH5_CSR_DIVMODE_RESET _u(0x0) +#define PWM_CH5_CSR_DIVMODE_BITS _u(0x00000030) +#define PWM_CH5_CSR_DIVMODE_MSB _u(5) +#define PWM_CH5_CSR_DIVMODE_LSB _u(4) +#define PWM_CH5_CSR_DIVMODE_ACCESS "RW" +#define PWM_CH5_CSR_DIVMODE_VALUE_DIV _u(0x0) +#define PWM_CH5_CSR_DIVMODE_VALUE_LEVEL _u(0x1) +#define PWM_CH5_CSR_DIVMODE_VALUE_RISE _u(0x2) +#define PWM_CH5_CSR_DIVMODE_VALUE_FALL _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PWM_CH5_CSR_B_INV +// Description : Invert output B +#define PWM_CH5_CSR_B_INV_RESET _u(0x0) +#define PWM_CH5_CSR_B_INV_BITS _u(0x00000008) +#define PWM_CH5_CSR_B_INV_MSB _u(3) +#define PWM_CH5_CSR_B_INV_LSB _u(3) +#define PWM_CH5_CSR_B_INV_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH5_CSR_A_INV +// Description : Invert output A +#define PWM_CH5_CSR_A_INV_RESET _u(0x0) +#define PWM_CH5_CSR_A_INV_BITS _u(0x00000004) +#define PWM_CH5_CSR_A_INV_MSB _u(2) +#define PWM_CH5_CSR_A_INV_LSB _u(2) +#define PWM_CH5_CSR_A_INV_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH5_CSR_PH_CORRECT +// Description : 1: Enable phase-correct modulation. 0: Trailing-edge +#define PWM_CH5_CSR_PH_CORRECT_RESET _u(0x0) +#define PWM_CH5_CSR_PH_CORRECT_BITS _u(0x00000002) +#define PWM_CH5_CSR_PH_CORRECT_MSB _u(1) +#define PWM_CH5_CSR_PH_CORRECT_LSB _u(1) +#define PWM_CH5_CSR_PH_CORRECT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH5_CSR_EN +// Description : Enable the PWM channel. +#define PWM_CH5_CSR_EN_RESET _u(0x0) +#define PWM_CH5_CSR_EN_BITS _u(0x00000001) +#define PWM_CH5_CSR_EN_MSB _u(0) +#define PWM_CH5_CSR_EN_LSB _u(0) +#define PWM_CH5_CSR_EN_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH5_DIV +// Description : INT and FRAC form a fixed-point fractional number. +// Counting rate is system clock frequency divided by this number. +// Fractional division uses simple 1st-order sigma-delta. +#define PWM_CH5_DIV_OFFSET _u(0x00000068) +#define PWM_CH5_DIV_BITS _u(0x00000fff) +#define PWM_CH5_DIV_RESET _u(0x00000010) +// ----------------------------------------------------------------------------- +// Field : PWM_CH5_DIV_INT +// Description : None +#define PWM_CH5_DIV_INT_RESET _u(0x01) +#define PWM_CH5_DIV_INT_BITS _u(0x00000ff0) +#define PWM_CH5_DIV_INT_MSB _u(11) +#define PWM_CH5_DIV_INT_LSB _u(4) +#define PWM_CH5_DIV_INT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH5_DIV_FRAC +// Description : None +#define PWM_CH5_DIV_FRAC_RESET _u(0x0) +#define PWM_CH5_DIV_FRAC_BITS _u(0x0000000f) +#define PWM_CH5_DIV_FRAC_MSB _u(3) +#define PWM_CH5_DIV_FRAC_LSB _u(0) +#define PWM_CH5_DIV_FRAC_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH5_CTR +// Description : Direct access to the PWM counter +#define PWM_CH5_CTR_OFFSET _u(0x0000006c) +#define PWM_CH5_CTR_BITS _u(0x0000ffff) +#define PWM_CH5_CTR_RESET _u(0x00000000) +#define PWM_CH5_CTR_MSB _u(15) +#define PWM_CH5_CTR_LSB _u(0) +#define PWM_CH5_CTR_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH5_CC +// Description : Counter compare values +#define PWM_CH5_CC_OFFSET _u(0x00000070) +#define PWM_CH5_CC_BITS _u(0xffffffff) +#define PWM_CH5_CC_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_CH5_CC_B +// Description : None +#define PWM_CH5_CC_B_RESET _u(0x0000) +#define PWM_CH5_CC_B_BITS _u(0xffff0000) +#define PWM_CH5_CC_B_MSB _u(31) +#define PWM_CH5_CC_B_LSB _u(16) +#define PWM_CH5_CC_B_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH5_CC_A +// Description : None +#define PWM_CH5_CC_A_RESET _u(0x0000) +#define PWM_CH5_CC_A_BITS _u(0x0000ffff) +#define PWM_CH5_CC_A_MSB _u(15) +#define PWM_CH5_CC_A_LSB _u(0) +#define PWM_CH5_CC_A_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH5_TOP +// Description : Counter wrap value +#define PWM_CH5_TOP_OFFSET _u(0x00000074) +#define PWM_CH5_TOP_BITS _u(0x0000ffff) +#define PWM_CH5_TOP_RESET _u(0x0000ffff) +#define PWM_CH5_TOP_MSB _u(15) +#define PWM_CH5_TOP_LSB _u(0) +#define PWM_CH5_TOP_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH6_CSR +// Description : Control and status register +#define PWM_CH6_CSR_OFFSET _u(0x00000078) +#define PWM_CH6_CSR_BITS _u(0x000000ff) +#define PWM_CH6_CSR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_CH6_CSR_PH_ADV +// Description : Advance the phase of the counter by 1 count, while it is +// running. +// Self-clearing. Write a 1, and poll until low. Counter must be +// running +// at less than full speed (div_int + div_frac / 16 > 1) +#define PWM_CH6_CSR_PH_ADV_RESET _u(0x0) +#define PWM_CH6_CSR_PH_ADV_BITS _u(0x00000080) +#define PWM_CH6_CSR_PH_ADV_MSB _u(7) +#define PWM_CH6_CSR_PH_ADV_LSB _u(7) +#define PWM_CH6_CSR_PH_ADV_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : PWM_CH6_CSR_PH_RET +// Description : Retard the phase of the counter by 1 count, while it is +// running. +// Self-clearing. Write a 1, and poll until low. Counter must be +// running. +#define PWM_CH6_CSR_PH_RET_RESET _u(0x0) +#define PWM_CH6_CSR_PH_RET_BITS _u(0x00000040) +#define PWM_CH6_CSR_PH_RET_MSB _u(6) +#define PWM_CH6_CSR_PH_RET_LSB _u(6) +#define PWM_CH6_CSR_PH_RET_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : PWM_CH6_CSR_DIVMODE +// Description : 0x0 -> Free-running counting at rate dictated by fractional +// divider +// 0x1 -> Fractional divider operation is gated by the PWM B pin. +// 0x2 -> Counter advances with each rising edge of the PWM B pin. +// 0x3 -> Counter advances with each falling edge of the PWM B +// pin. +#define PWM_CH6_CSR_DIVMODE_RESET _u(0x0) +#define PWM_CH6_CSR_DIVMODE_BITS _u(0x00000030) +#define PWM_CH6_CSR_DIVMODE_MSB _u(5) +#define PWM_CH6_CSR_DIVMODE_LSB _u(4) +#define PWM_CH6_CSR_DIVMODE_ACCESS "RW" +#define PWM_CH6_CSR_DIVMODE_VALUE_DIV _u(0x0) +#define PWM_CH6_CSR_DIVMODE_VALUE_LEVEL _u(0x1) +#define PWM_CH6_CSR_DIVMODE_VALUE_RISE _u(0x2) +#define PWM_CH6_CSR_DIVMODE_VALUE_FALL _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PWM_CH6_CSR_B_INV +// Description : Invert output B +#define PWM_CH6_CSR_B_INV_RESET _u(0x0) +#define PWM_CH6_CSR_B_INV_BITS _u(0x00000008) +#define PWM_CH6_CSR_B_INV_MSB _u(3) +#define PWM_CH6_CSR_B_INV_LSB _u(3) +#define PWM_CH6_CSR_B_INV_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH6_CSR_A_INV +// Description : Invert output A +#define PWM_CH6_CSR_A_INV_RESET _u(0x0) +#define PWM_CH6_CSR_A_INV_BITS _u(0x00000004) +#define PWM_CH6_CSR_A_INV_MSB _u(2) +#define PWM_CH6_CSR_A_INV_LSB _u(2) +#define PWM_CH6_CSR_A_INV_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH6_CSR_PH_CORRECT +// Description : 1: Enable phase-correct modulation. 0: Trailing-edge +#define PWM_CH6_CSR_PH_CORRECT_RESET _u(0x0) +#define PWM_CH6_CSR_PH_CORRECT_BITS _u(0x00000002) +#define PWM_CH6_CSR_PH_CORRECT_MSB _u(1) +#define PWM_CH6_CSR_PH_CORRECT_LSB _u(1) +#define PWM_CH6_CSR_PH_CORRECT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH6_CSR_EN +// Description : Enable the PWM channel. +#define PWM_CH6_CSR_EN_RESET _u(0x0) +#define PWM_CH6_CSR_EN_BITS _u(0x00000001) +#define PWM_CH6_CSR_EN_MSB _u(0) +#define PWM_CH6_CSR_EN_LSB _u(0) +#define PWM_CH6_CSR_EN_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH6_DIV +// Description : INT and FRAC form a fixed-point fractional number. +// Counting rate is system clock frequency divided by this number. +// Fractional division uses simple 1st-order sigma-delta. +#define PWM_CH6_DIV_OFFSET _u(0x0000007c) +#define PWM_CH6_DIV_BITS _u(0x00000fff) +#define PWM_CH6_DIV_RESET _u(0x00000010) +// ----------------------------------------------------------------------------- +// Field : PWM_CH6_DIV_INT +// Description : None +#define PWM_CH6_DIV_INT_RESET _u(0x01) +#define PWM_CH6_DIV_INT_BITS _u(0x00000ff0) +#define PWM_CH6_DIV_INT_MSB _u(11) +#define PWM_CH6_DIV_INT_LSB _u(4) +#define PWM_CH6_DIV_INT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH6_DIV_FRAC +// Description : None +#define PWM_CH6_DIV_FRAC_RESET _u(0x0) +#define PWM_CH6_DIV_FRAC_BITS _u(0x0000000f) +#define PWM_CH6_DIV_FRAC_MSB _u(3) +#define PWM_CH6_DIV_FRAC_LSB _u(0) +#define PWM_CH6_DIV_FRAC_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH6_CTR +// Description : Direct access to the PWM counter +#define PWM_CH6_CTR_OFFSET _u(0x00000080) +#define PWM_CH6_CTR_BITS _u(0x0000ffff) +#define PWM_CH6_CTR_RESET _u(0x00000000) +#define PWM_CH6_CTR_MSB _u(15) +#define PWM_CH6_CTR_LSB _u(0) +#define PWM_CH6_CTR_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH6_CC +// Description : Counter compare values +#define PWM_CH6_CC_OFFSET _u(0x00000084) +#define PWM_CH6_CC_BITS _u(0xffffffff) +#define PWM_CH6_CC_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_CH6_CC_B +// Description : None +#define PWM_CH6_CC_B_RESET _u(0x0000) +#define PWM_CH6_CC_B_BITS _u(0xffff0000) +#define PWM_CH6_CC_B_MSB _u(31) +#define PWM_CH6_CC_B_LSB _u(16) +#define PWM_CH6_CC_B_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH6_CC_A +// Description : None +#define PWM_CH6_CC_A_RESET _u(0x0000) +#define PWM_CH6_CC_A_BITS _u(0x0000ffff) +#define PWM_CH6_CC_A_MSB _u(15) +#define PWM_CH6_CC_A_LSB _u(0) +#define PWM_CH6_CC_A_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH6_TOP +// Description : Counter wrap value +#define PWM_CH6_TOP_OFFSET _u(0x00000088) +#define PWM_CH6_TOP_BITS _u(0x0000ffff) +#define PWM_CH6_TOP_RESET _u(0x0000ffff) +#define PWM_CH6_TOP_MSB _u(15) +#define PWM_CH6_TOP_LSB _u(0) +#define PWM_CH6_TOP_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH7_CSR +// Description : Control and status register +#define PWM_CH7_CSR_OFFSET _u(0x0000008c) +#define PWM_CH7_CSR_BITS _u(0x000000ff) +#define PWM_CH7_CSR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_CH7_CSR_PH_ADV +// Description : Advance the phase of the counter by 1 count, while it is +// running. +// Self-clearing. Write a 1, and poll until low. Counter must be +// running +// at less than full speed (div_int + div_frac / 16 > 1) +#define PWM_CH7_CSR_PH_ADV_RESET _u(0x0) +#define PWM_CH7_CSR_PH_ADV_BITS _u(0x00000080) +#define PWM_CH7_CSR_PH_ADV_MSB _u(7) +#define PWM_CH7_CSR_PH_ADV_LSB _u(7) +#define PWM_CH7_CSR_PH_ADV_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : PWM_CH7_CSR_PH_RET +// Description : Retard the phase of the counter by 1 count, while it is +// running. +// Self-clearing. Write a 1, and poll until low. Counter must be +// running. +#define PWM_CH7_CSR_PH_RET_RESET _u(0x0) +#define PWM_CH7_CSR_PH_RET_BITS _u(0x00000040) +#define PWM_CH7_CSR_PH_RET_MSB _u(6) +#define PWM_CH7_CSR_PH_RET_LSB _u(6) +#define PWM_CH7_CSR_PH_RET_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : PWM_CH7_CSR_DIVMODE +// Description : 0x0 -> Free-running counting at rate dictated by fractional +// divider +// 0x1 -> Fractional divider operation is gated by the PWM B pin. +// 0x2 -> Counter advances with each rising edge of the PWM B pin. +// 0x3 -> Counter advances with each falling edge of the PWM B +// pin. +#define PWM_CH7_CSR_DIVMODE_RESET _u(0x0) +#define PWM_CH7_CSR_DIVMODE_BITS _u(0x00000030) +#define PWM_CH7_CSR_DIVMODE_MSB _u(5) +#define PWM_CH7_CSR_DIVMODE_LSB _u(4) +#define PWM_CH7_CSR_DIVMODE_ACCESS "RW" +#define PWM_CH7_CSR_DIVMODE_VALUE_DIV _u(0x0) +#define PWM_CH7_CSR_DIVMODE_VALUE_LEVEL _u(0x1) +#define PWM_CH7_CSR_DIVMODE_VALUE_RISE _u(0x2) +#define PWM_CH7_CSR_DIVMODE_VALUE_FALL _u(0x3) +// ----------------------------------------------------------------------------- +// Field : PWM_CH7_CSR_B_INV +// Description : Invert output B +#define PWM_CH7_CSR_B_INV_RESET _u(0x0) +#define PWM_CH7_CSR_B_INV_BITS _u(0x00000008) +#define PWM_CH7_CSR_B_INV_MSB _u(3) +#define PWM_CH7_CSR_B_INV_LSB _u(3) +#define PWM_CH7_CSR_B_INV_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH7_CSR_A_INV +// Description : Invert output A +#define PWM_CH7_CSR_A_INV_RESET _u(0x0) +#define PWM_CH7_CSR_A_INV_BITS _u(0x00000004) +#define PWM_CH7_CSR_A_INV_MSB _u(2) +#define PWM_CH7_CSR_A_INV_LSB _u(2) +#define PWM_CH7_CSR_A_INV_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH7_CSR_PH_CORRECT +// Description : 1: Enable phase-correct modulation. 0: Trailing-edge +#define PWM_CH7_CSR_PH_CORRECT_RESET _u(0x0) +#define PWM_CH7_CSR_PH_CORRECT_BITS _u(0x00000002) +#define PWM_CH7_CSR_PH_CORRECT_MSB _u(1) +#define PWM_CH7_CSR_PH_CORRECT_LSB _u(1) +#define PWM_CH7_CSR_PH_CORRECT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH7_CSR_EN +// Description : Enable the PWM channel. +#define PWM_CH7_CSR_EN_RESET _u(0x0) +#define PWM_CH7_CSR_EN_BITS _u(0x00000001) +#define PWM_CH7_CSR_EN_MSB _u(0) +#define PWM_CH7_CSR_EN_LSB _u(0) +#define PWM_CH7_CSR_EN_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH7_DIV +// Description : INT and FRAC form a fixed-point fractional number. +// Counting rate is system clock frequency divided by this number. +// Fractional division uses simple 1st-order sigma-delta. +#define PWM_CH7_DIV_OFFSET _u(0x00000090) +#define PWM_CH7_DIV_BITS _u(0x00000fff) +#define PWM_CH7_DIV_RESET _u(0x00000010) +// ----------------------------------------------------------------------------- +// Field : PWM_CH7_DIV_INT +// Description : None +#define PWM_CH7_DIV_INT_RESET _u(0x01) +#define PWM_CH7_DIV_INT_BITS _u(0x00000ff0) +#define PWM_CH7_DIV_INT_MSB _u(11) +#define PWM_CH7_DIV_INT_LSB _u(4) +#define PWM_CH7_DIV_INT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH7_DIV_FRAC +// Description : None +#define PWM_CH7_DIV_FRAC_RESET _u(0x0) +#define PWM_CH7_DIV_FRAC_BITS _u(0x0000000f) +#define PWM_CH7_DIV_FRAC_MSB _u(3) +#define PWM_CH7_DIV_FRAC_LSB _u(0) +#define PWM_CH7_DIV_FRAC_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH7_CTR +// Description : Direct access to the PWM counter +#define PWM_CH7_CTR_OFFSET _u(0x00000094) +#define PWM_CH7_CTR_BITS _u(0x0000ffff) +#define PWM_CH7_CTR_RESET _u(0x00000000) +#define PWM_CH7_CTR_MSB _u(15) +#define PWM_CH7_CTR_LSB _u(0) +#define PWM_CH7_CTR_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH7_CC +// Description : Counter compare values +#define PWM_CH7_CC_OFFSET _u(0x00000098) +#define PWM_CH7_CC_BITS _u(0xffffffff) +#define PWM_CH7_CC_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_CH7_CC_B +// Description : None +#define PWM_CH7_CC_B_RESET _u(0x0000) +#define PWM_CH7_CC_B_BITS _u(0xffff0000) +#define PWM_CH7_CC_B_MSB _u(31) +#define PWM_CH7_CC_B_LSB _u(16) +#define PWM_CH7_CC_B_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_CH7_CC_A +// Description : None +#define PWM_CH7_CC_A_RESET _u(0x0000) +#define PWM_CH7_CC_A_BITS _u(0x0000ffff) +#define PWM_CH7_CC_A_MSB _u(15) +#define PWM_CH7_CC_A_LSB _u(0) +#define PWM_CH7_CC_A_ACCESS "RW" +// ============================================================================= +// Register : PWM_CH7_TOP +// Description : Counter wrap value +#define PWM_CH7_TOP_OFFSET _u(0x0000009c) +#define PWM_CH7_TOP_BITS _u(0x0000ffff) +#define PWM_CH7_TOP_RESET _u(0x0000ffff) +#define PWM_CH7_TOP_MSB _u(15) +#define PWM_CH7_TOP_LSB _u(0) +#define PWM_CH7_TOP_ACCESS "RW" +// ============================================================================= +// Register : PWM_EN +// Description : This register aliases the CSR_EN bits for all channels. +// Writing to this register allows multiple channels to be enabled +// or disabled simultaneously, so they can run in perfect sync. +// For each channel, there is only one physical EN register bit, +// which can be accessed through here or CHx_CSR. +#define PWM_EN_OFFSET _u(0x000000a0) +#define PWM_EN_BITS _u(0x000000ff) +#define PWM_EN_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_EN_CH7 +// Description : None +#define PWM_EN_CH7_RESET _u(0x0) +#define PWM_EN_CH7_BITS _u(0x00000080) +#define PWM_EN_CH7_MSB _u(7) +#define PWM_EN_CH7_LSB _u(7) +#define PWM_EN_CH7_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_EN_CH6 +// Description : None +#define PWM_EN_CH6_RESET _u(0x0) +#define PWM_EN_CH6_BITS _u(0x00000040) +#define PWM_EN_CH6_MSB _u(6) +#define PWM_EN_CH6_LSB _u(6) +#define PWM_EN_CH6_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_EN_CH5 +// Description : None +#define PWM_EN_CH5_RESET _u(0x0) +#define PWM_EN_CH5_BITS _u(0x00000020) +#define PWM_EN_CH5_MSB _u(5) +#define PWM_EN_CH5_LSB _u(5) +#define PWM_EN_CH5_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_EN_CH4 +// Description : None +#define PWM_EN_CH4_RESET _u(0x0) +#define PWM_EN_CH4_BITS _u(0x00000010) +#define PWM_EN_CH4_MSB _u(4) +#define PWM_EN_CH4_LSB _u(4) +#define PWM_EN_CH4_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_EN_CH3 +// Description : None +#define PWM_EN_CH3_RESET _u(0x0) +#define PWM_EN_CH3_BITS _u(0x00000008) +#define PWM_EN_CH3_MSB _u(3) +#define PWM_EN_CH3_LSB _u(3) +#define PWM_EN_CH3_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_EN_CH2 +// Description : None +#define PWM_EN_CH2_RESET _u(0x0) +#define PWM_EN_CH2_BITS _u(0x00000004) +#define PWM_EN_CH2_MSB _u(2) +#define PWM_EN_CH2_LSB _u(2) +#define PWM_EN_CH2_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_EN_CH1 +// Description : None +#define PWM_EN_CH1_RESET _u(0x0) +#define PWM_EN_CH1_BITS _u(0x00000002) +#define PWM_EN_CH1_MSB _u(1) +#define PWM_EN_CH1_LSB _u(1) +#define PWM_EN_CH1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_EN_CH0 +// Description : None +#define PWM_EN_CH0_RESET _u(0x0) +#define PWM_EN_CH0_BITS _u(0x00000001) +#define PWM_EN_CH0_MSB _u(0) +#define PWM_EN_CH0_LSB _u(0) +#define PWM_EN_CH0_ACCESS "RW" +// ============================================================================= +// Register : PWM_INTR +// Description : Raw Interrupts +#define PWM_INTR_OFFSET _u(0x000000a4) +#define PWM_INTR_BITS _u(0x000000ff) +#define PWM_INTR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_INTR_CH7 +// Description : None +#define PWM_INTR_CH7_RESET _u(0x0) +#define PWM_INTR_CH7_BITS _u(0x00000080) +#define PWM_INTR_CH7_MSB _u(7) +#define PWM_INTR_CH7_LSB _u(7) +#define PWM_INTR_CH7_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : PWM_INTR_CH6 +// Description : None +#define PWM_INTR_CH6_RESET _u(0x0) +#define PWM_INTR_CH6_BITS _u(0x00000040) +#define PWM_INTR_CH6_MSB _u(6) +#define PWM_INTR_CH6_LSB _u(6) +#define PWM_INTR_CH6_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : PWM_INTR_CH5 +// Description : None +#define PWM_INTR_CH5_RESET _u(0x0) +#define PWM_INTR_CH5_BITS _u(0x00000020) +#define PWM_INTR_CH5_MSB _u(5) +#define PWM_INTR_CH5_LSB _u(5) +#define PWM_INTR_CH5_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : PWM_INTR_CH4 +// Description : None +#define PWM_INTR_CH4_RESET _u(0x0) +#define PWM_INTR_CH4_BITS _u(0x00000010) +#define PWM_INTR_CH4_MSB _u(4) +#define PWM_INTR_CH4_LSB _u(4) +#define PWM_INTR_CH4_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : PWM_INTR_CH3 +// Description : None +#define PWM_INTR_CH3_RESET _u(0x0) +#define PWM_INTR_CH3_BITS _u(0x00000008) +#define PWM_INTR_CH3_MSB _u(3) +#define PWM_INTR_CH3_LSB _u(3) +#define PWM_INTR_CH3_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : PWM_INTR_CH2 +// Description : None +#define PWM_INTR_CH2_RESET _u(0x0) +#define PWM_INTR_CH2_BITS _u(0x00000004) +#define PWM_INTR_CH2_MSB _u(2) +#define PWM_INTR_CH2_LSB _u(2) +#define PWM_INTR_CH2_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : PWM_INTR_CH1 +// Description : None +#define PWM_INTR_CH1_RESET _u(0x0) +#define PWM_INTR_CH1_BITS _u(0x00000002) +#define PWM_INTR_CH1_MSB _u(1) +#define PWM_INTR_CH1_LSB _u(1) +#define PWM_INTR_CH1_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : PWM_INTR_CH0 +// Description : None +#define PWM_INTR_CH0_RESET _u(0x0) +#define PWM_INTR_CH0_BITS _u(0x00000001) +#define PWM_INTR_CH0_MSB _u(0) +#define PWM_INTR_CH0_LSB _u(0) +#define PWM_INTR_CH0_ACCESS "WC" +// ============================================================================= +// Register : PWM_INTE +// Description : Interrupt Enable +#define PWM_INTE_OFFSET _u(0x000000a8) +#define PWM_INTE_BITS _u(0x000000ff) +#define PWM_INTE_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_INTE_CH7 +// Description : None +#define PWM_INTE_CH7_RESET _u(0x0) +#define PWM_INTE_CH7_BITS _u(0x00000080) +#define PWM_INTE_CH7_MSB _u(7) +#define PWM_INTE_CH7_LSB _u(7) +#define PWM_INTE_CH7_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_INTE_CH6 +// Description : None +#define PWM_INTE_CH6_RESET _u(0x0) +#define PWM_INTE_CH6_BITS _u(0x00000040) +#define PWM_INTE_CH6_MSB _u(6) +#define PWM_INTE_CH6_LSB _u(6) +#define PWM_INTE_CH6_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_INTE_CH5 +// Description : None +#define PWM_INTE_CH5_RESET _u(0x0) +#define PWM_INTE_CH5_BITS _u(0x00000020) +#define PWM_INTE_CH5_MSB _u(5) +#define PWM_INTE_CH5_LSB _u(5) +#define PWM_INTE_CH5_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_INTE_CH4 +// Description : None +#define PWM_INTE_CH4_RESET _u(0x0) +#define PWM_INTE_CH4_BITS _u(0x00000010) +#define PWM_INTE_CH4_MSB _u(4) +#define PWM_INTE_CH4_LSB _u(4) +#define PWM_INTE_CH4_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_INTE_CH3 +// Description : None +#define PWM_INTE_CH3_RESET _u(0x0) +#define PWM_INTE_CH3_BITS _u(0x00000008) +#define PWM_INTE_CH3_MSB _u(3) +#define PWM_INTE_CH3_LSB _u(3) +#define PWM_INTE_CH3_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_INTE_CH2 +// Description : None +#define PWM_INTE_CH2_RESET _u(0x0) +#define PWM_INTE_CH2_BITS _u(0x00000004) +#define PWM_INTE_CH2_MSB _u(2) +#define PWM_INTE_CH2_LSB _u(2) +#define PWM_INTE_CH2_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_INTE_CH1 +// Description : None +#define PWM_INTE_CH1_RESET _u(0x0) +#define PWM_INTE_CH1_BITS _u(0x00000002) +#define PWM_INTE_CH1_MSB _u(1) +#define PWM_INTE_CH1_LSB _u(1) +#define PWM_INTE_CH1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_INTE_CH0 +// Description : None +#define PWM_INTE_CH0_RESET _u(0x0) +#define PWM_INTE_CH0_BITS _u(0x00000001) +#define PWM_INTE_CH0_MSB _u(0) +#define PWM_INTE_CH0_LSB _u(0) +#define PWM_INTE_CH0_ACCESS "RW" +// ============================================================================= +// Register : PWM_INTF +// Description : Interrupt Force +#define PWM_INTF_OFFSET _u(0x000000ac) +#define PWM_INTF_BITS _u(0x000000ff) +#define PWM_INTF_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_INTF_CH7 +// Description : None +#define PWM_INTF_CH7_RESET _u(0x0) +#define PWM_INTF_CH7_BITS _u(0x00000080) +#define PWM_INTF_CH7_MSB _u(7) +#define PWM_INTF_CH7_LSB _u(7) +#define PWM_INTF_CH7_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_INTF_CH6 +// Description : None +#define PWM_INTF_CH6_RESET _u(0x0) +#define PWM_INTF_CH6_BITS _u(0x00000040) +#define PWM_INTF_CH6_MSB _u(6) +#define PWM_INTF_CH6_LSB _u(6) +#define PWM_INTF_CH6_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_INTF_CH5 +// Description : None +#define PWM_INTF_CH5_RESET _u(0x0) +#define PWM_INTF_CH5_BITS _u(0x00000020) +#define PWM_INTF_CH5_MSB _u(5) +#define PWM_INTF_CH5_LSB _u(5) +#define PWM_INTF_CH5_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_INTF_CH4 +// Description : None +#define PWM_INTF_CH4_RESET _u(0x0) +#define PWM_INTF_CH4_BITS _u(0x00000010) +#define PWM_INTF_CH4_MSB _u(4) +#define PWM_INTF_CH4_LSB _u(4) +#define PWM_INTF_CH4_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_INTF_CH3 +// Description : None +#define PWM_INTF_CH3_RESET _u(0x0) +#define PWM_INTF_CH3_BITS _u(0x00000008) +#define PWM_INTF_CH3_MSB _u(3) +#define PWM_INTF_CH3_LSB _u(3) +#define PWM_INTF_CH3_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_INTF_CH2 +// Description : None +#define PWM_INTF_CH2_RESET _u(0x0) +#define PWM_INTF_CH2_BITS _u(0x00000004) +#define PWM_INTF_CH2_MSB _u(2) +#define PWM_INTF_CH2_LSB _u(2) +#define PWM_INTF_CH2_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_INTF_CH1 +// Description : None +#define PWM_INTF_CH1_RESET _u(0x0) +#define PWM_INTF_CH1_BITS _u(0x00000002) +#define PWM_INTF_CH1_MSB _u(1) +#define PWM_INTF_CH1_LSB _u(1) +#define PWM_INTF_CH1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : PWM_INTF_CH0 +// Description : None +#define PWM_INTF_CH0_RESET _u(0x0) +#define PWM_INTF_CH0_BITS _u(0x00000001) +#define PWM_INTF_CH0_MSB _u(0) +#define PWM_INTF_CH0_LSB _u(0) +#define PWM_INTF_CH0_ACCESS "RW" +// ============================================================================= +// Register : PWM_INTS +// Description : Interrupt status after masking & forcing +#define PWM_INTS_OFFSET _u(0x000000b0) +#define PWM_INTS_BITS _u(0x000000ff) +#define PWM_INTS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : PWM_INTS_CH7 +// Description : None +#define PWM_INTS_CH7_RESET _u(0x0) +#define PWM_INTS_CH7_BITS _u(0x00000080) +#define PWM_INTS_CH7_MSB _u(7) +#define PWM_INTS_CH7_LSB _u(7) +#define PWM_INTS_CH7_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PWM_INTS_CH6 +// Description : None +#define PWM_INTS_CH6_RESET _u(0x0) +#define PWM_INTS_CH6_BITS _u(0x00000040) +#define PWM_INTS_CH6_MSB _u(6) +#define PWM_INTS_CH6_LSB _u(6) +#define PWM_INTS_CH6_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PWM_INTS_CH5 +// Description : None +#define PWM_INTS_CH5_RESET _u(0x0) +#define PWM_INTS_CH5_BITS _u(0x00000020) +#define PWM_INTS_CH5_MSB _u(5) +#define PWM_INTS_CH5_LSB _u(5) +#define PWM_INTS_CH5_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PWM_INTS_CH4 +// Description : None +#define PWM_INTS_CH4_RESET _u(0x0) +#define PWM_INTS_CH4_BITS _u(0x00000010) +#define PWM_INTS_CH4_MSB _u(4) +#define PWM_INTS_CH4_LSB _u(4) +#define PWM_INTS_CH4_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PWM_INTS_CH3 +// Description : None +#define PWM_INTS_CH3_RESET _u(0x0) +#define PWM_INTS_CH3_BITS _u(0x00000008) +#define PWM_INTS_CH3_MSB _u(3) +#define PWM_INTS_CH3_LSB _u(3) +#define PWM_INTS_CH3_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PWM_INTS_CH2 +// Description : None +#define PWM_INTS_CH2_RESET _u(0x0) +#define PWM_INTS_CH2_BITS _u(0x00000004) +#define PWM_INTS_CH2_MSB _u(2) +#define PWM_INTS_CH2_LSB _u(2) +#define PWM_INTS_CH2_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PWM_INTS_CH1 +// Description : None +#define PWM_INTS_CH1_RESET _u(0x0) +#define PWM_INTS_CH1_BITS _u(0x00000002) +#define PWM_INTS_CH1_MSB _u(1) +#define PWM_INTS_CH1_LSB _u(1) +#define PWM_INTS_CH1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : PWM_INTS_CH0 +// Description : None +#define PWM_INTS_CH0_RESET _u(0x0) +#define PWM_INTS_CH0_BITS _u(0x00000001) +#define PWM_INTS_CH0_MSB _u(0) +#define PWM_INTS_CH0_LSB _u(0) +#define PWM_INTS_CH0_ACCESS "RO" +// ============================================================================= +#endif // HARDWARE_REGS_PWM_DEFINED diff --git a/arkanoid/pico/hardware/regs/resets.h b/arkanoid/pico/hardware/regs/resets.h new file mode 100644 index 0000000..689a358 --- /dev/null +++ b/arkanoid/pico/hardware/regs/resets.h @@ -0,0 +1,637 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : RESETS +// Version : 1 +// Bus type : apb +// Description : None +// ============================================================================= +#ifndef HARDWARE_REGS_RESETS_DEFINED +#define HARDWARE_REGS_RESETS_DEFINED +// ============================================================================= +// Register : RESETS_RESET +// Description : Reset control. If a bit is set it means the peripheral is in +// reset. 0 means the peripheral's reset is deasserted. +#define RESETS_RESET_OFFSET _u(0x00000000) +#define RESETS_RESET_BITS _u(0x01ffffff) +#define RESETS_RESET_RESET _u(0x01ffffff) +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_USBCTRL +// Description : None +#define RESETS_RESET_USBCTRL_RESET _u(0x1) +#define RESETS_RESET_USBCTRL_BITS _u(0x01000000) +#define RESETS_RESET_USBCTRL_MSB _u(24) +#define RESETS_RESET_USBCTRL_LSB _u(24) +#define RESETS_RESET_USBCTRL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_UART1 +// Description : None +#define RESETS_RESET_UART1_RESET _u(0x1) +#define RESETS_RESET_UART1_BITS _u(0x00800000) +#define RESETS_RESET_UART1_MSB _u(23) +#define RESETS_RESET_UART1_LSB _u(23) +#define RESETS_RESET_UART1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_UART0 +// Description : None +#define RESETS_RESET_UART0_RESET _u(0x1) +#define RESETS_RESET_UART0_BITS _u(0x00400000) +#define RESETS_RESET_UART0_MSB _u(22) +#define RESETS_RESET_UART0_LSB _u(22) +#define RESETS_RESET_UART0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_TIMER +// Description : None +#define RESETS_RESET_TIMER_RESET _u(0x1) +#define RESETS_RESET_TIMER_BITS _u(0x00200000) +#define RESETS_RESET_TIMER_MSB _u(21) +#define RESETS_RESET_TIMER_LSB _u(21) +#define RESETS_RESET_TIMER_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_TBMAN +// Description : None +#define RESETS_RESET_TBMAN_RESET _u(0x1) +#define RESETS_RESET_TBMAN_BITS _u(0x00100000) +#define RESETS_RESET_TBMAN_MSB _u(20) +#define RESETS_RESET_TBMAN_LSB _u(20) +#define RESETS_RESET_TBMAN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_SYSINFO +// Description : None +#define RESETS_RESET_SYSINFO_RESET _u(0x1) +#define RESETS_RESET_SYSINFO_BITS _u(0x00080000) +#define RESETS_RESET_SYSINFO_MSB _u(19) +#define RESETS_RESET_SYSINFO_LSB _u(19) +#define RESETS_RESET_SYSINFO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_SYSCFG +// Description : None +#define RESETS_RESET_SYSCFG_RESET _u(0x1) +#define RESETS_RESET_SYSCFG_BITS _u(0x00040000) +#define RESETS_RESET_SYSCFG_MSB _u(18) +#define RESETS_RESET_SYSCFG_LSB _u(18) +#define RESETS_RESET_SYSCFG_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_SPI1 +// Description : None +#define RESETS_RESET_SPI1_RESET _u(0x1) +#define RESETS_RESET_SPI1_BITS _u(0x00020000) +#define RESETS_RESET_SPI1_MSB _u(17) +#define RESETS_RESET_SPI1_LSB _u(17) +#define RESETS_RESET_SPI1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_SPI0 +// Description : None +#define RESETS_RESET_SPI0_RESET _u(0x1) +#define RESETS_RESET_SPI0_BITS _u(0x00010000) +#define RESETS_RESET_SPI0_MSB _u(16) +#define RESETS_RESET_SPI0_LSB _u(16) +#define RESETS_RESET_SPI0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_RTC +// Description : None +#define RESETS_RESET_RTC_RESET _u(0x1) +#define RESETS_RESET_RTC_BITS _u(0x00008000) +#define RESETS_RESET_RTC_MSB _u(15) +#define RESETS_RESET_RTC_LSB _u(15) +#define RESETS_RESET_RTC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_PWM +// Description : None +#define RESETS_RESET_PWM_RESET _u(0x1) +#define RESETS_RESET_PWM_BITS _u(0x00004000) +#define RESETS_RESET_PWM_MSB _u(14) +#define RESETS_RESET_PWM_LSB _u(14) +#define RESETS_RESET_PWM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_PLL_USB +// Description : None +#define RESETS_RESET_PLL_USB_RESET _u(0x1) +#define RESETS_RESET_PLL_USB_BITS _u(0x00002000) +#define RESETS_RESET_PLL_USB_MSB _u(13) +#define RESETS_RESET_PLL_USB_LSB _u(13) +#define RESETS_RESET_PLL_USB_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_PLL_SYS +// Description : None +#define RESETS_RESET_PLL_SYS_RESET _u(0x1) +#define RESETS_RESET_PLL_SYS_BITS _u(0x00001000) +#define RESETS_RESET_PLL_SYS_MSB _u(12) +#define RESETS_RESET_PLL_SYS_LSB _u(12) +#define RESETS_RESET_PLL_SYS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_PIO1 +// Description : None +#define RESETS_RESET_PIO1_RESET _u(0x1) +#define RESETS_RESET_PIO1_BITS _u(0x00000800) +#define RESETS_RESET_PIO1_MSB _u(11) +#define RESETS_RESET_PIO1_LSB _u(11) +#define RESETS_RESET_PIO1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_PIO0 +// Description : None +#define RESETS_RESET_PIO0_RESET _u(0x1) +#define RESETS_RESET_PIO0_BITS _u(0x00000400) +#define RESETS_RESET_PIO0_MSB _u(10) +#define RESETS_RESET_PIO0_LSB _u(10) +#define RESETS_RESET_PIO0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_PADS_QSPI +// Description : None +#define RESETS_RESET_PADS_QSPI_RESET _u(0x1) +#define RESETS_RESET_PADS_QSPI_BITS _u(0x00000200) +#define RESETS_RESET_PADS_QSPI_MSB _u(9) +#define RESETS_RESET_PADS_QSPI_LSB _u(9) +#define RESETS_RESET_PADS_QSPI_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_PADS_BANK0 +// Description : None +#define RESETS_RESET_PADS_BANK0_RESET _u(0x1) +#define RESETS_RESET_PADS_BANK0_BITS _u(0x00000100) +#define RESETS_RESET_PADS_BANK0_MSB _u(8) +#define RESETS_RESET_PADS_BANK0_LSB _u(8) +#define RESETS_RESET_PADS_BANK0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_JTAG +// Description : None +#define RESETS_RESET_JTAG_RESET _u(0x1) +#define RESETS_RESET_JTAG_BITS _u(0x00000080) +#define RESETS_RESET_JTAG_MSB _u(7) +#define RESETS_RESET_JTAG_LSB _u(7) +#define RESETS_RESET_JTAG_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_IO_QSPI +// Description : None +#define RESETS_RESET_IO_QSPI_RESET _u(0x1) +#define RESETS_RESET_IO_QSPI_BITS _u(0x00000040) +#define RESETS_RESET_IO_QSPI_MSB _u(6) +#define RESETS_RESET_IO_QSPI_LSB _u(6) +#define RESETS_RESET_IO_QSPI_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_IO_BANK0 +// Description : None +#define RESETS_RESET_IO_BANK0_RESET _u(0x1) +#define RESETS_RESET_IO_BANK0_BITS _u(0x00000020) +#define RESETS_RESET_IO_BANK0_MSB _u(5) +#define RESETS_RESET_IO_BANK0_LSB _u(5) +#define RESETS_RESET_IO_BANK0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_I2C1 +// Description : None +#define RESETS_RESET_I2C1_RESET _u(0x1) +#define RESETS_RESET_I2C1_BITS _u(0x00000010) +#define RESETS_RESET_I2C1_MSB _u(4) +#define RESETS_RESET_I2C1_LSB _u(4) +#define RESETS_RESET_I2C1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_I2C0 +// Description : None +#define RESETS_RESET_I2C0_RESET _u(0x1) +#define RESETS_RESET_I2C0_BITS _u(0x00000008) +#define RESETS_RESET_I2C0_MSB _u(3) +#define RESETS_RESET_I2C0_LSB _u(3) +#define RESETS_RESET_I2C0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DMA +// Description : None +#define RESETS_RESET_DMA_RESET _u(0x1) +#define RESETS_RESET_DMA_BITS _u(0x00000004) +#define RESETS_RESET_DMA_MSB _u(2) +#define RESETS_RESET_DMA_LSB _u(2) +#define RESETS_RESET_DMA_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_BUSCTRL +// Description : None +#define RESETS_RESET_BUSCTRL_RESET _u(0x1) +#define RESETS_RESET_BUSCTRL_BITS _u(0x00000002) +#define RESETS_RESET_BUSCTRL_MSB _u(1) +#define RESETS_RESET_BUSCTRL_LSB _u(1) +#define RESETS_RESET_BUSCTRL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_ADC +// Description : None +#define RESETS_RESET_ADC_RESET _u(0x1) +#define RESETS_RESET_ADC_BITS _u(0x00000001) +#define RESETS_RESET_ADC_MSB _u(0) +#define RESETS_RESET_ADC_LSB _u(0) +#define RESETS_RESET_ADC_ACCESS "RW" +// ============================================================================= +// Register : RESETS_WDSEL +// Description : Watchdog select. If a bit is set then the watchdog will reset +// this peripheral when the watchdog fires. +#define RESETS_WDSEL_OFFSET _u(0x00000004) +#define RESETS_WDSEL_BITS _u(0x01ffffff) +#define RESETS_WDSEL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_USBCTRL +// Description : None +#define RESETS_WDSEL_USBCTRL_RESET _u(0x0) +#define RESETS_WDSEL_USBCTRL_BITS _u(0x01000000) +#define RESETS_WDSEL_USBCTRL_MSB _u(24) +#define RESETS_WDSEL_USBCTRL_LSB _u(24) +#define RESETS_WDSEL_USBCTRL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_UART1 +// Description : None +#define RESETS_WDSEL_UART1_RESET _u(0x0) +#define RESETS_WDSEL_UART1_BITS _u(0x00800000) +#define RESETS_WDSEL_UART1_MSB _u(23) +#define RESETS_WDSEL_UART1_LSB _u(23) +#define RESETS_WDSEL_UART1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_UART0 +// Description : None +#define RESETS_WDSEL_UART0_RESET _u(0x0) +#define RESETS_WDSEL_UART0_BITS _u(0x00400000) +#define RESETS_WDSEL_UART0_MSB _u(22) +#define RESETS_WDSEL_UART0_LSB _u(22) +#define RESETS_WDSEL_UART0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_TIMER +// Description : None +#define RESETS_WDSEL_TIMER_RESET _u(0x0) +#define RESETS_WDSEL_TIMER_BITS _u(0x00200000) +#define RESETS_WDSEL_TIMER_MSB _u(21) +#define RESETS_WDSEL_TIMER_LSB _u(21) +#define RESETS_WDSEL_TIMER_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_TBMAN +// Description : None +#define RESETS_WDSEL_TBMAN_RESET _u(0x0) +#define RESETS_WDSEL_TBMAN_BITS _u(0x00100000) +#define RESETS_WDSEL_TBMAN_MSB _u(20) +#define RESETS_WDSEL_TBMAN_LSB _u(20) +#define RESETS_WDSEL_TBMAN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_SYSINFO +// Description : None +#define RESETS_WDSEL_SYSINFO_RESET _u(0x0) +#define RESETS_WDSEL_SYSINFO_BITS _u(0x00080000) +#define RESETS_WDSEL_SYSINFO_MSB _u(19) +#define RESETS_WDSEL_SYSINFO_LSB _u(19) +#define RESETS_WDSEL_SYSINFO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_SYSCFG +// Description : None +#define RESETS_WDSEL_SYSCFG_RESET _u(0x0) +#define RESETS_WDSEL_SYSCFG_BITS _u(0x00040000) +#define RESETS_WDSEL_SYSCFG_MSB _u(18) +#define RESETS_WDSEL_SYSCFG_LSB _u(18) +#define RESETS_WDSEL_SYSCFG_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_SPI1 +// Description : None +#define RESETS_WDSEL_SPI1_RESET _u(0x0) +#define RESETS_WDSEL_SPI1_BITS _u(0x00020000) +#define RESETS_WDSEL_SPI1_MSB _u(17) +#define RESETS_WDSEL_SPI1_LSB _u(17) +#define RESETS_WDSEL_SPI1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_SPI0 +// Description : None +#define RESETS_WDSEL_SPI0_RESET _u(0x0) +#define RESETS_WDSEL_SPI0_BITS _u(0x00010000) +#define RESETS_WDSEL_SPI0_MSB _u(16) +#define RESETS_WDSEL_SPI0_LSB _u(16) +#define RESETS_WDSEL_SPI0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_RTC +// Description : None +#define RESETS_WDSEL_RTC_RESET _u(0x0) +#define RESETS_WDSEL_RTC_BITS _u(0x00008000) +#define RESETS_WDSEL_RTC_MSB _u(15) +#define RESETS_WDSEL_RTC_LSB _u(15) +#define RESETS_WDSEL_RTC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_PWM +// Description : None +#define RESETS_WDSEL_PWM_RESET _u(0x0) +#define RESETS_WDSEL_PWM_BITS _u(0x00004000) +#define RESETS_WDSEL_PWM_MSB _u(14) +#define RESETS_WDSEL_PWM_LSB _u(14) +#define RESETS_WDSEL_PWM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_PLL_USB +// Description : None +#define RESETS_WDSEL_PLL_USB_RESET _u(0x0) +#define RESETS_WDSEL_PLL_USB_BITS _u(0x00002000) +#define RESETS_WDSEL_PLL_USB_MSB _u(13) +#define RESETS_WDSEL_PLL_USB_LSB _u(13) +#define RESETS_WDSEL_PLL_USB_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_PLL_SYS +// Description : None +#define RESETS_WDSEL_PLL_SYS_RESET _u(0x0) +#define RESETS_WDSEL_PLL_SYS_BITS _u(0x00001000) +#define RESETS_WDSEL_PLL_SYS_MSB _u(12) +#define RESETS_WDSEL_PLL_SYS_LSB _u(12) +#define RESETS_WDSEL_PLL_SYS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_PIO1 +// Description : None +#define RESETS_WDSEL_PIO1_RESET _u(0x0) +#define RESETS_WDSEL_PIO1_BITS _u(0x00000800) +#define RESETS_WDSEL_PIO1_MSB _u(11) +#define RESETS_WDSEL_PIO1_LSB _u(11) +#define RESETS_WDSEL_PIO1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_PIO0 +// Description : None +#define RESETS_WDSEL_PIO0_RESET _u(0x0) +#define RESETS_WDSEL_PIO0_BITS _u(0x00000400) +#define RESETS_WDSEL_PIO0_MSB _u(10) +#define RESETS_WDSEL_PIO0_LSB _u(10) +#define RESETS_WDSEL_PIO0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_PADS_QSPI +// Description : None +#define RESETS_WDSEL_PADS_QSPI_RESET _u(0x0) +#define RESETS_WDSEL_PADS_QSPI_BITS _u(0x00000200) +#define RESETS_WDSEL_PADS_QSPI_MSB _u(9) +#define RESETS_WDSEL_PADS_QSPI_LSB _u(9) +#define RESETS_WDSEL_PADS_QSPI_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_PADS_BANK0 +// Description : None +#define RESETS_WDSEL_PADS_BANK0_RESET _u(0x0) +#define RESETS_WDSEL_PADS_BANK0_BITS _u(0x00000100) +#define RESETS_WDSEL_PADS_BANK0_MSB _u(8) +#define RESETS_WDSEL_PADS_BANK0_LSB _u(8) +#define RESETS_WDSEL_PADS_BANK0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_JTAG +// Description : None +#define RESETS_WDSEL_JTAG_RESET _u(0x0) +#define RESETS_WDSEL_JTAG_BITS _u(0x00000080) +#define RESETS_WDSEL_JTAG_MSB _u(7) +#define RESETS_WDSEL_JTAG_LSB _u(7) +#define RESETS_WDSEL_JTAG_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_IO_QSPI +// Description : None +#define RESETS_WDSEL_IO_QSPI_RESET _u(0x0) +#define RESETS_WDSEL_IO_QSPI_BITS _u(0x00000040) +#define RESETS_WDSEL_IO_QSPI_MSB _u(6) +#define RESETS_WDSEL_IO_QSPI_LSB _u(6) +#define RESETS_WDSEL_IO_QSPI_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_IO_BANK0 +// Description : None +#define RESETS_WDSEL_IO_BANK0_RESET _u(0x0) +#define RESETS_WDSEL_IO_BANK0_BITS _u(0x00000020) +#define RESETS_WDSEL_IO_BANK0_MSB _u(5) +#define RESETS_WDSEL_IO_BANK0_LSB _u(5) +#define RESETS_WDSEL_IO_BANK0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_I2C1 +// Description : None +#define RESETS_WDSEL_I2C1_RESET _u(0x0) +#define RESETS_WDSEL_I2C1_BITS _u(0x00000010) +#define RESETS_WDSEL_I2C1_MSB _u(4) +#define RESETS_WDSEL_I2C1_LSB _u(4) +#define RESETS_WDSEL_I2C1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_I2C0 +// Description : None +#define RESETS_WDSEL_I2C0_RESET _u(0x0) +#define RESETS_WDSEL_I2C0_BITS _u(0x00000008) +#define RESETS_WDSEL_I2C0_MSB _u(3) +#define RESETS_WDSEL_I2C0_LSB _u(3) +#define RESETS_WDSEL_I2C0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_DMA +// Description : None +#define RESETS_WDSEL_DMA_RESET _u(0x0) +#define RESETS_WDSEL_DMA_BITS _u(0x00000004) +#define RESETS_WDSEL_DMA_MSB _u(2) +#define RESETS_WDSEL_DMA_LSB _u(2) +#define RESETS_WDSEL_DMA_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_BUSCTRL +// Description : None +#define RESETS_WDSEL_BUSCTRL_RESET _u(0x0) +#define RESETS_WDSEL_BUSCTRL_BITS _u(0x00000002) +#define RESETS_WDSEL_BUSCTRL_MSB _u(1) +#define RESETS_WDSEL_BUSCTRL_LSB _u(1) +#define RESETS_WDSEL_BUSCTRL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RESETS_WDSEL_ADC +// Description : None +#define RESETS_WDSEL_ADC_RESET _u(0x0) +#define RESETS_WDSEL_ADC_BITS _u(0x00000001) +#define RESETS_WDSEL_ADC_MSB _u(0) +#define RESETS_WDSEL_ADC_LSB _u(0) +#define RESETS_WDSEL_ADC_ACCESS "RW" +// ============================================================================= +// Register : RESETS_RESET_DONE +// Description : Reset done. If a bit is set then a reset done signal has been +// returned by the peripheral. This indicates that the +// peripheral's registers are ready to be accessed. +#define RESETS_RESET_DONE_OFFSET _u(0x00000008) +#define RESETS_RESET_DONE_BITS _u(0x01ffffff) +#define RESETS_RESET_DONE_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_USBCTRL +// Description : None +#define RESETS_RESET_DONE_USBCTRL_RESET _u(0x0) +#define RESETS_RESET_DONE_USBCTRL_BITS _u(0x01000000) +#define RESETS_RESET_DONE_USBCTRL_MSB _u(24) +#define RESETS_RESET_DONE_USBCTRL_LSB _u(24) +#define RESETS_RESET_DONE_USBCTRL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_UART1 +// Description : None +#define RESETS_RESET_DONE_UART1_RESET _u(0x0) +#define RESETS_RESET_DONE_UART1_BITS _u(0x00800000) +#define RESETS_RESET_DONE_UART1_MSB _u(23) +#define RESETS_RESET_DONE_UART1_LSB _u(23) +#define RESETS_RESET_DONE_UART1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_UART0 +// Description : None +#define RESETS_RESET_DONE_UART0_RESET _u(0x0) +#define RESETS_RESET_DONE_UART0_BITS _u(0x00400000) +#define RESETS_RESET_DONE_UART0_MSB _u(22) +#define RESETS_RESET_DONE_UART0_LSB _u(22) +#define RESETS_RESET_DONE_UART0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_TIMER +// Description : None +#define RESETS_RESET_DONE_TIMER_RESET _u(0x0) +#define RESETS_RESET_DONE_TIMER_BITS _u(0x00200000) +#define RESETS_RESET_DONE_TIMER_MSB _u(21) +#define RESETS_RESET_DONE_TIMER_LSB _u(21) +#define RESETS_RESET_DONE_TIMER_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_TBMAN +// Description : None +#define RESETS_RESET_DONE_TBMAN_RESET _u(0x0) +#define RESETS_RESET_DONE_TBMAN_BITS _u(0x00100000) +#define RESETS_RESET_DONE_TBMAN_MSB _u(20) +#define RESETS_RESET_DONE_TBMAN_LSB _u(20) +#define RESETS_RESET_DONE_TBMAN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_SYSINFO +// Description : None +#define RESETS_RESET_DONE_SYSINFO_RESET _u(0x0) +#define RESETS_RESET_DONE_SYSINFO_BITS _u(0x00080000) +#define RESETS_RESET_DONE_SYSINFO_MSB _u(19) +#define RESETS_RESET_DONE_SYSINFO_LSB _u(19) +#define RESETS_RESET_DONE_SYSINFO_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_SYSCFG +// Description : None +#define RESETS_RESET_DONE_SYSCFG_RESET _u(0x0) +#define RESETS_RESET_DONE_SYSCFG_BITS _u(0x00040000) +#define RESETS_RESET_DONE_SYSCFG_MSB _u(18) +#define RESETS_RESET_DONE_SYSCFG_LSB _u(18) +#define RESETS_RESET_DONE_SYSCFG_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_SPI1 +// Description : None +#define RESETS_RESET_DONE_SPI1_RESET _u(0x0) +#define RESETS_RESET_DONE_SPI1_BITS _u(0x00020000) +#define RESETS_RESET_DONE_SPI1_MSB _u(17) +#define RESETS_RESET_DONE_SPI1_LSB _u(17) +#define RESETS_RESET_DONE_SPI1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_SPI0 +// Description : None +#define RESETS_RESET_DONE_SPI0_RESET _u(0x0) +#define RESETS_RESET_DONE_SPI0_BITS _u(0x00010000) +#define RESETS_RESET_DONE_SPI0_MSB _u(16) +#define RESETS_RESET_DONE_SPI0_LSB _u(16) +#define RESETS_RESET_DONE_SPI0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_RTC +// Description : None +#define RESETS_RESET_DONE_RTC_RESET _u(0x0) +#define RESETS_RESET_DONE_RTC_BITS _u(0x00008000) +#define RESETS_RESET_DONE_RTC_MSB _u(15) +#define RESETS_RESET_DONE_RTC_LSB _u(15) +#define RESETS_RESET_DONE_RTC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_PWM +// Description : None +#define RESETS_RESET_DONE_PWM_RESET _u(0x0) +#define RESETS_RESET_DONE_PWM_BITS _u(0x00004000) +#define RESETS_RESET_DONE_PWM_MSB _u(14) +#define RESETS_RESET_DONE_PWM_LSB _u(14) +#define RESETS_RESET_DONE_PWM_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_PLL_USB +// Description : None +#define RESETS_RESET_DONE_PLL_USB_RESET _u(0x0) +#define RESETS_RESET_DONE_PLL_USB_BITS _u(0x00002000) +#define RESETS_RESET_DONE_PLL_USB_MSB _u(13) +#define RESETS_RESET_DONE_PLL_USB_LSB _u(13) +#define RESETS_RESET_DONE_PLL_USB_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_PLL_SYS +// Description : None +#define RESETS_RESET_DONE_PLL_SYS_RESET _u(0x0) +#define RESETS_RESET_DONE_PLL_SYS_BITS _u(0x00001000) +#define RESETS_RESET_DONE_PLL_SYS_MSB _u(12) +#define RESETS_RESET_DONE_PLL_SYS_LSB _u(12) +#define RESETS_RESET_DONE_PLL_SYS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_PIO1 +// Description : None +#define RESETS_RESET_DONE_PIO1_RESET _u(0x0) +#define RESETS_RESET_DONE_PIO1_BITS _u(0x00000800) +#define RESETS_RESET_DONE_PIO1_MSB _u(11) +#define RESETS_RESET_DONE_PIO1_LSB _u(11) +#define RESETS_RESET_DONE_PIO1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_PIO0 +// Description : None +#define RESETS_RESET_DONE_PIO0_RESET _u(0x0) +#define RESETS_RESET_DONE_PIO0_BITS _u(0x00000400) +#define RESETS_RESET_DONE_PIO0_MSB _u(10) +#define RESETS_RESET_DONE_PIO0_LSB _u(10) +#define RESETS_RESET_DONE_PIO0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_PADS_QSPI +// Description : None +#define RESETS_RESET_DONE_PADS_QSPI_RESET _u(0x0) +#define RESETS_RESET_DONE_PADS_QSPI_BITS _u(0x00000200) +#define RESETS_RESET_DONE_PADS_QSPI_MSB _u(9) +#define RESETS_RESET_DONE_PADS_QSPI_LSB _u(9) +#define RESETS_RESET_DONE_PADS_QSPI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_PADS_BANK0 +// Description : None +#define RESETS_RESET_DONE_PADS_BANK0_RESET _u(0x0) +#define RESETS_RESET_DONE_PADS_BANK0_BITS _u(0x00000100) +#define RESETS_RESET_DONE_PADS_BANK0_MSB _u(8) +#define RESETS_RESET_DONE_PADS_BANK0_LSB _u(8) +#define RESETS_RESET_DONE_PADS_BANK0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_JTAG +// Description : None +#define RESETS_RESET_DONE_JTAG_RESET _u(0x0) +#define RESETS_RESET_DONE_JTAG_BITS _u(0x00000080) +#define RESETS_RESET_DONE_JTAG_MSB _u(7) +#define RESETS_RESET_DONE_JTAG_LSB _u(7) +#define RESETS_RESET_DONE_JTAG_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_IO_QSPI +// Description : None +#define RESETS_RESET_DONE_IO_QSPI_RESET _u(0x0) +#define RESETS_RESET_DONE_IO_QSPI_BITS _u(0x00000040) +#define RESETS_RESET_DONE_IO_QSPI_MSB _u(6) +#define RESETS_RESET_DONE_IO_QSPI_LSB _u(6) +#define RESETS_RESET_DONE_IO_QSPI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_IO_BANK0 +// Description : None +#define RESETS_RESET_DONE_IO_BANK0_RESET _u(0x0) +#define RESETS_RESET_DONE_IO_BANK0_BITS _u(0x00000020) +#define RESETS_RESET_DONE_IO_BANK0_MSB _u(5) +#define RESETS_RESET_DONE_IO_BANK0_LSB _u(5) +#define RESETS_RESET_DONE_IO_BANK0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_I2C1 +// Description : None +#define RESETS_RESET_DONE_I2C1_RESET _u(0x0) +#define RESETS_RESET_DONE_I2C1_BITS _u(0x00000010) +#define RESETS_RESET_DONE_I2C1_MSB _u(4) +#define RESETS_RESET_DONE_I2C1_LSB _u(4) +#define RESETS_RESET_DONE_I2C1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_I2C0 +// Description : None +#define RESETS_RESET_DONE_I2C0_RESET _u(0x0) +#define RESETS_RESET_DONE_I2C0_BITS _u(0x00000008) +#define RESETS_RESET_DONE_I2C0_MSB _u(3) +#define RESETS_RESET_DONE_I2C0_LSB _u(3) +#define RESETS_RESET_DONE_I2C0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_DMA +// Description : None +#define RESETS_RESET_DONE_DMA_RESET _u(0x0) +#define RESETS_RESET_DONE_DMA_BITS _u(0x00000004) +#define RESETS_RESET_DONE_DMA_MSB _u(2) +#define RESETS_RESET_DONE_DMA_LSB _u(2) +#define RESETS_RESET_DONE_DMA_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_BUSCTRL +// Description : None +#define RESETS_RESET_DONE_BUSCTRL_RESET _u(0x0) +#define RESETS_RESET_DONE_BUSCTRL_BITS _u(0x00000002) +#define RESETS_RESET_DONE_BUSCTRL_MSB _u(1) +#define RESETS_RESET_DONE_BUSCTRL_LSB _u(1) +#define RESETS_RESET_DONE_BUSCTRL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RESETS_RESET_DONE_ADC +// Description : None +#define RESETS_RESET_DONE_ADC_RESET _u(0x0) +#define RESETS_RESET_DONE_ADC_BITS _u(0x00000001) +#define RESETS_RESET_DONE_ADC_MSB _u(0) +#define RESETS_RESET_DONE_ADC_LSB _u(0) +#define RESETS_RESET_DONE_ADC_ACCESS "RO" +// ============================================================================= +#endif // HARDWARE_REGS_RESETS_DEFINED diff --git a/arkanoid/pico/hardware/regs/rosc.h b/arkanoid/pico/hardware/regs/rosc.h new file mode 100644 index 0000000..5501e7e --- /dev/null +++ b/arkanoid/pico/hardware/regs/rosc.h @@ -0,0 +1,312 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : ROSC +// Version : 1 +// Bus type : apb +// Description : None +// ============================================================================= +#ifndef HARDWARE_REGS_ROSC_DEFINED +#define HARDWARE_REGS_ROSC_DEFINED +// ============================================================================= +// Register : ROSC_CTRL +// Description : Ring Oscillator control +#define ROSC_CTRL_OFFSET _u(0x00000000) +#define ROSC_CTRL_BITS _u(0x00ffffff) +#define ROSC_CTRL_RESET _u(0x00000aa0) +// ----------------------------------------------------------------------------- +// Field : ROSC_CTRL_ENABLE +// Description : On power-up this field is initialised to ENABLE +// The system clock must be switched to another source before +// setting this field to DISABLE otherwise the chip will lock up +// The 12-bit code is intended to give some protection against +// accidental writes. An invalid setting will enable the +// oscillator. +// 0xd1e -> DISABLE +// 0xfab -> ENABLE +#define ROSC_CTRL_ENABLE_RESET "-" +#define ROSC_CTRL_ENABLE_BITS _u(0x00fff000) +#define ROSC_CTRL_ENABLE_MSB _u(23) +#define ROSC_CTRL_ENABLE_LSB _u(12) +#define ROSC_CTRL_ENABLE_ACCESS "RW" +#define ROSC_CTRL_ENABLE_VALUE_DISABLE _u(0xd1e) +#define ROSC_CTRL_ENABLE_VALUE_ENABLE _u(0xfab) +// ----------------------------------------------------------------------------- +// Field : ROSC_CTRL_FREQ_RANGE +// Description : Controls the number of delay stages in the ROSC ring +// LOW uses stages 0 to 7 +// MEDIUM uses stages 0 to 5 +// HIGH uses stages 0 to 3 +// TOOHIGH uses stages 0 to 1 and should not be used because its +// frequency exceeds design specifications +// The clock output will not glitch when changing the range up one +// step at a time +// The clock output will glitch when changing the range down +// Note: the values here are gray coded which is why HIGH comes +// before TOOHIGH +// 0xfa4 -> LOW +// 0xfa5 -> MEDIUM +// 0xfa7 -> HIGH +// 0xfa6 -> TOOHIGH +#define ROSC_CTRL_FREQ_RANGE_RESET _u(0xaa0) +#define ROSC_CTRL_FREQ_RANGE_BITS _u(0x00000fff) +#define ROSC_CTRL_FREQ_RANGE_MSB _u(11) +#define ROSC_CTRL_FREQ_RANGE_LSB _u(0) +#define ROSC_CTRL_FREQ_RANGE_ACCESS "RW" +#define ROSC_CTRL_FREQ_RANGE_VALUE_LOW _u(0xfa4) +#define ROSC_CTRL_FREQ_RANGE_VALUE_MEDIUM _u(0xfa5) +#define ROSC_CTRL_FREQ_RANGE_VALUE_HIGH _u(0xfa7) +#define ROSC_CTRL_FREQ_RANGE_VALUE_TOOHIGH _u(0xfa6) +// ============================================================================= +// Register : ROSC_FREQA +// Description : The FREQA & FREQB registers control the frequency by +// controlling the drive strength of each stage +// The drive strength has 4 levels determined by the number of +// bits set +// Increasing the number of bits set increases the drive strength +// and increases the oscillation frequency +// 0 bits set is the default drive strength +// 1 bit set doubles the drive strength +// 2 bits set triples drive strength +// 3 bits set quadruples drive strength +#define ROSC_FREQA_OFFSET _u(0x00000004) +#define ROSC_FREQA_BITS _u(0xffff7777) +#define ROSC_FREQA_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : ROSC_FREQA_PASSWD +// Description : Set to 0x9696 to apply the settings +// Any other value in this field will set all drive strengths to 0 +// 0x9696 -> PASS +#define ROSC_FREQA_PASSWD_RESET _u(0x0000) +#define ROSC_FREQA_PASSWD_BITS _u(0xffff0000) +#define ROSC_FREQA_PASSWD_MSB _u(31) +#define ROSC_FREQA_PASSWD_LSB _u(16) +#define ROSC_FREQA_PASSWD_ACCESS "RW" +#define ROSC_FREQA_PASSWD_VALUE_PASS _u(0x9696) +// ----------------------------------------------------------------------------- +// Field : ROSC_FREQA_DS3 +// Description : Stage 3 drive strength +#define ROSC_FREQA_DS3_RESET _u(0x0) +#define ROSC_FREQA_DS3_BITS _u(0x00007000) +#define ROSC_FREQA_DS3_MSB _u(14) +#define ROSC_FREQA_DS3_LSB _u(12) +#define ROSC_FREQA_DS3_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : ROSC_FREQA_DS2 +// Description : Stage 2 drive strength +#define ROSC_FREQA_DS2_RESET _u(0x0) +#define ROSC_FREQA_DS2_BITS _u(0x00000700) +#define ROSC_FREQA_DS2_MSB _u(10) +#define ROSC_FREQA_DS2_LSB _u(8) +#define ROSC_FREQA_DS2_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : ROSC_FREQA_DS1 +// Description : Stage 1 drive strength +#define ROSC_FREQA_DS1_RESET _u(0x0) +#define ROSC_FREQA_DS1_BITS _u(0x00000070) +#define ROSC_FREQA_DS1_MSB _u(6) +#define ROSC_FREQA_DS1_LSB _u(4) +#define ROSC_FREQA_DS1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : ROSC_FREQA_DS0 +// Description : Stage 0 drive strength +#define ROSC_FREQA_DS0_RESET _u(0x0) +#define ROSC_FREQA_DS0_BITS _u(0x00000007) +#define ROSC_FREQA_DS0_MSB _u(2) +#define ROSC_FREQA_DS0_LSB _u(0) +#define ROSC_FREQA_DS0_ACCESS "RW" +// ============================================================================= +// Register : ROSC_FREQB +// Description : For a detailed description see freqa register +#define ROSC_FREQB_OFFSET _u(0x00000008) +#define ROSC_FREQB_BITS _u(0xffff7777) +#define ROSC_FREQB_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : ROSC_FREQB_PASSWD +// Description : Set to 0x9696 to apply the settings +// Any other value in this field will set all drive strengths to 0 +// 0x9696 -> PASS +#define ROSC_FREQB_PASSWD_RESET _u(0x0000) +#define ROSC_FREQB_PASSWD_BITS _u(0xffff0000) +#define ROSC_FREQB_PASSWD_MSB _u(31) +#define ROSC_FREQB_PASSWD_LSB _u(16) +#define ROSC_FREQB_PASSWD_ACCESS "RW" +#define ROSC_FREQB_PASSWD_VALUE_PASS _u(0x9696) +// ----------------------------------------------------------------------------- +// Field : ROSC_FREQB_DS7 +// Description : Stage 7 drive strength +#define ROSC_FREQB_DS7_RESET _u(0x0) +#define ROSC_FREQB_DS7_BITS _u(0x00007000) +#define ROSC_FREQB_DS7_MSB _u(14) +#define ROSC_FREQB_DS7_LSB _u(12) +#define ROSC_FREQB_DS7_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : ROSC_FREQB_DS6 +// Description : Stage 6 drive strength +#define ROSC_FREQB_DS6_RESET _u(0x0) +#define ROSC_FREQB_DS6_BITS _u(0x00000700) +#define ROSC_FREQB_DS6_MSB _u(10) +#define ROSC_FREQB_DS6_LSB _u(8) +#define ROSC_FREQB_DS6_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : ROSC_FREQB_DS5 +// Description : Stage 5 drive strength +#define ROSC_FREQB_DS5_RESET _u(0x0) +#define ROSC_FREQB_DS5_BITS _u(0x00000070) +#define ROSC_FREQB_DS5_MSB _u(6) +#define ROSC_FREQB_DS5_LSB _u(4) +#define ROSC_FREQB_DS5_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : ROSC_FREQB_DS4 +// Description : Stage 4 drive strength +#define ROSC_FREQB_DS4_RESET _u(0x0) +#define ROSC_FREQB_DS4_BITS _u(0x00000007) +#define ROSC_FREQB_DS4_MSB _u(2) +#define ROSC_FREQB_DS4_LSB _u(0) +#define ROSC_FREQB_DS4_ACCESS "RW" +// ============================================================================= +// Register : ROSC_DORMANT +// Description : Ring Oscillator pause control +// This is used to save power by pausing the ROSC +// On power-up this field is initialised to WAKE +// An invalid write will also select WAKE +// Warning: setup the irq before selecting dormant mode +// 0x636f6d61 -> DORMANT +// 0x77616b65 -> WAKE +#define ROSC_DORMANT_OFFSET _u(0x0000000c) +#define ROSC_DORMANT_BITS _u(0xffffffff) +#define ROSC_DORMANT_RESET "-" +#define ROSC_DORMANT_MSB _u(31) +#define ROSC_DORMANT_LSB _u(0) +#define ROSC_DORMANT_ACCESS "RW" +#define ROSC_DORMANT_VALUE_DORMANT _u(0x636f6d61) +#define ROSC_DORMANT_VALUE_WAKE _u(0x77616b65) +// ============================================================================= +// Register : ROSC_DIV +// Description : Controls the output divider +// set to 0xaa0 + div where +// div = 0 divides by 32 +// div = 1-31 divides by div +// any other value sets div=31 +// this register resets to div=16 +// 0xaa0 -> PASS +#define ROSC_DIV_OFFSET _u(0x00000010) +#define ROSC_DIV_BITS _u(0x00000fff) +#define ROSC_DIV_RESET "-" +#define ROSC_DIV_MSB _u(11) +#define ROSC_DIV_LSB _u(0) +#define ROSC_DIV_ACCESS "RW" +#define ROSC_DIV_VALUE_PASS _u(0xaa0) +// ============================================================================= +// Register : ROSC_PHASE +// Description : Controls the phase shifted output +#define ROSC_PHASE_OFFSET _u(0x00000014) +#define ROSC_PHASE_BITS _u(0x00000fff) +#define ROSC_PHASE_RESET _u(0x00000008) +// ----------------------------------------------------------------------------- +// Field : ROSC_PHASE_PASSWD +// Description : set to 0xaa +// any other value enables the output with shift=0 +#define ROSC_PHASE_PASSWD_RESET _u(0x00) +#define ROSC_PHASE_PASSWD_BITS _u(0x00000ff0) +#define ROSC_PHASE_PASSWD_MSB _u(11) +#define ROSC_PHASE_PASSWD_LSB _u(4) +#define ROSC_PHASE_PASSWD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : ROSC_PHASE_ENABLE +// Description : enable the phase-shifted output +// this can be changed on-the-fly +#define ROSC_PHASE_ENABLE_RESET _u(0x1) +#define ROSC_PHASE_ENABLE_BITS _u(0x00000008) +#define ROSC_PHASE_ENABLE_MSB _u(3) +#define ROSC_PHASE_ENABLE_LSB _u(3) +#define ROSC_PHASE_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : ROSC_PHASE_FLIP +// Description : invert the phase-shifted output +// this is ignored when div=1 +#define ROSC_PHASE_FLIP_RESET _u(0x0) +#define ROSC_PHASE_FLIP_BITS _u(0x00000004) +#define ROSC_PHASE_FLIP_MSB _u(2) +#define ROSC_PHASE_FLIP_LSB _u(2) +#define ROSC_PHASE_FLIP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : ROSC_PHASE_SHIFT +// Description : phase shift the phase-shifted output by SHIFT input clocks +// this can be changed on-the-fly +// must be set to 0 before setting div=1 +#define ROSC_PHASE_SHIFT_RESET _u(0x0) +#define ROSC_PHASE_SHIFT_BITS _u(0x00000003) +#define ROSC_PHASE_SHIFT_MSB _u(1) +#define ROSC_PHASE_SHIFT_LSB _u(0) +#define ROSC_PHASE_SHIFT_ACCESS "RW" +// ============================================================================= +// Register : ROSC_STATUS +// Description : Ring Oscillator Status +#define ROSC_STATUS_OFFSET _u(0x00000018) +#define ROSC_STATUS_BITS _u(0x81011000) +#define ROSC_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : ROSC_STATUS_STABLE +// Description : Oscillator is running and stable +#define ROSC_STATUS_STABLE_RESET _u(0x0) +#define ROSC_STATUS_STABLE_BITS _u(0x80000000) +#define ROSC_STATUS_STABLE_MSB _u(31) +#define ROSC_STATUS_STABLE_LSB _u(31) +#define ROSC_STATUS_STABLE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : ROSC_STATUS_BADWRITE +// Description : An invalid value has been written to CTRL_ENABLE or +// CTRL_FREQ_RANGE or FREQA or FREQB or DIV or PHASE or DORMANT +#define ROSC_STATUS_BADWRITE_RESET _u(0x0) +#define ROSC_STATUS_BADWRITE_BITS _u(0x01000000) +#define ROSC_STATUS_BADWRITE_MSB _u(24) +#define ROSC_STATUS_BADWRITE_LSB _u(24) +#define ROSC_STATUS_BADWRITE_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : ROSC_STATUS_DIV_RUNNING +// Description : post-divider is running +// this resets to 0 but transitions to 1 during chip startup +#define ROSC_STATUS_DIV_RUNNING_RESET "-" +#define ROSC_STATUS_DIV_RUNNING_BITS _u(0x00010000) +#define ROSC_STATUS_DIV_RUNNING_MSB _u(16) +#define ROSC_STATUS_DIV_RUNNING_LSB _u(16) +#define ROSC_STATUS_DIV_RUNNING_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : ROSC_STATUS_ENABLED +// Description : Oscillator is enabled but not necessarily running and stable +// this resets to 0 but transitions to 1 during chip startup +#define ROSC_STATUS_ENABLED_RESET "-" +#define ROSC_STATUS_ENABLED_BITS _u(0x00001000) +#define ROSC_STATUS_ENABLED_MSB _u(12) +#define ROSC_STATUS_ENABLED_LSB _u(12) +#define ROSC_STATUS_ENABLED_ACCESS "RO" +// ============================================================================= +// Register : ROSC_RANDOMBIT +// Description : This just reads the state of the oscillator output so +// randomness is compromised if the ring oscillator is stopped or +// run at a harmonic of the bus frequency +#define ROSC_RANDOMBIT_OFFSET _u(0x0000001c) +#define ROSC_RANDOMBIT_BITS _u(0x00000001) +#define ROSC_RANDOMBIT_RESET _u(0x00000001) +#define ROSC_RANDOMBIT_MSB _u(0) +#define ROSC_RANDOMBIT_LSB _u(0) +#define ROSC_RANDOMBIT_ACCESS "RO" +// ============================================================================= +// Register : ROSC_COUNT +// Description : A down counter running at the ROSC frequency which counts to +// zero and stops. +// To start the counter write a non-zero value. +// Can be used for short software pauses when setting up time +// sensitive hardware. +#define ROSC_COUNT_OFFSET _u(0x00000020) +#define ROSC_COUNT_BITS _u(0x000000ff) +#define ROSC_COUNT_RESET _u(0x00000000) +#define ROSC_COUNT_MSB _u(7) +#define ROSC_COUNT_LSB _u(0) +#define ROSC_COUNT_ACCESS "RW" +// ============================================================================= +#endif // HARDWARE_REGS_ROSC_DEFINED diff --git a/arkanoid/pico/hardware/regs/rtc.h b/arkanoid/pico/hardware/regs/rtc.h new file mode 100644 index 0000000..7d62c9d --- /dev/null +++ b/arkanoid/pico/hardware/regs/rtc.h @@ -0,0 +1,398 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : RTC +// Version : 1 +// Bus type : apb +// Description : Register block to control RTC +// ============================================================================= +#ifndef HARDWARE_REGS_RTC_DEFINED +#define HARDWARE_REGS_RTC_DEFINED +// ============================================================================= +// Register : RTC_CLKDIV_M1 +// Description : Divider minus 1 for the 1 second counter. Safe to change the +// value when RTC is not enabled. +#define RTC_CLKDIV_M1_OFFSET _u(0x00000000) +#define RTC_CLKDIV_M1_BITS _u(0x0000ffff) +#define RTC_CLKDIV_M1_RESET _u(0x00000000) +#define RTC_CLKDIV_M1_MSB _u(15) +#define RTC_CLKDIV_M1_LSB _u(0) +#define RTC_CLKDIV_M1_ACCESS "RW" +// ============================================================================= +// Register : RTC_SETUP_0 +// Description : RTC setup register 0 +#define RTC_SETUP_0_OFFSET _u(0x00000004) +#define RTC_SETUP_0_BITS _u(0x00ffff1f) +#define RTC_SETUP_0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : RTC_SETUP_0_YEAR +// Description : Year +#define RTC_SETUP_0_YEAR_RESET _u(0x000) +#define RTC_SETUP_0_YEAR_BITS _u(0x00fff000) +#define RTC_SETUP_0_YEAR_MSB _u(23) +#define RTC_SETUP_0_YEAR_LSB _u(12) +#define RTC_SETUP_0_YEAR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RTC_SETUP_0_MONTH +// Description : Month (1..12) +#define RTC_SETUP_0_MONTH_RESET _u(0x0) +#define RTC_SETUP_0_MONTH_BITS _u(0x00000f00) +#define RTC_SETUP_0_MONTH_MSB _u(11) +#define RTC_SETUP_0_MONTH_LSB _u(8) +#define RTC_SETUP_0_MONTH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RTC_SETUP_0_DAY +// Description : Day of the month (1..31) +#define RTC_SETUP_0_DAY_RESET _u(0x00) +#define RTC_SETUP_0_DAY_BITS _u(0x0000001f) +#define RTC_SETUP_0_DAY_MSB _u(4) +#define RTC_SETUP_0_DAY_LSB _u(0) +#define RTC_SETUP_0_DAY_ACCESS "RW" +// ============================================================================= +// Register : RTC_SETUP_1 +// Description : RTC setup register 1 +#define RTC_SETUP_1_OFFSET _u(0x00000008) +#define RTC_SETUP_1_BITS _u(0x071f3f3f) +#define RTC_SETUP_1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : RTC_SETUP_1_DOTW +// Description : Day of the week: 1-Monday...0-Sunday ISO 8601 mod 7 +#define RTC_SETUP_1_DOTW_RESET _u(0x0) +#define RTC_SETUP_1_DOTW_BITS _u(0x07000000) +#define RTC_SETUP_1_DOTW_MSB _u(26) +#define RTC_SETUP_1_DOTW_LSB _u(24) +#define RTC_SETUP_1_DOTW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RTC_SETUP_1_HOUR +// Description : Hours +#define RTC_SETUP_1_HOUR_RESET _u(0x00) +#define RTC_SETUP_1_HOUR_BITS _u(0x001f0000) +#define RTC_SETUP_1_HOUR_MSB _u(20) +#define RTC_SETUP_1_HOUR_LSB _u(16) +#define RTC_SETUP_1_HOUR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RTC_SETUP_1_MIN +// Description : Minutes +#define RTC_SETUP_1_MIN_RESET _u(0x00) +#define RTC_SETUP_1_MIN_BITS _u(0x00003f00) +#define RTC_SETUP_1_MIN_MSB _u(13) +#define RTC_SETUP_1_MIN_LSB _u(8) +#define RTC_SETUP_1_MIN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RTC_SETUP_1_SEC +// Description : Seconds +#define RTC_SETUP_1_SEC_RESET _u(0x00) +#define RTC_SETUP_1_SEC_BITS _u(0x0000003f) +#define RTC_SETUP_1_SEC_MSB _u(5) +#define RTC_SETUP_1_SEC_LSB _u(0) +#define RTC_SETUP_1_SEC_ACCESS "RW" +// ============================================================================= +// Register : RTC_CTRL +// Description : RTC Control and status +#define RTC_CTRL_OFFSET _u(0x0000000c) +#define RTC_CTRL_BITS _u(0x00000113) +#define RTC_CTRL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : RTC_CTRL_FORCE_NOTLEAPYEAR +// Description : If set, leapyear is forced off. +// Useful for years divisible by 100 but not by 400 +#define RTC_CTRL_FORCE_NOTLEAPYEAR_RESET _u(0x0) +#define RTC_CTRL_FORCE_NOTLEAPYEAR_BITS _u(0x00000100) +#define RTC_CTRL_FORCE_NOTLEAPYEAR_MSB _u(8) +#define RTC_CTRL_FORCE_NOTLEAPYEAR_LSB _u(8) +#define RTC_CTRL_FORCE_NOTLEAPYEAR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RTC_CTRL_LOAD +// Description : Load RTC +#define RTC_CTRL_LOAD_RESET _u(0x0) +#define RTC_CTRL_LOAD_BITS _u(0x00000010) +#define RTC_CTRL_LOAD_MSB _u(4) +#define RTC_CTRL_LOAD_LSB _u(4) +#define RTC_CTRL_LOAD_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : RTC_CTRL_RTC_ACTIVE +// Description : RTC enabled (running) +#define RTC_CTRL_RTC_ACTIVE_RESET "-" +#define RTC_CTRL_RTC_ACTIVE_BITS _u(0x00000002) +#define RTC_CTRL_RTC_ACTIVE_MSB _u(1) +#define RTC_CTRL_RTC_ACTIVE_LSB _u(1) +#define RTC_CTRL_RTC_ACTIVE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RTC_CTRL_RTC_ENABLE +// Description : Enable RTC +#define RTC_CTRL_RTC_ENABLE_RESET _u(0x0) +#define RTC_CTRL_RTC_ENABLE_BITS _u(0x00000001) +#define RTC_CTRL_RTC_ENABLE_MSB _u(0) +#define RTC_CTRL_RTC_ENABLE_LSB _u(0) +#define RTC_CTRL_RTC_ENABLE_ACCESS "RW" +// ============================================================================= +// Register : RTC_IRQ_SETUP_0 +// Description : Interrupt setup register 0 +#define RTC_IRQ_SETUP_0_OFFSET _u(0x00000010) +#define RTC_IRQ_SETUP_0_BITS _u(0x37ffff1f) +#define RTC_IRQ_SETUP_0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : RTC_IRQ_SETUP_0_MATCH_ACTIVE +// Description : None +#define RTC_IRQ_SETUP_0_MATCH_ACTIVE_RESET "-" +#define RTC_IRQ_SETUP_0_MATCH_ACTIVE_BITS _u(0x20000000) +#define RTC_IRQ_SETUP_0_MATCH_ACTIVE_MSB _u(29) +#define RTC_IRQ_SETUP_0_MATCH_ACTIVE_LSB _u(29) +#define RTC_IRQ_SETUP_0_MATCH_ACTIVE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RTC_IRQ_SETUP_0_MATCH_ENA +// Description : Global match enable. Don't change any other value while this +// one is enabled +#define RTC_IRQ_SETUP_0_MATCH_ENA_RESET _u(0x0) +#define RTC_IRQ_SETUP_0_MATCH_ENA_BITS _u(0x10000000) +#define RTC_IRQ_SETUP_0_MATCH_ENA_MSB _u(28) +#define RTC_IRQ_SETUP_0_MATCH_ENA_LSB _u(28) +#define RTC_IRQ_SETUP_0_MATCH_ENA_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RTC_IRQ_SETUP_0_YEAR_ENA +// Description : Enable year matching +#define RTC_IRQ_SETUP_0_YEAR_ENA_RESET _u(0x0) +#define RTC_IRQ_SETUP_0_YEAR_ENA_BITS _u(0x04000000) +#define RTC_IRQ_SETUP_0_YEAR_ENA_MSB _u(26) +#define RTC_IRQ_SETUP_0_YEAR_ENA_LSB _u(26) +#define RTC_IRQ_SETUP_0_YEAR_ENA_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RTC_IRQ_SETUP_0_MONTH_ENA +// Description : Enable month matching +#define RTC_IRQ_SETUP_0_MONTH_ENA_RESET _u(0x0) +#define RTC_IRQ_SETUP_0_MONTH_ENA_BITS _u(0x02000000) +#define RTC_IRQ_SETUP_0_MONTH_ENA_MSB _u(25) +#define RTC_IRQ_SETUP_0_MONTH_ENA_LSB _u(25) +#define RTC_IRQ_SETUP_0_MONTH_ENA_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RTC_IRQ_SETUP_0_DAY_ENA +// Description : Enable day matching +#define RTC_IRQ_SETUP_0_DAY_ENA_RESET _u(0x0) +#define RTC_IRQ_SETUP_0_DAY_ENA_BITS _u(0x01000000) +#define RTC_IRQ_SETUP_0_DAY_ENA_MSB _u(24) +#define RTC_IRQ_SETUP_0_DAY_ENA_LSB _u(24) +#define RTC_IRQ_SETUP_0_DAY_ENA_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RTC_IRQ_SETUP_0_YEAR +// Description : Year +#define RTC_IRQ_SETUP_0_YEAR_RESET _u(0x000) +#define RTC_IRQ_SETUP_0_YEAR_BITS _u(0x00fff000) +#define RTC_IRQ_SETUP_0_YEAR_MSB _u(23) +#define RTC_IRQ_SETUP_0_YEAR_LSB _u(12) +#define RTC_IRQ_SETUP_0_YEAR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RTC_IRQ_SETUP_0_MONTH +// Description : Month (1..12) +#define RTC_IRQ_SETUP_0_MONTH_RESET _u(0x0) +#define RTC_IRQ_SETUP_0_MONTH_BITS _u(0x00000f00) +#define RTC_IRQ_SETUP_0_MONTH_MSB _u(11) +#define RTC_IRQ_SETUP_0_MONTH_LSB _u(8) +#define RTC_IRQ_SETUP_0_MONTH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RTC_IRQ_SETUP_0_DAY +// Description : Day of the month (1..31) +#define RTC_IRQ_SETUP_0_DAY_RESET _u(0x00) +#define RTC_IRQ_SETUP_0_DAY_BITS _u(0x0000001f) +#define RTC_IRQ_SETUP_0_DAY_MSB _u(4) +#define RTC_IRQ_SETUP_0_DAY_LSB _u(0) +#define RTC_IRQ_SETUP_0_DAY_ACCESS "RW" +// ============================================================================= +// Register : RTC_IRQ_SETUP_1 +// Description : Interrupt setup register 1 +#define RTC_IRQ_SETUP_1_OFFSET _u(0x00000014) +#define RTC_IRQ_SETUP_1_BITS _u(0xf71f3f3f) +#define RTC_IRQ_SETUP_1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : RTC_IRQ_SETUP_1_DOTW_ENA +// Description : Enable day of the week matching +#define RTC_IRQ_SETUP_1_DOTW_ENA_RESET _u(0x0) +#define RTC_IRQ_SETUP_1_DOTW_ENA_BITS _u(0x80000000) +#define RTC_IRQ_SETUP_1_DOTW_ENA_MSB _u(31) +#define RTC_IRQ_SETUP_1_DOTW_ENA_LSB _u(31) +#define RTC_IRQ_SETUP_1_DOTW_ENA_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RTC_IRQ_SETUP_1_HOUR_ENA +// Description : Enable hour matching +#define RTC_IRQ_SETUP_1_HOUR_ENA_RESET _u(0x0) +#define RTC_IRQ_SETUP_1_HOUR_ENA_BITS _u(0x40000000) +#define RTC_IRQ_SETUP_1_HOUR_ENA_MSB _u(30) +#define RTC_IRQ_SETUP_1_HOUR_ENA_LSB _u(30) +#define RTC_IRQ_SETUP_1_HOUR_ENA_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RTC_IRQ_SETUP_1_MIN_ENA +// Description : Enable minute matching +#define RTC_IRQ_SETUP_1_MIN_ENA_RESET _u(0x0) +#define RTC_IRQ_SETUP_1_MIN_ENA_BITS _u(0x20000000) +#define RTC_IRQ_SETUP_1_MIN_ENA_MSB _u(29) +#define RTC_IRQ_SETUP_1_MIN_ENA_LSB _u(29) +#define RTC_IRQ_SETUP_1_MIN_ENA_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RTC_IRQ_SETUP_1_SEC_ENA +// Description : Enable second matching +#define RTC_IRQ_SETUP_1_SEC_ENA_RESET _u(0x0) +#define RTC_IRQ_SETUP_1_SEC_ENA_BITS _u(0x10000000) +#define RTC_IRQ_SETUP_1_SEC_ENA_MSB _u(28) +#define RTC_IRQ_SETUP_1_SEC_ENA_LSB _u(28) +#define RTC_IRQ_SETUP_1_SEC_ENA_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RTC_IRQ_SETUP_1_DOTW +// Description : Day of the week +#define RTC_IRQ_SETUP_1_DOTW_RESET _u(0x0) +#define RTC_IRQ_SETUP_1_DOTW_BITS _u(0x07000000) +#define RTC_IRQ_SETUP_1_DOTW_MSB _u(26) +#define RTC_IRQ_SETUP_1_DOTW_LSB _u(24) +#define RTC_IRQ_SETUP_1_DOTW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RTC_IRQ_SETUP_1_HOUR +// Description : Hours +#define RTC_IRQ_SETUP_1_HOUR_RESET _u(0x00) +#define RTC_IRQ_SETUP_1_HOUR_BITS _u(0x001f0000) +#define RTC_IRQ_SETUP_1_HOUR_MSB _u(20) +#define RTC_IRQ_SETUP_1_HOUR_LSB _u(16) +#define RTC_IRQ_SETUP_1_HOUR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RTC_IRQ_SETUP_1_MIN +// Description : Minutes +#define RTC_IRQ_SETUP_1_MIN_RESET _u(0x00) +#define RTC_IRQ_SETUP_1_MIN_BITS _u(0x00003f00) +#define RTC_IRQ_SETUP_1_MIN_MSB _u(13) +#define RTC_IRQ_SETUP_1_MIN_LSB _u(8) +#define RTC_IRQ_SETUP_1_MIN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : RTC_IRQ_SETUP_1_SEC +// Description : Seconds +#define RTC_IRQ_SETUP_1_SEC_RESET _u(0x00) +#define RTC_IRQ_SETUP_1_SEC_BITS _u(0x0000003f) +#define RTC_IRQ_SETUP_1_SEC_MSB _u(5) +#define RTC_IRQ_SETUP_1_SEC_LSB _u(0) +#define RTC_IRQ_SETUP_1_SEC_ACCESS "RW" +// ============================================================================= +// Register : RTC_RTC_1 +// Description : RTC register 1. +#define RTC_RTC_1_OFFSET _u(0x00000018) +#define RTC_RTC_1_BITS _u(0x00ffff1f) +#define RTC_RTC_1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : RTC_RTC_1_YEAR +// Description : Year +#define RTC_RTC_1_YEAR_RESET "-" +#define RTC_RTC_1_YEAR_BITS _u(0x00fff000) +#define RTC_RTC_1_YEAR_MSB _u(23) +#define RTC_RTC_1_YEAR_LSB _u(12) +#define RTC_RTC_1_YEAR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RTC_RTC_1_MONTH +// Description : Month (1..12) +#define RTC_RTC_1_MONTH_RESET "-" +#define RTC_RTC_1_MONTH_BITS _u(0x00000f00) +#define RTC_RTC_1_MONTH_MSB _u(11) +#define RTC_RTC_1_MONTH_LSB _u(8) +#define RTC_RTC_1_MONTH_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : RTC_RTC_1_DAY +// Description : Day of the month (1..31) +#define RTC_RTC_1_DAY_RESET "-" +#define RTC_RTC_1_DAY_BITS _u(0x0000001f) +#define RTC_RTC_1_DAY_MSB _u(4) +#define RTC_RTC_1_DAY_LSB _u(0) +#define RTC_RTC_1_DAY_ACCESS "RO" +// ============================================================================= +// Register : RTC_RTC_0 +// Description : RTC register 0 +// Read this before RTC 1! +#define RTC_RTC_0_OFFSET _u(0x0000001c) +#define RTC_RTC_0_BITS _u(0x071f3f3f) +#define RTC_RTC_0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : RTC_RTC_0_DOTW +// Description : Day of the week +#define RTC_RTC_0_DOTW_RESET "-" +#define RTC_RTC_0_DOTW_BITS _u(0x07000000) +#define RTC_RTC_0_DOTW_MSB _u(26) +#define RTC_RTC_0_DOTW_LSB _u(24) +#define RTC_RTC_0_DOTW_ACCESS "RF" +// ----------------------------------------------------------------------------- +// Field : RTC_RTC_0_HOUR +// Description : Hours +#define RTC_RTC_0_HOUR_RESET "-" +#define RTC_RTC_0_HOUR_BITS _u(0x001f0000) +#define RTC_RTC_0_HOUR_MSB _u(20) +#define RTC_RTC_0_HOUR_LSB _u(16) +#define RTC_RTC_0_HOUR_ACCESS "RF" +// ----------------------------------------------------------------------------- +// Field : RTC_RTC_0_MIN +// Description : Minutes +#define RTC_RTC_0_MIN_RESET "-" +#define RTC_RTC_0_MIN_BITS _u(0x00003f00) +#define RTC_RTC_0_MIN_MSB _u(13) +#define RTC_RTC_0_MIN_LSB _u(8) +#define RTC_RTC_0_MIN_ACCESS "RF" +// ----------------------------------------------------------------------------- +// Field : RTC_RTC_0_SEC +// Description : Seconds +#define RTC_RTC_0_SEC_RESET "-" +#define RTC_RTC_0_SEC_BITS _u(0x0000003f) +#define RTC_RTC_0_SEC_MSB _u(5) +#define RTC_RTC_0_SEC_LSB _u(0) +#define RTC_RTC_0_SEC_ACCESS "RF" +// ============================================================================= +// Register : RTC_INTR +// Description : Raw Interrupts +#define RTC_INTR_OFFSET _u(0x00000020) +#define RTC_INTR_BITS _u(0x00000001) +#define RTC_INTR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : RTC_INTR_RTC +// Description : None +#define RTC_INTR_RTC_RESET _u(0x0) +#define RTC_INTR_RTC_BITS _u(0x00000001) +#define RTC_INTR_RTC_MSB _u(0) +#define RTC_INTR_RTC_LSB _u(0) +#define RTC_INTR_RTC_ACCESS "RO" +// ============================================================================= +// Register : RTC_INTE +// Description : Interrupt Enable +#define RTC_INTE_OFFSET _u(0x00000024) +#define RTC_INTE_BITS _u(0x00000001) +#define RTC_INTE_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : RTC_INTE_RTC +// Description : None +#define RTC_INTE_RTC_RESET _u(0x0) +#define RTC_INTE_RTC_BITS _u(0x00000001) +#define RTC_INTE_RTC_MSB _u(0) +#define RTC_INTE_RTC_LSB _u(0) +#define RTC_INTE_RTC_ACCESS "RW" +// ============================================================================= +// Register : RTC_INTF +// Description : Interrupt Force +#define RTC_INTF_OFFSET _u(0x00000028) +#define RTC_INTF_BITS _u(0x00000001) +#define RTC_INTF_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : RTC_INTF_RTC +// Description : None +#define RTC_INTF_RTC_RESET _u(0x0) +#define RTC_INTF_RTC_BITS _u(0x00000001) +#define RTC_INTF_RTC_MSB _u(0) +#define RTC_INTF_RTC_LSB _u(0) +#define RTC_INTF_RTC_ACCESS "RW" +// ============================================================================= +// Register : RTC_INTS +// Description : Interrupt status after masking & forcing +#define RTC_INTS_OFFSET _u(0x0000002c) +#define RTC_INTS_BITS _u(0x00000001) +#define RTC_INTS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : RTC_INTS_RTC +// Description : None +#define RTC_INTS_RTC_RESET _u(0x0) +#define RTC_INTS_RTC_BITS _u(0x00000001) +#define RTC_INTS_RTC_MSB _u(0) +#define RTC_INTS_RTC_LSB _u(0) +#define RTC_INTS_RTC_ACCESS "RO" +// ============================================================================= +#endif // HARDWARE_REGS_RTC_DEFINED diff --git a/arkanoid/pico/hardware/regs/sio.h b/arkanoid/pico/hardware/regs/sio.h new file mode 100644 index 0000000..f641533 --- /dev/null +++ b/arkanoid/pico/hardware/regs/sio.h @@ -0,0 +1,1656 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : SIO +// Version : 1 +// Bus type : apb +// Description : Single-cycle IO block +// Provides core-local and inter-core hardware for the two +// processors, with single-cycle access. +// ============================================================================= +#ifndef HARDWARE_REGS_SIO_DEFINED +#define HARDWARE_REGS_SIO_DEFINED +// ============================================================================= +// Register : SIO_CPUID +// Description : Processor core identifier +// Value is 0 when read from processor core 0, and 1 when read +// from processor core 1. +#define SIO_CPUID_OFFSET _u(0x00000000) +#define SIO_CPUID_BITS _u(0xffffffff) +#define SIO_CPUID_RESET "-" +#define SIO_CPUID_MSB _u(31) +#define SIO_CPUID_LSB _u(0) +#define SIO_CPUID_ACCESS "RO" +// ============================================================================= +// Register : SIO_GPIO_IN +// Description : Input value for GPIO pins +// Input value for GPIO0...29 +#define SIO_GPIO_IN_OFFSET _u(0x00000004) +#define SIO_GPIO_IN_BITS _u(0x3fffffff) +#define SIO_GPIO_IN_RESET _u(0x00000000) +#define SIO_GPIO_IN_MSB _u(29) +#define SIO_GPIO_IN_LSB _u(0) +#define SIO_GPIO_IN_ACCESS "RO" +// ============================================================================= +// Register : SIO_GPIO_HI_IN +// Description : Input value for QSPI pins +// Input value on QSPI IO in order 0..5: SCLK, SSn, SD0, SD1, SD2, +// SD3 +#define SIO_GPIO_HI_IN_OFFSET _u(0x00000008) +#define SIO_GPIO_HI_IN_BITS _u(0x0000003f) +#define SIO_GPIO_HI_IN_RESET _u(0x00000000) +#define SIO_GPIO_HI_IN_MSB _u(5) +#define SIO_GPIO_HI_IN_LSB _u(0) +#define SIO_GPIO_HI_IN_ACCESS "RO" +// ============================================================================= +// Register : SIO_GPIO_OUT +// Description : GPIO output value +// Set output level (1/0 -> high/low) for GPIO0...29. +// Reading back gives the last value written, NOT the input value +// from the pins. +// If core 0 and core 1 both write to GPIO_OUT simultaneously (or +// to a SET/CLR/XOR alias), +// the result is as though the write from core 0 took place first, +// and the write from core 1 was then applied to that intermediate +// result. +#define SIO_GPIO_OUT_OFFSET _u(0x00000010) +#define SIO_GPIO_OUT_BITS _u(0x3fffffff) +#define SIO_GPIO_OUT_RESET _u(0x00000000) +#define SIO_GPIO_OUT_MSB _u(29) +#define SIO_GPIO_OUT_LSB _u(0) +#define SIO_GPIO_OUT_ACCESS "RW" +// ============================================================================= +// Register : SIO_GPIO_OUT_SET +// Description : GPIO output value set +// Perform an atomic bit-set on GPIO_OUT, i.e. `GPIO_OUT |= wdata` +#define SIO_GPIO_OUT_SET_OFFSET _u(0x00000014) +#define SIO_GPIO_OUT_SET_BITS _u(0x3fffffff) +#define SIO_GPIO_OUT_SET_RESET _u(0x00000000) +#define SIO_GPIO_OUT_SET_MSB _u(29) +#define SIO_GPIO_OUT_SET_LSB _u(0) +#define SIO_GPIO_OUT_SET_ACCESS "WO" +// ============================================================================= +// Register : SIO_GPIO_OUT_CLR +// Description : GPIO output value clear +// Perform an atomic bit-clear on GPIO_OUT, i.e. `GPIO_OUT &= +// ~wdata` +#define SIO_GPIO_OUT_CLR_OFFSET _u(0x00000018) +#define SIO_GPIO_OUT_CLR_BITS _u(0x3fffffff) +#define SIO_GPIO_OUT_CLR_RESET _u(0x00000000) +#define SIO_GPIO_OUT_CLR_MSB _u(29) +#define SIO_GPIO_OUT_CLR_LSB _u(0) +#define SIO_GPIO_OUT_CLR_ACCESS "WO" +// ============================================================================= +// Register : SIO_GPIO_OUT_XOR +// Description : GPIO output value XOR +// Perform an atomic bitwise XOR on GPIO_OUT, i.e. `GPIO_OUT ^= +// wdata` +#define SIO_GPIO_OUT_XOR_OFFSET _u(0x0000001c) +#define SIO_GPIO_OUT_XOR_BITS _u(0x3fffffff) +#define SIO_GPIO_OUT_XOR_RESET _u(0x00000000) +#define SIO_GPIO_OUT_XOR_MSB _u(29) +#define SIO_GPIO_OUT_XOR_LSB _u(0) +#define SIO_GPIO_OUT_XOR_ACCESS "WO" +// ============================================================================= +// Register : SIO_GPIO_OE +// Description : GPIO output enable +// Set output enable (1/0 -> output/input) for GPIO0...29. +// Reading back gives the last value written. +// If core 0 and core 1 both write to GPIO_OE simultaneously (or +// to a SET/CLR/XOR alias), +// the result is as though the write from core 0 took place first, +// and the write from core 1 was then applied to that intermediate +// result. +#define SIO_GPIO_OE_OFFSET _u(0x00000020) +#define SIO_GPIO_OE_BITS _u(0x3fffffff) +#define SIO_GPIO_OE_RESET _u(0x00000000) +#define SIO_GPIO_OE_MSB _u(29) +#define SIO_GPIO_OE_LSB _u(0) +#define SIO_GPIO_OE_ACCESS "RW" +// ============================================================================= +// Register : SIO_GPIO_OE_SET +// Description : GPIO output enable set +// Perform an atomic bit-set on GPIO_OE, i.e. `GPIO_OE |= wdata` +#define SIO_GPIO_OE_SET_OFFSET _u(0x00000024) +#define SIO_GPIO_OE_SET_BITS _u(0x3fffffff) +#define SIO_GPIO_OE_SET_RESET _u(0x00000000) +#define SIO_GPIO_OE_SET_MSB _u(29) +#define SIO_GPIO_OE_SET_LSB _u(0) +#define SIO_GPIO_OE_SET_ACCESS "WO" +// ============================================================================= +// Register : SIO_GPIO_OE_CLR +// Description : GPIO output enable clear +// Perform an atomic bit-clear on GPIO_OE, i.e. `GPIO_OE &= +// ~wdata` +#define SIO_GPIO_OE_CLR_OFFSET _u(0x00000028) +#define SIO_GPIO_OE_CLR_BITS _u(0x3fffffff) +#define SIO_GPIO_OE_CLR_RESET _u(0x00000000) +#define SIO_GPIO_OE_CLR_MSB _u(29) +#define SIO_GPIO_OE_CLR_LSB _u(0) +#define SIO_GPIO_OE_CLR_ACCESS "WO" +// ============================================================================= +// Register : SIO_GPIO_OE_XOR +// Description : GPIO output enable XOR +// Perform an atomic bitwise XOR on GPIO_OE, i.e. `GPIO_OE ^= +// wdata` +#define SIO_GPIO_OE_XOR_OFFSET _u(0x0000002c) +#define SIO_GPIO_OE_XOR_BITS _u(0x3fffffff) +#define SIO_GPIO_OE_XOR_RESET _u(0x00000000) +#define SIO_GPIO_OE_XOR_MSB _u(29) +#define SIO_GPIO_OE_XOR_LSB _u(0) +#define SIO_GPIO_OE_XOR_ACCESS "WO" +// ============================================================================= +// Register : SIO_GPIO_HI_OUT +// Description : QSPI output value +// Set output level (1/0 -> high/low) for QSPI IO0...5. +// Reading back gives the last value written, NOT the input value +// from the pins. +// If core 0 and core 1 both write to GPIO_HI_OUT simultaneously +// (or to a SET/CLR/XOR alias), +// the result is as though the write from core 0 took place first, +// and the write from core 1 was then applied to that intermediate +// result. +#define SIO_GPIO_HI_OUT_OFFSET _u(0x00000030) +#define SIO_GPIO_HI_OUT_BITS _u(0x0000003f) +#define SIO_GPIO_HI_OUT_RESET _u(0x00000000) +#define SIO_GPIO_HI_OUT_MSB _u(5) +#define SIO_GPIO_HI_OUT_LSB _u(0) +#define SIO_GPIO_HI_OUT_ACCESS "RW" +// ============================================================================= +// Register : SIO_GPIO_HI_OUT_SET +// Description : QSPI output value set +// Perform an atomic bit-set on GPIO_HI_OUT, i.e. `GPIO_HI_OUT |= +// wdata` +#define SIO_GPIO_HI_OUT_SET_OFFSET _u(0x00000034) +#define SIO_GPIO_HI_OUT_SET_BITS _u(0x0000003f) +#define SIO_GPIO_HI_OUT_SET_RESET _u(0x00000000) +#define SIO_GPIO_HI_OUT_SET_MSB _u(5) +#define SIO_GPIO_HI_OUT_SET_LSB _u(0) +#define SIO_GPIO_HI_OUT_SET_ACCESS "WO" +// ============================================================================= +// Register : SIO_GPIO_HI_OUT_CLR +// Description : QSPI output value clear +// Perform an atomic bit-clear on GPIO_HI_OUT, i.e. `GPIO_HI_OUT +// &= ~wdata` +#define SIO_GPIO_HI_OUT_CLR_OFFSET _u(0x00000038) +#define SIO_GPIO_HI_OUT_CLR_BITS _u(0x0000003f) +#define SIO_GPIO_HI_OUT_CLR_RESET _u(0x00000000) +#define SIO_GPIO_HI_OUT_CLR_MSB _u(5) +#define SIO_GPIO_HI_OUT_CLR_LSB _u(0) +#define SIO_GPIO_HI_OUT_CLR_ACCESS "WO" +// ============================================================================= +// Register : SIO_GPIO_HI_OUT_XOR +// Description : QSPI output value XOR +// Perform an atomic bitwise XOR on GPIO_HI_OUT, i.e. `GPIO_HI_OUT +// ^= wdata` +#define SIO_GPIO_HI_OUT_XOR_OFFSET _u(0x0000003c) +#define SIO_GPIO_HI_OUT_XOR_BITS _u(0x0000003f) +#define SIO_GPIO_HI_OUT_XOR_RESET _u(0x00000000) +#define SIO_GPIO_HI_OUT_XOR_MSB _u(5) +#define SIO_GPIO_HI_OUT_XOR_LSB _u(0) +#define SIO_GPIO_HI_OUT_XOR_ACCESS "WO" +// ============================================================================= +// Register : SIO_GPIO_HI_OE +// Description : QSPI output enable +// Set output enable (1/0 -> output/input) for QSPI IO0...5. +// Reading back gives the last value written. +// If core 0 and core 1 both write to GPIO_HI_OE simultaneously +// (or to a SET/CLR/XOR alias), +// the result is as though the write from core 0 took place first, +// and the write from core 1 was then applied to that intermediate +// result. +#define SIO_GPIO_HI_OE_OFFSET _u(0x00000040) +#define SIO_GPIO_HI_OE_BITS _u(0x0000003f) +#define SIO_GPIO_HI_OE_RESET _u(0x00000000) +#define SIO_GPIO_HI_OE_MSB _u(5) +#define SIO_GPIO_HI_OE_LSB _u(0) +#define SIO_GPIO_HI_OE_ACCESS "RW" +// ============================================================================= +// Register : SIO_GPIO_HI_OE_SET +// Description : QSPI output enable set +// Perform an atomic bit-set on GPIO_HI_OE, i.e. `GPIO_HI_OE |= +// wdata` +#define SIO_GPIO_HI_OE_SET_OFFSET _u(0x00000044) +#define SIO_GPIO_HI_OE_SET_BITS _u(0x0000003f) +#define SIO_GPIO_HI_OE_SET_RESET _u(0x00000000) +#define SIO_GPIO_HI_OE_SET_MSB _u(5) +#define SIO_GPIO_HI_OE_SET_LSB _u(0) +#define SIO_GPIO_HI_OE_SET_ACCESS "WO" +// ============================================================================= +// Register : SIO_GPIO_HI_OE_CLR +// Description : QSPI output enable clear +// Perform an atomic bit-clear on GPIO_HI_OE, i.e. `GPIO_HI_OE &= +// ~wdata` +#define SIO_GPIO_HI_OE_CLR_OFFSET _u(0x00000048) +#define SIO_GPIO_HI_OE_CLR_BITS _u(0x0000003f) +#define SIO_GPIO_HI_OE_CLR_RESET _u(0x00000000) +#define SIO_GPIO_HI_OE_CLR_MSB _u(5) +#define SIO_GPIO_HI_OE_CLR_LSB _u(0) +#define SIO_GPIO_HI_OE_CLR_ACCESS "WO" +// ============================================================================= +// Register : SIO_GPIO_HI_OE_XOR +// Description : QSPI output enable XOR +// Perform an atomic bitwise XOR on GPIO_HI_OE, i.e. `GPIO_HI_OE +// ^= wdata` +#define SIO_GPIO_HI_OE_XOR_OFFSET _u(0x0000004c) +#define SIO_GPIO_HI_OE_XOR_BITS _u(0x0000003f) +#define SIO_GPIO_HI_OE_XOR_RESET _u(0x00000000) +#define SIO_GPIO_HI_OE_XOR_MSB _u(5) +#define SIO_GPIO_HI_OE_XOR_LSB _u(0) +#define SIO_GPIO_HI_OE_XOR_ACCESS "WO" +// ============================================================================= +// Register : SIO_FIFO_ST +// Description : Status register for inter-core FIFOs (mailboxes). +// There is one FIFO in the core 0 -> core 1 direction, and one +// core 1 -> core 0. Both are 32 bits wide and 8 words deep. +// Core 0 can see the read side of the 1->0 FIFO (RX), and the +// write side of 0->1 FIFO (TX). +// Core 1 can see the read side of the 0->1 FIFO (RX), and the +// write side of 1->0 FIFO (TX). +// The SIO IRQ for each core is the logical OR of the VLD, WOF and +// ROE fields of its FIFO_ST register. +#define SIO_FIFO_ST_OFFSET _u(0x00000050) +#define SIO_FIFO_ST_BITS _u(0x0000000f) +#define SIO_FIFO_ST_RESET _u(0x00000002) +// ----------------------------------------------------------------------------- +// Field : SIO_FIFO_ST_ROE +// Description : Sticky flag indicating the RX FIFO was read when empty. This +// read was ignored by the FIFO. +#define SIO_FIFO_ST_ROE_RESET _u(0x0) +#define SIO_FIFO_ST_ROE_BITS _u(0x00000008) +#define SIO_FIFO_ST_ROE_MSB _u(3) +#define SIO_FIFO_ST_ROE_LSB _u(3) +#define SIO_FIFO_ST_ROE_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : SIO_FIFO_ST_WOF +// Description : Sticky flag indicating the TX FIFO was written when full. This +// write was ignored by the FIFO. +#define SIO_FIFO_ST_WOF_RESET _u(0x0) +#define SIO_FIFO_ST_WOF_BITS _u(0x00000004) +#define SIO_FIFO_ST_WOF_MSB _u(2) +#define SIO_FIFO_ST_WOF_LSB _u(2) +#define SIO_FIFO_ST_WOF_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : SIO_FIFO_ST_RDY +// Description : Value is 1 if this core's TX FIFO is not full (i.e. if FIFO_WR +// is ready for more data) +#define SIO_FIFO_ST_RDY_RESET _u(0x1) +#define SIO_FIFO_ST_RDY_BITS _u(0x00000002) +#define SIO_FIFO_ST_RDY_MSB _u(1) +#define SIO_FIFO_ST_RDY_LSB _u(1) +#define SIO_FIFO_ST_RDY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SIO_FIFO_ST_VLD +// Description : Value is 1 if this core's RX FIFO is not empty (i.e. if FIFO_RD +// is valid) +#define SIO_FIFO_ST_VLD_RESET _u(0x0) +#define SIO_FIFO_ST_VLD_BITS _u(0x00000001) +#define SIO_FIFO_ST_VLD_MSB _u(0) +#define SIO_FIFO_ST_VLD_LSB _u(0) +#define SIO_FIFO_ST_VLD_ACCESS "RO" +// ============================================================================= +// Register : SIO_FIFO_WR +// Description : Write access to this core's TX FIFO +#define SIO_FIFO_WR_OFFSET _u(0x00000054) +#define SIO_FIFO_WR_BITS _u(0xffffffff) +#define SIO_FIFO_WR_RESET _u(0x00000000) +#define SIO_FIFO_WR_MSB _u(31) +#define SIO_FIFO_WR_LSB _u(0) +#define SIO_FIFO_WR_ACCESS "WF" +// ============================================================================= +// Register : SIO_FIFO_RD +// Description : Read access to this core's RX FIFO +#define SIO_FIFO_RD_OFFSET _u(0x00000058) +#define SIO_FIFO_RD_BITS _u(0xffffffff) +#define SIO_FIFO_RD_RESET "-" +#define SIO_FIFO_RD_MSB _u(31) +#define SIO_FIFO_RD_LSB _u(0) +#define SIO_FIFO_RD_ACCESS "RF" +// ============================================================================= +// Register : SIO_SPINLOCK_ST +// Description : Spinlock state +// A bitmap containing the state of all 32 spinlocks (1=locked). +// Mainly intended for debugging. +#define SIO_SPINLOCK_ST_OFFSET _u(0x0000005c) +#define SIO_SPINLOCK_ST_BITS _u(0xffffffff) +#define SIO_SPINLOCK_ST_RESET _u(0x00000000) +#define SIO_SPINLOCK_ST_MSB _u(31) +#define SIO_SPINLOCK_ST_LSB _u(0) +#define SIO_SPINLOCK_ST_ACCESS "RO" +// ============================================================================= +// Register : SIO_DIV_UDIVIDEND +// Description : Divider unsigned dividend +// Write to the DIVIDEND operand of the divider, i.e. the p in `p +// / q`. +// Any operand write starts a new calculation. The results appear +// in QUOTIENT, REMAINDER. +// UDIVIDEND/SDIVIDEND are aliases of the same internal register. +// The U alias starts an +// unsigned calculation, and the S alias starts a signed +// calculation. +#define SIO_DIV_UDIVIDEND_OFFSET _u(0x00000060) +#define SIO_DIV_UDIVIDEND_BITS _u(0xffffffff) +#define SIO_DIV_UDIVIDEND_RESET _u(0x00000000) +#define SIO_DIV_UDIVIDEND_MSB _u(31) +#define SIO_DIV_UDIVIDEND_LSB _u(0) +#define SIO_DIV_UDIVIDEND_ACCESS "RW" +// ============================================================================= +// Register : SIO_DIV_UDIVISOR +// Description : Divider unsigned divisor +// Write to the DIVISOR operand of the divider, i.e. the q in `p / +// q`. +// Any operand write starts a new calculation. The results appear +// in QUOTIENT, REMAINDER. +// UDIVIDEND/SDIVIDEND are aliases of the same internal register. +// The U alias starts an +// unsigned calculation, and the S alias starts a signed +// calculation. +#define SIO_DIV_UDIVISOR_OFFSET _u(0x00000064) +#define SIO_DIV_UDIVISOR_BITS _u(0xffffffff) +#define SIO_DIV_UDIVISOR_RESET _u(0x00000000) +#define SIO_DIV_UDIVISOR_MSB _u(31) +#define SIO_DIV_UDIVISOR_LSB _u(0) +#define SIO_DIV_UDIVISOR_ACCESS "RW" +// ============================================================================= +// Register : SIO_DIV_SDIVIDEND +// Description : Divider signed dividend +// The same as UDIVIDEND, but starts a signed calculation, rather +// than unsigned. +#define SIO_DIV_SDIVIDEND_OFFSET _u(0x00000068) +#define SIO_DIV_SDIVIDEND_BITS _u(0xffffffff) +#define SIO_DIV_SDIVIDEND_RESET _u(0x00000000) +#define SIO_DIV_SDIVIDEND_MSB _u(31) +#define SIO_DIV_SDIVIDEND_LSB _u(0) +#define SIO_DIV_SDIVIDEND_ACCESS "RW" +// ============================================================================= +// Register : SIO_DIV_SDIVISOR +// Description : Divider signed divisor +// The same as UDIVISOR, but starts a signed calculation, rather +// than unsigned. +#define SIO_DIV_SDIVISOR_OFFSET _u(0x0000006c) +#define SIO_DIV_SDIVISOR_BITS _u(0xffffffff) +#define SIO_DIV_SDIVISOR_RESET _u(0x00000000) +#define SIO_DIV_SDIVISOR_MSB _u(31) +#define SIO_DIV_SDIVISOR_LSB _u(0) +#define SIO_DIV_SDIVISOR_ACCESS "RW" +// ============================================================================= +// Register : SIO_DIV_QUOTIENT +// Description : Divider result quotient +// The result of `DIVIDEND / DIVISOR` (division). Contents +// undefined while CSR_READY is low. +// For signed calculations, QUOTIENT is negative when the signs of +// DIVIDEND and DIVISOR differ. +// This register can be written to directly, for context +// save/restore purposes. This halts any +// in-progress calculation and sets the CSR_READY and CSR_DIRTY +// flags. +// Reading from QUOTIENT clears the CSR_DIRTY flag, so should read +// results in the order +// REMAINDER, QUOTIENT if CSR_DIRTY is used. +#define SIO_DIV_QUOTIENT_OFFSET _u(0x00000070) +#define SIO_DIV_QUOTIENT_BITS _u(0xffffffff) +#define SIO_DIV_QUOTIENT_RESET _u(0x00000000) +#define SIO_DIV_QUOTIENT_MSB _u(31) +#define SIO_DIV_QUOTIENT_LSB _u(0) +#define SIO_DIV_QUOTIENT_ACCESS "RW" +// ============================================================================= +// Register : SIO_DIV_REMAINDER +// Description : Divider result remainder +// The result of `DIVIDEND % DIVISOR` (modulo). Contents undefined +// while CSR_READY is low. +// For signed calculations, REMAINDER is negative only when +// DIVIDEND is negative. +// This register can be written to directly, for context +// save/restore purposes. This halts any +// in-progress calculation and sets the CSR_READY and CSR_DIRTY +// flags. +#define SIO_DIV_REMAINDER_OFFSET _u(0x00000074) +#define SIO_DIV_REMAINDER_BITS _u(0xffffffff) +#define SIO_DIV_REMAINDER_RESET _u(0x00000000) +#define SIO_DIV_REMAINDER_MSB _u(31) +#define SIO_DIV_REMAINDER_LSB _u(0) +#define SIO_DIV_REMAINDER_ACCESS "RW" +// ============================================================================= +// Register : SIO_DIV_CSR +// Description : Control and status register for divider. +#define SIO_DIV_CSR_OFFSET _u(0x00000078) +#define SIO_DIV_CSR_BITS _u(0x00000003) +#define SIO_DIV_CSR_RESET _u(0x00000001) +// ----------------------------------------------------------------------------- +// Field : SIO_DIV_CSR_DIRTY +// Description : Changes to 1 when any register is written, and back to 0 when +// QUOTIENT is read. +// Software can use this flag to make save/restore more efficient +// (skip if not DIRTY). +// If the flag is used in this way, it's recommended to either +// read QUOTIENT only, +// or REMAINDER and then QUOTIENT, to prevent data loss on context +// switch. +#define SIO_DIV_CSR_DIRTY_RESET _u(0x0) +#define SIO_DIV_CSR_DIRTY_BITS _u(0x00000002) +#define SIO_DIV_CSR_DIRTY_MSB _u(1) +#define SIO_DIV_CSR_DIRTY_LSB _u(1) +#define SIO_DIV_CSR_DIRTY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SIO_DIV_CSR_READY +// Description : Reads as 0 when a calculation is in progress, 1 otherwise. +// Writing an operand (xDIVIDEND, xDIVISOR) will immediately start +// a new calculation, no +// matter if one is already in progress. +// Writing to a result register will immediately terminate any +// in-progress calculation +// and set the READY and DIRTY flags. +#define SIO_DIV_CSR_READY_RESET _u(0x1) +#define SIO_DIV_CSR_READY_BITS _u(0x00000001) +#define SIO_DIV_CSR_READY_MSB _u(0) +#define SIO_DIV_CSR_READY_LSB _u(0) +#define SIO_DIV_CSR_READY_ACCESS "RO" +// ============================================================================= +// Register : SIO_INTERP0_ACCUM0 +// Description : Read/write access to accumulator 0 +#define SIO_INTERP0_ACCUM0_OFFSET _u(0x00000080) +#define SIO_INTERP0_ACCUM0_BITS _u(0xffffffff) +#define SIO_INTERP0_ACCUM0_RESET _u(0x00000000) +#define SIO_INTERP0_ACCUM0_MSB _u(31) +#define SIO_INTERP0_ACCUM0_LSB _u(0) +#define SIO_INTERP0_ACCUM0_ACCESS "RW" +// ============================================================================= +// Register : SIO_INTERP0_ACCUM1 +// Description : Read/write access to accumulator 1 +#define SIO_INTERP0_ACCUM1_OFFSET _u(0x00000084) +#define SIO_INTERP0_ACCUM1_BITS _u(0xffffffff) +#define SIO_INTERP0_ACCUM1_RESET _u(0x00000000) +#define SIO_INTERP0_ACCUM1_MSB _u(31) +#define SIO_INTERP0_ACCUM1_LSB _u(0) +#define SIO_INTERP0_ACCUM1_ACCESS "RW" +// ============================================================================= +// Register : SIO_INTERP0_BASE0 +// Description : Read/write access to BASE0 register. +#define SIO_INTERP0_BASE0_OFFSET _u(0x00000088) +#define SIO_INTERP0_BASE0_BITS _u(0xffffffff) +#define SIO_INTERP0_BASE0_RESET _u(0x00000000) +#define SIO_INTERP0_BASE0_MSB _u(31) +#define SIO_INTERP0_BASE0_LSB _u(0) +#define SIO_INTERP0_BASE0_ACCESS "RW" +// ============================================================================= +// Register : SIO_INTERP0_BASE1 +// Description : Read/write access to BASE1 register. +#define SIO_INTERP0_BASE1_OFFSET _u(0x0000008c) +#define SIO_INTERP0_BASE1_BITS _u(0xffffffff) +#define SIO_INTERP0_BASE1_RESET _u(0x00000000) +#define SIO_INTERP0_BASE1_MSB _u(31) +#define SIO_INTERP0_BASE1_LSB _u(0) +#define SIO_INTERP0_BASE1_ACCESS "RW" +// ============================================================================= +// Register : SIO_INTERP0_BASE2 +// Description : Read/write access to BASE2 register. +#define SIO_INTERP0_BASE2_OFFSET _u(0x00000090) +#define SIO_INTERP0_BASE2_BITS _u(0xffffffff) +#define SIO_INTERP0_BASE2_RESET _u(0x00000000) +#define SIO_INTERP0_BASE2_MSB _u(31) +#define SIO_INTERP0_BASE2_LSB _u(0) +#define SIO_INTERP0_BASE2_ACCESS "RW" +// ============================================================================= +// Register : SIO_INTERP0_POP_LANE0 +// Description : Read LANE0 result, and simultaneously write lane results to +// both accumulators (POP). +#define SIO_INTERP0_POP_LANE0_OFFSET _u(0x00000094) +#define SIO_INTERP0_POP_LANE0_BITS _u(0xffffffff) +#define SIO_INTERP0_POP_LANE0_RESET _u(0x00000000) +#define SIO_INTERP0_POP_LANE0_MSB _u(31) +#define SIO_INTERP0_POP_LANE0_LSB _u(0) +#define SIO_INTERP0_POP_LANE0_ACCESS "RO" +// ============================================================================= +// Register : SIO_INTERP0_POP_LANE1 +// Description : Read LANE1 result, and simultaneously write lane results to +// both accumulators (POP). +#define SIO_INTERP0_POP_LANE1_OFFSET _u(0x00000098) +#define SIO_INTERP0_POP_LANE1_BITS _u(0xffffffff) +#define SIO_INTERP0_POP_LANE1_RESET _u(0x00000000) +#define SIO_INTERP0_POP_LANE1_MSB _u(31) +#define SIO_INTERP0_POP_LANE1_LSB _u(0) +#define SIO_INTERP0_POP_LANE1_ACCESS "RO" +// ============================================================================= +// Register : SIO_INTERP0_POP_FULL +// Description : Read FULL result, and simultaneously write lane results to both +// accumulators (POP). +#define SIO_INTERP0_POP_FULL_OFFSET _u(0x0000009c) +#define SIO_INTERP0_POP_FULL_BITS _u(0xffffffff) +#define SIO_INTERP0_POP_FULL_RESET _u(0x00000000) +#define SIO_INTERP0_POP_FULL_MSB _u(31) +#define SIO_INTERP0_POP_FULL_LSB _u(0) +#define SIO_INTERP0_POP_FULL_ACCESS "RO" +// ============================================================================= +// Register : SIO_INTERP0_PEEK_LANE0 +// Description : Read LANE0 result, without altering any internal state (PEEK). +#define SIO_INTERP0_PEEK_LANE0_OFFSET _u(0x000000a0) +#define SIO_INTERP0_PEEK_LANE0_BITS _u(0xffffffff) +#define SIO_INTERP0_PEEK_LANE0_RESET _u(0x00000000) +#define SIO_INTERP0_PEEK_LANE0_MSB _u(31) +#define SIO_INTERP0_PEEK_LANE0_LSB _u(0) +#define SIO_INTERP0_PEEK_LANE0_ACCESS "RO" +// ============================================================================= +// Register : SIO_INTERP0_PEEK_LANE1 +// Description : Read LANE1 result, without altering any internal state (PEEK). +#define SIO_INTERP0_PEEK_LANE1_OFFSET _u(0x000000a4) +#define SIO_INTERP0_PEEK_LANE1_BITS _u(0xffffffff) +#define SIO_INTERP0_PEEK_LANE1_RESET _u(0x00000000) +#define SIO_INTERP0_PEEK_LANE1_MSB _u(31) +#define SIO_INTERP0_PEEK_LANE1_LSB _u(0) +#define SIO_INTERP0_PEEK_LANE1_ACCESS "RO" +// ============================================================================= +// Register : SIO_INTERP0_PEEK_FULL +// Description : Read FULL result, without altering any internal state (PEEK). +#define SIO_INTERP0_PEEK_FULL_OFFSET _u(0x000000a8) +#define SIO_INTERP0_PEEK_FULL_BITS _u(0xffffffff) +#define SIO_INTERP0_PEEK_FULL_RESET _u(0x00000000) +#define SIO_INTERP0_PEEK_FULL_MSB _u(31) +#define SIO_INTERP0_PEEK_FULL_LSB _u(0) +#define SIO_INTERP0_PEEK_FULL_ACCESS "RO" +// ============================================================================= +// Register : SIO_INTERP0_CTRL_LANE0 +// Description : Control register for lane 0 +#define SIO_INTERP0_CTRL_LANE0_OFFSET _u(0x000000ac) +#define SIO_INTERP0_CTRL_LANE0_BITS _u(0x03bfffff) +#define SIO_INTERP0_CTRL_LANE0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP0_CTRL_LANE0_OVERF +// Description : Set if either OVERF0 or OVERF1 is set. +#define SIO_INTERP0_CTRL_LANE0_OVERF_RESET _u(0x0) +#define SIO_INTERP0_CTRL_LANE0_OVERF_BITS _u(0x02000000) +#define SIO_INTERP0_CTRL_LANE0_OVERF_MSB _u(25) +#define SIO_INTERP0_CTRL_LANE0_OVERF_LSB _u(25) +#define SIO_INTERP0_CTRL_LANE0_OVERF_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP0_CTRL_LANE0_OVERF1 +// Description : Indicates if any masked-off MSBs in ACCUM1 are set. +#define SIO_INTERP0_CTRL_LANE0_OVERF1_RESET _u(0x0) +#define SIO_INTERP0_CTRL_LANE0_OVERF1_BITS _u(0x01000000) +#define SIO_INTERP0_CTRL_LANE0_OVERF1_MSB _u(24) +#define SIO_INTERP0_CTRL_LANE0_OVERF1_LSB _u(24) +#define SIO_INTERP0_CTRL_LANE0_OVERF1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP0_CTRL_LANE0_OVERF0 +// Description : Indicates if any masked-off MSBs in ACCUM0 are set. +#define SIO_INTERP0_CTRL_LANE0_OVERF0_RESET _u(0x0) +#define SIO_INTERP0_CTRL_LANE0_OVERF0_BITS _u(0x00800000) +#define SIO_INTERP0_CTRL_LANE0_OVERF0_MSB _u(23) +#define SIO_INTERP0_CTRL_LANE0_OVERF0_LSB _u(23) +#define SIO_INTERP0_CTRL_LANE0_OVERF0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP0_CTRL_LANE0_BLEND +// Description : Only present on INTERP0 on each core. If BLEND mode is enabled: +// - LANE1 result is a linear interpolation between BASE0 and +// BASE1, controlled +// by the 8 LSBs of lane 1 shift and mask value (a fractional +// number between +// 0 and 255/256ths) +// - LANE0 result does not have BASE0 added (yields only the 8 +// LSBs of lane 1 shift+mask value) +// - FULL result does not have lane 1 shift+mask value added +// (BASE2 + lane 0 shift+mask) +// LANE1 SIGNED flag controls whether the interpolation is signed +// or unsigned. +#define SIO_INTERP0_CTRL_LANE0_BLEND_RESET _u(0x0) +#define SIO_INTERP0_CTRL_LANE0_BLEND_BITS _u(0x00200000) +#define SIO_INTERP0_CTRL_LANE0_BLEND_MSB _u(21) +#define SIO_INTERP0_CTRL_LANE0_BLEND_LSB _u(21) +#define SIO_INTERP0_CTRL_LANE0_BLEND_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP0_CTRL_LANE0_FORCE_MSB +// Description : ORed into bits 29:28 of the lane result presented to the +// processor on the bus. +// No effect on the internal 32-bit datapath. Handy for using a +// lane to generate sequence +// of pointers into flash or SRAM. +#define SIO_INTERP0_CTRL_LANE0_FORCE_MSB_RESET _u(0x0) +#define SIO_INTERP0_CTRL_LANE0_FORCE_MSB_BITS _u(0x00180000) +#define SIO_INTERP0_CTRL_LANE0_FORCE_MSB_MSB _u(20) +#define SIO_INTERP0_CTRL_LANE0_FORCE_MSB_LSB _u(19) +#define SIO_INTERP0_CTRL_LANE0_FORCE_MSB_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP0_CTRL_LANE0_ADD_RAW +// Description : If 1, mask + shift is bypassed for LANE0 result. This does not +// affect FULL result. +#define SIO_INTERP0_CTRL_LANE0_ADD_RAW_RESET _u(0x0) +#define SIO_INTERP0_CTRL_LANE0_ADD_RAW_BITS _u(0x00040000) +#define SIO_INTERP0_CTRL_LANE0_ADD_RAW_MSB _u(18) +#define SIO_INTERP0_CTRL_LANE0_ADD_RAW_LSB _u(18) +#define SIO_INTERP0_CTRL_LANE0_ADD_RAW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP0_CTRL_LANE0_CROSS_RESULT +// Description : If 1, feed the opposite lane's result into this lane's +// accumulator on POP. +#define SIO_INTERP0_CTRL_LANE0_CROSS_RESULT_RESET _u(0x0) +#define SIO_INTERP0_CTRL_LANE0_CROSS_RESULT_BITS _u(0x00020000) +#define SIO_INTERP0_CTRL_LANE0_CROSS_RESULT_MSB _u(17) +#define SIO_INTERP0_CTRL_LANE0_CROSS_RESULT_LSB _u(17) +#define SIO_INTERP0_CTRL_LANE0_CROSS_RESULT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP0_CTRL_LANE0_CROSS_INPUT +// Description : If 1, feed the opposite lane's accumulator into this lane's +// shift + mask hardware. +// Takes effect even if ADD_RAW is set (the CROSS_INPUT mux is +// before the shift+mask bypass) +#define SIO_INTERP0_CTRL_LANE0_CROSS_INPUT_RESET _u(0x0) +#define SIO_INTERP0_CTRL_LANE0_CROSS_INPUT_BITS _u(0x00010000) +#define SIO_INTERP0_CTRL_LANE0_CROSS_INPUT_MSB _u(16) +#define SIO_INTERP0_CTRL_LANE0_CROSS_INPUT_LSB _u(16) +#define SIO_INTERP0_CTRL_LANE0_CROSS_INPUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP0_CTRL_LANE0_SIGNED +// Description : If SIGNED is set, the shifted and masked accumulator value is +// sign-extended to 32 bits +// before adding to BASE0, and LANE0 PEEK/POP appear extended to +// 32 bits when read by processor. +#define SIO_INTERP0_CTRL_LANE0_SIGNED_RESET _u(0x0) +#define SIO_INTERP0_CTRL_LANE0_SIGNED_BITS _u(0x00008000) +#define SIO_INTERP0_CTRL_LANE0_SIGNED_MSB _u(15) +#define SIO_INTERP0_CTRL_LANE0_SIGNED_LSB _u(15) +#define SIO_INTERP0_CTRL_LANE0_SIGNED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP0_CTRL_LANE0_MASK_MSB +// Description : The most-significant bit allowed to pass by the mask +// (inclusive) +// Setting MSB < LSB may cause chip to turn inside-out +#define SIO_INTERP0_CTRL_LANE0_MASK_MSB_RESET _u(0x00) +#define SIO_INTERP0_CTRL_LANE0_MASK_MSB_BITS _u(0x00007c00) +#define SIO_INTERP0_CTRL_LANE0_MASK_MSB_MSB _u(14) +#define SIO_INTERP0_CTRL_LANE0_MASK_MSB_LSB _u(10) +#define SIO_INTERP0_CTRL_LANE0_MASK_MSB_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP0_CTRL_LANE0_MASK_LSB +// Description : The least-significant bit allowed to pass by the mask +// (inclusive) +#define SIO_INTERP0_CTRL_LANE0_MASK_LSB_RESET _u(0x00) +#define SIO_INTERP0_CTRL_LANE0_MASK_LSB_BITS _u(0x000003e0) +#define SIO_INTERP0_CTRL_LANE0_MASK_LSB_MSB _u(9) +#define SIO_INTERP0_CTRL_LANE0_MASK_LSB_LSB _u(5) +#define SIO_INTERP0_CTRL_LANE0_MASK_LSB_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP0_CTRL_LANE0_SHIFT +// Description : Logical right-shift applied to accumulator before masking +#define SIO_INTERP0_CTRL_LANE0_SHIFT_RESET _u(0x00) +#define SIO_INTERP0_CTRL_LANE0_SHIFT_BITS _u(0x0000001f) +#define SIO_INTERP0_CTRL_LANE0_SHIFT_MSB _u(4) +#define SIO_INTERP0_CTRL_LANE0_SHIFT_LSB _u(0) +#define SIO_INTERP0_CTRL_LANE0_SHIFT_ACCESS "RW" +// ============================================================================= +// Register : SIO_INTERP0_CTRL_LANE1 +// Description : Control register for lane 1 +#define SIO_INTERP0_CTRL_LANE1_OFFSET _u(0x000000b0) +#define SIO_INTERP0_CTRL_LANE1_BITS _u(0x001fffff) +#define SIO_INTERP0_CTRL_LANE1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP0_CTRL_LANE1_FORCE_MSB +// Description : ORed into bits 29:28 of the lane result presented to the +// processor on the bus. +// No effect on the internal 32-bit datapath. Handy for using a +// lane to generate sequence +// of pointers into flash or SRAM. +#define SIO_INTERP0_CTRL_LANE1_FORCE_MSB_RESET _u(0x0) +#define SIO_INTERP0_CTRL_LANE1_FORCE_MSB_BITS _u(0x00180000) +#define SIO_INTERP0_CTRL_LANE1_FORCE_MSB_MSB _u(20) +#define SIO_INTERP0_CTRL_LANE1_FORCE_MSB_LSB _u(19) +#define SIO_INTERP0_CTRL_LANE1_FORCE_MSB_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP0_CTRL_LANE1_ADD_RAW +// Description : If 1, mask + shift is bypassed for LANE1 result. This does not +// affect FULL result. +#define SIO_INTERP0_CTRL_LANE1_ADD_RAW_RESET _u(0x0) +#define SIO_INTERP0_CTRL_LANE1_ADD_RAW_BITS _u(0x00040000) +#define SIO_INTERP0_CTRL_LANE1_ADD_RAW_MSB _u(18) +#define SIO_INTERP0_CTRL_LANE1_ADD_RAW_LSB _u(18) +#define SIO_INTERP0_CTRL_LANE1_ADD_RAW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP0_CTRL_LANE1_CROSS_RESULT +// Description : If 1, feed the opposite lane's result into this lane's +// accumulator on POP. +#define SIO_INTERP0_CTRL_LANE1_CROSS_RESULT_RESET _u(0x0) +#define SIO_INTERP0_CTRL_LANE1_CROSS_RESULT_BITS _u(0x00020000) +#define SIO_INTERP0_CTRL_LANE1_CROSS_RESULT_MSB _u(17) +#define SIO_INTERP0_CTRL_LANE1_CROSS_RESULT_LSB _u(17) +#define SIO_INTERP0_CTRL_LANE1_CROSS_RESULT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP0_CTRL_LANE1_CROSS_INPUT +// Description : If 1, feed the opposite lane's accumulator into this lane's +// shift + mask hardware. +// Takes effect even if ADD_RAW is set (the CROSS_INPUT mux is +// before the shift+mask bypass) +#define SIO_INTERP0_CTRL_LANE1_CROSS_INPUT_RESET _u(0x0) +#define SIO_INTERP0_CTRL_LANE1_CROSS_INPUT_BITS _u(0x00010000) +#define SIO_INTERP0_CTRL_LANE1_CROSS_INPUT_MSB _u(16) +#define SIO_INTERP0_CTRL_LANE1_CROSS_INPUT_LSB _u(16) +#define SIO_INTERP0_CTRL_LANE1_CROSS_INPUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP0_CTRL_LANE1_SIGNED +// Description : If SIGNED is set, the shifted and masked accumulator value is +// sign-extended to 32 bits +// before adding to BASE1, and LANE1 PEEK/POP appear extended to +// 32 bits when read by processor. +#define SIO_INTERP0_CTRL_LANE1_SIGNED_RESET _u(0x0) +#define SIO_INTERP0_CTRL_LANE1_SIGNED_BITS _u(0x00008000) +#define SIO_INTERP0_CTRL_LANE1_SIGNED_MSB _u(15) +#define SIO_INTERP0_CTRL_LANE1_SIGNED_LSB _u(15) +#define SIO_INTERP0_CTRL_LANE1_SIGNED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP0_CTRL_LANE1_MASK_MSB +// Description : The most-significant bit allowed to pass by the mask +// (inclusive) +// Setting MSB < LSB may cause chip to turn inside-out +#define SIO_INTERP0_CTRL_LANE1_MASK_MSB_RESET _u(0x00) +#define SIO_INTERP0_CTRL_LANE1_MASK_MSB_BITS _u(0x00007c00) +#define SIO_INTERP0_CTRL_LANE1_MASK_MSB_MSB _u(14) +#define SIO_INTERP0_CTRL_LANE1_MASK_MSB_LSB _u(10) +#define SIO_INTERP0_CTRL_LANE1_MASK_MSB_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP0_CTRL_LANE1_MASK_LSB +// Description : The least-significant bit allowed to pass by the mask +// (inclusive) +#define SIO_INTERP0_CTRL_LANE1_MASK_LSB_RESET _u(0x00) +#define SIO_INTERP0_CTRL_LANE1_MASK_LSB_BITS _u(0x000003e0) +#define SIO_INTERP0_CTRL_LANE1_MASK_LSB_MSB _u(9) +#define SIO_INTERP0_CTRL_LANE1_MASK_LSB_LSB _u(5) +#define SIO_INTERP0_CTRL_LANE1_MASK_LSB_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP0_CTRL_LANE1_SHIFT +// Description : Logical right-shift applied to accumulator before masking +#define SIO_INTERP0_CTRL_LANE1_SHIFT_RESET _u(0x00) +#define SIO_INTERP0_CTRL_LANE1_SHIFT_BITS _u(0x0000001f) +#define SIO_INTERP0_CTRL_LANE1_SHIFT_MSB _u(4) +#define SIO_INTERP0_CTRL_LANE1_SHIFT_LSB _u(0) +#define SIO_INTERP0_CTRL_LANE1_SHIFT_ACCESS "RW" +// ============================================================================= +// Register : SIO_INTERP0_ACCUM0_ADD +// Description : Values written here are atomically added to ACCUM0 +// Reading yields lane 0's raw shift and mask value (BASE0 not +// added). +#define SIO_INTERP0_ACCUM0_ADD_OFFSET _u(0x000000b4) +#define SIO_INTERP0_ACCUM0_ADD_BITS _u(0x00ffffff) +#define SIO_INTERP0_ACCUM0_ADD_RESET _u(0x00000000) +#define SIO_INTERP0_ACCUM0_ADD_MSB _u(23) +#define SIO_INTERP0_ACCUM0_ADD_LSB _u(0) +#define SIO_INTERP0_ACCUM0_ADD_ACCESS "RW" +// ============================================================================= +// Register : SIO_INTERP0_ACCUM1_ADD +// Description : Values written here are atomically added to ACCUM1 +// Reading yields lane 1's raw shift and mask value (BASE1 not +// added). +#define SIO_INTERP0_ACCUM1_ADD_OFFSET _u(0x000000b8) +#define SIO_INTERP0_ACCUM1_ADD_BITS _u(0x00ffffff) +#define SIO_INTERP0_ACCUM1_ADD_RESET _u(0x00000000) +#define SIO_INTERP0_ACCUM1_ADD_MSB _u(23) +#define SIO_INTERP0_ACCUM1_ADD_LSB _u(0) +#define SIO_INTERP0_ACCUM1_ADD_ACCESS "RW" +// ============================================================================= +// Register : SIO_INTERP0_BASE_1AND0 +// Description : On write, the lower 16 bits go to BASE0, upper bits to BASE1 +// simultaneously. +// Each half is sign-extended to 32 bits if that lane's SIGNED +// flag is set. +#define SIO_INTERP0_BASE_1AND0_OFFSET _u(0x000000bc) +#define SIO_INTERP0_BASE_1AND0_BITS _u(0xffffffff) +#define SIO_INTERP0_BASE_1AND0_RESET _u(0x00000000) +#define SIO_INTERP0_BASE_1AND0_MSB _u(31) +#define SIO_INTERP0_BASE_1AND0_LSB _u(0) +#define SIO_INTERP0_BASE_1AND0_ACCESS "WO" +// ============================================================================= +// Register : SIO_INTERP1_ACCUM0 +// Description : Read/write access to accumulator 0 +#define SIO_INTERP1_ACCUM0_OFFSET _u(0x000000c0) +#define SIO_INTERP1_ACCUM0_BITS _u(0xffffffff) +#define SIO_INTERP1_ACCUM0_RESET _u(0x00000000) +#define SIO_INTERP1_ACCUM0_MSB _u(31) +#define SIO_INTERP1_ACCUM0_LSB _u(0) +#define SIO_INTERP1_ACCUM0_ACCESS "RW" +// ============================================================================= +// Register : SIO_INTERP1_ACCUM1 +// Description : Read/write access to accumulator 1 +#define SIO_INTERP1_ACCUM1_OFFSET _u(0x000000c4) +#define SIO_INTERP1_ACCUM1_BITS _u(0xffffffff) +#define SIO_INTERP1_ACCUM1_RESET _u(0x00000000) +#define SIO_INTERP1_ACCUM1_MSB _u(31) +#define SIO_INTERP1_ACCUM1_LSB _u(0) +#define SIO_INTERP1_ACCUM1_ACCESS "RW" +// ============================================================================= +// Register : SIO_INTERP1_BASE0 +// Description : Read/write access to BASE0 register. +#define SIO_INTERP1_BASE0_OFFSET _u(0x000000c8) +#define SIO_INTERP1_BASE0_BITS _u(0xffffffff) +#define SIO_INTERP1_BASE0_RESET _u(0x00000000) +#define SIO_INTERP1_BASE0_MSB _u(31) +#define SIO_INTERP1_BASE0_LSB _u(0) +#define SIO_INTERP1_BASE0_ACCESS "RW" +// ============================================================================= +// Register : SIO_INTERP1_BASE1 +// Description : Read/write access to BASE1 register. +#define SIO_INTERP1_BASE1_OFFSET _u(0x000000cc) +#define SIO_INTERP1_BASE1_BITS _u(0xffffffff) +#define SIO_INTERP1_BASE1_RESET _u(0x00000000) +#define SIO_INTERP1_BASE1_MSB _u(31) +#define SIO_INTERP1_BASE1_LSB _u(0) +#define SIO_INTERP1_BASE1_ACCESS "RW" +// ============================================================================= +// Register : SIO_INTERP1_BASE2 +// Description : Read/write access to BASE2 register. +#define SIO_INTERP1_BASE2_OFFSET _u(0x000000d0) +#define SIO_INTERP1_BASE2_BITS _u(0xffffffff) +#define SIO_INTERP1_BASE2_RESET _u(0x00000000) +#define SIO_INTERP1_BASE2_MSB _u(31) +#define SIO_INTERP1_BASE2_LSB _u(0) +#define SIO_INTERP1_BASE2_ACCESS "RW" +// ============================================================================= +// Register : SIO_INTERP1_POP_LANE0 +// Description : Read LANE0 result, and simultaneously write lane results to +// both accumulators (POP). +#define SIO_INTERP1_POP_LANE0_OFFSET _u(0x000000d4) +#define SIO_INTERP1_POP_LANE0_BITS _u(0xffffffff) +#define SIO_INTERP1_POP_LANE0_RESET _u(0x00000000) +#define SIO_INTERP1_POP_LANE0_MSB _u(31) +#define SIO_INTERP1_POP_LANE0_LSB _u(0) +#define SIO_INTERP1_POP_LANE0_ACCESS "RO" +// ============================================================================= +// Register : SIO_INTERP1_POP_LANE1 +// Description : Read LANE1 result, and simultaneously write lane results to +// both accumulators (POP). +#define SIO_INTERP1_POP_LANE1_OFFSET _u(0x000000d8) +#define SIO_INTERP1_POP_LANE1_BITS _u(0xffffffff) +#define SIO_INTERP1_POP_LANE1_RESET _u(0x00000000) +#define SIO_INTERP1_POP_LANE1_MSB _u(31) +#define SIO_INTERP1_POP_LANE1_LSB _u(0) +#define SIO_INTERP1_POP_LANE1_ACCESS "RO" +// ============================================================================= +// Register : SIO_INTERP1_POP_FULL +// Description : Read FULL result, and simultaneously write lane results to both +// accumulators (POP). +#define SIO_INTERP1_POP_FULL_OFFSET _u(0x000000dc) +#define SIO_INTERP1_POP_FULL_BITS _u(0xffffffff) +#define SIO_INTERP1_POP_FULL_RESET _u(0x00000000) +#define SIO_INTERP1_POP_FULL_MSB _u(31) +#define SIO_INTERP1_POP_FULL_LSB _u(0) +#define SIO_INTERP1_POP_FULL_ACCESS "RO" +// ============================================================================= +// Register : SIO_INTERP1_PEEK_LANE0 +// Description : Read LANE0 result, without altering any internal state (PEEK). +#define SIO_INTERP1_PEEK_LANE0_OFFSET _u(0x000000e0) +#define SIO_INTERP1_PEEK_LANE0_BITS _u(0xffffffff) +#define SIO_INTERP1_PEEK_LANE0_RESET _u(0x00000000) +#define SIO_INTERP1_PEEK_LANE0_MSB _u(31) +#define SIO_INTERP1_PEEK_LANE0_LSB _u(0) +#define SIO_INTERP1_PEEK_LANE0_ACCESS "RO" +// ============================================================================= +// Register : SIO_INTERP1_PEEK_LANE1 +// Description : Read LANE1 result, without altering any internal state (PEEK). +#define SIO_INTERP1_PEEK_LANE1_OFFSET _u(0x000000e4) +#define SIO_INTERP1_PEEK_LANE1_BITS _u(0xffffffff) +#define SIO_INTERP1_PEEK_LANE1_RESET _u(0x00000000) +#define SIO_INTERP1_PEEK_LANE1_MSB _u(31) +#define SIO_INTERP1_PEEK_LANE1_LSB _u(0) +#define SIO_INTERP1_PEEK_LANE1_ACCESS "RO" +// ============================================================================= +// Register : SIO_INTERP1_PEEK_FULL +// Description : Read FULL result, without altering any internal state (PEEK). +#define SIO_INTERP1_PEEK_FULL_OFFSET _u(0x000000e8) +#define SIO_INTERP1_PEEK_FULL_BITS _u(0xffffffff) +#define SIO_INTERP1_PEEK_FULL_RESET _u(0x00000000) +#define SIO_INTERP1_PEEK_FULL_MSB _u(31) +#define SIO_INTERP1_PEEK_FULL_LSB _u(0) +#define SIO_INTERP1_PEEK_FULL_ACCESS "RO" +// ============================================================================= +// Register : SIO_INTERP1_CTRL_LANE0 +// Description : Control register for lane 0 +#define SIO_INTERP1_CTRL_LANE0_OFFSET _u(0x000000ec) +#define SIO_INTERP1_CTRL_LANE0_BITS _u(0x03dfffff) +#define SIO_INTERP1_CTRL_LANE0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP1_CTRL_LANE0_OVERF +// Description : Set if either OVERF0 or OVERF1 is set. +#define SIO_INTERP1_CTRL_LANE0_OVERF_RESET _u(0x0) +#define SIO_INTERP1_CTRL_LANE0_OVERF_BITS _u(0x02000000) +#define SIO_INTERP1_CTRL_LANE0_OVERF_MSB _u(25) +#define SIO_INTERP1_CTRL_LANE0_OVERF_LSB _u(25) +#define SIO_INTERP1_CTRL_LANE0_OVERF_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP1_CTRL_LANE0_OVERF1 +// Description : Indicates if any masked-off MSBs in ACCUM1 are set. +#define SIO_INTERP1_CTRL_LANE0_OVERF1_RESET _u(0x0) +#define SIO_INTERP1_CTRL_LANE0_OVERF1_BITS _u(0x01000000) +#define SIO_INTERP1_CTRL_LANE0_OVERF1_MSB _u(24) +#define SIO_INTERP1_CTRL_LANE0_OVERF1_LSB _u(24) +#define SIO_INTERP1_CTRL_LANE0_OVERF1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP1_CTRL_LANE0_OVERF0 +// Description : Indicates if any masked-off MSBs in ACCUM0 are set. +#define SIO_INTERP1_CTRL_LANE0_OVERF0_RESET _u(0x0) +#define SIO_INTERP1_CTRL_LANE0_OVERF0_BITS _u(0x00800000) +#define SIO_INTERP1_CTRL_LANE0_OVERF0_MSB _u(23) +#define SIO_INTERP1_CTRL_LANE0_OVERF0_LSB _u(23) +#define SIO_INTERP1_CTRL_LANE0_OVERF0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP1_CTRL_LANE0_CLAMP +// Description : Only present on INTERP1 on each core. If CLAMP mode is enabled: +// - LANE0 result is shifted and masked ACCUM0, clamped by a lower +// bound of +// BASE0 and an upper bound of BASE1. +// - Signedness of these comparisons is determined by +// LANE0_CTRL_SIGNED +#define SIO_INTERP1_CTRL_LANE0_CLAMP_RESET _u(0x0) +#define SIO_INTERP1_CTRL_LANE0_CLAMP_BITS _u(0x00400000) +#define SIO_INTERP1_CTRL_LANE0_CLAMP_MSB _u(22) +#define SIO_INTERP1_CTRL_LANE0_CLAMP_LSB _u(22) +#define SIO_INTERP1_CTRL_LANE0_CLAMP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP1_CTRL_LANE0_FORCE_MSB +// Description : ORed into bits 29:28 of the lane result presented to the +// processor on the bus. +// No effect on the internal 32-bit datapath. Handy for using a +// lane to generate sequence +// of pointers into flash or SRAM. +#define SIO_INTERP1_CTRL_LANE0_FORCE_MSB_RESET _u(0x0) +#define SIO_INTERP1_CTRL_LANE0_FORCE_MSB_BITS _u(0x00180000) +#define SIO_INTERP1_CTRL_LANE0_FORCE_MSB_MSB _u(20) +#define SIO_INTERP1_CTRL_LANE0_FORCE_MSB_LSB _u(19) +#define SIO_INTERP1_CTRL_LANE0_FORCE_MSB_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP1_CTRL_LANE0_ADD_RAW +// Description : If 1, mask + shift is bypassed for LANE0 result. This does not +// affect FULL result. +#define SIO_INTERP1_CTRL_LANE0_ADD_RAW_RESET _u(0x0) +#define SIO_INTERP1_CTRL_LANE0_ADD_RAW_BITS _u(0x00040000) +#define SIO_INTERP1_CTRL_LANE0_ADD_RAW_MSB _u(18) +#define SIO_INTERP1_CTRL_LANE0_ADD_RAW_LSB _u(18) +#define SIO_INTERP1_CTRL_LANE0_ADD_RAW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP1_CTRL_LANE0_CROSS_RESULT +// Description : If 1, feed the opposite lane's result into this lane's +// accumulator on POP. +#define SIO_INTERP1_CTRL_LANE0_CROSS_RESULT_RESET _u(0x0) +#define SIO_INTERP1_CTRL_LANE0_CROSS_RESULT_BITS _u(0x00020000) +#define SIO_INTERP1_CTRL_LANE0_CROSS_RESULT_MSB _u(17) +#define SIO_INTERP1_CTRL_LANE0_CROSS_RESULT_LSB _u(17) +#define SIO_INTERP1_CTRL_LANE0_CROSS_RESULT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP1_CTRL_LANE0_CROSS_INPUT +// Description : If 1, feed the opposite lane's accumulator into this lane's +// shift + mask hardware. +// Takes effect even if ADD_RAW is set (the CROSS_INPUT mux is +// before the shift+mask bypass) +#define SIO_INTERP1_CTRL_LANE0_CROSS_INPUT_RESET _u(0x0) +#define SIO_INTERP1_CTRL_LANE0_CROSS_INPUT_BITS _u(0x00010000) +#define SIO_INTERP1_CTRL_LANE0_CROSS_INPUT_MSB _u(16) +#define SIO_INTERP1_CTRL_LANE0_CROSS_INPUT_LSB _u(16) +#define SIO_INTERP1_CTRL_LANE0_CROSS_INPUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP1_CTRL_LANE0_SIGNED +// Description : If SIGNED is set, the shifted and masked accumulator value is +// sign-extended to 32 bits +// before adding to BASE0, and LANE0 PEEK/POP appear extended to +// 32 bits when read by processor. +#define SIO_INTERP1_CTRL_LANE0_SIGNED_RESET _u(0x0) +#define SIO_INTERP1_CTRL_LANE0_SIGNED_BITS _u(0x00008000) +#define SIO_INTERP1_CTRL_LANE0_SIGNED_MSB _u(15) +#define SIO_INTERP1_CTRL_LANE0_SIGNED_LSB _u(15) +#define SIO_INTERP1_CTRL_LANE0_SIGNED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP1_CTRL_LANE0_MASK_MSB +// Description : The most-significant bit allowed to pass by the mask +// (inclusive) +// Setting MSB < LSB may cause chip to turn inside-out +#define SIO_INTERP1_CTRL_LANE0_MASK_MSB_RESET _u(0x00) +#define SIO_INTERP1_CTRL_LANE0_MASK_MSB_BITS _u(0x00007c00) +#define SIO_INTERP1_CTRL_LANE0_MASK_MSB_MSB _u(14) +#define SIO_INTERP1_CTRL_LANE0_MASK_MSB_LSB _u(10) +#define SIO_INTERP1_CTRL_LANE0_MASK_MSB_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP1_CTRL_LANE0_MASK_LSB +// Description : The least-significant bit allowed to pass by the mask +// (inclusive) +#define SIO_INTERP1_CTRL_LANE0_MASK_LSB_RESET _u(0x00) +#define SIO_INTERP1_CTRL_LANE0_MASK_LSB_BITS _u(0x000003e0) +#define SIO_INTERP1_CTRL_LANE0_MASK_LSB_MSB _u(9) +#define SIO_INTERP1_CTRL_LANE0_MASK_LSB_LSB _u(5) +#define SIO_INTERP1_CTRL_LANE0_MASK_LSB_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP1_CTRL_LANE0_SHIFT +// Description : Logical right-shift applied to accumulator before masking +#define SIO_INTERP1_CTRL_LANE0_SHIFT_RESET _u(0x00) +#define SIO_INTERP1_CTRL_LANE0_SHIFT_BITS _u(0x0000001f) +#define SIO_INTERP1_CTRL_LANE0_SHIFT_MSB _u(4) +#define SIO_INTERP1_CTRL_LANE0_SHIFT_LSB _u(0) +#define SIO_INTERP1_CTRL_LANE0_SHIFT_ACCESS "RW" +// ============================================================================= +// Register : SIO_INTERP1_CTRL_LANE1 +// Description : Control register for lane 1 +#define SIO_INTERP1_CTRL_LANE1_OFFSET _u(0x000000f0) +#define SIO_INTERP1_CTRL_LANE1_BITS _u(0x001fffff) +#define SIO_INTERP1_CTRL_LANE1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP1_CTRL_LANE1_FORCE_MSB +// Description : ORed into bits 29:28 of the lane result presented to the +// processor on the bus. +// No effect on the internal 32-bit datapath. Handy for using a +// lane to generate sequence +// of pointers into flash or SRAM. +#define SIO_INTERP1_CTRL_LANE1_FORCE_MSB_RESET _u(0x0) +#define SIO_INTERP1_CTRL_LANE1_FORCE_MSB_BITS _u(0x00180000) +#define SIO_INTERP1_CTRL_LANE1_FORCE_MSB_MSB _u(20) +#define SIO_INTERP1_CTRL_LANE1_FORCE_MSB_LSB _u(19) +#define SIO_INTERP1_CTRL_LANE1_FORCE_MSB_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP1_CTRL_LANE1_ADD_RAW +// Description : If 1, mask + shift is bypassed for LANE1 result. This does not +// affect FULL result. +#define SIO_INTERP1_CTRL_LANE1_ADD_RAW_RESET _u(0x0) +#define SIO_INTERP1_CTRL_LANE1_ADD_RAW_BITS _u(0x00040000) +#define SIO_INTERP1_CTRL_LANE1_ADD_RAW_MSB _u(18) +#define SIO_INTERP1_CTRL_LANE1_ADD_RAW_LSB _u(18) +#define SIO_INTERP1_CTRL_LANE1_ADD_RAW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP1_CTRL_LANE1_CROSS_RESULT +// Description : If 1, feed the opposite lane's result into this lane's +// accumulator on POP. +#define SIO_INTERP1_CTRL_LANE1_CROSS_RESULT_RESET _u(0x0) +#define SIO_INTERP1_CTRL_LANE1_CROSS_RESULT_BITS _u(0x00020000) +#define SIO_INTERP1_CTRL_LANE1_CROSS_RESULT_MSB _u(17) +#define SIO_INTERP1_CTRL_LANE1_CROSS_RESULT_LSB _u(17) +#define SIO_INTERP1_CTRL_LANE1_CROSS_RESULT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP1_CTRL_LANE1_CROSS_INPUT +// Description : If 1, feed the opposite lane's accumulator into this lane's +// shift + mask hardware. +// Takes effect even if ADD_RAW is set (the CROSS_INPUT mux is +// before the shift+mask bypass) +#define SIO_INTERP1_CTRL_LANE1_CROSS_INPUT_RESET _u(0x0) +#define SIO_INTERP1_CTRL_LANE1_CROSS_INPUT_BITS _u(0x00010000) +#define SIO_INTERP1_CTRL_LANE1_CROSS_INPUT_MSB _u(16) +#define SIO_INTERP1_CTRL_LANE1_CROSS_INPUT_LSB _u(16) +#define SIO_INTERP1_CTRL_LANE1_CROSS_INPUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP1_CTRL_LANE1_SIGNED +// Description : If SIGNED is set, the shifted and masked accumulator value is +// sign-extended to 32 bits +// before adding to BASE1, and LANE1 PEEK/POP appear extended to +// 32 bits when read by processor. +#define SIO_INTERP1_CTRL_LANE1_SIGNED_RESET _u(0x0) +#define SIO_INTERP1_CTRL_LANE1_SIGNED_BITS _u(0x00008000) +#define SIO_INTERP1_CTRL_LANE1_SIGNED_MSB _u(15) +#define SIO_INTERP1_CTRL_LANE1_SIGNED_LSB _u(15) +#define SIO_INTERP1_CTRL_LANE1_SIGNED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP1_CTRL_LANE1_MASK_MSB +// Description : The most-significant bit allowed to pass by the mask +// (inclusive) +// Setting MSB < LSB may cause chip to turn inside-out +#define SIO_INTERP1_CTRL_LANE1_MASK_MSB_RESET _u(0x00) +#define SIO_INTERP1_CTRL_LANE1_MASK_MSB_BITS _u(0x00007c00) +#define SIO_INTERP1_CTRL_LANE1_MASK_MSB_MSB _u(14) +#define SIO_INTERP1_CTRL_LANE1_MASK_MSB_LSB _u(10) +#define SIO_INTERP1_CTRL_LANE1_MASK_MSB_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP1_CTRL_LANE1_MASK_LSB +// Description : The least-significant bit allowed to pass by the mask +// (inclusive) +#define SIO_INTERP1_CTRL_LANE1_MASK_LSB_RESET _u(0x00) +#define SIO_INTERP1_CTRL_LANE1_MASK_LSB_BITS _u(0x000003e0) +#define SIO_INTERP1_CTRL_LANE1_MASK_LSB_MSB _u(9) +#define SIO_INTERP1_CTRL_LANE1_MASK_LSB_LSB _u(5) +#define SIO_INTERP1_CTRL_LANE1_MASK_LSB_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SIO_INTERP1_CTRL_LANE1_SHIFT +// Description : Logical right-shift applied to accumulator before masking +#define SIO_INTERP1_CTRL_LANE1_SHIFT_RESET _u(0x00) +#define SIO_INTERP1_CTRL_LANE1_SHIFT_BITS _u(0x0000001f) +#define SIO_INTERP1_CTRL_LANE1_SHIFT_MSB _u(4) +#define SIO_INTERP1_CTRL_LANE1_SHIFT_LSB _u(0) +#define SIO_INTERP1_CTRL_LANE1_SHIFT_ACCESS "RW" +// ============================================================================= +// Register : SIO_INTERP1_ACCUM0_ADD +// Description : Values written here are atomically added to ACCUM0 +// Reading yields lane 0's raw shift and mask value (BASE0 not +// added). +#define SIO_INTERP1_ACCUM0_ADD_OFFSET _u(0x000000f4) +#define SIO_INTERP1_ACCUM0_ADD_BITS _u(0x00ffffff) +#define SIO_INTERP1_ACCUM0_ADD_RESET _u(0x00000000) +#define SIO_INTERP1_ACCUM0_ADD_MSB _u(23) +#define SIO_INTERP1_ACCUM0_ADD_LSB _u(0) +#define SIO_INTERP1_ACCUM0_ADD_ACCESS "RW" +// ============================================================================= +// Register : SIO_INTERP1_ACCUM1_ADD +// Description : Values written here are atomically added to ACCUM1 +// Reading yields lane 1's raw shift and mask value (BASE1 not +// added). +#define SIO_INTERP1_ACCUM1_ADD_OFFSET _u(0x000000f8) +#define SIO_INTERP1_ACCUM1_ADD_BITS _u(0x00ffffff) +#define SIO_INTERP1_ACCUM1_ADD_RESET _u(0x00000000) +#define SIO_INTERP1_ACCUM1_ADD_MSB _u(23) +#define SIO_INTERP1_ACCUM1_ADD_LSB _u(0) +#define SIO_INTERP1_ACCUM1_ADD_ACCESS "RW" +// ============================================================================= +// Register : SIO_INTERP1_BASE_1AND0 +// Description : On write, the lower 16 bits go to BASE0, upper bits to BASE1 +// simultaneously. +// Each half is sign-extended to 32 bits if that lane's SIGNED +// flag is set. +#define SIO_INTERP1_BASE_1AND0_OFFSET _u(0x000000fc) +#define SIO_INTERP1_BASE_1AND0_BITS _u(0xffffffff) +#define SIO_INTERP1_BASE_1AND0_RESET _u(0x00000000) +#define SIO_INTERP1_BASE_1AND0_MSB _u(31) +#define SIO_INTERP1_BASE_1AND0_LSB _u(0) +#define SIO_INTERP1_BASE_1AND0_ACCESS "WO" +// ============================================================================= +// Register : SIO_SPINLOCK0 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK0_OFFSET _u(0x00000100) +#define SIO_SPINLOCK0_BITS _u(0xffffffff) +#define SIO_SPINLOCK0_RESET _u(0x00000000) +#define SIO_SPINLOCK0_MSB _u(31) +#define SIO_SPINLOCK0_LSB _u(0) +#define SIO_SPINLOCK0_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK1 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK1_OFFSET _u(0x00000104) +#define SIO_SPINLOCK1_BITS _u(0xffffffff) +#define SIO_SPINLOCK1_RESET _u(0x00000000) +#define SIO_SPINLOCK1_MSB _u(31) +#define SIO_SPINLOCK1_LSB _u(0) +#define SIO_SPINLOCK1_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK2 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK2_OFFSET _u(0x00000108) +#define SIO_SPINLOCK2_BITS _u(0xffffffff) +#define SIO_SPINLOCK2_RESET _u(0x00000000) +#define SIO_SPINLOCK2_MSB _u(31) +#define SIO_SPINLOCK2_LSB _u(0) +#define SIO_SPINLOCK2_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK3 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK3_OFFSET _u(0x0000010c) +#define SIO_SPINLOCK3_BITS _u(0xffffffff) +#define SIO_SPINLOCK3_RESET _u(0x00000000) +#define SIO_SPINLOCK3_MSB _u(31) +#define SIO_SPINLOCK3_LSB _u(0) +#define SIO_SPINLOCK3_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK4 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK4_OFFSET _u(0x00000110) +#define SIO_SPINLOCK4_BITS _u(0xffffffff) +#define SIO_SPINLOCK4_RESET _u(0x00000000) +#define SIO_SPINLOCK4_MSB _u(31) +#define SIO_SPINLOCK4_LSB _u(0) +#define SIO_SPINLOCK4_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK5 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK5_OFFSET _u(0x00000114) +#define SIO_SPINLOCK5_BITS _u(0xffffffff) +#define SIO_SPINLOCK5_RESET _u(0x00000000) +#define SIO_SPINLOCK5_MSB _u(31) +#define SIO_SPINLOCK5_LSB _u(0) +#define SIO_SPINLOCK5_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK6 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK6_OFFSET _u(0x00000118) +#define SIO_SPINLOCK6_BITS _u(0xffffffff) +#define SIO_SPINLOCK6_RESET _u(0x00000000) +#define SIO_SPINLOCK6_MSB _u(31) +#define SIO_SPINLOCK6_LSB _u(0) +#define SIO_SPINLOCK6_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK7 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK7_OFFSET _u(0x0000011c) +#define SIO_SPINLOCK7_BITS _u(0xffffffff) +#define SIO_SPINLOCK7_RESET _u(0x00000000) +#define SIO_SPINLOCK7_MSB _u(31) +#define SIO_SPINLOCK7_LSB _u(0) +#define SIO_SPINLOCK7_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK8 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK8_OFFSET _u(0x00000120) +#define SIO_SPINLOCK8_BITS _u(0xffffffff) +#define SIO_SPINLOCK8_RESET _u(0x00000000) +#define SIO_SPINLOCK8_MSB _u(31) +#define SIO_SPINLOCK8_LSB _u(0) +#define SIO_SPINLOCK8_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK9 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK9_OFFSET _u(0x00000124) +#define SIO_SPINLOCK9_BITS _u(0xffffffff) +#define SIO_SPINLOCK9_RESET _u(0x00000000) +#define SIO_SPINLOCK9_MSB _u(31) +#define SIO_SPINLOCK9_LSB _u(0) +#define SIO_SPINLOCK9_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK10 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK10_OFFSET _u(0x00000128) +#define SIO_SPINLOCK10_BITS _u(0xffffffff) +#define SIO_SPINLOCK10_RESET _u(0x00000000) +#define SIO_SPINLOCK10_MSB _u(31) +#define SIO_SPINLOCK10_LSB _u(0) +#define SIO_SPINLOCK10_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK11 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK11_OFFSET _u(0x0000012c) +#define SIO_SPINLOCK11_BITS _u(0xffffffff) +#define SIO_SPINLOCK11_RESET _u(0x00000000) +#define SIO_SPINLOCK11_MSB _u(31) +#define SIO_SPINLOCK11_LSB _u(0) +#define SIO_SPINLOCK11_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK12 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK12_OFFSET _u(0x00000130) +#define SIO_SPINLOCK12_BITS _u(0xffffffff) +#define SIO_SPINLOCK12_RESET _u(0x00000000) +#define SIO_SPINLOCK12_MSB _u(31) +#define SIO_SPINLOCK12_LSB _u(0) +#define SIO_SPINLOCK12_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK13 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK13_OFFSET _u(0x00000134) +#define SIO_SPINLOCK13_BITS _u(0xffffffff) +#define SIO_SPINLOCK13_RESET _u(0x00000000) +#define SIO_SPINLOCK13_MSB _u(31) +#define SIO_SPINLOCK13_LSB _u(0) +#define SIO_SPINLOCK13_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK14 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK14_OFFSET _u(0x00000138) +#define SIO_SPINLOCK14_BITS _u(0xffffffff) +#define SIO_SPINLOCK14_RESET _u(0x00000000) +#define SIO_SPINLOCK14_MSB _u(31) +#define SIO_SPINLOCK14_LSB _u(0) +#define SIO_SPINLOCK14_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK15 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK15_OFFSET _u(0x0000013c) +#define SIO_SPINLOCK15_BITS _u(0xffffffff) +#define SIO_SPINLOCK15_RESET _u(0x00000000) +#define SIO_SPINLOCK15_MSB _u(31) +#define SIO_SPINLOCK15_LSB _u(0) +#define SIO_SPINLOCK15_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK16 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK16_OFFSET _u(0x00000140) +#define SIO_SPINLOCK16_BITS _u(0xffffffff) +#define SIO_SPINLOCK16_RESET _u(0x00000000) +#define SIO_SPINLOCK16_MSB _u(31) +#define SIO_SPINLOCK16_LSB _u(0) +#define SIO_SPINLOCK16_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK17 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK17_OFFSET _u(0x00000144) +#define SIO_SPINLOCK17_BITS _u(0xffffffff) +#define SIO_SPINLOCK17_RESET _u(0x00000000) +#define SIO_SPINLOCK17_MSB _u(31) +#define SIO_SPINLOCK17_LSB _u(0) +#define SIO_SPINLOCK17_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK18 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK18_OFFSET _u(0x00000148) +#define SIO_SPINLOCK18_BITS _u(0xffffffff) +#define SIO_SPINLOCK18_RESET _u(0x00000000) +#define SIO_SPINLOCK18_MSB _u(31) +#define SIO_SPINLOCK18_LSB _u(0) +#define SIO_SPINLOCK18_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK19 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK19_OFFSET _u(0x0000014c) +#define SIO_SPINLOCK19_BITS _u(0xffffffff) +#define SIO_SPINLOCK19_RESET _u(0x00000000) +#define SIO_SPINLOCK19_MSB _u(31) +#define SIO_SPINLOCK19_LSB _u(0) +#define SIO_SPINLOCK19_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK20 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK20_OFFSET _u(0x00000150) +#define SIO_SPINLOCK20_BITS _u(0xffffffff) +#define SIO_SPINLOCK20_RESET _u(0x00000000) +#define SIO_SPINLOCK20_MSB _u(31) +#define SIO_SPINLOCK20_LSB _u(0) +#define SIO_SPINLOCK20_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK21 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK21_OFFSET _u(0x00000154) +#define SIO_SPINLOCK21_BITS _u(0xffffffff) +#define SIO_SPINLOCK21_RESET _u(0x00000000) +#define SIO_SPINLOCK21_MSB _u(31) +#define SIO_SPINLOCK21_LSB _u(0) +#define SIO_SPINLOCK21_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK22 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK22_OFFSET _u(0x00000158) +#define SIO_SPINLOCK22_BITS _u(0xffffffff) +#define SIO_SPINLOCK22_RESET _u(0x00000000) +#define SIO_SPINLOCK22_MSB _u(31) +#define SIO_SPINLOCK22_LSB _u(0) +#define SIO_SPINLOCK22_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK23 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK23_OFFSET _u(0x0000015c) +#define SIO_SPINLOCK23_BITS _u(0xffffffff) +#define SIO_SPINLOCK23_RESET _u(0x00000000) +#define SIO_SPINLOCK23_MSB _u(31) +#define SIO_SPINLOCK23_LSB _u(0) +#define SIO_SPINLOCK23_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK24 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK24_OFFSET _u(0x00000160) +#define SIO_SPINLOCK24_BITS _u(0xffffffff) +#define SIO_SPINLOCK24_RESET _u(0x00000000) +#define SIO_SPINLOCK24_MSB _u(31) +#define SIO_SPINLOCK24_LSB _u(0) +#define SIO_SPINLOCK24_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK25 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK25_OFFSET _u(0x00000164) +#define SIO_SPINLOCK25_BITS _u(0xffffffff) +#define SIO_SPINLOCK25_RESET _u(0x00000000) +#define SIO_SPINLOCK25_MSB _u(31) +#define SIO_SPINLOCK25_LSB _u(0) +#define SIO_SPINLOCK25_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK26 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK26_OFFSET _u(0x00000168) +#define SIO_SPINLOCK26_BITS _u(0xffffffff) +#define SIO_SPINLOCK26_RESET _u(0x00000000) +#define SIO_SPINLOCK26_MSB _u(31) +#define SIO_SPINLOCK26_LSB _u(0) +#define SIO_SPINLOCK26_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK27 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK27_OFFSET _u(0x0000016c) +#define SIO_SPINLOCK27_BITS _u(0xffffffff) +#define SIO_SPINLOCK27_RESET _u(0x00000000) +#define SIO_SPINLOCK27_MSB _u(31) +#define SIO_SPINLOCK27_LSB _u(0) +#define SIO_SPINLOCK27_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK28 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK28_OFFSET _u(0x00000170) +#define SIO_SPINLOCK28_BITS _u(0xffffffff) +#define SIO_SPINLOCK28_RESET _u(0x00000000) +#define SIO_SPINLOCK28_MSB _u(31) +#define SIO_SPINLOCK28_LSB _u(0) +#define SIO_SPINLOCK28_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK29 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK29_OFFSET _u(0x00000174) +#define SIO_SPINLOCK29_BITS _u(0xffffffff) +#define SIO_SPINLOCK29_RESET _u(0x00000000) +#define SIO_SPINLOCK29_MSB _u(31) +#define SIO_SPINLOCK29_LSB _u(0) +#define SIO_SPINLOCK29_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK30 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK30_OFFSET _u(0x00000178) +#define SIO_SPINLOCK30_BITS _u(0xffffffff) +#define SIO_SPINLOCK30_RESET _u(0x00000000) +#define SIO_SPINLOCK30_MSB _u(31) +#define SIO_SPINLOCK30_LSB _u(0) +#define SIO_SPINLOCK30_ACCESS "RW" +// ============================================================================= +// Register : SIO_SPINLOCK31 +// Description : Reading from a spinlock address will: +// - Return 0 if lock is already locked +// - Otherwise return nonzero, and simultaneously claim the lock +// +// Writing (any value) releases the lock. +// If core 0 and core 1 attempt to claim the same lock +// simultaneously, core 0 wins. +// The value returned on success is 0x1 << lock number. +#define SIO_SPINLOCK31_OFFSET _u(0x0000017c) +#define SIO_SPINLOCK31_BITS _u(0xffffffff) +#define SIO_SPINLOCK31_RESET _u(0x00000000) +#define SIO_SPINLOCK31_MSB _u(31) +#define SIO_SPINLOCK31_LSB _u(0) +#define SIO_SPINLOCK31_ACCESS "RW" +// ============================================================================= +#endif // HARDWARE_REGS_SIO_DEFINED diff --git a/arkanoid/pico/hardware/regs/spi.h b/arkanoid/pico/hardware/regs/spi.h new file mode 100644 index 0000000..816e150 --- /dev/null +++ b/arkanoid/pico/hardware/regs/spi.h @@ -0,0 +1,521 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : SPI +// Version : 1 +// Bus type : apb +// Description : None +// ============================================================================= +#ifndef HARDWARE_REGS_SPI_DEFINED +#define HARDWARE_REGS_SPI_DEFINED +// ============================================================================= +// Register : SPI_SSPCR0 +// Description : Control register 0, SSPCR0 on page 3-4 +#define SPI_SSPCR0_OFFSET _u(0x00000000) +#define SPI_SSPCR0_BITS _u(0x0000ffff) +#define SPI_SSPCR0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SPI_SSPCR0_SCR +// Description : Serial clock rate. The value SCR is used to generate the +// transmit and receive bit rate of the PrimeCell SSP. The bit +// rate is: F SSPCLK CPSDVSR x (1+SCR) where CPSDVSR is an even +// value from 2-254, programmed through the SSPCPSR register and +// SCR is a value from 0-255. +#define SPI_SSPCR0_SCR_RESET _u(0x00) +#define SPI_SSPCR0_SCR_BITS _u(0x0000ff00) +#define SPI_SSPCR0_SCR_MSB _u(15) +#define SPI_SSPCR0_SCR_LSB _u(8) +#define SPI_SSPCR0_SCR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPCR0_SPH +// Description : SSPCLKOUT phase, applicable to Motorola SPI frame format only. +// See Motorola SPI frame format on page 2-10. +#define SPI_SSPCR0_SPH_RESET _u(0x0) +#define SPI_SSPCR0_SPH_BITS _u(0x00000080) +#define SPI_SSPCR0_SPH_MSB _u(7) +#define SPI_SSPCR0_SPH_LSB _u(7) +#define SPI_SSPCR0_SPH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPCR0_SPO +// Description : SSPCLKOUT polarity, applicable to Motorola SPI frame format +// only. See Motorola SPI frame format on page 2-10. +#define SPI_SSPCR0_SPO_RESET _u(0x0) +#define SPI_SSPCR0_SPO_BITS _u(0x00000040) +#define SPI_SSPCR0_SPO_MSB _u(6) +#define SPI_SSPCR0_SPO_LSB _u(6) +#define SPI_SSPCR0_SPO_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPCR0_FRF +// Description : Frame format: 00 Motorola SPI frame format. 01 TI synchronous +// serial frame format. 10 National Microwire frame format. 11 +// Reserved, undefined operation. +#define SPI_SSPCR0_FRF_RESET _u(0x0) +#define SPI_SSPCR0_FRF_BITS _u(0x00000030) +#define SPI_SSPCR0_FRF_MSB _u(5) +#define SPI_SSPCR0_FRF_LSB _u(4) +#define SPI_SSPCR0_FRF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPCR0_DSS +// Description : Data Size Select: 0000 Reserved, undefined operation. 0001 +// Reserved, undefined operation. 0010 Reserved, undefined +// operation. 0011 4-bit data. 0100 5-bit data. 0101 6-bit data. +// 0110 7-bit data. 0111 8-bit data. 1000 9-bit data. 1001 10-bit +// data. 1010 11-bit data. 1011 12-bit data. 1100 13-bit data. +// 1101 14-bit data. 1110 15-bit data. 1111 16-bit data. +#define SPI_SSPCR0_DSS_RESET _u(0x0) +#define SPI_SSPCR0_DSS_BITS _u(0x0000000f) +#define SPI_SSPCR0_DSS_MSB _u(3) +#define SPI_SSPCR0_DSS_LSB _u(0) +#define SPI_SSPCR0_DSS_ACCESS "RW" +// ============================================================================= +// Register : SPI_SSPCR1 +// Description : Control register 1, SSPCR1 on page 3-5 +#define SPI_SSPCR1_OFFSET _u(0x00000004) +#define SPI_SSPCR1_BITS _u(0x0000000f) +#define SPI_SSPCR1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SPI_SSPCR1_SOD +// Description : Slave-mode output disable. This bit is relevant only in the +// slave mode, MS=1. In multiple-slave systems, it is possible for +// an PrimeCell SSP master to broadcast a message to all slaves in +// the system while ensuring that only one slave drives data onto +// its serial output line. In such systems the RXD lines from +// multiple slaves could be tied together. To operate in such +// systems, the SOD bit can be set if the PrimeCell SSP slave is +// not supposed to drive the SSPTXD line: 0 SSP can drive the +// SSPTXD output in slave mode. 1 SSP must not drive the SSPTXD +// output in slave mode. +#define SPI_SSPCR1_SOD_RESET _u(0x0) +#define SPI_SSPCR1_SOD_BITS _u(0x00000008) +#define SPI_SSPCR1_SOD_MSB _u(3) +#define SPI_SSPCR1_SOD_LSB _u(3) +#define SPI_SSPCR1_SOD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPCR1_MS +// Description : Master or slave mode select. This bit can be modified only when +// the PrimeCell SSP is disabled, SSE=0: 0 Device configured as +// master, default. 1 Device configured as slave. +#define SPI_SSPCR1_MS_RESET _u(0x0) +#define SPI_SSPCR1_MS_BITS _u(0x00000004) +#define SPI_SSPCR1_MS_MSB _u(2) +#define SPI_SSPCR1_MS_LSB _u(2) +#define SPI_SSPCR1_MS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPCR1_SSE +// Description : Synchronous serial port enable: 0 SSP operation disabled. 1 SSP +// operation enabled. +#define SPI_SSPCR1_SSE_RESET _u(0x0) +#define SPI_SSPCR1_SSE_BITS _u(0x00000002) +#define SPI_SSPCR1_SSE_MSB _u(1) +#define SPI_SSPCR1_SSE_LSB _u(1) +#define SPI_SSPCR1_SSE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPCR1_LBM +// Description : Loop back mode: 0 Normal serial port operation enabled. 1 +// Output of transmit serial shifter is connected to input of +// receive serial shifter internally. +#define SPI_SSPCR1_LBM_RESET _u(0x0) +#define SPI_SSPCR1_LBM_BITS _u(0x00000001) +#define SPI_SSPCR1_LBM_MSB _u(0) +#define SPI_SSPCR1_LBM_LSB _u(0) +#define SPI_SSPCR1_LBM_ACCESS "RW" +// ============================================================================= +// Register : SPI_SSPDR +// Description : Data register, SSPDR on page 3-6 +#define SPI_SSPDR_OFFSET _u(0x00000008) +#define SPI_SSPDR_BITS _u(0x0000ffff) +#define SPI_SSPDR_RESET "-" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPDR_DATA +// Description : Transmit/Receive FIFO: Read Receive FIFO. Write Transmit FIFO. +// You must right-justify data when the PrimeCell SSP is +// programmed for a data size that is less than 16 bits. Unused +// bits at the top are ignored by transmit logic. The receive +// logic automatically right-justifies. +#define SPI_SSPDR_DATA_RESET "-" +#define SPI_SSPDR_DATA_BITS _u(0x0000ffff) +#define SPI_SSPDR_DATA_MSB _u(15) +#define SPI_SSPDR_DATA_LSB _u(0) +#define SPI_SSPDR_DATA_ACCESS "RWF" +// ============================================================================= +// Register : SPI_SSPSR +// Description : Status register, SSPSR on page 3-7 +#define SPI_SSPSR_OFFSET _u(0x0000000c) +#define SPI_SSPSR_BITS _u(0x0000001f) +#define SPI_SSPSR_RESET _u(0x00000003) +// ----------------------------------------------------------------------------- +// Field : SPI_SSPSR_BSY +// Description : PrimeCell SSP busy flag, RO: 0 SSP is idle. 1 SSP is currently +// transmitting and/or receiving a frame or the transmit FIFO is +// not empty. +#define SPI_SSPSR_BSY_RESET _u(0x0) +#define SPI_SSPSR_BSY_BITS _u(0x00000010) +#define SPI_SSPSR_BSY_MSB _u(4) +#define SPI_SSPSR_BSY_LSB _u(4) +#define SPI_SSPSR_BSY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPSR_RFF +// Description : Receive FIFO full, RO: 0 Receive FIFO is not full. 1 Receive +// FIFO is full. +#define SPI_SSPSR_RFF_RESET _u(0x0) +#define SPI_SSPSR_RFF_BITS _u(0x00000008) +#define SPI_SSPSR_RFF_MSB _u(3) +#define SPI_SSPSR_RFF_LSB _u(3) +#define SPI_SSPSR_RFF_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPSR_RNE +// Description : Receive FIFO not empty, RO: 0 Receive FIFO is empty. 1 Receive +// FIFO is not empty. +#define SPI_SSPSR_RNE_RESET _u(0x0) +#define SPI_SSPSR_RNE_BITS _u(0x00000004) +#define SPI_SSPSR_RNE_MSB _u(2) +#define SPI_SSPSR_RNE_LSB _u(2) +#define SPI_SSPSR_RNE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPSR_TNF +// Description : Transmit FIFO not full, RO: 0 Transmit FIFO is full. 1 Transmit +// FIFO is not full. +#define SPI_SSPSR_TNF_RESET _u(0x1) +#define SPI_SSPSR_TNF_BITS _u(0x00000002) +#define SPI_SSPSR_TNF_MSB _u(1) +#define SPI_SSPSR_TNF_LSB _u(1) +#define SPI_SSPSR_TNF_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPSR_TFE +// Description : Transmit FIFO empty, RO: 0 Transmit FIFO is not empty. 1 +// Transmit FIFO is empty. +#define SPI_SSPSR_TFE_RESET _u(0x1) +#define SPI_SSPSR_TFE_BITS _u(0x00000001) +#define SPI_SSPSR_TFE_MSB _u(0) +#define SPI_SSPSR_TFE_LSB _u(0) +#define SPI_SSPSR_TFE_ACCESS "RO" +// ============================================================================= +// Register : SPI_SSPCPSR +// Description : Clock prescale register, SSPCPSR on page 3-8 +#define SPI_SSPCPSR_OFFSET _u(0x00000010) +#define SPI_SSPCPSR_BITS _u(0x000000ff) +#define SPI_SSPCPSR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SPI_SSPCPSR_CPSDVSR +// Description : Clock prescale divisor. Must be an even number from 2-254, +// depending on the frequency of SSPCLK. The least significant bit +// always returns zero on reads. +#define SPI_SSPCPSR_CPSDVSR_RESET _u(0x00) +#define SPI_SSPCPSR_CPSDVSR_BITS _u(0x000000ff) +#define SPI_SSPCPSR_CPSDVSR_MSB _u(7) +#define SPI_SSPCPSR_CPSDVSR_LSB _u(0) +#define SPI_SSPCPSR_CPSDVSR_ACCESS "RW" +// ============================================================================= +// Register : SPI_SSPIMSC +// Description : Interrupt mask set or clear register, SSPIMSC on page 3-9 +#define SPI_SSPIMSC_OFFSET _u(0x00000014) +#define SPI_SSPIMSC_BITS _u(0x0000000f) +#define SPI_SSPIMSC_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SPI_SSPIMSC_TXIM +// Description : Transmit FIFO interrupt mask: 0 Transmit FIFO half empty or +// less condition interrupt is masked. 1 Transmit FIFO half empty +// or less condition interrupt is not masked. +#define SPI_SSPIMSC_TXIM_RESET _u(0x0) +#define SPI_SSPIMSC_TXIM_BITS _u(0x00000008) +#define SPI_SSPIMSC_TXIM_MSB _u(3) +#define SPI_SSPIMSC_TXIM_LSB _u(3) +#define SPI_SSPIMSC_TXIM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPIMSC_RXIM +// Description : Receive FIFO interrupt mask: 0 Receive FIFO half full or less +// condition interrupt is masked. 1 Receive FIFO half full or less +// condition interrupt is not masked. +#define SPI_SSPIMSC_RXIM_RESET _u(0x0) +#define SPI_SSPIMSC_RXIM_BITS _u(0x00000004) +#define SPI_SSPIMSC_RXIM_MSB _u(2) +#define SPI_SSPIMSC_RXIM_LSB _u(2) +#define SPI_SSPIMSC_RXIM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPIMSC_RTIM +// Description : Receive timeout interrupt mask: 0 Receive FIFO not empty and no +// read prior to timeout period interrupt is masked. 1 Receive +// FIFO not empty and no read prior to timeout period interrupt is +// not masked. +#define SPI_SSPIMSC_RTIM_RESET _u(0x0) +#define SPI_SSPIMSC_RTIM_BITS _u(0x00000002) +#define SPI_SSPIMSC_RTIM_MSB _u(1) +#define SPI_SSPIMSC_RTIM_LSB _u(1) +#define SPI_SSPIMSC_RTIM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPIMSC_RORIM +// Description : Receive overrun interrupt mask: 0 Receive FIFO written to while +// full condition interrupt is masked. 1 Receive FIFO written to +// while full condition interrupt is not masked. +#define SPI_SSPIMSC_RORIM_RESET _u(0x0) +#define SPI_SSPIMSC_RORIM_BITS _u(0x00000001) +#define SPI_SSPIMSC_RORIM_MSB _u(0) +#define SPI_SSPIMSC_RORIM_LSB _u(0) +#define SPI_SSPIMSC_RORIM_ACCESS "RW" +// ============================================================================= +// Register : SPI_SSPRIS +// Description : Raw interrupt status register, SSPRIS on page 3-10 +#define SPI_SSPRIS_OFFSET _u(0x00000018) +#define SPI_SSPRIS_BITS _u(0x0000000f) +#define SPI_SSPRIS_RESET _u(0x00000008) +// ----------------------------------------------------------------------------- +// Field : SPI_SSPRIS_TXRIS +// Description : Gives the raw interrupt state, prior to masking, of the +// SSPTXINTR interrupt +#define SPI_SSPRIS_TXRIS_RESET _u(0x1) +#define SPI_SSPRIS_TXRIS_BITS _u(0x00000008) +#define SPI_SSPRIS_TXRIS_MSB _u(3) +#define SPI_SSPRIS_TXRIS_LSB _u(3) +#define SPI_SSPRIS_TXRIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPRIS_RXRIS +// Description : Gives the raw interrupt state, prior to masking, of the +// SSPRXINTR interrupt +#define SPI_SSPRIS_RXRIS_RESET _u(0x0) +#define SPI_SSPRIS_RXRIS_BITS _u(0x00000004) +#define SPI_SSPRIS_RXRIS_MSB _u(2) +#define SPI_SSPRIS_RXRIS_LSB _u(2) +#define SPI_SSPRIS_RXRIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPRIS_RTRIS +// Description : Gives the raw interrupt state, prior to masking, of the +// SSPRTINTR interrupt +#define SPI_SSPRIS_RTRIS_RESET _u(0x0) +#define SPI_SSPRIS_RTRIS_BITS _u(0x00000002) +#define SPI_SSPRIS_RTRIS_MSB _u(1) +#define SPI_SSPRIS_RTRIS_LSB _u(1) +#define SPI_SSPRIS_RTRIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPRIS_RORRIS +// Description : Gives the raw interrupt state, prior to masking, of the +// SSPRORINTR interrupt +#define SPI_SSPRIS_RORRIS_RESET _u(0x0) +#define SPI_SSPRIS_RORRIS_BITS _u(0x00000001) +#define SPI_SSPRIS_RORRIS_MSB _u(0) +#define SPI_SSPRIS_RORRIS_LSB _u(0) +#define SPI_SSPRIS_RORRIS_ACCESS "RO" +// ============================================================================= +// Register : SPI_SSPMIS +// Description : Masked interrupt status register, SSPMIS on page 3-11 +#define SPI_SSPMIS_OFFSET _u(0x0000001c) +#define SPI_SSPMIS_BITS _u(0x0000000f) +#define SPI_SSPMIS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SPI_SSPMIS_TXMIS +// Description : Gives the transmit FIFO masked interrupt state, after masking, +// of the SSPTXINTR interrupt +#define SPI_SSPMIS_TXMIS_RESET _u(0x0) +#define SPI_SSPMIS_TXMIS_BITS _u(0x00000008) +#define SPI_SSPMIS_TXMIS_MSB _u(3) +#define SPI_SSPMIS_TXMIS_LSB _u(3) +#define SPI_SSPMIS_TXMIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPMIS_RXMIS +// Description : Gives the receive FIFO masked interrupt state, after masking, +// of the SSPRXINTR interrupt +#define SPI_SSPMIS_RXMIS_RESET _u(0x0) +#define SPI_SSPMIS_RXMIS_BITS _u(0x00000004) +#define SPI_SSPMIS_RXMIS_MSB _u(2) +#define SPI_SSPMIS_RXMIS_LSB _u(2) +#define SPI_SSPMIS_RXMIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPMIS_RTMIS +// Description : Gives the receive timeout masked interrupt state, after +// masking, of the SSPRTINTR interrupt +#define SPI_SSPMIS_RTMIS_RESET _u(0x0) +#define SPI_SSPMIS_RTMIS_BITS _u(0x00000002) +#define SPI_SSPMIS_RTMIS_MSB _u(1) +#define SPI_SSPMIS_RTMIS_LSB _u(1) +#define SPI_SSPMIS_RTMIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPMIS_RORMIS +// Description : Gives the receive over run masked interrupt status, after +// masking, of the SSPRORINTR interrupt +#define SPI_SSPMIS_RORMIS_RESET _u(0x0) +#define SPI_SSPMIS_RORMIS_BITS _u(0x00000001) +#define SPI_SSPMIS_RORMIS_MSB _u(0) +#define SPI_SSPMIS_RORMIS_LSB _u(0) +#define SPI_SSPMIS_RORMIS_ACCESS "RO" +// ============================================================================= +// Register : SPI_SSPICR +// Description : Interrupt clear register, SSPICR on page 3-11 +#define SPI_SSPICR_OFFSET _u(0x00000020) +#define SPI_SSPICR_BITS _u(0x00000003) +#define SPI_SSPICR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SPI_SSPICR_RTIC +// Description : Clears the SSPRTINTR interrupt +#define SPI_SSPICR_RTIC_RESET _u(0x0) +#define SPI_SSPICR_RTIC_BITS _u(0x00000002) +#define SPI_SSPICR_RTIC_MSB _u(1) +#define SPI_SSPICR_RTIC_LSB _u(1) +#define SPI_SSPICR_RTIC_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPICR_RORIC +// Description : Clears the SSPRORINTR interrupt +#define SPI_SSPICR_RORIC_RESET _u(0x0) +#define SPI_SSPICR_RORIC_BITS _u(0x00000001) +#define SPI_SSPICR_RORIC_MSB _u(0) +#define SPI_SSPICR_RORIC_LSB _u(0) +#define SPI_SSPICR_RORIC_ACCESS "WC" +// ============================================================================= +// Register : SPI_SSPDMACR +// Description : DMA control register, SSPDMACR on page 3-12 +#define SPI_SSPDMACR_OFFSET _u(0x00000024) +#define SPI_SSPDMACR_BITS _u(0x00000003) +#define SPI_SSPDMACR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SPI_SSPDMACR_TXDMAE +// Description : Transmit DMA Enable. If this bit is set to 1, DMA for the +// transmit FIFO is enabled. +#define SPI_SSPDMACR_TXDMAE_RESET _u(0x0) +#define SPI_SSPDMACR_TXDMAE_BITS _u(0x00000002) +#define SPI_SSPDMACR_TXDMAE_MSB _u(1) +#define SPI_SSPDMACR_TXDMAE_LSB _u(1) +#define SPI_SSPDMACR_TXDMAE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPDMACR_RXDMAE +// Description : Receive DMA Enable. If this bit is set to 1, DMA for the +// receive FIFO is enabled. +#define SPI_SSPDMACR_RXDMAE_RESET _u(0x0) +#define SPI_SSPDMACR_RXDMAE_BITS _u(0x00000001) +#define SPI_SSPDMACR_RXDMAE_MSB _u(0) +#define SPI_SSPDMACR_RXDMAE_LSB _u(0) +#define SPI_SSPDMACR_RXDMAE_ACCESS "RW" +// ============================================================================= +// Register : SPI_SSPPERIPHID0 +// Description : Peripheral identification registers, SSPPeriphID0-3 on page +// 3-13 +#define SPI_SSPPERIPHID0_OFFSET _u(0x00000fe0) +#define SPI_SSPPERIPHID0_BITS _u(0x000000ff) +#define SPI_SSPPERIPHID0_RESET _u(0x00000022) +// ----------------------------------------------------------------------------- +// Field : SPI_SSPPERIPHID0_PARTNUMBER0 +// Description : These bits read back as 0x22 +#define SPI_SSPPERIPHID0_PARTNUMBER0_RESET _u(0x22) +#define SPI_SSPPERIPHID0_PARTNUMBER0_BITS _u(0x000000ff) +#define SPI_SSPPERIPHID0_PARTNUMBER0_MSB _u(7) +#define SPI_SSPPERIPHID0_PARTNUMBER0_LSB _u(0) +#define SPI_SSPPERIPHID0_PARTNUMBER0_ACCESS "RO" +// ============================================================================= +// Register : SPI_SSPPERIPHID1 +// Description : Peripheral identification registers, SSPPeriphID0-3 on page +// 3-13 +#define SPI_SSPPERIPHID1_OFFSET _u(0x00000fe4) +#define SPI_SSPPERIPHID1_BITS _u(0x000000ff) +#define SPI_SSPPERIPHID1_RESET _u(0x00000010) +// ----------------------------------------------------------------------------- +// Field : SPI_SSPPERIPHID1_DESIGNER0 +// Description : These bits read back as 0x1 +#define SPI_SSPPERIPHID1_DESIGNER0_RESET _u(0x1) +#define SPI_SSPPERIPHID1_DESIGNER0_BITS _u(0x000000f0) +#define SPI_SSPPERIPHID1_DESIGNER0_MSB _u(7) +#define SPI_SSPPERIPHID1_DESIGNER0_LSB _u(4) +#define SPI_SSPPERIPHID1_DESIGNER0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPPERIPHID1_PARTNUMBER1 +// Description : These bits read back as 0x0 +#define SPI_SSPPERIPHID1_PARTNUMBER1_RESET _u(0x0) +#define SPI_SSPPERIPHID1_PARTNUMBER1_BITS _u(0x0000000f) +#define SPI_SSPPERIPHID1_PARTNUMBER1_MSB _u(3) +#define SPI_SSPPERIPHID1_PARTNUMBER1_LSB _u(0) +#define SPI_SSPPERIPHID1_PARTNUMBER1_ACCESS "RO" +// ============================================================================= +// Register : SPI_SSPPERIPHID2 +// Description : Peripheral identification registers, SSPPeriphID0-3 on page +// 3-13 +#define SPI_SSPPERIPHID2_OFFSET _u(0x00000fe8) +#define SPI_SSPPERIPHID2_BITS _u(0x000000ff) +#define SPI_SSPPERIPHID2_RESET _u(0x00000034) +// ----------------------------------------------------------------------------- +// Field : SPI_SSPPERIPHID2_REVISION +// Description : These bits return the peripheral revision +#define SPI_SSPPERIPHID2_REVISION_RESET _u(0x3) +#define SPI_SSPPERIPHID2_REVISION_BITS _u(0x000000f0) +#define SPI_SSPPERIPHID2_REVISION_MSB _u(7) +#define SPI_SSPPERIPHID2_REVISION_LSB _u(4) +#define SPI_SSPPERIPHID2_REVISION_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SPI_SSPPERIPHID2_DESIGNER1 +// Description : These bits read back as 0x4 +#define SPI_SSPPERIPHID2_DESIGNER1_RESET _u(0x4) +#define SPI_SSPPERIPHID2_DESIGNER1_BITS _u(0x0000000f) +#define SPI_SSPPERIPHID2_DESIGNER1_MSB _u(3) +#define SPI_SSPPERIPHID2_DESIGNER1_LSB _u(0) +#define SPI_SSPPERIPHID2_DESIGNER1_ACCESS "RO" +// ============================================================================= +// Register : SPI_SSPPERIPHID3 +// Description : Peripheral identification registers, SSPPeriphID0-3 on page +// 3-13 +#define SPI_SSPPERIPHID3_OFFSET _u(0x00000fec) +#define SPI_SSPPERIPHID3_BITS _u(0x000000ff) +#define SPI_SSPPERIPHID3_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SPI_SSPPERIPHID3_CONFIGURATION +// Description : These bits read back as 0x00 +#define SPI_SSPPERIPHID3_CONFIGURATION_RESET _u(0x00) +#define SPI_SSPPERIPHID3_CONFIGURATION_BITS _u(0x000000ff) +#define SPI_SSPPERIPHID3_CONFIGURATION_MSB _u(7) +#define SPI_SSPPERIPHID3_CONFIGURATION_LSB _u(0) +#define SPI_SSPPERIPHID3_CONFIGURATION_ACCESS "RO" +// ============================================================================= +// Register : SPI_SSPPCELLID0 +// Description : PrimeCell identification registers, SSPPCellID0-3 on page 3-16 +#define SPI_SSPPCELLID0_OFFSET _u(0x00000ff0) +#define SPI_SSPPCELLID0_BITS _u(0x000000ff) +#define SPI_SSPPCELLID0_RESET _u(0x0000000d) +// ----------------------------------------------------------------------------- +// Field : SPI_SSPPCELLID0_SSPPCELLID0 +// Description : These bits read back as 0x0D +#define SPI_SSPPCELLID0_SSPPCELLID0_RESET _u(0x0d) +#define SPI_SSPPCELLID0_SSPPCELLID0_BITS _u(0x000000ff) +#define SPI_SSPPCELLID0_SSPPCELLID0_MSB _u(7) +#define SPI_SSPPCELLID0_SSPPCELLID0_LSB _u(0) +#define SPI_SSPPCELLID0_SSPPCELLID0_ACCESS "RO" +// ============================================================================= +// Register : SPI_SSPPCELLID1 +// Description : PrimeCell identification registers, SSPPCellID0-3 on page 3-16 +#define SPI_SSPPCELLID1_OFFSET _u(0x00000ff4) +#define SPI_SSPPCELLID1_BITS _u(0x000000ff) +#define SPI_SSPPCELLID1_RESET _u(0x000000f0) +// ----------------------------------------------------------------------------- +// Field : SPI_SSPPCELLID1_SSPPCELLID1 +// Description : These bits read back as 0xF0 +#define SPI_SSPPCELLID1_SSPPCELLID1_RESET _u(0xf0) +#define SPI_SSPPCELLID1_SSPPCELLID1_BITS _u(0x000000ff) +#define SPI_SSPPCELLID1_SSPPCELLID1_MSB _u(7) +#define SPI_SSPPCELLID1_SSPPCELLID1_LSB _u(0) +#define SPI_SSPPCELLID1_SSPPCELLID1_ACCESS "RO" +// ============================================================================= +// Register : SPI_SSPPCELLID2 +// Description : PrimeCell identification registers, SSPPCellID0-3 on page 3-16 +#define SPI_SSPPCELLID2_OFFSET _u(0x00000ff8) +#define SPI_SSPPCELLID2_BITS _u(0x000000ff) +#define SPI_SSPPCELLID2_RESET _u(0x00000005) +// ----------------------------------------------------------------------------- +// Field : SPI_SSPPCELLID2_SSPPCELLID2 +// Description : These bits read back as 0x05 +#define SPI_SSPPCELLID2_SSPPCELLID2_RESET _u(0x05) +#define SPI_SSPPCELLID2_SSPPCELLID2_BITS _u(0x000000ff) +#define SPI_SSPPCELLID2_SSPPCELLID2_MSB _u(7) +#define SPI_SSPPCELLID2_SSPPCELLID2_LSB _u(0) +#define SPI_SSPPCELLID2_SSPPCELLID2_ACCESS "RO" +// ============================================================================= +// Register : SPI_SSPPCELLID3 +// Description : PrimeCell identification registers, SSPPCellID0-3 on page 3-16 +#define SPI_SSPPCELLID3_OFFSET _u(0x00000ffc) +#define SPI_SSPPCELLID3_BITS _u(0x000000ff) +#define SPI_SSPPCELLID3_RESET _u(0x000000b1) +// ----------------------------------------------------------------------------- +// Field : SPI_SSPPCELLID3_SSPPCELLID3 +// Description : These bits read back as 0xB1 +#define SPI_SSPPCELLID3_SSPPCELLID3_RESET _u(0xb1) +#define SPI_SSPPCELLID3_SSPPCELLID3_BITS _u(0x000000ff) +#define SPI_SSPPCELLID3_SSPPCELLID3_MSB _u(7) +#define SPI_SSPPCELLID3_SSPPCELLID3_LSB _u(0) +#define SPI_SSPPCELLID3_SSPPCELLID3_ACCESS "RO" +// ============================================================================= +#endif // HARDWARE_REGS_SPI_DEFINED diff --git a/arkanoid/pico/hardware/regs/ssi.h b/arkanoid/pico/hardware/regs/ssi.h new file mode 100644 index 0000000..67fddc0 --- /dev/null +++ b/arkanoid/pico/hardware/regs/ssi.h @@ -0,0 +1,809 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : SSI +// Version : 1 +// Bus type : apb +// Description : DW_apb_ssi has the following features: +// * APB interface – Allows for easy integration into a +// DesignWare Synthesizable Components for AMBA 2 +// implementation. +// * APB3 and APB4 protocol support. +// * Scalable APB data bus width – Supports APB data bus widths +// of 8, 16, and 32 bits. +// * Serial-master or serial-slave operation – Enables serial +// communication with serial-master or serial-slave peripheral +// devices. +// * Programmable Dual/Quad/Octal SPI support in Master Mode. +// * Dual Data Rate (DDR) and Read Data Strobe (RDS) Support - +// Enables the DW_apb_ssi master to perform operations with the +// device in DDR and RDS modes when working in Dual/Quad/Octal +// mode of operation. +// * Data Mask Support - Enables the DW_apb_ssi to selectively +// update the bytes in the device. This feature is applicable +// only in enhanced SPI modes. +// * eXecute-In-Place (XIP) support - Enables the DW_apb_ssi +// master to behave as a memory mapped I/O and fetches the data +// from the device based on the APB read request. This feature +// is applicable only in enhanced SPI modes. +// * DMA Controller Interface – Enables the DW_apb_ssi to +// interface to a DMA controller over the bus using a +// handshaking interface for transfer requests. +// * Independent masking of interrupts – Master collision, +// transmit FIFO overflow, transmit FIFO empty, receive FIFO +// full, receive FIFO underflow, and receive FIFO overflow +// interrupts can all be masked independently. +// * Multi-master contention detection – Informs the processor +// of multiple serial-master accesses on the serial bus. +// * Bypass of meta-stability flip-flops for synchronous clocks +// – When the APB clock (pclk) and the DW_apb_ssi serial clock +// (ssi_clk) are synchronous, meta-stable flip-flops are not +// used when transferring control signals across these clock +// domains. +// * Programmable delay on the sample time of the received +// serial data bit (rxd); enables programmable control of +// routing delays resulting in higher serial data-bit rates. +// * Programmable features: +// - Serial interface operation – Choice of Motorola SPI, Texas +// Instruments Synchronous Serial Protocol or National +// Semiconductor Microwire. +// - Clock bit-rate – Dynamic control of the serial bit rate of +// the data transfer; used in only serial-master mode of +// operation. +// - Data Item size (4 to 32 bits) – Item size of each data +// transfer under the control of the programmer. +// * Configured features: +// - FIFO depth – 16 words deep. The FIFO width is fixed at 32 +// bits. +// - 1 slave select output. +// - Hardware slave-select – Dedicated hardware slave-select +// line. +// - Combined interrupt line - one combined interrupt line from +// the DW_apb_ssi to the interrupt controller. +// - Interrupt polarity – active high interrupt lines. +// - Serial clock polarity – low serial-clock polarity directly +// after reset. +// - Serial clock phase – capture on first edge of serial-clock +// directly after reset. +// ============================================================================= +#ifndef HARDWARE_REGS_SSI_DEFINED +#define HARDWARE_REGS_SSI_DEFINED +// ============================================================================= +// Register : SSI_CTRLR0 +// Description : Control register 0 +#define SSI_CTRLR0_OFFSET _u(0x00000000) +#define SSI_CTRLR0_BITS _u(0x017fffff) +#define SSI_CTRLR0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SSI_CTRLR0_SSTE +// Description : Slave select toggle enable +#define SSI_CTRLR0_SSTE_RESET _u(0x0) +#define SSI_CTRLR0_SSTE_BITS _u(0x01000000) +#define SSI_CTRLR0_SSTE_MSB _u(24) +#define SSI_CTRLR0_SSTE_LSB _u(24) +#define SSI_CTRLR0_SSTE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_CTRLR0_SPI_FRF +// Description : SPI frame format +// 0x0 -> Standard 1-bit SPI frame format; 1 bit per SCK, +// full-duplex +// 0x1 -> Dual-SPI frame format; two bits per SCK, half-duplex +// 0x2 -> Quad-SPI frame format; four bits per SCK, half-duplex +#define SSI_CTRLR0_SPI_FRF_RESET _u(0x0) +#define SSI_CTRLR0_SPI_FRF_BITS _u(0x00600000) +#define SSI_CTRLR0_SPI_FRF_MSB _u(22) +#define SSI_CTRLR0_SPI_FRF_LSB _u(21) +#define SSI_CTRLR0_SPI_FRF_ACCESS "RW" +#define SSI_CTRLR0_SPI_FRF_VALUE_STD _u(0x0) +#define SSI_CTRLR0_SPI_FRF_VALUE_DUAL _u(0x1) +#define SSI_CTRLR0_SPI_FRF_VALUE_QUAD _u(0x2) +// ----------------------------------------------------------------------------- +// Field : SSI_CTRLR0_DFS_32 +// Description : Data frame size in 32b transfer mode +// Value of n -> n+1 clocks per frame. +#define SSI_CTRLR0_DFS_32_RESET _u(0x00) +#define SSI_CTRLR0_DFS_32_BITS _u(0x001f0000) +#define SSI_CTRLR0_DFS_32_MSB _u(20) +#define SSI_CTRLR0_DFS_32_LSB _u(16) +#define SSI_CTRLR0_DFS_32_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_CTRLR0_CFS +// Description : Control frame size +// Value of n -> n+1 clocks per frame. +#define SSI_CTRLR0_CFS_RESET _u(0x0) +#define SSI_CTRLR0_CFS_BITS _u(0x0000f000) +#define SSI_CTRLR0_CFS_MSB _u(15) +#define SSI_CTRLR0_CFS_LSB _u(12) +#define SSI_CTRLR0_CFS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_CTRLR0_SRL +// Description : Shift register loop (test mode) +#define SSI_CTRLR0_SRL_RESET _u(0x0) +#define SSI_CTRLR0_SRL_BITS _u(0x00000800) +#define SSI_CTRLR0_SRL_MSB _u(11) +#define SSI_CTRLR0_SRL_LSB _u(11) +#define SSI_CTRLR0_SRL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_CTRLR0_SLV_OE +// Description : Slave output enable +#define SSI_CTRLR0_SLV_OE_RESET _u(0x0) +#define SSI_CTRLR0_SLV_OE_BITS _u(0x00000400) +#define SSI_CTRLR0_SLV_OE_MSB _u(10) +#define SSI_CTRLR0_SLV_OE_LSB _u(10) +#define SSI_CTRLR0_SLV_OE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_CTRLR0_TMOD +// Description : Transfer mode +// 0x0 -> Both transmit and receive +// 0x1 -> Transmit only (not for FRF == 0, standard SPI mode) +// 0x2 -> Receive only (not for FRF == 0, standard SPI mode) +// 0x3 -> EEPROM read mode (TX then RX; RX starts after control +// data TX'd) +#define SSI_CTRLR0_TMOD_RESET _u(0x0) +#define SSI_CTRLR0_TMOD_BITS _u(0x00000300) +#define SSI_CTRLR0_TMOD_MSB _u(9) +#define SSI_CTRLR0_TMOD_LSB _u(8) +#define SSI_CTRLR0_TMOD_ACCESS "RW" +#define SSI_CTRLR0_TMOD_VALUE_TX_AND_RX _u(0x0) +#define SSI_CTRLR0_TMOD_VALUE_TX_ONLY _u(0x1) +#define SSI_CTRLR0_TMOD_VALUE_RX_ONLY _u(0x2) +#define SSI_CTRLR0_TMOD_VALUE_EEPROM_READ _u(0x3) +// ----------------------------------------------------------------------------- +// Field : SSI_CTRLR0_SCPOL +// Description : Serial clock polarity +#define SSI_CTRLR0_SCPOL_RESET _u(0x0) +#define SSI_CTRLR0_SCPOL_BITS _u(0x00000080) +#define SSI_CTRLR0_SCPOL_MSB _u(7) +#define SSI_CTRLR0_SCPOL_LSB _u(7) +#define SSI_CTRLR0_SCPOL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_CTRLR0_SCPH +// Description : Serial clock phase +#define SSI_CTRLR0_SCPH_RESET _u(0x0) +#define SSI_CTRLR0_SCPH_BITS _u(0x00000040) +#define SSI_CTRLR0_SCPH_MSB _u(6) +#define SSI_CTRLR0_SCPH_LSB _u(6) +#define SSI_CTRLR0_SCPH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_CTRLR0_FRF +// Description : Frame format +#define SSI_CTRLR0_FRF_RESET _u(0x0) +#define SSI_CTRLR0_FRF_BITS _u(0x00000030) +#define SSI_CTRLR0_FRF_MSB _u(5) +#define SSI_CTRLR0_FRF_LSB _u(4) +#define SSI_CTRLR0_FRF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_CTRLR0_DFS +// Description : Data frame size +#define SSI_CTRLR0_DFS_RESET _u(0x0) +#define SSI_CTRLR0_DFS_BITS _u(0x0000000f) +#define SSI_CTRLR0_DFS_MSB _u(3) +#define SSI_CTRLR0_DFS_LSB _u(0) +#define SSI_CTRLR0_DFS_ACCESS "RW" +// ============================================================================= +// Register : SSI_CTRLR1 +// Description : Master Control register 1 +#define SSI_CTRLR1_OFFSET _u(0x00000004) +#define SSI_CTRLR1_BITS _u(0x0000ffff) +#define SSI_CTRLR1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SSI_CTRLR1_NDF +// Description : Number of data frames +#define SSI_CTRLR1_NDF_RESET _u(0x0000) +#define SSI_CTRLR1_NDF_BITS _u(0x0000ffff) +#define SSI_CTRLR1_NDF_MSB _u(15) +#define SSI_CTRLR1_NDF_LSB _u(0) +#define SSI_CTRLR1_NDF_ACCESS "RW" +// ============================================================================= +// Register : SSI_SSIENR +// Description : SSI Enable +#define SSI_SSIENR_OFFSET _u(0x00000008) +#define SSI_SSIENR_BITS _u(0x00000001) +#define SSI_SSIENR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SSI_SSIENR_SSI_EN +// Description : SSI enable +#define SSI_SSIENR_SSI_EN_RESET _u(0x0) +#define SSI_SSIENR_SSI_EN_BITS _u(0x00000001) +#define SSI_SSIENR_SSI_EN_MSB _u(0) +#define SSI_SSIENR_SSI_EN_LSB _u(0) +#define SSI_SSIENR_SSI_EN_ACCESS "RW" +// ============================================================================= +// Register : SSI_MWCR +// Description : Microwire Control +#define SSI_MWCR_OFFSET _u(0x0000000c) +#define SSI_MWCR_BITS _u(0x00000007) +#define SSI_MWCR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SSI_MWCR_MHS +// Description : Microwire handshaking +#define SSI_MWCR_MHS_RESET _u(0x0) +#define SSI_MWCR_MHS_BITS _u(0x00000004) +#define SSI_MWCR_MHS_MSB _u(2) +#define SSI_MWCR_MHS_LSB _u(2) +#define SSI_MWCR_MHS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_MWCR_MDD +// Description : Microwire control +#define SSI_MWCR_MDD_RESET _u(0x0) +#define SSI_MWCR_MDD_BITS _u(0x00000002) +#define SSI_MWCR_MDD_MSB _u(1) +#define SSI_MWCR_MDD_LSB _u(1) +#define SSI_MWCR_MDD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_MWCR_MWMOD +// Description : Microwire transfer mode +#define SSI_MWCR_MWMOD_RESET _u(0x0) +#define SSI_MWCR_MWMOD_BITS _u(0x00000001) +#define SSI_MWCR_MWMOD_MSB _u(0) +#define SSI_MWCR_MWMOD_LSB _u(0) +#define SSI_MWCR_MWMOD_ACCESS "RW" +// ============================================================================= +// Register : SSI_SER +// Description : Slave enable +// For each bit: +// 0 -> slave not selected +// 1 -> slave selected +#define SSI_SER_OFFSET _u(0x00000010) +#define SSI_SER_BITS _u(0x00000001) +#define SSI_SER_RESET _u(0x00000000) +#define SSI_SER_MSB _u(0) +#define SSI_SER_LSB _u(0) +#define SSI_SER_ACCESS "RW" +// ============================================================================= +// Register : SSI_BAUDR +// Description : Baud rate +#define SSI_BAUDR_OFFSET _u(0x00000014) +#define SSI_BAUDR_BITS _u(0x0000ffff) +#define SSI_BAUDR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SSI_BAUDR_SCKDV +// Description : SSI clock divider +#define SSI_BAUDR_SCKDV_RESET _u(0x0000) +#define SSI_BAUDR_SCKDV_BITS _u(0x0000ffff) +#define SSI_BAUDR_SCKDV_MSB _u(15) +#define SSI_BAUDR_SCKDV_LSB _u(0) +#define SSI_BAUDR_SCKDV_ACCESS "RW" +// ============================================================================= +// Register : SSI_TXFTLR +// Description : TX FIFO threshold level +#define SSI_TXFTLR_OFFSET _u(0x00000018) +#define SSI_TXFTLR_BITS _u(0x000000ff) +#define SSI_TXFTLR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SSI_TXFTLR_TFT +// Description : Transmit FIFO threshold +#define SSI_TXFTLR_TFT_RESET _u(0x00) +#define SSI_TXFTLR_TFT_BITS _u(0x000000ff) +#define SSI_TXFTLR_TFT_MSB _u(7) +#define SSI_TXFTLR_TFT_LSB _u(0) +#define SSI_TXFTLR_TFT_ACCESS "RW" +// ============================================================================= +// Register : SSI_RXFTLR +// Description : RX FIFO threshold level +#define SSI_RXFTLR_OFFSET _u(0x0000001c) +#define SSI_RXFTLR_BITS _u(0x000000ff) +#define SSI_RXFTLR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SSI_RXFTLR_RFT +// Description : Receive FIFO threshold +#define SSI_RXFTLR_RFT_RESET _u(0x00) +#define SSI_RXFTLR_RFT_BITS _u(0x000000ff) +#define SSI_RXFTLR_RFT_MSB _u(7) +#define SSI_RXFTLR_RFT_LSB _u(0) +#define SSI_RXFTLR_RFT_ACCESS "RW" +// ============================================================================= +// Register : SSI_TXFLR +// Description : TX FIFO level +#define SSI_TXFLR_OFFSET _u(0x00000020) +#define SSI_TXFLR_BITS _u(0x000000ff) +#define SSI_TXFLR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SSI_TXFLR_TFTFL +// Description : Transmit FIFO level +#define SSI_TXFLR_TFTFL_RESET _u(0x00) +#define SSI_TXFLR_TFTFL_BITS _u(0x000000ff) +#define SSI_TXFLR_TFTFL_MSB _u(7) +#define SSI_TXFLR_TFTFL_LSB _u(0) +#define SSI_TXFLR_TFTFL_ACCESS "RO" +// ============================================================================= +// Register : SSI_RXFLR +// Description : RX FIFO level +#define SSI_RXFLR_OFFSET _u(0x00000024) +#define SSI_RXFLR_BITS _u(0x000000ff) +#define SSI_RXFLR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SSI_RXFLR_RXTFL +// Description : Receive FIFO level +#define SSI_RXFLR_RXTFL_RESET _u(0x00) +#define SSI_RXFLR_RXTFL_BITS _u(0x000000ff) +#define SSI_RXFLR_RXTFL_MSB _u(7) +#define SSI_RXFLR_RXTFL_LSB _u(0) +#define SSI_RXFLR_RXTFL_ACCESS "RO" +// ============================================================================= +// Register : SSI_SR +// Description : Status register +#define SSI_SR_OFFSET _u(0x00000028) +#define SSI_SR_BITS _u(0x0000007f) +#define SSI_SR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SSI_SR_DCOL +// Description : Data collision error +#define SSI_SR_DCOL_RESET _u(0x0) +#define SSI_SR_DCOL_BITS _u(0x00000040) +#define SSI_SR_DCOL_MSB _u(6) +#define SSI_SR_DCOL_LSB _u(6) +#define SSI_SR_DCOL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SSI_SR_TXE +// Description : Transmission error +#define SSI_SR_TXE_RESET _u(0x0) +#define SSI_SR_TXE_BITS _u(0x00000020) +#define SSI_SR_TXE_MSB _u(5) +#define SSI_SR_TXE_LSB _u(5) +#define SSI_SR_TXE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SSI_SR_RFF +// Description : Receive FIFO full +#define SSI_SR_RFF_RESET _u(0x0) +#define SSI_SR_RFF_BITS _u(0x00000010) +#define SSI_SR_RFF_MSB _u(4) +#define SSI_SR_RFF_LSB _u(4) +#define SSI_SR_RFF_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SSI_SR_RFNE +// Description : Receive FIFO not empty +#define SSI_SR_RFNE_RESET _u(0x0) +#define SSI_SR_RFNE_BITS _u(0x00000008) +#define SSI_SR_RFNE_MSB _u(3) +#define SSI_SR_RFNE_LSB _u(3) +#define SSI_SR_RFNE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SSI_SR_TFE +// Description : Transmit FIFO empty +#define SSI_SR_TFE_RESET _u(0x0) +#define SSI_SR_TFE_BITS _u(0x00000004) +#define SSI_SR_TFE_MSB _u(2) +#define SSI_SR_TFE_LSB _u(2) +#define SSI_SR_TFE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SSI_SR_TFNF +// Description : Transmit FIFO not full +#define SSI_SR_TFNF_RESET _u(0x0) +#define SSI_SR_TFNF_BITS _u(0x00000002) +#define SSI_SR_TFNF_MSB _u(1) +#define SSI_SR_TFNF_LSB _u(1) +#define SSI_SR_TFNF_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SSI_SR_BUSY +// Description : SSI busy flag +#define SSI_SR_BUSY_RESET _u(0x0) +#define SSI_SR_BUSY_BITS _u(0x00000001) +#define SSI_SR_BUSY_MSB _u(0) +#define SSI_SR_BUSY_LSB _u(0) +#define SSI_SR_BUSY_ACCESS "RO" +// ============================================================================= +// Register : SSI_IMR +// Description : Interrupt mask +#define SSI_IMR_OFFSET _u(0x0000002c) +#define SSI_IMR_BITS _u(0x0000003f) +#define SSI_IMR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SSI_IMR_MSTIM +// Description : Multi-master contention interrupt mask +#define SSI_IMR_MSTIM_RESET _u(0x0) +#define SSI_IMR_MSTIM_BITS _u(0x00000020) +#define SSI_IMR_MSTIM_MSB _u(5) +#define SSI_IMR_MSTIM_LSB _u(5) +#define SSI_IMR_MSTIM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_IMR_RXFIM +// Description : Receive FIFO full interrupt mask +#define SSI_IMR_RXFIM_RESET _u(0x0) +#define SSI_IMR_RXFIM_BITS _u(0x00000010) +#define SSI_IMR_RXFIM_MSB _u(4) +#define SSI_IMR_RXFIM_LSB _u(4) +#define SSI_IMR_RXFIM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_IMR_RXOIM +// Description : Receive FIFO overflow interrupt mask +#define SSI_IMR_RXOIM_RESET _u(0x0) +#define SSI_IMR_RXOIM_BITS _u(0x00000008) +#define SSI_IMR_RXOIM_MSB _u(3) +#define SSI_IMR_RXOIM_LSB _u(3) +#define SSI_IMR_RXOIM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_IMR_RXUIM +// Description : Receive FIFO underflow interrupt mask +#define SSI_IMR_RXUIM_RESET _u(0x0) +#define SSI_IMR_RXUIM_BITS _u(0x00000004) +#define SSI_IMR_RXUIM_MSB _u(2) +#define SSI_IMR_RXUIM_LSB _u(2) +#define SSI_IMR_RXUIM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_IMR_TXOIM +// Description : Transmit FIFO overflow interrupt mask +#define SSI_IMR_TXOIM_RESET _u(0x0) +#define SSI_IMR_TXOIM_BITS _u(0x00000002) +#define SSI_IMR_TXOIM_MSB _u(1) +#define SSI_IMR_TXOIM_LSB _u(1) +#define SSI_IMR_TXOIM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_IMR_TXEIM +// Description : Transmit FIFO empty interrupt mask +#define SSI_IMR_TXEIM_RESET _u(0x0) +#define SSI_IMR_TXEIM_BITS _u(0x00000001) +#define SSI_IMR_TXEIM_MSB _u(0) +#define SSI_IMR_TXEIM_LSB _u(0) +#define SSI_IMR_TXEIM_ACCESS "RW" +// ============================================================================= +// Register : SSI_ISR +// Description : Interrupt status +#define SSI_ISR_OFFSET _u(0x00000030) +#define SSI_ISR_BITS _u(0x0000003f) +#define SSI_ISR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SSI_ISR_MSTIS +// Description : Multi-master contention interrupt status +#define SSI_ISR_MSTIS_RESET _u(0x0) +#define SSI_ISR_MSTIS_BITS _u(0x00000020) +#define SSI_ISR_MSTIS_MSB _u(5) +#define SSI_ISR_MSTIS_LSB _u(5) +#define SSI_ISR_MSTIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SSI_ISR_RXFIS +// Description : Receive FIFO full interrupt status +#define SSI_ISR_RXFIS_RESET _u(0x0) +#define SSI_ISR_RXFIS_BITS _u(0x00000010) +#define SSI_ISR_RXFIS_MSB _u(4) +#define SSI_ISR_RXFIS_LSB _u(4) +#define SSI_ISR_RXFIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SSI_ISR_RXOIS +// Description : Receive FIFO overflow interrupt status +#define SSI_ISR_RXOIS_RESET _u(0x0) +#define SSI_ISR_RXOIS_BITS _u(0x00000008) +#define SSI_ISR_RXOIS_MSB _u(3) +#define SSI_ISR_RXOIS_LSB _u(3) +#define SSI_ISR_RXOIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SSI_ISR_RXUIS +// Description : Receive FIFO underflow interrupt status +#define SSI_ISR_RXUIS_RESET _u(0x0) +#define SSI_ISR_RXUIS_BITS _u(0x00000004) +#define SSI_ISR_RXUIS_MSB _u(2) +#define SSI_ISR_RXUIS_LSB _u(2) +#define SSI_ISR_RXUIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SSI_ISR_TXOIS +// Description : Transmit FIFO overflow interrupt status +#define SSI_ISR_TXOIS_RESET _u(0x0) +#define SSI_ISR_TXOIS_BITS _u(0x00000002) +#define SSI_ISR_TXOIS_MSB _u(1) +#define SSI_ISR_TXOIS_LSB _u(1) +#define SSI_ISR_TXOIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SSI_ISR_TXEIS +// Description : Transmit FIFO empty interrupt status +#define SSI_ISR_TXEIS_RESET _u(0x0) +#define SSI_ISR_TXEIS_BITS _u(0x00000001) +#define SSI_ISR_TXEIS_MSB _u(0) +#define SSI_ISR_TXEIS_LSB _u(0) +#define SSI_ISR_TXEIS_ACCESS "RO" +// ============================================================================= +// Register : SSI_RISR +// Description : Raw interrupt status +#define SSI_RISR_OFFSET _u(0x00000034) +#define SSI_RISR_BITS _u(0x0000003f) +#define SSI_RISR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SSI_RISR_MSTIR +// Description : Multi-master contention raw interrupt status +#define SSI_RISR_MSTIR_RESET _u(0x0) +#define SSI_RISR_MSTIR_BITS _u(0x00000020) +#define SSI_RISR_MSTIR_MSB _u(5) +#define SSI_RISR_MSTIR_LSB _u(5) +#define SSI_RISR_MSTIR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SSI_RISR_RXFIR +// Description : Receive FIFO full raw interrupt status +#define SSI_RISR_RXFIR_RESET _u(0x0) +#define SSI_RISR_RXFIR_BITS _u(0x00000010) +#define SSI_RISR_RXFIR_MSB _u(4) +#define SSI_RISR_RXFIR_LSB _u(4) +#define SSI_RISR_RXFIR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SSI_RISR_RXOIR +// Description : Receive FIFO overflow raw interrupt status +#define SSI_RISR_RXOIR_RESET _u(0x0) +#define SSI_RISR_RXOIR_BITS _u(0x00000008) +#define SSI_RISR_RXOIR_MSB _u(3) +#define SSI_RISR_RXOIR_LSB _u(3) +#define SSI_RISR_RXOIR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SSI_RISR_RXUIR +// Description : Receive FIFO underflow raw interrupt status +#define SSI_RISR_RXUIR_RESET _u(0x0) +#define SSI_RISR_RXUIR_BITS _u(0x00000004) +#define SSI_RISR_RXUIR_MSB _u(2) +#define SSI_RISR_RXUIR_LSB _u(2) +#define SSI_RISR_RXUIR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SSI_RISR_TXOIR +// Description : Transmit FIFO overflow raw interrupt status +#define SSI_RISR_TXOIR_RESET _u(0x0) +#define SSI_RISR_TXOIR_BITS _u(0x00000002) +#define SSI_RISR_TXOIR_MSB _u(1) +#define SSI_RISR_TXOIR_LSB _u(1) +#define SSI_RISR_TXOIR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SSI_RISR_TXEIR +// Description : Transmit FIFO empty raw interrupt status +#define SSI_RISR_TXEIR_RESET _u(0x0) +#define SSI_RISR_TXEIR_BITS _u(0x00000001) +#define SSI_RISR_TXEIR_MSB _u(0) +#define SSI_RISR_TXEIR_LSB _u(0) +#define SSI_RISR_TXEIR_ACCESS "RO" +// ============================================================================= +// Register : SSI_TXOICR +// Description : TX FIFO overflow interrupt clear +// Clear-on-read transmit FIFO overflow interrupt +#define SSI_TXOICR_OFFSET _u(0x00000038) +#define SSI_TXOICR_BITS _u(0x00000001) +#define SSI_TXOICR_RESET _u(0x00000000) +#define SSI_TXOICR_MSB _u(0) +#define SSI_TXOICR_LSB _u(0) +#define SSI_TXOICR_ACCESS "RO" +// ============================================================================= +// Register : SSI_RXOICR +// Description : RX FIFO overflow interrupt clear +// Clear-on-read receive FIFO overflow interrupt +#define SSI_RXOICR_OFFSET _u(0x0000003c) +#define SSI_RXOICR_BITS _u(0x00000001) +#define SSI_RXOICR_RESET _u(0x00000000) +#define SSI_RXOICR_MSB _u(0) +#define SSI_RXOICR_LSB _u(0) +#define SSI_RXOICR_ACCESS "RO" +// ============================================================================= +// Register : SSI_RXUICR +// Description : RX FIFO underflow interrupt clear +// Clear-on-read receive FIFO underflow interrupt +#define SSI_RXUICR_OFFSET _u(0x00000040) +#define SSI_RXUICR_BITS _u(0x00000001) +#define SSI_RXUICR_RESET _u(0x00000000) +#define SSI_RXUICR_MSB _u(0) +#define SSI_RXUICR_LSB _u(0) +#define SSI_RXUICR_ACCESS "RO" +// ============================================================================= +// Register : SSI_MSTICR +// Description : Multi-master interrupt clear +// Clear-on-read multi-master contention interrupt +#define SSI_MSTICR_OFFSET _u(0x00000044) +#define SSI_MSTICR_BITS _u(0x00000001) +#define SSI_MSTICR_RESET _u(0x00000000) +#define SSI_MSTICR_MSB _u(0) +#define SSI_MSTICR_LSB _u(0) +#define SSI_MSTICR_ACCESS "RO" +// ============================================================================= +// Register : SSI_ICR +// Description : Interrupt clear +// Clear-on-read all active interrupts +#define SSI_ICR_OFFSET _u(0x00000048) +#define SSI_ICR_BITS _u(0x00000001) +#define SSI_ICR_RESET _u(0x00000000) +#define SSI_ICR_MSB _u(0) +#define SSI_ICR_LSB _u(0) +#define SSI_ICR_ACCESS "RO" +// ============================================================================= +// Register : SSI_DMACR +// Description : DMA control +#define SSI_DMACR_OFFSET _u(0x0000004c) +#define SSI_DMACR_BITS _u(0x00000003) +#define SSI_DMACR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SSI_DMACR_TDMAE +// Description : Transmit DMA enable +#define SSI_DMACR_TDMAE_RESET _u(0x0) +#define SSI_DMACR_TDMAE_BITS _u(0x00000002) +#define SSI_DMACR_TDMAE_MSB _u(1) +#define SSI_DMACR_TDMAE_LSB _u(1) +#define SSI_DMACR_TDMAE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_DMACR_RDMAE +// Description : Receive DMA enable +#define SSI_DMACR_RDMAE_RESET _u(0x0) +#define SSI_DMACR_RDMAE_BITS _u(0x00000001) +#define SSI_DMACR_RDMAE_MSB _u(0) +#define SSI_DMACR_RDMAE_LSB _u(0) +#define SSI_DMACR_RDMAE_ACCESS "RW" +// ============================================================================= +// Register : SSI_DMATDLR +// Description : DMA TX data level +#define SSI_DMATDLR_OFFSET _u(0x00000050) +#define SSI_DMATDLR_BITS _u(0x000000ff) +#define SSI_DMATDLR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SSI_DMATDLR_DMATDL +// Description : Transmit data watermark level +#define SSI_DMATDLR_DMATDL_RESET _u(0x00) +#define SSI_DMATDLR_DMATDL_BITS _u(0x000000ff) +#define SSI_DMATDLR_DMATDL_MSB _u(7) +#define SSI_DMATDLR_DMATDL_LSB _u(0) +#define SSI_DMATDLR_DMATDL_ACCESS "RW" +// ============================================================================= +// Register : SSI_DMARDLR +// Description : DMA RX data level +#define SSI_DMARDLR_OFFSET _u(0x00000054) +#define SSI_DMARDLR_BITS _u(0x000000ff) +#define SSI_DMARDLR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SSI_DMARDLR_DMARDL +// Description : Receive data watermark level (DMARDLR+1) +#define SSI_DMARDLR_DMARDL_RESET _u(0x00) +#define SSI_DMARDLR_DMARDL_BITS _u(0x000000ff) +#define SSI_DMARDLR_DMARDL_MSB _u(7) +#define SSI_DMARDLR_DMARDL_LSB _u(0) +#define SSI_DMARDLR_DMARDL_ACCESS "RW" +// ============================================================================= +// Register : SSI_IDR +// Description : Identification register +#define SSI_IDR_OFFSET _u(0x00000058) +#define SSI_IDR_BITS _u(0xffffffff) +#define SSI_IDR_RESET _u(0x51535049) +// ----------------------------------------------------------------------------- +// Field : SSI_IDR_IDCODE +// Description : Peripheral dentification code +#define SSI_IDR_IDCODE_RESET _u(0x51535049) +#define SSI_IDR_IDCODE_BITS _u(0xffffffff) +#define SSI_IDR_IDCODE_MSB _u(31) +#define SSI_IDR_IDCODE_LSB _u(0) +#define SSI_IDR_IDCODE_ACCESS "RO" +// ============================================================================= +// Register : SSI_SSI_VERSION_ID +// Description : Version ID +#define SSI_SSI_VERSION_ID_OFFSET _u(0x0000005c) +#define SSI_SSI_VERSION_ID_BITS _u(0xffffffff) +#define SSI_SSI_VERSION_ID_RESET _u(0x3430312a) +// ----------------------------------------------------------------------------- +// Field : SSI_SSI_VERSION_ID_SSI_COMP_VERSION +// Description : SNPS component version (format X.YY) +#define SSI_SSI_VERSION_ID_SSI_COMP_VERSION_RESET _u(0x3430312a) +#define SSI_SSI_VERSION_ID_SSI_COMP_VERSION_BITS _u(0xffffffff) +#define SSI_SSI_VERSION_ID_SSI_COMP_VERSION_MSB _u(31) +#define SSI_SSI_VERSION_ID_SSI_COMP_VERSION_LSB _u(0) +#define SSI_SSI_VERSION_ID_SSI_COMP_VERSION_ACCESS "RO" +// ============================================================================= +// Register : SSI_DR0 +// Description : Data Register 0 (of 36) +#define SSI_DR0_OFFSET _u(0x00000060) +#define SSI_DR0_BITS _u(0xffffffff) +#define SSI_DR0_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SSI_DR0_DR +// Description : First data register of 36 +#define SSI_DR0_DR_RESET _u(0x00000000) +#define SSI_DR0_DR_BITS _u(0xffffffff) +#define SSI_DR0_DR_MSB _u(31) +#define SSI_DR0_DR_LSB _u(0) +#define SSI_DR0_DR_ACCESS "RW" +// ============================================================================= +// Register : SSI_RX_SAMPLE_DLY +// Description : RX sample delay +#define SSI_RX_SAMPLE_DLY_OFFSET _u(0x000000f0) +#define SSI_RX_SAMPLE_DLY_BITS _u(0x000000ff) +#define SSI_RX_SAMPLE_DLY_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SSI_RX_SAMPLE_DLY_RSD +// Description : RXD sample delay (in SCLK cycles) +#define SSI_RX_SAMPLE_DLY_RSD_RESET _u(0x00) +#define SSI_RX_SAMPLE_DLY_RSD_BITS _u(0x000000ff) +#define SSI_RX_SAMPLE_DLY_RSD_MSB _u(7) +#define SSI_RX_SAMPLE_DLY_RSD_LSB _u(0) +#define SSI_RX_SAMPLE_DLY_RSD_ACCESS "RW" +// ============================================================================= +// Register : SSI_SPI_CTRLR0 +// Description : SPI control +#define SSI_SPI_CTRLR0_OFFSET _u(0x000000f4) +#define SSI_SPI_CTRLR0_BITS _u(0xff07fb3f) +#define SSI_SPI_CTRLR0_RESET _u(0x03000000) +// ----------------------------------------------------------------------------- +// Field : SSI_SPI_CTRLR0_XIP_CMD +// Description : SPI Command to send in XIP mode (INST_L = 8-bit) or to append +// to Address (INST_L = 0-bit) +#define SSI_SPI_CTRLR0_XIP_CMD_RESET _u(0x03) +#define SSI_SPI_CTRLR0_XIP_CMD_BITS _u(0xff000000) +#define SSI_SPI_CTRLR0_XIP_CMD_MSB _u(31) +#define SSI_SPI_CTRLR0_XIP_CMD_LSB _u(24) +#define SSI_SPI_CTRLR0_XIP_CMD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_SPI_CTRLR0_SPI_RXDS_EN +// Description : Read data strobe enable +#define SSI_SPI_CTRLR0_SPI_RXDS_EN_RESET _u(0x0) +#define SSI_SPI_CTRLR0_SPI_RXDS_EN_BITS _u(0x00040000) +#define SSI_SPI_CTRLR0_SPI_RXDS_EN_MSB _u(18) +#define SSI_SPI_CTRLR0_SPI_RXDS_EN_LSB _u(18) +#define SSI_SPI_CTRLR0_SPI_RXDS_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_SPI_CTRLR0_INST_DDR_EN +// Description : Instruction DDR transfer enable +#define SSI_SPI_CTRLR0_INST_DDR_EN_RESET _u(0x0) +#define SSI_SPI_CTRLR0_INST_DDR_EN_BITS _u(0x00020000) +#define SSI_SPI_CTRLR0_INST_DDR_EN_MSB _u(17) +#define SSI_SPI_CTRLR0_INST_DDR_EN_LSB _u(17) +#define SSI_SPI_CTRLR0_INST_DDR_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_SPI_CTRLR0_SPI_DDR_EN +// Description : SPI DDR transfer enable +#define SSI_SPI_CTRLR0_SPI_DDR_EN_RESET _u(0x0) +#define SSI_SPI_CTRLR0_SPI_DDR_EN_BITS _u(0x00010000) +#define SSI_SPI_CTRLR0_SPI_DDR_EN_MSB _u(16) +#define SSI_SPI_CTRLR0_SPI_DDR_EN_LSB _u(16) +#define SSI_SPI_CTRLR0_SPI_DDR_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_SPI_CTRLR0_WAIT_CYCLES +// Description : Wait cycles between control frame transmit and data reception +// (in SCLK cycles) +#define SSI_SPI_CTRLR0_WAIT_CYCLES_RESET _u(0x00) +#define SSI_SPI_CTRLR0_WAIT_CYCLES_BITS _u(0x0000f800) +#define SSI_SPI_CTRLR0_WAIT_CYCLES_MSB _u(15) +#define SSI_SPI_CTRLR0_WAIT_CYCLES_LSB _u(11) +#define SSI_SPI_CTRLR0_WAIT_CYCLES_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_SPI_CTRLR0_INST_L +// Description : Instruction length (0/4/8/16b) +// 0x0 -> No instruction +// 0x1 -> 4-bit instruction +// 0x2 -> 8-bit instruction +// 0x3 -> 16-bit instruction +#define SSI_SPI_CTRLR0_INST_L_RESET _u(0x0) +#define SSI_SPI_CTRLR0_INST_L_BITS _u(0x00000300) +#define SSI_SPI_CTRLR0_INST_L_MSB _u(9) +#define SSI_SPI_CTRLR0_INST_L_LSB _u(8) +#define SSI_SPI_CTRLR0_INST_L_ACCESS "RW" +#define SSI_SPI_CTRLR0_INST_L_VALUE_NONE _u(0x0) +#define SSI_SPI_CTRLR0_INST_L_VALUE_4B _u(0x1) +#define SSI_SPI_CTRLR0_INST_L_VALUE_8B _u(0x2) +#define SSI_SPI_CTRLR0_INST_L_VALUE_16B _u(0x3) +// ----------------------------------------------------------------------------- +// Field : SSI_SPI_CTRLR0_ADDR_L +// Description : Address length (0b-60b in 4b increments) +#define SSI_SPI_CTRLR0_ADDR_L_RESET _u(0x0) +#define SSI_SPI_CTRLR0_ADDR_L_BITS _u(0x0000003c) +#define SSI_SPI_CTRLR0_ADDR_L_MSB _u(5) +#define SSI_SPI_CTRLR0_ADDR_L_LSB _u(2) +#define SSI_SPI_CTRLR0_ADDR_L_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SSI_SPI_CTRLR0_TRANS_TYPE +// Description : Address and instruction transfer format +// 0x0 -> Command and address both in standard SPI frame format +// 0x1 -> Command in standard SPI format, address in format +// specified by FRF +// 0x2 -> Command and address both in format specified by FRF +// (e.g. Dual-SPI) +#define SSI_SPI_CTRLR0_TRANS_TYPE_RESET _u(0x0) +#define SSI_SPI_CTRLR0_TRANS_TYPE_BITS _u(0x00000003) +#define SSI_SPI_CTRLR0_TRANS_TYPE_MSB _u(1) +#define SSI_SPI_CTRLR0_TRANS_TYPE_LSB _u(0) +#define SSI_SPI_CTRLR0_TRANS_TYPE_ACCESS "RW" +#define SSI_SPI_CTRLR0_TRANS_TYPE_VALUE_1C1A _u(0x0) +#define SSI_SPI_CTRLR0_TRANS_TYPE_VALUE_1C2A _u(0x1) +#define SSI_SPI_CTRLR0_TRANS_TYPE_VALUE_2C2A _u(0x2) +// ============================================================================= +// Register : SSI_TXD_DRIVE_EDGE +// Description : TX drive edge +#define SSI_TXD_DRIVE_EDGE_OFFSET _u(0x000000f8) +#define SSI_TXD_DRIVE_EDGE_BITS _u(0x000000ff) +#define SSI_TXD_DRIVE_EDGE_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SSI_TXD_DRIVE_EDGE_TDE +// Description : TXD drive edge +#define SSI_TXD_DRIVE_EDGE_TDE_RESET _u(0x00) +#define SSI_TXD_DRIVE_EDGE_TDE_BITS _u(0x000000ff) +#define SSI_TXD_DRIVE_EDGE_TDE_MSB _u(7) +#define SSI_TXD_DRIVE_EDGE_TDE_LSB _u(0) +#define SSI_TXD_DRIVE_EDGE_TDE_ACCESS "RW" +// ============================================================================= +#endif // HARDWARE_REGS_SSI_DEFINED diff --git a/arkanoid/pico/hardware/regs/syscfg.h b/arkanoid/pico/hardware/regs/syscfg.h new file mode 100644 index 0000000..2bf09e2 --- /dev/null +++ b/arkanoid/pico/hardware/regs/syscfg.h @@ -0,0 +1,257 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : SYSCFG +// Version : 1 +// Bus type : apb +// Description : Register block for various chip control signals +// ============================================================================= +#ifndef HARDWARE_REGS_SYSCFG_DEFINED +#define HARDWARE_REGS_SYSCFG_DEFINED +// ============================================================================= +// Register : SYSCFG_PROC0_NMI_MASK +// Description : Processor core 0 NMI source mask +// Set a bit high to enable NMI from that IRQ +#define SYSCFG_PROC0_NMI_MASK_OFFSET _u(0x00000000) +#define SYSCFG_PROC0_NMI_MASK_BITS _u(0xffffffff) +#define SYSCFG_PROC0_NMI_MASK_RESET _u(0x00000000) +#define SYSCFG_PROC0_NMI_MASK_MSB _u(31) +#define SYSCFG_PROC0_NMI_MASK_LSB _u(0) +#define SYSCFG_PROC0_NMI_MASK_ACCESS "RW" +// ============================================================================= +// Register : SYSCFG_PROC1_NMI_MASK +// Description : Processor core 1 NMI source mask +// Set a bit high to enable NMI from that IRQ +#define SYSCFG_PROC1_NMI_MASK_OFFSET _u(0x00000004) +#define SYSCFG_PROC1_NMI_MASK_BITS _u(0xffffffff) +#define SYSCFG_PROC1_NMI_MASK_RESET _u(0x00000000) +#define SYSCFG_PROC1_NMI_MASK_MSB _u(31) +#define SYSCFG_PROC1_NMI_MASK_LSB _u(0) +#define SYSCFG_PROC1_NMI_MASK_ACCESS "RW" +// ============================================================================= +// Register : SYSCFG_PROC_CONFIG +// Description : Configuration for processors +#define SYSCFG_PROC_CONFIG_OFFSET _u(0x00000008) +#define SYSCFG_PROC_CONFIG_BITS _u(0xff000003) +#define SYSCFG_PROC_CONFIG_RESET _u(0x10000000) +// ----------------------------------------------------------------------------- +// Field : SYSCFG_PROC_CONFIG_PROC1_DAP_INSTID +// Description : Configure proc1 DAP instance ID. +// Recommend that this is NOT changed until you require debug +// access in multi-chip environment +// WARNING: do not set to 15 as this is reserved for RescueDP +#define SYSCFG_PROC_CONFIG_PROC1_DAP_INSTID_RESET _u(0x1) +#define SYSCFG_PROC_CONFIG_PROC1_DAP_INSTID_BITS _u(0xf0000000) +#define SYSCFG_PROC_CONFIG_PROC1_DAP_INSTID_MSB _u(31) +#define SYSCFG_PROC_CONFIG_PROC1_DAP_INSTID_LSB _u(28) +#define SYSCFG_PROC_CONFIG_PROC1_DAP_INSTID_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SYSCFG_PROC_CONFIG_PROC0_DAP_INSTID +// Description : Configure proc0 DAP instance ID. +// Recommend that this is NOT changed until you require debug +// access in multi-chip environment +// WARNING: do not set to 15 as this is reserved for RescueDP +#define SYSCFG_PROC_CONFIG_PROC0_DAP_INSTID_RESET _u(0x0) +#define SYSCFG_PROC_CONFIG_PROC0_DAP_INSTID_BITS _u(0x0f000000) +#define SYSCFG_PROC_CONFIG_PROC0_DAP_INSTID_MSB _u(27) +#define SYSCFG_PROC_CONFIG_PROC0_DAP_INSTID_LSB _u(24) +#define SYSCFG_PROC_CONFIG_PROC0_DAP_INSTID_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SYSCFG_PROC_CONFIG_PROC1_HALTED +// Description : Indication that proc1 has halted +#define SYSCFG_PROC_CONFIG_PROC1_HALTED_RESET _u(0x0) +#define SYSCFG_PROC_CONFIG_PROC1_HALTED_BITS _u(0x00000002) +#define SYSCFG_PROC_CONFIG_PROC1_HALTED_MSB _u(1) +#define SYSCFG_PROC_CONFIG_PROC1_HALTED_LSB _u(1) +#define SYSCFG_PROC_CONFIG_PROC1_HALTED_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SYSCFG_PROC_CONFIG_PROC0_HALTED +// Description : Indication that proc0 has halted +#define SYSCFG_PROC_CONFIG_PROC0_HALTED_RESET _u(0x0) +#define SYSCFG_PROC_CONFIG_PROC0_HALTED_BITS _u(0x00000001) +#define SYSCFG_PROC_CONFIG_PROC0_HALTED_MSB _u(0) +#define SYSCFG_PROC_CONFIG_PROC0_HALTED_LSB _u(0) +#define SYSCFG_PROC_CONFIG_PROC0_HALTED_ACCESS "RO" +// ============================================================================= +// Register : SYSCFG_PROC_IN_SYNC_BYPASS +// Description : For each bit, if 1, bypass the input synchronizer between that +// GPIO +// and the GPIO input register in the SIO. The input synchronizers +// should +// generally be unbypassed, to avoid injecting metastabilities +// into processors. +// If you're feeling brave, you can bypass to save two cycles of +// input +// latency. This register applies to GPIO 0...29. +#define SYSCFG_PROC_IN_SYNC_BYPASS_OFFSET _u(0x0000000c) +#define SYSCFG_PROC_IN_SYNC_BYPASS_BITS _u(0x3fffffff) +#define SYSCFG_PROC_IN_SYNC_BYPASS_RESET _u(0x00000000) +#define SYSCFG_PROC_IN_SYNC_BYPASS_MSB _u(29) +#define SYSCFG_PROC_IN_SYNC_BYPASS_LSB _u(0) +#define SYSCFG_PROC_IN_SYNC_BYPASS_ACCESS "RW" +// ============================================================================= +// Register : SYSCFG_PROC_IN_SYNC_BYPASS_HI +// Description : For each bit, if 1, bypass the input synchronizer between that +// GPIO +// and the GPIO input register in the SIO. The input synchronizers +// should +// generally be unbypassed, to avoid injecting metastabilities +// into processors. +// If you're feeling brave, you can bypass to save two cycles of +// input +// latency. This register applies to GPIO 30...35 (the QSPI IOs). +#define SYSCFG_PROC_IN_SYNC_BYPASS_HI_OFFSET _u(0x00000010) +#define SYSCFG_PROC_IN_SYNC_BYPASS_HI_BITS _u(0x0000003f) +#define SYSCFG_PROC_IN_SYNC_BYPASS_HI_RESET _u(0x00000000) +#define SYSCFG_PROC_IN_SYNC_BYPASS_HI_MSB _u(5) +#define SYSCFG_PROC_IN_SYNC_BYPASS_HI_LSB _u(0) +#define SYSCFG_PROC_IN_SYNC_BYPASS_HI_ACCESS "RW" +// ============================================================================= +// Register : SYSCFG_DBGFORCE +// Description : Directly control the SWD debug port of either processor +#define SYSCFG_DBGFORCE_OFFSET _u(0x00000014) +#define SYSCFG_DBGFORCE_BITS _u(0x000000ff) +#define SYSCFG_DBGFORCE_RESET _u(0x00000066) +// ----------------------------------------------------------------------------- +// Field : SYSCFG_DBGFORCE_PROC1_ATTACH +// Description : Attach processor 1 debug port to syscfg controls, and +// disconnect it from external SWD pads. +#define SYSCFG_DBGFORCE_PROC1_ATTACH_RESET _u(0x0) +#define SYSCFG_DBGFORCE_PROC1_ATTACH_BITS _u(0x00000080) +#define SYSCFG_DBGFORCE_PROC1_ATTACH_MSB _u(7) +#define SYSCFG_DBGFORCE_PROC1_ATTACH_LSB _u(7) +#define SYSCFG_DBGFORCE_PROC1_ATTACH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SYSCFG_DBGFORCE_PROC1_SWCLK +// Description : Directly drive processor 1 SWCLK, if PROC1_ATTACH is set +#define SYSCFG_DBGFORCE_PROC1_SWCLK_RESET _u(0x1) +#define SYSCFG_DBGFORCE_PROC1_SWCLK_BITS _u(0x00000040) +#define SYSCFG_DBGFORCE_PROC1_SWCLK_MSB _u(6) +#define SYSCFG_DBGFORCE_PROC1_SWCLK_LSB _u(6) +#define SYSCFG_DBGFORCE_PROC1_SWCLK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SYSCFG_DBGFORCE_PROC1_SWDI +// Description : Directly drive processor 1 SWDIO input, if PROC1_ATTACH is set +#define SYSCFG_DBGFORCE_PROC1_SWDI_RESET _u(0x1) +#define SYSCFG_DBGFORCE_PROC1_SWDI_BITS _u(0x00000020) +#define SYSCFG_DBGFORCE_PROC1_SWDI_MSB _u(5) +#define SYSCFG_DBGFORCE_PROC1_SWDI_LSB _u(5) +#define SYSCFG_DBGFORCE_PROC1_SWDI_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SYSCFG_DBGFORCE_PROC1_SWDO +// Description : Observe the value of processor 1 SWDIO output. +#define SYSCFG_DBGFORCE_PROC1_SWDO_RESET "-" +#define SYSCFG_DBGFORCE_PROC1_SWDO_BITS _u(0x00000010) +#define SYSCFG_DBGFORCE_PROC1_SWDO_MSB _u(4) +#define SYSCFG_DBGFORCE_PROC1_SWDO_LSB _u(4) +#define SYSCFG_DBGFORCE_PROC1_SWDO_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SYSCFG_DBGFORCE_PROC0_ATTACH +// Description : Attach processor 0 debug port to syscfg controls, and +// disconnect it from external SWD pads. +#define SYSCFG_DBGFORCE_PROC0_ATTACH_RESET _u(0x0) +#define SYSCFG_DBGFORCE_PROC0_ATTACH_BITS _u(0x00000008) +#define SYSCFG_DBGFORCE_PROC0_ATTACH_MSB _u(3) +#define SYSCFG_DBGFORCE_PROC0_ATTACH_LSB _u(3) +#define SYSCFG_DBGFORCE_PROC0_ATTACH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SYSCFG_DBGFORCE_PROC0_SWCLK +// Description : Directly drive processor 0 SWCLK, if PROC0_ATTACH is set +#define SYSCFG_DBGFORCE_PROC0_SWCLK_RESET _u(0x1) +#define SYSCFG_DBGFORCE_PROC0_SWCLK_BITS _u(0x00000004) +#define SYSCFG_DBGFORCE_PROC0_SWCLK_MSB _u(2) +#define SYSCFG_DBGFORCE_PROC0_SWCLK_LSB _u(2) +#define SYSCFG_DBGFORCE_PROC0_SWCLK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SYSCFG_DBGFORCE_PROC0_SWDI +// Description : Directly drive processor 0 SWDIO input, if PROC0_ATTACH is set +#define SYSCFG_DBGFORCE_PROC0_SWDI_RESET _u(0x1) +#define SYSCFG_DBGFORCE_PROC0_SWDI_BITS _u(0x00000002) +#define SYSCFG_DBGFORCE_PROC0_SWDI_MSB _u(1) +#define SYSCFG_DBGFORCE_PROC0_SWDI_LSB _u(1) +#define SYSCFG_DBGFORCE_PROC0_SWDI_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SYSCFG_DBGFORCE_PROC0_SWDO +// Description : Observe the value of processor 0 SWDIO output. +#define SYSCFG_DBGFORCE_PROC0_SWDO_RESET "-" +#define SYSCFG_DBGFORCE_PROC0_SWDO_BITS _u(0x00000001) +#define SYSCFG_DBGFORCE_PROC0_SWDO_MSB _u(0) +#define SYSCFG_DBGFORCE_PROC0_SWDO_LSB _u(0) +#define SYSCFG_DBGFORCE_PROC0_SWDO_ACCESS "RO" +// ============================================================================= +// Register : SYSCFG_MEMPOWERDOWN +// Description : Control power downs to memories. Set high to power down +// memories. +// Use with extreme caution +#define SYSCFG_MEMPOWERDOWN_OFFSET _u(0x00000018) +#define SYSCFG_MEMPOWERDOWN_BITS _u(0x000000ff) +#define SYSCFG_MEMPOWERDOWN_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SYSCFG_MEMPOWERDOWN_ROM +// Description : None +#define SYSCFG_MEMPOWERDOWN_ROM_RESET _u(0x0) +#define SYSCFG_MEMPOWERDOWN_ROM_BITS _u(0x00000080) +#define SYSCFG_MEMPOWERDOWN_ROM_MSB _u(7) +#define SYSCFG_MEMPOWERDOWN_ROM_LSB _u(7) +#define SYSCFG_MEMPOWERDOWN_ROM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SYSCFG_MEMPOWERDOWN_USB +// Description : None +#define SYSCFG_MEMPOWERDOWN_USB_RESET _u(0x0) +#define SYSCFG_MEMPOWERDOWN_USB_BITS _u(0x00000040) +#define SYSCFG_MEMPOWERDOWN_USB_MSB _u(6) +#define SYSCFG_MEMPOWERDOWN_USB_LSB _u(6) +#define SYSCFG_MEMPOWERDOWN_USB_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SYSCFG_MEMPOWERDOWN_SRAM5 +// Description : None +#define SYSCFG_MEMPOWERDOWN_SRAM5_RESET _u(0x0) +#define SYSCFG_MEMPOWERDOWN_SRAM5_BITS _u(0x00000020) +#define SYSCFG_MEMPOWERDOWN_SRAM5_MSB _u(5) +#define SYSCFG_MEMPOWERDOWN_SRAM5_LSB _u(5) +#define SYSCFG_MEMPOWERDOWN_SRAM5_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SYSCFG_MEMPOWERDOWN_SRAM4 +// Description : None +#define SYSCFG_MEMPOWERDOWN_SRAM4_RESET _u(0x0) +#define SYSCFG_MEMPOWERDOWN_SRAM4_BITS _u(0x00000010) +#define SYSCFG_MEMPOWERDOWN_SRAM4_MSB _u(4) +#define SYSCFG_MEMPOWERDOWN_SRAM4_LSB _u(4) +#define SYSCFG_MEMPOWERDOWN_SRAM4_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SYSCFG_MEMPOWERDOWN_SRAM3 +// Description : None +#define SYSCFG_MEMPOWERDOWN_SRAM3_RESET _u(0x0) +#define SYSCFG_MEMPOWERDOWN_SRAM3_BITS _u(0x00000008) +#define SYSCFG_MEMPOWERDOWN_SRAM3_MSB _u(3) +#define SYSCFG_MEMPOWERDOWN_SRAM3_LSB _u(3) +#define SYSCFG_MEMPOWERDOWN_SRAM3_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SYSCFG_MEMPOWERDOWN_SRAM2 +// Description : None +#define SYSCFG_MEMPOWERDOWN_SRAM2_RESET _u(0x0) +#define SYSCFG_MEMPOWERDOWN_SRAM2_BITS _u(0x00000004) +#define SYSCFG_MEMPOWERDOWN_SRAM2_MSB _u(2) +#define SYSCFG_MEMPOWERDOWN_SRAM2_LSB _u(2) +#define SYSCFG_MEMPOWERDOWN_SRAM2_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SYSCFG_MEMPOWERDOWN_SRAM1 +// Description : None +#define SYSCFG_MEMPOWERDOWN_SRAM1_RESET _u(0x0) +#define SYSCFG_MEMPOWERDOWN_SRAM1_BITS _u(0x00000002) +#define SYSCFG_MEMPOWERDOWN_SRAM1_MSB _u(1) +#define SYSCFG_MEMPOWERDOWN_SRAM1_LSB _u(1) +#define SYSCFG_MEMPOWERDOWN_SRAM1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : SYSCFG_MEMPOWERDOWN_SRAM0 +// Description : None +#define SYSCFG_MEMPOWERDOWN_SRAM0_RESET _u(0x0) +#define SYSCFG_MEMPOWERDOWN_SRAM0_BITS _u(0x00000001) +#define SYSCFG_MEMPOWERDOWN_SRAM0_MSB _u(0) +#define SYSCFG_MEMPOWERDOWN_SRAM0_LSB _u(0) +#define SYSCFG_MEMPOWERDOWN_SRAM0_ACCESS "RW" +// ============================================================================= +#endif // HARDWARE_REGS_SYSCFG_DEFINED diff --git a/arkanoid/pico/hardware/regs/sysinfo.h b/arkanoid/pico/hardware/regs/sysinfo.h new file mode 100644 index 0000000..2a46658 --- /dev/null +++ b/arkanoid/pico/hardware/regs/sysinfo.h @@ -0,0 +1,77 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : SYSINFO +// Version : 1 +// Bus type : apb +// Description : None +// ============================================================================= +#ifndef HARDWARE_REGS_SYSINFO_DEFINED +#define HARDWARE_REGS_SYSINFO_DEFINED +// ============================================================================= +// Register : SYSINFO_CHIP_ID +// Description : JEDEC JEP-106 compliant chip identifier. +#define SYSINFO_CHIP_ID_OFFSET _u(0x00000000) +#define SYSINFO_CHIP_ID_BITS _u(0xffffffff) +#define SYSINFO_CHIP_ID_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SYSINFO_CHIP_ID_REVISION +// Description : None +#define SYSINFO_CHIP_ID_REVISION_RESET "-" +#define SYSINFO_CHIP_ID_REVISION_BITS _u(0xf0000000) +#define SYSINFO_CHIP_ID_REVISION_MSB _u(31) +#define SYSINFO_CHIP_ID_REVISION_LSB _u(28) +#define SYSINFO_CHIP_ID_REVISION_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SYSINFO_CHIP_ID_PART +// Description : None +#define SYSINFO_CHIP_ID_PART_RESET "-" +#define SYSINFO_CHIP_ID_PART_BITS _u(0x0ffff000) +#define SYSINFO_CHIP_ID_PART_MSB _u(27) +#define SYSINFO_CHIP_ID_PART_LSB _u(12) +#define SYSINFO_CHIP_ID_PART_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SYSINFO_CHIP_ID_MANUFACTURER +// Description : None +#define SYSINFO_CHIP_ID_MANUFACTURER_RESET "-" +#define SYSINFO_CHIP_ID_MANUFACTURER_BITS _u(0x00000fff) +#define SYSINFO_CHIP_ID_MANUFACTURER_MSB _u(11) +#define SYSINFO_CHIP_ID_MANUFACTURER_LSB _u(0) +#define SYSINFO_CHIP_ID_MANUFACTURER_ACCESS "RO" +// ============================================================================= +// Register : SYSINFO_PLATFORM +// Description : Platform register. Allows software to know what environment it +// is running in. +#define SYSINFO_PLATFORM_OFFSET _u(0x00000004) +#define SYSINFO_PLATFORM_BITS _u(0x00000003) +#define SYSINFO_PLATFORM_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : SYSINFO_PLATFORM_ASIC +// Description : None +#define SYSINFO_PLATFORM_ASIC_RESET _u(0x0) +#define SYSINFO_PLATFORM_ASIC_BITS _u(0x00000002) +#define SYSINFO_PLATFORM_ASIC_MSB _u(1) +#define SYSINFO_PLATFORM_ASIC_LSB _u(1) +#define SYSINFO_PLATFORM_ASIC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : SYSINFO_PLATFORM_FPGA +// Description : None +#define SYSINFO_PLATFORM_FPGA_RESET _u(0x0) +#define SYSINFO_PLATFORM_FPGA_BITS _u(0x00000001) +#define SYSINFO_PLATFORM_FPGA_MSB _u(0) +#define SYSINFO_PLATFORM_FPGA_LSB _u(0) +#define SYSINFO_PLATFORM_FPGA_ACCESS "RO" +// ============================================================================= +// Register : SYSINFO_GITREF_RP2040 +// Description : Git hash of the chip source. Used to identify chip version. +#define SYSINFO_GITREF_RP2040_OFFSET _u(0x00000040) +#define SYSINFO_GITREF_RP2040_BITS _u(0xffffffff) +#define SYSINFO_GITREF_RP2040_RESET "-" +#define SYSINFO_GITREF_RP2040_MSB _u(31) +#define SYSINFO_GITREF_RP2040_LSB _u(0) +#define SYSINFO_GITREF_RP2040_ACCESS "RO" +// ============================================================================= +#endif // HARDWARE_REGS_SYSINFO_DEFINED diff --git a/arkanoid/pico/hardware/regs/tbman.h b/arkanoid/pico/hardware/regs/tbman.h new file mode 100644 index 0000000..4f8f641 --- /dev/null +++ b/arkanoid/pico/hardware/regs/tbman.h @@ -0,0 +1,38 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : TBMAN +// Version : 1 +// Bus type : apb +// Description : Testbench manager. Allows the programmer to know what +// platform their software is running on. +// ============================================================================= +#ifndef HARDWARE_REGS_TBMAN_DEFINED +#define HARDWARE_REGS_TBMAN_DEFINED +// ============================================================================= +// Register : TBMAN_PLATFORM +// Description : Indicates the type of platform in use +#define TBMAN_PLATFORM_OFFSET _u(0x00000000) +#define TBMAN_PLATFORM_BITS _u(0x00000003) +#define TBMAN_PLATFORM_RESET _u(0x00000005) +// ----------------------------------------------------------------------------- +// Field : TBMAN_PLATFORM_FPGA +// Description : Indicates the platform is an FPGA +#define TBMAN_PLATFORM_FPGA_RESET _u(0x0) +#define TBMAN_PLATFORM_FPGA_BITS _u(0x00000002) +#define TBMAN_PLATFORM_FPGA_MSB _u(1) +#define TBMAN_PLATFORM_FPGA_LSB _u(1) +#define TBMAN_PLATFORM_FPGA_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : TBMAN_PLATFORM_ASIC +// Description : Indicates the platform is an ASIC +#define TBMAN_PLATFORM_ASIC_RESET _u(0x1) +#define TBMAN_PLATFORM_ASIC_BITS _u(0x00000001) +#define TBMAN_PLATFORM_ASIC_MSB _u(0) +#define TBMAN_PLATFORM_ASIC_LSB _u(0) +#define TBMAN_PLATFORM_ASIC_ACCESS "RO" +// ============================================================================= +#endif // HARDWARE_REGS_TBMAN_DEFINED diff --git a/arkanoid/pico/hardware/regs/timer.h b/arkanoid/pico/hardware/regs/timer.h new file mode 100644 index 0000000..c3ef0c5 --- /dev/null +++ b/arkanoid/pico/hardware/regs/timer.h @@ -0,0 +1,332 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : TIMER +// Version : 1 +// Bus type : apb +// Description : Controls time and alarms +// time is a 64 bit value indicating the time in usec since +// power-on +// timeh is the top 32 bits of time & timel is the bottom 32 +// bits +// to change time write to timelw before timehw +// to read time read from timelr before timehr +// An alarm is set by setting alarm_enable and writing to the +// corresponding alarm register +// When an alarm is pending, the corresponding alarm_running +// signal will be high +// An alarm can be cancelled before it has finished by clearing +// the alarm_enable +// When an alarm fires, the corresponding alarm_irq is set and +// alarm_running is cleared +// To clear the interrupt write a 1 to the corresponding +// alarm_irq +// ============================================================================= +#ifndef HARDWARE_REGS_TIMER_DEFINED +#define HARDWARE_REGS_TIMER_DEFINED +// ============================================================================= +// Register : TIMER_TIMEHW +// Description : Write to bits 63:32 of time +// always write timelw before timehw +#define TIMER_TIMEHW_OFFSET _u(0x00000000) +#define TIMER_TIMEHW_BITS _u(0xffffffff) +#define TIMER_TIMEHW_RESET _u(0x00000000) +#define TIMER_TIMEHW_MSB _u(31) +#define TIMER_TIMEHW_LSB _u(0) +#define TIMER_TIMEHW_ACCESS "WF" +// ============================================================================= +// Register : TIMER_TIMELW +// Description : Write to bits 31:0 of time +// writes do not get copied to time until timehw is written +#define TIMER_TIMELW_OFFSET _u(0x00000004) +#define TIMER_TIMELW_BITS _u(0xffffffff) +#define TIMER_TIMELW_RESET _u(0x00000000) +#define TIMER_TIMELW_MSB _u(31) +#define TIMER_TIMELW_LSB _u(0) +#define TIMER_TIMELW_ACCESS "WF" +// ============================================================================= +// Register : TIMER_TIMEHR +// Description : Read from bits 63:32 of time +// always read timelr before timehr +#define TIMER_TIMEHR_OFFSET _u(0x00000008) +#define TIMER_TIMEHR_BITS _u(0xffffffff) +#define TIMER_TIMEHR_RESET _u(0x00000000) +#define TIMER_TIMEHR_MSB _u(31) +#define TIMER_TIMEHR_LSB _u(0) +#define TIMER_TIMEHR_ACCESS "RO" +// ============================================================================= +// Register : TIMER_TIMELR +// Description : Read from bits 31:0 of time +#define TIMER_TIMELR_OFFSET _u(0x0000000c) +#define TIMER_TIMELR_BITS _u(0xffffffff) +#define TIMER_TIMELR_RESET _u(0x00000000) +#define TIMER_TIMELR_MSB _u(31) +#define TIMER_TIMELR_LSB _u(0) +#define TIMER_TIMELR_ACCESS "RO" +// ============================================================================= +// Register : TIMER_ALARM0 +// Description : Arm alarm 0, and configure the time it will fire. +// Once armed, the alarm fires when TIMER_ALARM0 == TIMELR. +// The alarm will disarm itself once it fires, and can +// be disarmed early using the ARMED status register. +#define TIMER_ALARM0_OFFSET _u(0x00000010) +#define TIMER_ALARM0_BITS _u(0xffffffff) +#define TIMER_ALARM0_RESET _u(0x00000000) +#define TIMER_ALARM0_MSB _u(31) +#define TIMER_ALARM0_LSB _u(0) +#define TIMER_ALARM0_ACCESS "RW" +// ============================================================================= +// Register : TIMER_ALARM1 +// Description : Arm alarm 1, and configure the time it will fire. +// Once armed, the alarm fires when TIMER_ALARM1 == TIMELR. +// The alarm will disarm itself once it fires, and can +// be disarmed early using the ARMED status register. +#define TIMER_ALARM1_OFFSET _u(0x00000014) +#define TIMER_ALARM1_BITS _u(0xffffffff) +#define TIMER_ALARM1_RESET _u(0x00000000) +#define TIMER_ALARM1_MSB _u(31) +#define TIMER_ALARM1_LSB _u(0) +#define TIMER_ALARM1_ACCESS "RW" +// ============================================================================= +// Register : TIMER_ALARM2 +// Description : Arm alarm 2, and configure the time it will fire. +// Once armed, the alarm fires when TIMER_ALARM2 == TIMELR. +// The alarm will disarm itself once it fires, and can +// be disarmed early using the ARMED status register. +#define TIMER_ALARM2_OFFSET _u(0x00000018) +#define TIMER_ALARM2_BITS _u(0xffffffff) +#define TIMER_ALARM2_RESET _u(0x00000000) +#define TIMER_ALARM2_MSB _u(31) +#define TIMER_ALARM2_LSB _u(0) +#define TIMER_ALARM2_ACCESS "RW" +// ============================================================================= +// Register : TIMER_ALARM3 +// Description : Arm alarm 3, and configure the time it will fire. +// Once armed, the alarm fires when TIMER_ALARM3 == TIMELR. +// The alarm will disarm itself once it fires, and can +// be disarmed early using the ARMED status register. +#define TIMER_ALARM3_OFFSET _u(0x0000001c) +#define TIMER_ALARM3_BITS _u(0xffffffff) +#define TIMER_ALARM3_RESET _u(0x00000000) +#define TIMER_ALARM3_MSB _u(31) +#define TIMER_ALARM3_LSB _u(0) +#define TIMER_ALARM3_ACCESS "RW" +// ============================================================================= +// Register : TIMER_ARMED +// Description : Indicates the armed/disarmed status of each alarm. +// A write to the corresponding ALARMx register arms the alarm. +// Alarms automatically disarm upon firing, but writing ones here +// will disarm immediately without waiting to fire. +#define TIMER_ARMED_OFFSET _u(0x00000020) +#define TIMER_ARMED_BITS _u(0x0000000f) +#define TIMER_ARMED_RESET _u(0x00000000) +#define TIMER_ARMED_MSB _u(3) +#define TIMER_ARMED_LSB _u(0) +#define TIMER_ARMED_ACCESS "WC" +// ============================================================================= +// Register : TIMER_TIMERAWH +// Description : Raw read from bits 63:32 of time (no side effects) +#define TIMER_TIMERAWH_OFFSET _u(0x00000024) +#define TIMER_TIMERAWH_BITS _u(0xffffffff) +#define TIMER_TIMERAWH_RESET _u(0x00000000) +#define TIMER_TIMERAWH_MSB _u(31) +#define TIMER_TIMERAWH_LSB _u(0) +#define TIMER_TIMERAWH_ACCESS "RO" +// ============================================================================= +// Register : TIMER_TIMERAWL +// Description : Raw read from bits 31:0 of time (no side effects) +#define TIMER_TIMERAWL_OFFSET _u(0x00000028) +#define TIMER_TIMERAWL_BITS _u(0xffffffff) +#define TIMER_TIMERAWL_RESET _u(0x00000000) +#define TIMER_TIMERAWL_MSB _u(31) +#define TIMER_TIMERAWL_LSB _u(0) +#define TIMER_TIMERAWL_ACCESS "RO" +// ============================================================================= +// Register : TIMER_DBGPAUSE +// Description : Set bits high to enable pause when the corresponding debug +// ports are active +#define TIMER_DBGPAUSE_OFFSET _u(0x0000002c) +#define TIMER_DBGPAUSE_BITS _u(0x00000006) +#define TIMER_DBGPAUSE_RESET _u(0x00000007) +// ----------------------------------------------------------------------------- +// Field : TIMER_DBGPAUSE_DBG1 +// Description : Pause when processor 1 is in debug mode +#define TIMER_DBGPAUSE_DBG1_RESET _u(0x1) +#define TIMER_DBGPAUSE_DBG1_BITS _u(0x00000004) +#define TIMER_DBGPAUSE_DBG1_MSB _u(2) +#define TIMER_DBGPAUSE_DBG1_LSB _u(2) +#define TIMER_DBGPAUSE_DBG1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : TIMER_DBGPAUSE_DBG0 +// Description : Pause when processor 0 is in debug mode +#define TIMER_DBGPAUSE_DBG0_RESET _u(0x1) +#define TIMER_DBGPAUSE_DBG0_BITS _u(0x00000002) +#define TIMER_DBGPAUSE_DBG0_MSB _u(1) +#define TIMER_DBGPAUSE_DBG0_LSB _u(1) +#define TIMER_DBGPAUSE_DBG0_ACCESS "RW" +// ============================================================================= +// Register : TIMER_PAUSE +// Description : Set high to pause the timer +#define TIMER_PAUSE_OFFSET _u(0x00000030) +#define TIMER_PAUSE_BITS _u(0x00000001) +#define TIMER_PAUSE_RESET _u(0x00000000) +#define TIMER_PAUSE_MSB _u(0) +#define TIMER_PAUSE_LSB _u(0) +#define TIMER_PAUSE_ACCESS "RW" +// ============================================================================= +// Register : TIMER_INTR +// Description : Raw Interrupts +#define TIMER_INTR_OFFSET _u(0x00000034) +#define TIMER_INTR_BITS _u(0x0000000f) +#define TIMER_INTR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : TIMER_INTR_ALARM_3 +// Description : None +#define TIMER_INTR_ALARM_3_RESET _u(0x0) +#define TIMER_INTR_ALARM_3_BITS _u(0x00000008) +#define TIMER_INTR_ALARM_3_MSB _u(3) +#define TIMER_INTR_ALARM_3_LSB _u(3) +#define TIMER_INTR_ALARM_3_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : TIMER_INTR_ALARM_2 +// Description : None +#define TIMER_INTR_ALARM_2_RESET _u(0x0) +#define TIMER_INTR_ALARM_2_BITS _u(0x00000004) +#define TIMER_INTR_ALARM_2_MSB _u(2) +#define TIMER_INTR_ALARM_2_LSB _u(2) +#define TIMER_INTR_ALARM_2_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : TIMER_INTR_ALARM_1 +// Description : None +#define TIMER_INTR_ALARM_1_RESET _u(0x0) +#define TIMER_INTR_ALARM_1_BITS _u(0x00000002) +#define TIMER_INTR_ALARM_1_MSB _u(1) +#define TIMER_INTR_ALARM_1_LSB _u(1) +#define TIMER_INTR_ALARM_1_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : TIMER_INTR_ALARM_0 +// Description : None +#define TIMER_INTR_ALARM_0_RESET _u(0x0) +#define TIMER_INTR_ALARM_0_BITS _u(0x00000001) +#define TIMER_INTR_ALARM_0_MSB _u(0) +#define TIMER_INTR_ALARM_0_LSB _u(0) +#define TIMER_INTR_ALARM_0_ACCESS "WC" +// ============================================================================= +// Register : TIMER_INTE +// Description : Interrupt Enable +#define TIMER_INTE_OFFSET _u(0x00000038) +#define TIMER_INTE_BITS _u(0x0000000f) +#define TIMER_INTE_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : TIMER_INTE_ALARM_3 +// Description : None +#define TIMER_INTE_ALARM_3_RESET _u(0x0) +#define TIMER_INTE_ALARM_3_BITS _u(0x00000008) +#define TIMER_INTE_ALARM_3_MSB _u(3) +#define TIMER_INTE_ALARM_3_LSB _u(3) +#define TIMER_INTE_ALARM_3_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : TIMER_INTE_ALARM_2 +// Description : None +#define TIMER_INTE_ALARM_2_RESET _u(0x0) +#define TIMER_INTE_ALARM_2_BITS _u(0x00000004) +#define TIMER_INTE_ALARM_2_MSB _u(2) +#define TIMER_INTE_ALARM_2_LSB _u(2) +#define TIMER_INTE_ALARM_2_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : TIMER_INTE_ALARM_1 +// Description : None +#define TIMER_INTE_ALARM_1_RESET _u(0x0) +#define TIMER_INTE_ALARM_1_BITS _u(0x00000002) +#define TIMER_INTE_ALARM_1_MSB _u(1) +#define TIMER_INTE_ALARM_1_LSB _u(1) +#define TIMER_INTE_ALARM_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : TIMER_INTE_ALARM_0 +// Description : None +#define TIMER_INTE_ALARM_0_RESET _u(0x0) +#define TIMER_INTE_ALARM_0_BITS _u(0x00000001) +#define TIMER_INTE_ALARM_0_MSB _u(0) +#define TIMER_INTE_ALARM_0_LSB _u(0) +#define TIMER_INTE_ALARM_0_ACCESS "RW" +// ============================================================================= +// Register : TIMER_INTF +// Description : Interrupt Force +#define TIMER_INTF_OFFSET _u(0x0000003c) +#define TIMER_INTF_BITS _u(0x0000000f) +#define TIMER_INTF_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : TIMER_INTF_ALARM_3 +// Description : None +#define TIMER_INTF_ALARM_3_RESET _u(0x0) +#define TIMER_INTF_ALARM_3_BITS _u(0x00000008) +#define TIMER_INTF_ALARM_3_MSB _u(3) +#define TIMER_INTF_ALARM_3_LSB _u(3) +#define TIMER_INTF_ALARM_3_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : TIMER_INTF_ALARM_2 +// Description : None +#define TIMER_INTF_ALARM_2_RESET _u(0x0) +#define TIMER_INTF_ALARM_2_BITS _u(0x00000004) +#define TIMER_INTF_ALARM_2_MSB _u(2) +#define TIMER_INTF_ALARM_2_LSB _u(2) +#define TIMER_INTF_ALARM_2_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : TIMER_INTF_ALARM_1 +// Description : None +#define TIMER_INTF_ALARM_1_RESET _u(0x0) +#define TIMER_INTF_ALARM_1_BITS _u(0x00000002) +#define TIMER_INTF_ALARM_1_MSB _u(1) +#define TIMER_INTF_ALARM_1_LSB _u(1) +#define TIMER_INTF_ALARM_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : TIMER_INTF_ALARM_0 +// Description : None +#define TIMER_INTF_ALARM_0_RESET _u(0x0) +#define TIMER_INTF_ALARM_0_BITS _u(0x00000001) +#define TIMER_INTF_ALARM_0_MSB _u(0) +#define TIMER_INTF_ALARM_0_LSB _u(0) +#define TIMER_INTF_ALARM_0_ACCESS "RW" +// ============================================================================= +// Register : TIMER_INTS +// Description : Interrupt status after masking & forcing +#define TIMER_INTS_OFFSET _u(0x00000040) +#define TIMER_INTS_BITS _u(0x0000000f) +#define TIMER_INTS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : TIMER_INTS_ALARM_3 +// Description : None +#define TIMER_INTS_ALARM_3_RESET _u(0x0) +#define TIMER_INTS_ALARM_3_BITS _u(0x00000008) +#define TIMER_INTS_ALARM_3_MSB _u(3) +#define TIMER_INTS_ALARM_3_LSB _u(3) +#define TIMER_INTS_ALARM_3_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : TIMER_INTS_ALARM_2 +// Description : None +#define TIMER_INTS_ALARM_2_RESET _u(0x0) +#define TIMER_INTS_ALARM_2_BITS _u(0x00000004) +#define TIMER_INTS_ALARM_2_MSB _u(2) +#define TIMER_INTS_ALARM_2_LSB _u(2) +#define TIMER_INTS_ALARM_2_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : TIMER_INTS_ALARM_1 +// Description : None +#define TIMER_INTS_ALARM_1_RESET _u(0x0) +#define TIMER_INTS_ALARM_1_BITS _u(0x00000002) +#define TIMER_INTS_ALARM_1_MSB _u(1) +#define TIMER_INTS_ALARM_1_LSB _u(1) +#define TIMER_INTS_ALARM_1_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : TIMER_INTS_ALARM_0 +// Description : None +#define TIMER_INTS_ALARM_0_RESET _u(0x0) +#define TIMER_INTS_ALARM_0_BITS _u(0x00000001) +#define TIMER_INTS_ALARM_0_MSB _u(0) +#define TIMER_INTS_ALARM_0_LSB _u(0) +#define TIMER_INTS_ALARM_0_ACCESS "RO" +// ============================================================================= +#endif // HARDWARE_REGS_TIMER_DEFINED diff --git a/arkanoid/pico/hardware/regs/uart.h b/arkanoid/pico/hardware/regs/uart.h new file mode 100644 index 0000000..409f598 --- /dev/null +++ b/arkanoid/pico/hardware/regs/uart.h @@ -0,0 +1,1148 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : UART +// Version : 1 +// Bus type : apb +// Description : None +// ============================================================================= +#ifndef HARDWARE_REGS_UART_DEFINED +#define HARDWARE_REGS_UART_DEFINED +// ============================================================================= +// Register : UART_UARTDR +// Description : Data Register, UARTDR +#define UART_UARTDR_OFFSET _u(0x00000000) +#define UART_UARTDR_BITS _u(0x00000fff) +#define UART_UARTDR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : UART_UARTDR_OE +// Description : Overrun error. This bit is set to 1 if data is received and the +// receive FIFO is already full. This is cleared to 0 once there +// is an empty space in the FIFO and a new character can be +// written to it. +#define UART_UARTDR_OE_RESET "-" +#define UART_UARTDR_OE_BITS _u(0x00000800) +#define UART_UARTDR_OE_MSB _u(11) +#define UART_UARTDR_OE_LSB _u(11) +#define UART_UARTDR_OE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTDR_BE +// Description : Break error. This bit is set to 1 if a break condition was +// detected, indicating that the received data input was held LOW +// for longer than a full-word transmission time (defined as +// start, data, parity and stop bits). In FIFO mode, this error is +// associated with the character at the top of the FIFO. When a +// break occurs, only one 0 character is loaded into the FIFO. The +// next character is only enabled after the receive data input +// goes to a 1 (marking state), and the next valid start bit is +// received. +#define UART_UARTDR_BE_RESET "-" +#define UART_UARTDR_BE_BITS _u(0x00000400) +#define UART_UARTDR_BE_MSB _u(10) +#define UART_UARTDR_BE_LSB _u(10) +#define UART_UARTDR_BE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTDR_PE +// Description : Parity error. When set to 1, it indicates that the parity of +// the received data character does not match the parity that the +// EPS and SPS bits in the Line Control Register, UARTLCR_H. In +// FIFO mode, this error is associated with the character at the +// top of the FIFO. +#define UART_UARTDR_PE_RESET "-" +#define UART_UARTDR_PE_BITS _u(0x00000200) +#define UART_UARTDR_PE_MSB _u(9) +#define UART_UARTDR_PE_LSB _u(9) +#define UART_UARTDR_PE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTDR_FE +// Description : Framing error. When set to 1, it indicates that the received +// character did not have a valid stop bit (a valid stop bit is +// 1). In FIFO mode, this error is associated with the character +// at the top of the FIFO. +#define UART_UARTDR_FE_RESET "-" +#define UART_UARTDR_FE_BITS _u(0x00000100) +#define UART_UARTDR_FE_MSB _u(8) +#define UART_UARTDR_FE_LSB _u(8) +#define UART_UARTDR_FE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTDR_DATA +// Description : Receive (read) data character. Transmit (write) data character. +#define UART_UARTDR_DATA_RESET "-" +#define UART_UARTDR_DATA_BITS _u(0x000000ff) +#define UART_UARTDR_DATA_MSB _u(7) +#define UART_UARTDR_DATA_LSB _u(0) +#define UART_UARTDR_DATA_ACCESS "RWF" +// ============================================================================= +// Register : UART_UARTRSR +// Description : Receive Status Register/Error Clear Register, UARTRSR/UARTECR +#define UART_UARTRSR_OFFSET _u(0x00000004) +#define UART_UARTRSR_BITS _u(0x0000000f) +#define UART_UARTRSR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : UART_UARTRSR_OE +// Description : Overrun error. This bit is set to 1 if data is received and the +// FIFO is already full. This bit is cleared to 0 by a write to +// UARTECR. The FIFO contents remain valid because no more data is +// written when the FIFO is full, only the contents of the shift +// register are overwritten. The CPU must now read the data, to +// empty the FIFO. +#define UART_UARTRSR_OE_RESET _u(0x0) +#define UART_UARTRSR_OE_BITS _u(0x00000008) +#define UART_UARTRSR_OE_MSB _u(3) +#define UART_UARTRSR_OE_LSB _u(3) +#define UART_UARTRSR_OE_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : UART_UARTRSR_BE +// Description : Break error. This bit is set to 1 if a break condition was +// detected, indicating that the received data input was held LOW +// for longer than a full-word transmission time (defined as +// start, data, parity, and stop bits). This bit is cleared to 0 +// after a write to UARTECR. In FIFO mode, this error is +// associated with the character at the top of the FIFO. When a +// break occurs, only one 0 character is loaded into the FIFO. The +// next character is only enabled after the receive data input +// goes to a 1 (marking state) and the next valid start bit is +// received. +#define UART_UARTRSR_BE_RESET _u(0x0) +#define UART_UARTRSR_BE_BITS _u(0x00000004) +#define UART_UARTRSR_BE_MSB _u(2) +#define UART_UARTRSR_BE_LSB _u(2) +#define UART_UARTRSR_BE_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : UART_UARTRSR_PE +// Description : Parity error. When set to 1, it indicates that the parity of +// the received data character does not match the parity that the +// EPS and SPS bits in the Line Control Register, UARTLCR_H. This +// bit is cleared to 0 by a write to UARTECR. In FIFO mode, this +// error is associated with the character at the top of the FIFO. +#define UART_UARTRSR_PE_RESET _u(0x0) +#define UART_UARTRSR_PE_BITS _u(0x00000002) +#define UART_UARTRSR_PE_MSB _u(1) +#define UART_UARTRSR_PE_LSB _u(1) +#define UART_UARTRSR_PE_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : UART_UARTRSR_FE +// Description : Framing error. When set to 1, it indicates that the received +// character did not have a valid stop bit (a valid stop bit is +// 1). This bit is cleared to 0 by a write to UARTECR. In FIFO +// mode, this error is associated with the character at the top of +// the FIFO. +#define UART_UARTRSR_FE_RESET _u(0x0) +#define UART_UARTRSR_FE_BITS _u(0x00000001) +#define UART_UARTRSR_FE_MSB _u(0) +#define UART_UARTRSR_FE_LSB _u(0) +#define UART_UARTRSR_FE_ACCESS "WC" +// ============================================================================= +// Register : UART_UARTFR +// Description : Flag Register, UARTFR +#define UART_UARTFR_OFFSET _u(0x00000018) +#define UART_UARTFR_BITS _u(0x000001ff) +#define UART_UARTFR_RESET _u(0x00000090) +// ----------------------------------------------------------------------------- +// Field : UART_UARTFR_RI +// Description : Ring indicator. This bit is the complement of the UART ring +// indicator, nUARTRI, modem status input. That is, the bit is 1 +// when nUARTRI is LOW. +#define UART_UARTFR_RI_RESET "-" +#define UART_UARTFR_RI_BITS _u(0x00000100) +#define UART_UARTFR_RI_MSB _u(8) +#define UART_UARTFR_RI_LSB _u(8) +#define UART_UARTFR_RI_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTFR_TXFE +// Description : Transmit FIFO empty. The meaning of this bit depends on the +// state of the FEN bit in the Line Control Register, UARTLCR_H. +// If the FIFO is disabled, this bit is set when the transmit +// holding register is empty. If the FIFO is enabled, the TXFE bit +// is set when the transmit FIFO is empty. This bit does not +// indicate if there is data in the transmit shift register. +#define UART_UARTFR_TXFE_RESET _u(0x1) +#define UART_UARTFR_TXFE_BITS _u(0x00000080) +#define UART_UARTFR_TXFE_MSB _u(7) +#define UART_UARTFR_TXFE_LSB _u(7) +#define UART_UARTFR_TXFE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTFR_RXFF +// Description : Receive FIFO full. The meaning of this bit depends on the state +// of the FEN bit in the UARTLCR_H Register. If the FIFO is +// disabled, this bit is set when the receive holding register is +// full. If the FIFO is enabled, the RXFF bit is set when the +// receive FIFO is full. +#define UART_UARTFR_RXFF_RESET _u(0x0) +#define UART_UARTFR_RXFF_BITS _u(0x00000040) +#define UART_UARTFR_RXFF_MSB _u(6) +#define UART_UARTFR_RXFF_LSB _u(6) +#define UART_UARTFR_RXFF_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTFR_TXFF +// Description : Transmit FIFO full. The meaning of this bit depends on the +// state of the FEN bit in the UARTLCR_H Register. If the FIFO is +// disabled, this bit is set when the transmit holding register is +// full. If the FIFO is enabled, the TXFF bit is set when the +// transmit FIFO is full. +#define UART_UARTFR_TXFF_RESET _u(0x0) +#define UART_UARTFR_TXFF_BITS _u(0x00000020) +#define UART_UARTFR_TXFF_MSB _u(5) +#define UART_UARTFR_TXFF_LSB _u(5) +#define UART_UARTFR_TXFF_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTFR_RXFE +// Description : Receive FIFO empty. The meaning of this bit depends on the +// state of the FEN bit in the UARTLCR_H Register. If the FIFO is +// disabled, this bit is set when the receive holding register is +// empty. If the FIFO is enabled, the RXFE bit is set when the +// receive FIFO is empty. +#define UART_UARTFR_RXFE_RESET _u(0x1) +#define UART_UARTFR_RXFE_BITS _u(0x00000010) +#define UART_UARTFR_RXFE_MSB _u(4) +#define UART_UARTFR_RXFE_LSB _u(4) +#define UART_UARTFR_RXFE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTFR_BUSY +// Description : UART busy. If this bit is set to 1, the UART is busy +// transmitting data. This bit remains set until the complete +// byte, including all the stop bits, has been sent from the shift +// register. This bit is set as soon as the transmit FIFO becomes +// non-empty, regardless of whether the UART is enabled or not. +#define UART_UARTFR_BUSY_RESET _u(0x0) +#define UART_UARTFR_BUSY_BITS _u(0x00000008) +#define UART_UARTFR_BUSY_MSB _u(3) +#define UART_UARTFR_BUSY_LSB _u(3) +#define UART_UARTFR_BUSY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTFR_DCD +// Description : Data carrier detect. This bit is the complement of the UART +// data carrier detect, nUARTDCD, modem status input. That is, the +// bit is 1 when nUARTDCD is LOW. +#define UART_UARTFR_DCD_RESET "-" +#define UART_UARTFR_DCD_BITS _u(0x00000004) +#define UART_UARTFR_DCD_MSB _u(2) +#define UART_UARTFR_DCD_LSB _u(2) +#define UART_UARTFR_DCD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTFR_DSR +// Description : Data set ready. This bit is the complement of the UART data set +// ready, nUARTDSR, modem status input. That is, the bit is 1 when +// nUARTDSR is LOW. +#define UART_UARTFR_DSR_RESET "-" +#define UART_UARTFR_DSR_BITS _u(0x00000002) +#define UART_UARTFR_DSR_MSB _u(1) +#define UART_UARTFR_DSR_LSB _u(1) +#define UART_UARTFR_DSR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTFR_CTS +// Description : Clear to send. This bit is the complement of the UART clear to +// send, nUARTCTS, modem status input. That is, the bit is 1 when +// nUARTCTS is LOW. +#define UART_UARTFR_CTS_RESET "-" +#define UART_UARTFR_CTS_BITS _u(0x00000001) +#define UART_UARTFR_CTS_MSB _u(0) +#define UART_UARTFR_CTS_LSB _u(0) +#define UART_UARTFR_CTS_ACCESS "RO" +// ============================================================================= +// Register : UART_UARTILPR +// Description : IrDA Low-Power Counter Register, UARTILPR +#define UART_UARTILPR_OFFSET _u(0x00000020) +#define UART_UARTILPR_BITS _u(0x000000ff) +#define UART_UARTILPR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : UART_UARTILPR_ILPDVSR +// Description : 8-bit low-power divisor value. These bits are cleared to 0 at +// reset. +#define UART_UARTILPR_ILPDVSR_RESET _u(0x00) +#define UART_UARTILPR_ILPDVSR_BITS _u(0x000000ff) +#define UART_UARTILPR_ILPDVSR_MSB _u(7) +#define UART_UARTILPR_ILPDVSR_LSB _u(0) +#define UART_UARTILPR_ILPDVSR_ACCESS "RW" +// ============================================================================= +// Register : UART_UARTIBRD +// Description : Integer Baud Rate Register, UARTIBRD +#define UART_UARTIBRD_OFFSET _u(0x00000024) +#define UART_UARTIBRD_BITS _u(0x0000ffff) +#define UART_UARTIBRD_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : UART_UARTIBRD_BAUD_DIVINT +// Description : The integer baud rate divisor. These bits are cleared to 0 on +// reset. +#define UART_UARTIBRD_BAUD_DIVINT_RESET _u(0x0000) +#define UART_UARTIBRD_BAUD_DIVINT_BITS _u(0x0000ffff) +#define UART_UARTIBRD_BAUD_DIVINT_MSB _u(15) +#define UART_UARTIBRD_BAUD_DIVINT_LSB _u(0) +#define UART_UARTIBRD_BAUD_DIVINT_ACCESS "RW" +// ============================================================================= +// Register : UART_UARTFBRD +// Description : Fractional Baud Rate Register, UARTFBRD +#define UART_UARTFBRD_OFFSET _u(0x00000028) +#define UART_UARTFBRD_BITS _u(0x0000003f) +#define UART_UARTFBRD_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : UART_UARTFBRD_BAUD_DIVFRAC +// Description : The fractional baud rate divisor. These bits are cleared to 0 +// on reset. +#define UART_UARTFBRD_BAUD_DIVFRAC_RESET _u(0x00) +#define UART_UARTFBRD_BAUD_DIVFRAC_BITS _u(0x0000003f) +#define UART_UARTFBRD_BAUD_DIVFRAC_MSB _u(5) +#define UART_UARTFBRD_BAUD_DIVFRAC_LSB _u(0) +#define UART_UARTFBRD_BAUD_DIVFRAC_ACCESS "RW" +// ============================================================================= +// Register : UART_UARTLCR_H +// Description : Line Control Register, UARTLCR_H +#define UART_UARTLCR_H_OFFSET _u(0x0000002c) +#define UART_UARTLCR_H_BITS _u(0x000000ff) +#define UART_UARTLCR_H_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : UART_UARTLCR_H_SPS +// Description : Stick parity select. 0 = stick parity is disabled 1 = either: * +// if the EPS bit is 0 then the parity bit is transmitted and +// checked as a 1 * if the EPS bit is 1 then the parity bit is +// transmitted and checked as a 0. This bit has no effect when the +// PEN bit disables parity checking and generation. +#define UART_UARTLCR_H_SPS_RESET _u(0x0) +#define UART_UARTLCR_H_SPS_BITS _u(0x00000080) +#define UART_UARTLCR_H_SPS_MSB _u(7) +#define UART_UARTLCR_H_SPS_LSB _u(7) +#define UART_UARTLCR_H_SPS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTLCR_H_WLEN +// Description : Word length. These bits indicate the number of data bits +// transmitted or received in a frame as follows: b11 = 8 bits b10 +// = 7 bits b01 = 6 bits b00 = 5 bits. +#define UART_UARTLCR_H_WLEN_RESET _u(0x0) +#define UART_UARTLCR_H_WLEN_BITS _u(0x00000060) +#define UART_UARTLCR_H_WLEN_MSB _u(6) +#define UART_UARTLCR_H_WLEN_LSB _u(5) +#define UART_UARTLCR_H_WLEN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTLCR_H_FEN +// Description : Enable FIFOs: 0 = FIFOs are disabled (character mode) that is, +// the FIFOs become 1-byte-deep holding registers 1 = transmit and +// receive FIFO buffers are enabled (FIFO mode). +#define UART_UARTLCR_H_FEN_RESET _u(0x0) +#define UART_UARTLCR_H_FEN_BITS _u(0x00000010) +#define UART_UARTLCR_H_FEN_MSB _u(4) +#define UART_UARTLCR_H_FEN_LSB _u(4) +#define UART_UARTLCR_H_FEN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTLCR_H_STP2 +// Description : Two stop bits select. If this bit is set to 1, two stop bits +// are transmitted at the end of the frame. The receive logic does +// not check for two stop bits being received. +#define UART_UARTLCR_H_STP2_RESET _u(0x0) +#define UART_UARTLCR_H_STP2_BITS _u(0x00000008) +#define UART_UARTLCR_H_STP2_MSB _u(3) +#define UART_UARTLCR_H_STP2_LSB _u(3) +#define UART_UARTLCR_H_STP2_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTLCR_H_EPS +// Description : Even parity select. Controls the type of parity the UART uses +// during transmission and reception: 0 = odd parity. The UART +// generates or checks for an odd number of 1s in the data and +// parity bits. 1 = even parity. The UART generates or checks for +// an even number of 1s in the data and parity bits. This bit has +// no effect when the PEN bit disables parity checking and +// generation. +#define UART_UARTLCR_H_EPS_RESET _u(0x0) +#define UART_UARTLCR_H_EPS_BITS _u(0x00000004) +#define UART_UARTLCR_H_EPS_MSB _u(2) +#define UART_UARTLCR_H_EPS_LSB _u(2) +#define UART_UARTLCR_H_EPS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTLCR_H_PEN +// Description : Parity enable: 0 = parity is disabled and no parity bit added +// to the data frame 1 = parity checking and generation is +// enabled. +#define UART_UARTLCR_H_PEN_RESET _u(0x0) +#define UART_UARTLCR_H_PEN_BITS _u(0x00000002) +#define UART_UARTLCR_H_PEN_MSB _u(1) +#define UART_UARTLCR_H_PEN_LSB _u(1) +#define UART_UARTLCR_H_PEN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTLCR_H_BRK +// Description : Send break. If this bit is set to 1, a low-level is continually +// output on the UARTTXD output, after completing transmission of +// the current character. For the proper execution of the break +// command, the software must set this bit for at least two +// complete frames. For normal use, this bit must be cleared to 0. +#define UART_UARTLCR_H_BRK_RESET _u(0x0) +#define UART_UARTLCR_H_BRK_BITS _u(0x00000001) +#define UART_UARTLCR_H_BRK_MSB _u(0) +#define UART_UARTLCR_H_BRK_LSB _u(0) +#define UART_UARTLCR_H_BRK_ACCESS "RW" +// ============================================================================= +// Register : UART_UARTCR +// Description : Control Register, UARTCR +#define UART_UARTCR_OFFSET _u(0x00000030) +#define UART_UARTCR_BITS _u(0x0000ff87) +#define UART_UARTCR_RESET _u(0x00000300) +// ----------------------------------------------------------------------------- +// Field : UART_UARTCR_CTSEN +// Description : CTS hardware flow control enable. If this bit is set to 1, CTS +// hardware flow control is enabled. Data is only transmitted when +// the nUARTCTS signal is asserted. +#define UART_UARTCR_CTSEN_RESET _u(0x0) +#define UART_UARTCR_CTSEN_BITS _u(0x00008000) +#define UART_UARTCR_CTSEN_MSB _u(15) +#define UART_UARTCR_CTSEN_LSB _u(15) +#define UART_UARTCR_CTSEN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTCR_RTSEN +// Description : RTS hardware flow control enable. If this bit is set to 1, RTS +// hardware flow control is enabled. Data is only requested when +// there is space in the receive FIFO for it to be received. +#define UART_UARTCR_RTSEN_RESET _u(0x0) +#define UART_UARTCR_RTSEN_BITS _u(0x00004000) +#define UART_UARTCR_RTSEN_MSB _u(14) +#define UART_UARTCR_RTSEN_LSB _u(14) +#define UART_UARTCR_RTSEN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTCR_OUT2 +// Description : This bit is the complement of the UART Out2 (nUARTOut2) modem +// status output. That is, when the bit is programmed to a 1, the +// output is 0. For DTE this can be used as Ring Indicator (RI). +#define UART_UARTCR_OUT2_RESET _u(0x0) +#define UART_UARTCR_OUT2_BITS _u(0x00002000) +#define UART_UARTCR_OUT2_MSB _u(13) +#define UART_UARTCR_OUT2_LSB _u(13) +#define UART_UARTCR_OUT2_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTCR_OUT1 +// Description : This bit is the complement of the UART Out1 (nUARTOut1) modem +// status output. That is, when the bit is programmed to a 1 the +// output is 0. For DTE this can be used as Data Carrier Detect +// (DCD). +#define UART_UARTCR_OUT1_RESET _u(0x0) +#define UART_UARTCR_OUT1_BITS _u(0x00001000) +#define UART_UARTCR_OUT1_MSB _u(12) +#define UART_UARTCR_OUT1_LSB _u(12) +#define UART_UARTCR_OUT1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTCR_RTS +// Description : Request to send. This bit is the complement of the UART request +// to send, nUARTRTS, modem status output. That is, when the bit +// is programmed to a 1 then nUARTRTS is LOW. +#define UART_UARTCR_RTS_RESET _u(0x0) +#define UART_UARTCR_RTS_BITS _u(0x00000800) +#define UART_UARTCR_RTS_MSB _u(11) +#define UART_UARTCR_RTS_LSB _u(11) +#define UART_UARTCR_RTS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTCR_DTR +// Description : Data transmit ready. This bit is the complement of the UART +// data transmit ready, nUARTDTR, modem status output. That is, +// when the bit is programmed to a 1 then nUARTDTR is LOW. +#define UART_UARTCR_DTR_RESET _u(0x0) +#define UART_UARTCR_DTR_BITS _u(0x00000400) +#define UART_UARTCR_DTR_MSB _u(10) +#define UART_UARTCR_DTR_LSB _u(10) +#define UART_UARTCR_DTR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTCR_RXE +// Description : Receive enable. If this bit is set to 1, the receive section of +// the UART is enabled. Data reception occurs for either UART +// signals or SIR signals depending on the setting of the SIREN +// bit. When the UART is disabled in the middle of reception, it +// completes the current character before stopping. +#define UART_UARTCR_RXE_RESET _u(0x1) +#define UART_UARTCR_RXE_BITS _u(0x00000200) +#define UART_UARTCR_RXE_MSB _u(9) +#define UART_UARTCR_RXE_LSB _u(9) +#define UART_UARTCR_RXE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTCR_TXE +// Description : Transmit enable. If this bit is set to 1, the transmit section +// of the UART is enabled. Data transmission occurs for either +// UART signals, or SIR signals depending on the setting of the +// SIREN bit. When the UART is disabled in the middle of +// transmission, it completes the current character before +// stopping. +#define UART_UARTCR_TXE_RESET _u(0x1) +#define UART_UARTCR_TXE_BITS _u(0x00000100) +#define UART_UARTCR_TXE_MSB _u(8) +#define UART_UARTCR_TXE_LSB _u(8) +#define UART_UARTCR_TXE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTCR_LBE +// Description : Loopback enable. If this bit is set to 1 and the SIREN bit is +// set to 1 and the SIRTEST bit in the Test Control Register, +// UARTTCR is set to 1, then the nSIROUT path is inverted, and fed +// through to the SIRIN path. The SIRTEST bit in the test register +// must be set to 1 to override the normal half-duplex SIR +// operation. This must be the requirement for accessing the test +// registers during normal operation, and SIRTEST must be cleared +// to 0 when loopback testing is finished. This feature reduces +// the amount of external coupling required during system test. If +// this bit is set to 1, and the SIRTEST bit is set to 0, the +// UARTTXD path is fed through to the UARTRXD path. In either SIR +// mode or UART mode, when this bit is set, the modem outputs are +// also fed through to the modem inputs. This bit is cleared to 0 +// on reset, to disable loopback. +#define UART_UARTCR_LBE_RESET _u(0x0) +#define UART_UARTCR_LBE_BITS _u(0x00000080) +#define UART_UARTCR_LBE_MSB _u(7) +#define UART_UARTCR_LBE_LSB _u(7) +#define UART_UARTCR_LBE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTCR_SIRLP +// Description : SIR low-power IrDA mode. This bit selects the IrDA encoding +// mode. If this bit is cleared to 0, low-level bits are +// transmitted as an active high pulse with a width of 3 / 16th of +// the bit period. If this bit is set to 1, low-level bits are +// transmitted with a pulse width that is 3 times the period of +// the IrLPBaud16 input signal, regardless of the selected bit +// rate. Setting this bit uses less power, but might reduce +// transmission distances. +#define UART_UARTCR_SIRLP_RESET _u(0x0) +#define UART_UARTCR_SIRLP_BITS _u(0x00000004) +#define UART_UARTCR_SIRLP_MSB _u(2) +#define UART_UARTCR_SIRLP_LSB _u(2) +#define UART_UARTCR_SIRLP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTCR_SIREN +// Description : SIR enable: 0 = IrDA SIR ENDEC is disabled. nSIROUT remains LOW +// (no light pulse generated), and signal transitions on SIRIN +// have no effect. 1 = IrDA SIR ENDEC is enabled. Data is +// transmitted and received on nSIROUT and SIRIN. UARTTXD remains +// HIGH, in the marking state. Signal transitions on UARTRXD or +// modem status inputs have no effect. This bit has no effect if +// the UARTEN bit disables the UART. +#define UART_UARTCR_SIREN_RESET _u(0x0) +#define UART_UARTCR_SIREN_BITS _u(0x00000002) +#define UART_UARTCR_SIREN_MSB _u(1) +#define UART_UARTCR_SIREN_LSB _u(1) +#define UART_UARTCR_SIREN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTCR_UARTEN +// Description : UART enable: 0 = UART is disabled. If the UART is disabled in +// the middle of transmission or reception, it completes the +// current character before stopping. 1 = the UART is enabled. +// Data transmission and reception occurs for either UART signals +// or SIR signals depending on the setting of the SIREN bit. +#define UART_UARTCR_UARTEN_RESET _u(0x0) +#define UART_UARTCR_UARTEN_BITS _u(0x00000001) +#define UART_UARTCR_UARTEN_MSB _u(0) +#define UART_UARTCR_UARTEN_LSB _u(0) +#define UART_UARTCR_UARTEN_ACCESS "RW" +// ============================================================================= +// Register : UART_UARTIFLS +// Description : Interrupt FIFO Level Select Register, UARTIFLS +#define UART_UARTIFLS_OFFSET _u(0x00000034) +#define UART_UARTIFLS_BITS _u(0x0000003f) +#define UART_UARTIFLS_RESET _u(0x00000012) +// ----------------------------------------------------------------------------- +// Field : UART_UARTIFLS_RXIFLSEL +// Description : Receive interrupt FIFO level select. The trigger points for the +// receive interrupt are as follows: b000 = Receive FIFO becomes +// >= 1 / 8 full b001 = Receive FIFO becomes >= 1 / 4 full b010 = +// Receive FIFO becomes >= 1 / 2 full b011 = Receive FIFO becomes +// >= 3 / 4 full b100 = Receive FIFO becomes >= 7 / 8 full +// b101-b111 = reserved. +#define UART_UARTIFLS_RXIFLSEL_RESET _u(0x2) +#define UART_UARTIFLS_RXIFLSEL_BITS _u(0x00000038) +#define UART_UARTIFLS_RXIFLSEL_MSB _u(5) +#define UART_UARTIFLS_RXIFLSEL_LSB _u(3) +#define UART_UARTIFLS_RXIFLSEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTIFLS_TXIFLSEL +// Description : Transmit interrupt FIFO level select. The trigger points for +// the transmit interrupt are as follows: b000 = Transmit FIFO +// becomes <= 1 / 8 full b001 = Transmit FIFO becomes <= 1 / 4 +// full b010 = Transmit FIFO becomes <= 1 / 2 full b011 = Transmit +// FIFO becomes <= 3 / 4 full b100 = Transmit FIFO becomes <= 7 / +// 8 full b101-b111 = reserved. +#define UART_UARTIFLS_TXIFLSEL_RESET _u(0x2) +#define UART_UARTIFLS_TXIFLSEL_BITS _u(0x00000007) +#define UART_UARTIFLS_TXIFLSEL_MSB _u(2) +#define UART_UARTIFLS_TXIFLSEL_LSB _u(0) +#define UART_UARTIFLS_TXIFLSEL_ACCESS "RW" +// ============================================================================= +// Register : UART_UARTIMSC +// Description : Interrupt Mask Set/Clear Register, UARTIMSC +#define UART_UARTIMSC_OFFSET _u(0x00000038) +#define UART_UARTIMSC_BITS _u(0x000007ff) +#define UART_UARTIMSC_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : UART_UARTIMSC_OEIM +// Description : Overrun error interrupt mask. A read returns the current mask +// for the UARTOEINTR interrupt. On a write of 1, the mask of the +// UARTOEINTR interrupt is set. A write of 0 clears the mask. +#define UART_UARTIMSC_OEIM_RESET _u(0x0) +#define UART_UARTIMSC_OEIM_BITS _u(0x00000400) +#define UART_UARTIMSC_OEIM_MSB _u(10) +#define UART_UARTIMSC_OEIM_LSB _u(10) +#define UART_UARTIMSC_OEIM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTIMSC_BEIM +// Description : Break error interrupt mask. A read returns the current mask for +// the UARTBEINTR interrupt. On a write of 1, the mask of the +// UARTBEINTR interrupt is set. A write of 0 clears the mask. +#define UART_UARTIMSC_BEIM_RESET _u(0x0) +#define UART_UARTIMSC_BEIM_BITS _u(0x00000200) +#define UART_UARTIMSC_BEIM_MSB _u(9) +#define UART_UARTIMSC_BEIM_LSB _u(9) +#define UART_UARTIMSC_BEIM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTIMSC_PEIM +// Description : Parity error interrupt mask. A read returns the current mask +// for the UARTPEINTR interrupt. On a write of 1, the mask of the +// UARTPEINTR interrupt is set. A write of 0 clears the mask. +#define UART_UARTIMSC_PEIM_RESET _u(0x0) +#define UART_UARTIMSC_PEIM_BITS _u(0x00000100) +#define UART_UARTIMSC_PEIM_MSB _u(8) +#define UART_UARTIMSC_PEIM_LSB _u(8) +#define UART_UARTIMSC_PEIM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTIMSC_FEIM +// Description : Framing error interrupt mask. A read returns the current mask +// for the UARTFEINTR interrupt. On a write of 1, the mask of the +// UARTFEINTR interrupt is set. A write of 0 clears the mask. +#define UART_UARTIMSC_FEIM_RESET _u(0x0) +#define UART_UARTIMSC_FEIM_BITS _u(0x00000080) +#define UART_UARTIMSC_FEIM_MSB _u(7) +#define UART_UARTIMSC_FEIM_LSB _u(7) +#define UART_UARTIMSC_FEIM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTIMSC_RTIM +// Description : Receive timeout interrupt mask. A read returns the current mask +// for the UARTRTINTR interrupt. On a write of 1, the mask of the +// UARTRTINTR interrupt is set. A write of 0 clears the mask. +#define UART_UARTIMSC_RTIM_RESET _u(0x0) +#define UART_UARTIMSC_RTIM_BITS _u(0x00000040) +#define UART_UARTIMSC_RTIM_MSB _u(6) +#define UART_UARTIMSC_RTIM_LSB _u(6) +#define UART_UARTIMSC_RTIM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTIMSC_TXIM +// Description : Transmit interrupt mask. A read returns the current mask for +// the UARTTXINTR interrupt. On a write of 1, the mask of the +// UARTTXINTR interrupt is set. A write of 0 clears the mask. +#define UART_UARTIMSC_TXIM_RESET _u(0x0) +#define UART_UARTIMSC_TXIM_BITS _u(0x00000020) +#define UART_UARTIMSC_TXIM_MSB _u(5) +#define UART_UARTIMSC_TXIM_LSB _u(5) +#define UART_UARTIMSC_TXIM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTIMSC_RXIM +// Description : Receive interrupt mask. A read returns the current mask for the +// UARTRXINTR interrupt. On a write of 1, the mask of the +// UARTRXINTR interrupt is set. A write of 0 clears the mask. +#define UART_UARTIMSC_RXIM_RESET _u(0x0) +#define UART_UARTIMSC_RXIM_BITS _u(0x00000010) +#define UART_UARTIMSC_RXIM_MSB _u(4) +#define UART_UARTIMSC_RXIM_LSB _u(4) +#define UART_UARTIMSC_RXIM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTIMSC_DSRMIM +// Description : nUARTDSR modem interrupt mask. A read returns the current mask +// for the UARTDSRINTR interrupt. On a write of 1, the mask of the +// UARTDSRINTR interrupt is set. A write of 0 clears the mask. +#define UART_UARTIMSC_DSRMIM_RESET _u(0x0) +#define UART_UARTIMSC_DSRMIM_BITS _u(0x00000008) +#define UART_UARTIMSC_DSRMIM_MSB _u(3) +#define UART_UARTIMSC_DSRMIM_LSB _u(3) +#define UART_UARTIMSC_DSRMIM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTIMSC_DCDMIM +// Description : nUARTDCD modem interrupt mask. A read returns the current mask +// for the UARTDCDINTR interrupt. On a write of 1, the mask of the +// UARTDCDINTR interrupt is set. A write of 0 clears the mask. +#define UART_UARTIMSC_DCDMIM_RESET _u(0x0) +#define UART_UARTIMSC_DCDMIM_BITS _u(0x00000004) +#define UART_UARTIMSC_DCDMIM_MSB _u(2) +#define UART_UARTIMSC_DCDMIM_LSB _u(2) +#define UART_UARTIMSC_DCDMIM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTIMSC_CTSMIM +// Description : nUARTCTS modem interrupt mask. A read returns the current mask +// for the UARTCTSINTR interrupt. On a write of 1, the mask of the +// UARTCTSINTR interrupt is set. A write of 0 clears the mask. +#define UART_UARTIMSC_CTSMIM_RESET _u(0x0) +#define UART_UARTIMSC_CTSMIM_BITS _u(0x00000002) +#define UART_UARTIMSC_CTSMIM_MSB _u(1) +#define UART_UARTIMSC_CTSMIM_LSB _u(1) +#define UART_UARTIMSC_CTSMIM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTIMSC_RIMIM +// Description : nUARTRI modem interrupt mask. A read returns the current mask +// for the UARTRIINTR interrupt. On a write of 1, the mask of the +// UARTRIINTR interrupt is set. A write of 0 clears the mask. +#define UART_UARTIMSC_RIMIM_RESET _u(0x0) +#define UART_UARTIMSC_RIMIM_BITS _u(0x00000001) +#define UART_UARTIMSC_RIMIM_MSB _u(0) +#define UART_UARTIMSC_RIMIM_LSB _u(0) +#define UART_UARTIMSC_RIMIM_ACCESS "RW" +// ============================================================================= +// Register : UART_UARTRIS +// Description : Raw Interrupt Status Register, UARTRIS +#define UART_UARTRIS_OFFSET _u(0x0000003c) +#define UART_UARTRIS_BITS _u(0x000007ff) +#define UART_UARTRIS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : UART_UARTRIS_OERIS +// Description : Overrun error interrupt status. Returns the raw interrupt state +// of the UARTOEINTR interrupt. +#define UART_UARTRIS_OERIS_RESET _u(0x0) +#define UART_UARTRIS_OERIS_BITS _u(0x00000400) +#define UART_UARTRIS_OERIS_MSB _u(10) +#define UART_UARTRIS_OERIS_LSB _u(10) +#define UART_UARTRIS_OERIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTRIS_BERIS +// Description : Break error interrupt status. Returns the raw interrupt state +// of the UARTBEINTR interrupt. +#define UART_UARTRIS_BERIS_RESET _u(0x0) +#define UART_UARTRIS_BERIS_BITS _u(0x00000200) +#define UART_UARTRIS_BERIS_MSB _u(9) +#define UART_UARTRIS_BERIS_LSB _u(9) +#define UART_UARTRIS_BERIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTRIS_PERIS +// Description : Parity error interrupt status. Returns the raw interrupt state +// of the UARTPEINTR interrupt. +#define UART_UARTRIS_PERIS_RESET _u(0x0) +#define UART_UARTRIS_PERIS_BITS _u(0x00000100) +#define UART_UARTRIS_PERIS_MSB _u(8) +#define UART_UARTRIS_PERIS_LSB _u(8) +#define UART_UARTRIS_PERIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTRIS_FERIS +// Description : Framing error interrupt status. Returns the raw interrupt state +// of the UARTFEINTR interrupt. +#define UART_UARTRIS_FERIS_RESET _u(0x0) +#define UART_UARTRIS_FERIS_BITS _u(0x00000080) +#define UART_UARTRIS_FERIS_MSB _u(7) +#define UART_UARTRIS_FERIS_LSB _u(7) +#define UART_UARTRIS_FERIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTRIS_RTRIS +// Description : Receive timeout interrupt status. Returns the raw interrupt +// state of the UARTRTINTR interrupt. a +#define UART_UARTRIS_RTRIS_RESET _u(0x0) +#define UART_UARTRIS_RTRIS_BITS _u(0x00000040) +#define UART_UARTRIS_RTRIS_MSB _u(6) +#define UART_UARTRIS_RTRIS_LSB _u(6) +#define UART_UARTRIS_RTRIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTRIS_TXRIS +// Description : Transmit interrupt status. Returns the raw interrupt state of +// the UARTTXINTR interrupt. +#define UART_UARTRIS_TXRIS_RESET _u(0x0) +#define UART_UARTRIS_TXRIS_BITS _u(0x00000020) +#define UART_UARTRIS_TXRIS_MSB _u(5) +#define UART_UARTRIS_TXRIS_LSB _u(5) +#define UART_UARTRIS_TXRIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTRIS_RXRIS +// Description : Receive interrupt status. Returns the raw interrupt state of +// the UARTRXINTR interrupt. +#define UART_UARTRIS_RXRIS_RESET _u(0x0) +#define UART_UARTRIS_RXRIS_BITS _u(0x00000010) +#define UART_UARTRIS_RXRIS_MSB _u(4) +#define UART_UARTRIS_RXRIS_LSB _u(4) +#define UART_UARTRIS_RXRIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTRIS_DSRRMIS +// Description : nUARTDSR modem interrupt status. Returns the raw interrupt +// state of the UARTDSRINTR interrupt. +#define UART_UARTRIS_DSRRMIS_RESET "-" +#define UART_UARTRIS_DSRRMIS_BITS _u(0x00000008) +#define UART_UARTRIS_DSRRMIS_MSB _u(3) +#define UART_UARTRIS_DSRRMIS_LSB _u(3) +#define UART_UARTRIS_DSRRMIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTRIS_DCDRMIS +// Description : nUARTDCD modem interrupt status. Returns the raw interrupt +// state of the UARTDCDINTR interrupt. +#define UART_UARTRIS_DCDRMIS_RESET "-" +#define UART_UARTRIS_DCDRMIS_BITS _u(0x00000004) +#define UART_UARTRIS_DCDRMIS_MSB _u(2) +#define UART_UARTRIS_DCDRMIS_LSB _u(2) +#define UART_UARTRIS_DCDRMIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTRIS_CTSRMIS +// Description : nUARTCTS modem interrupt status. Returns the raw interrupt +// state of the UARTCTSINTR interrupt. +#define UART_UARTRIS_CTSRMIS_RESET "-" +#define UART_UARTRIS_CTSRMIS_BITS _u(0x00000002) +#define UART_UARTRIS_CTSRMIS_MSB _u(1) +#define UART_UARTRIS_CTSRMIS_LSB _u(1) +#define UART_UARTRIS_CTSRMIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTRIS_RIRMIS +// Description : nUARTRI modem interrupt status. Returns the raw interrupt state +// of the UARTRIINTR interrupt. +#define UART_UARTRIS_RIRMIS_RESET "-" +#define UART_UARTRIS_RIRMIS_BITS _u(0x00000001) +#define UART_UARTRIS_RIRMIS_MSB _u(0) +#define UART_UARTRIS_RIRMIS_LSB _u(0) +#define UART_UARTRIS_RIRMIS_ACCESS "RO" +// ============================================================================= +// Register : UART_UARTMIS +// Description : Masked Interrupt Status Register, UARTMIS +#define UART_UARTMIS_OFFSET _u(0x00000040) +#define UART_UARTMIS_BITS _u(0x000007ff) +#define UART_UARTMIS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : UART_UARTMIS_OEMIS +// Description : Overrun error masked interrupt status. Returns the masked +// interrupt state of the UARTOEINTR interrupt. +#define UART_UARTMIS_OEMIS_RESET _u(0x0) +#define UART_UARTMIS_OEMIS_BITS _u(0x00000400) +#define UART_UARTMIS_OEMIS_MSB _u(10) +#define UART_UARTMIS_OEMIS_LSB _u(10) +#define UART_UARTMIS_OEMIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTMIS_BEMIS +// Description : Break error masked interrupt status. Returns the masked +// interrupt state of the UARTBEINTR interrupt. +#define UART_UARTMIS_BEMIS_RESET _u(0x0) +#define UART_UARTMIS_BEMIS_BITS _u(0x00000200) +#define UART_UARTMIS_BEMIS_MSB _u(9) +#define UART_UARTMIS_BEMIS_LSB _u(9) +#define UART_UARTMIS_BEMIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTMIS_PEMIS +// Description : Parity error masked interrupt status. Returns the masked +// interrupt state of the UARTPEINTR interrupt. +#define UART_UARTMIS_PEMIS_RESET _u(0x0) +#define UART_UARTMIS_PEMIS_BITS _u(0x00000100) +#define UART_UARTMIS_PEMIS_MSB _u(8) +#define UART_UARTMIS_PEMIS_LSB _u(8) +#define UART_UARTMIS_PEMIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTMIS_FEMIS +// Description : Framing error masked interrupt status. Returns the masked +// interrupt state of the UARTFEINTR interrupt. +#define UART_UARTMIS_FEMIS_RESET _u(0x0) +#define UART_UARTMIS_FEMIS_BITS _u(0x00000080) +#define UART_UARTMIS_FEMIS_MSB _u(7) +#define UART_UARTMIS_FEMIS_LSB _u(7) +#define UART_UARTMIS_FEMIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTMIS_RTMIS +// Description : Receive timeout masked interrupt status. Returns the masked +// interrupt state of the UARTRTINTR interrupt. +#define UART_UARTMIS_RTMIS_RESET _u(0x0) +#define UART_UARTMIS_RTMIS_BITS _u(0x00000040) +#define UART_UARTMIS_RTMIS_MSB _u(6) +#define UART_UARTMIS_RTMIS_LSB _u(6) +#define UART_UARTMIS_RTMIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTMIS_TXMIS +// Description : Transmit masked interrupt status. Returns the masked interrupt +// state of the UARTTXINTR interrupt. +#define UART_UARTMIS_TXMIS_RESET _u(0x0) +#define UART_UARTMIS_TXMIS_BITS _u(0x00000020) +#define UART_UARTMIS_TXMIS_MSB _u(5) +#define UART_UARTMIS_TXMIS_LSB _u(5) +#define UART_UARTMIS_TXMIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTMIS_RXMIS +// Description : Receive masked interrupt status. Returns the masked interrupt +// state of the UARTRXINTR interrupt. +#define UART_UARTMIS_RXMIS_RESET _u(0x0) +#define UART_UARTMIS_RXMIS_BITS _u(0x00000010) +#define UART_UARTMIS_RXMIS_MSB _u(4) +#define UART_UARTMIS_RXMIS_LSB _u(4) +#define UART_UARTMIS_RXMIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTMIS_DSRMMIS +// Description : nUARTDSR modem masked interrupt status. Returns the masked +// interrupt state of the UARTDSRINTR interrupt. +#define UART_UARTMIS_DSRMMIS_RESET "-" +#define UART_UARTMIS_DSRMMIS_BITS _u(0x00000008) +#define UART_UARTMIS_DSRMMIS_MSB _u(3) +#define UART_UARTMIS_DSRMMIS_LSB _u(3) +#define UART_UARTMIS_DSRMMIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTMIS_DCDMMIS +// Description : nUARTDCD modem masked interrupt status. Returns the masked +// interrupt state of the UARTDCDINTR interrupt. +#define UART_UARTMIS_DCDMMIS_RESET "-" +#define UART_UARTMIS_DCDMMIS_BITS _u(0x00000004) +#define UART_UARTMIS_DCDMMIS_MSB _u(2) +#define UART_UARTMIS_DCDMMIS_LSB _u(2) +#define UART_UARTMIS_DCDMMIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTMIS_CTSMMIS +// Description : nUARTCTS modem masked interrupt status. Returns the masked +// interrupt state of the UARTCTSINTR interrupt. +#define UART_UARTMIS_CTSMMIS_RESET "-" +#define UART_UARTMIS_CTSMMIS_BITS _u(0x00000002) +#define UART_UARTMIS_CTSMMIS_MSB _u(1) +#define UART_UARTMIS_CTSMMIS_LSB _u(1) +#define UART_UARTMIS_CTSMMIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTMIS_RIMMIS +// Description : nUARTRI modem masked interrupt status. Returns the masked +// interrupt state of the UARTRIINTR interrupt. +#define UART_UARTMIS_RIMMIS_RESET "-" +#define UART_UARTMIS_RIMMIS_BITS _u(0x00000001) +#define UART_UARTMIS_RIMMIS_MSB _u(0) +#define UART_UARTMIS_RIMMIS_LSB _u(0) +#define UART_UARTMIS_RIMMIS_ACCESS "RO" +// ============================================================================= +// Register : UART_UARTICR +// Description : Interrupt Clear Register, UARTICR +#define UART_UARTICR_OFFSET _u(0x00000044) +#define UART_UARTICR_BITS _u(0x000007ff) +#define UART_UARTICR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : UART_UARTICR_OEIC +// Description : Overrun error interrupt clear. Clears the UARTOEINTR interrupt. +#define UART_UARTICR_OEIC_RESET "-" +#define UART_UARTICR_OEIC_BITS _u(0x00000400) +#define UART_UARTICR_OEIC_MSB _u(10) +#define UART_UARTICR_OEIC_LSB _u(10) +#define UART_UARTICR_OEIC_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : UART_UARTICR_BEIC +// Description : Break error interrupt clear. Clears the UARTBEINTR interrupt. +#define UART_UARTICR_BEIC_RESET "-" +#define UART_UARTICR_BEIC_BITS _u(0x00000200) +#define UART_UARTICR_BEIC_MSB _u(9) +#define UART_UARTICR_BEIC_LSB _u(9) +#define UART_UARTICR_BEIC_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : UART_UARTICR_PEIC +// Description : Parity error interrupt clear. Clears the UARTPEINTR interrupt. +#define UART_UARTICR_PEIC_RESET "-" +#define UART_UARTICR_PEIC_BITS _u(0x00000100) +#define UART_UARTICR_PEIC_MSB _u(8) +#define UART_UARTICR_PEIC_LSB _u(8) +#define UART_UARTICR_PEIC_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : UART_UARTICR_FEIC +// Description : Framing error interrupt clear. Clears the UARTFEINTR interrupt. +#define UART_UARTICR_FEIC_RESET "-" +#define UART_UARTICR_FEIC_BITS _u(0x00000080) +#define UART_UARTICR_FEIC_MSB _u(7) +#define UART_UARTICR_FEIC_LSB _u(7) +#define UART_UARTICR_FEIC_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : UART_UARTICR_RTIC +// Description : Receive timeout interrupt clear. Clears the UARTRTINTR +// interrupt. +#define UART_UARTICR_RTIC_RESET "-" +#define UART_UARTICR_RTIC_BITS _u(0x00000040) +#define UART_UARTICR_RTIC_MSB _u(6) +#define UART_UARTICR_RTIC_LSB _u(6) +#define UART_UARTICR_RTIC_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : UART_UARTICR_TXIC +// Description : Transmit interrupt clear. Clears the UARTTXINTR interrupt. +#define UART_UARTICR_TXIC_RESET "-" +#define UART_UARTICR_TXIC_BITS _u(0x00000020) +#define UART_UARTICR_TXIC_MSB _u(5) +#define UART_UARTICR_TXIC_LSB _u(5) +#define UART_UARTICR_TXIC_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : UART_UARTICR_RXIC +// Description : Receive interrupt clear. Clears the UARTRXINTR interrupt. +#define UART_UARTICR_RXIC_RESET "-" +#define UART_UARTICR_RXIC_BITS _u(0x00000010) +#define UART_UARTICR_RXIC_MSB _u(4) +#define UART_UARTICR_RXIC_LSB _u(4) +#define UART_UARTICR_RXIC_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : UART_UARTICR_DSRMIC +// Description : nUARTDSR modem interrupt clear. Clears the UARTDSRINTR +// interrupt. +#define UART_UARTICR_DSRMIC_RESET "-" +#define UART_UARTICR_DSRMIC_BITS _u(0x00000008) +#define UART_UARTICR_DSRMIC_MSB _u(3) +#define UART_UARTICR_DSRMIC_LSB _u(3) +#define UART_UARTICR_DSRMIC_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : UART_UARTICR_DCDMIC +// Description : nUARTDCD modem interrupt clear. Clears the UARTDCDINTR +// interrupt. +#define UART_UARTICR_DCDMIC_RESET "-" +#define UART_UARTICR_DCDMIC_BITS _u(0x00000004) +#define UART_UARTICR_DCDMIC_MSB _u(2) +#define UART_UARTICR_DCDMIC_LSB _u(2) +#define UART_UARTICR_DCDMIC_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : UART_UARTICR_CTSMIC +// Description : nUARTCTS modem interrupt clear. Clears the UARTCTSINTR +// interrupt. +#define UART_UARTICR_CTSMIC_RESET "-" +#define UART_UARTICR_CTSMIC_BITS _u(0x00000002) +#define UART_UARTICR_CTSMIC_MSB _u(1) +#define UART_UARTICR_CTSMIC_LSB _u(1) +#define UART_UARTICR_CTSMIC_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : UART_UARTICR_RIMIC +// Description : nUARTRI modem interrupt clear. Clears the UARTRIINTR interrupt. +#define UART_UARTICR_RIMIC_RESET "-" +#define UART_UARTICR_RIMIC_BITS _u(0x00000001) +#define UART_UARTICR_RIMIC_MSB _u(0) +#define UART_UARTICR_RIMIC_LSB _u(0) +#define UART_UARTICR_RIMIC_ACCESS "WC" +// ============================================================================= +// Register : UART_UARTDMACR +// Description : DMA Control Register, UARTDMACR +#define UART_UARTDMACR_OFFSET _u(0x00000048) +#define UART_UARTDMACR_BITS _u(0x00000007) +#define UART_UARTDMACR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : UART_UARTDMACR_DMAONERR +// Description : DMA on error. If this bit is set to 1, the DMA receive request +// outputs, UARTRXDMASREQ or UARTRXDMABREQ, are disabled when the +// UART error interrupt is asserted. +#define UART_UARTDMACR_DMAONERR_RESET _u(0x0) +#define UART_UARTDMACR_DMAONERR_BITS _u(0x00000004) +#define UART_UARTDMACR_DMAONERR_MSB _u(2) +#define UART_UARTDMACR_DMAONERR_LSB _u(2) +#define UART_UARTDMACR_DMAONERR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTDMACR_TXDMAE +// Description : Transmit DMA enable. If this bit is set to 1, DMA for the +// transmit FIFO is enabled. +#define UART_UARTDMACR_TXDMAE_RESET _u(0x0) +#define UART_UARTDMACR_TXDMAE_BITS _u(0x00000002) +#define UART_UARTDMACR_TXDMAE_MSB _u(1) +#define UART_UARTDMACR_TXDMAE_LSB _u(1) +#define UART_UARTDMACR_TXDMAE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : UART_UARTDMACR_RXDMAE +// Description : Receive DMA enable. If this bit is set to 1, DMA for the +// receive FIFO is enabled. +#define UART_UARTDMACR_RXDMAE_RESET _u(0x0) +#define UART_UARTDMACR_RXDMAE_BITS _u(0x00000001) +#define UART_UARTDMACR_RXDMAE_MSB _u(0) +#define UART_UARTDMACR_RXDMAE_LSB _u(0) +#define UART_UARTDMACR_RXDMAE_ACCESS "RW" +// ============================================================================= +// Register : UART_UARTPERIPHID0 +// Description : UARTPeriphID0 Register +#define UART_UARTPERIPHID0_OFFSET _u(0x00000fe0) +#define UART_UARTPERIPHID0_BITS _u(0x000000ff) +#define UART_UARTPERIPHID0_RESET _u(0x00000011) +// ----------------------------------------------------------------------------- +// Field : UART_UARTPERIPHID0_PARTNUMBER0 +// Description : These bits read back as 0x11 +#define UART_UARTPERIPHID0_PARTNUMBER0_RESET _u(0x11) +#define UART_UARTPERIPHID0_PARTNUMBER0_BITS _u(0x000000ff) +#define UART_UARTPERIPHID0_PARTNUMBER0_MSB _u(7) +#define UART_UARTPERIPHID0_PARTNUMBER0_LSB _u(0) +#define UART_UARTPERIPHID0_PARTNUMBER0_ACCESS "RO" +// ============================================================================= +// Register : UART_UARTPERIPHID1 +// Description : UARTPeriphID1 Register +#define UART_UARTPERIPHID1_OFFSET _u(0x00000fe4) +#define UART_UARTPERIPHID1_BITS _u(0x000000ff) +#define UART_UARTPERIPHID1_RESET _u(0x00000010) +// ----------------------------------------------------------------------------- +// Field : UART_UARTPERIPHID1_DESIGNER0 +// Description : These bits read back as 0x1 +#define UART_UARTPERIPHID1_DESIGNER0_RESET _u(0x1) +#define UART_UARTPERIPHID1_DESIGNER0_BITS _u(0x000000f0) +#define UART_UARTPERIPHID1_DESIGNER0_MSB _u(7) +#define UART_UARTPERIPHID1_DESIGNER0_LSB _u(4) +#define UART_UARTPERIPHID1_DESIGNER0_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTPERIPHID1_PARTNUMBER1 +// Description : These bits read back as 0x0 +#define UART_UARTPERIPHID1_PARTNUMBER1_RESET _u(0x0) +#define UART_UARTPERIPHID1_PARTNUMBER1_BITS _u(0x0000000f) +#define UART_UARTPERIPHID1_PARTNUMBER1_MSB _u(3) +#define UART_UARTPERIPHID1_PARTNUMBER1_LSB _u(0) +#define UART_UARTPERIPHID1_PARTNUMBER1_ACCESS "RO" +// ============================================================================= +// Register : UART_UARTPERIPHID2 +// Description : UARTPeriphID2 Register +#define UART_UARTPERIPHID2_OFFSET _u(0x00000fe8) +#define UART_UARTPERIPHID2_BITS _u(0x000000ff) +#define UART_UARTPERIPHID2_RESET _u(0x00000034) +// ----------------------------------------------------------------------------- +// Field : UART_UARTPERIPHID2_REVISION +// Description : This field depends on the revision of the UART: r1p0 0x0 r1p1 +// 0x1 r1p3 0x2 r1p4 0x2 r1p5 0x3 +#define UART_UARTPERIPHID2_REVISION_RESET _u(0x3) +#define UART_UARTPERIPHID2_REVISION_BITS _u(0x000000f0) +#define UART_UARTPERIPHID2_REVISION_MSB _u(7) +#define UART_UARTPERIPHID2_REVISION_LSB _u(4) +#define UART_UARTPERIPHID2_REVISION_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : UART_UARTPERIPHID2_DESIGNER1 +// Description : These bits read back as 0x4 +#define UART_UARTPERIPHID2_DESIGNER1_RESET _u(0x4) +#define UART_UARTPERIPHID2_DESIGNER1_BITS _u(0x0000000f) +#define UART_UARTPERIPHID2_DESIGNER1_MSB _u(3) +#define UART_UARTPERIPHID2_DESIGNER1_LSB _u(0) +#define UART_UARTPERIPHID2_DESIGNER1_ACCESS "RO" +// ============================================================================= +// Register : UART_UARTPERIPHID3 +// Description : UARTPeriphID3 Register +#define UART_UARTPERIPHID3_OFFSET _u(0x00000fec) +#define UART_UARTPERIPHID3_BITS _u(0x000000ff) +#define UART_UARTPERIPHID3_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : UART_UARTPERIPHID3_CONFIGURATION +// Description : These bits read back as 0x00 +#define UART_UARTPERIPHID3_CONFIGURATION_RESET _u(0x00) +#define UART_UARTPERIPHID3_CONFIGURATION_BITS _u(0x000000ff) +#define UART_UARTPERIPHID3_CONFIGURATION_MSB _u(7) +#define UART_UARTPERIPHID3_CONFIGURATION_LSB _u(0) +#define UART_UARTPERIPHID3_CONFIGURATION_ACCESS "RO" +// ============================================================================= +// Register : UART_UARTPCELLID0 +// Description : UARTPCellID0 Register +#define UART_UARTPCELLID0_OFFSET _u(0x00000ff0) +#define UART_UARTPCELLID0_BITS _u(0x000000ff) +#define UART_UARTPCELLID0_RESET _u(0x0000000d) +// ----------------------------------------------------------------------------- +// Field : UART_UARTPCELLID0_UARTPCELLID0 +// Description : These bits read back as 0x0D +#define UART_UARTPCELLID0_UARTPCELLID0_RESET _u(0x0d) +#define UART_UARTPCELLID0_UARTPCELLID0_BITS _u(0x000000ff) +#define UART_UARTPCELLID0_UARTPCELLID0_MSB _u(7) +#define UART_UARTPCELLID0_UARTPCELLID0_LSB _u(0) +#define UART_UARTPCELLID0_UARTPCELLID0_ACCESS "RO" +// ============================================================================= +// Register : UART_UARTPCELLID1 +// Description : UARTPCellID1 Register +#define UART_UARTPCELLID1_OFFSET _u(0x00000ff4) +#define UART_UARTPCELLID1_BITS _u(0x000000ff) +#define UART_UARTPCELLID1_RESET _u(0x000000f0) +// ----------------------------------------------------------------------------- +// Field : UART_UARTPCELLID1_UARTPCELLID1 +// Description : These bits read back as 0xF0 +#define UART_UARTPCELLID1_UARTPCELLID1_RESET _u(0xf0) +#define UART_UARTPCELLID1_UARTPCELLID1_BITS _u(0x000000ff) +#define UART_UARTPCELLID1_UARTPCELLID1_MSB _u(7) +#define UART_UARTPCELLID1_UARTPCELLID1_LSB _u(0) +#define UART_UARTPCELLID1_UARTPCELLID1_ACCESS "RO" +// ============================================================================= +// Register : UART_UARTPCELLID2 +// Description : UARTPCellID2 Register +#define UART_UARTPCELLID2_OFFSET _u(0x00000ff8) +#define UART_UARTPCELLID2_BITS _u(0x000000ff) +#define UART_UARTPCELLID2_RESET _u(0x00000005) +// ----------------------------------------------------------------------------- +// Field : UART_UARTPCELLID2_UARTPCELLID2 +// Description : These bits read back as 0x05 +#define UART_UARTPCELLID2_UARTPCELLID2_RESET _u(0x05) +#define UART_UARTPCELLID2_UARTPCELLID2_BITS _u(0x000000ff) +#define UART_UARTPCELLID2_UARTPCELLID2_MSB _u(7) +#define UART_UARTPCELLID2_UARTPCELLID2_LSB _u(0) +#define UART_UARTPCELLID2_UARTPCELLID2_ACCESS "RO" +// ============================================================================= +// Register : UART_UARTPCELLID3 +// Description : UARTPCellID3 Register +#define UART_UARTPCELLID3_OFFSET _u(0x00000ffc) +#define UART_UARTPCELLID3_BITS _u(0x000000ff) +#define UART_UARTPCELLID3_RESET _u(0x000000b1) +// ----------------------------------------------------------------------------- +// Field : UART_UARTPCELLID3_UARTPCELLID3 +// Description : These bits read back as 0xB1 +#define UART_UARTPCELLID3_UARTPCELLID3_RESET _u(0xb1) +#define UART_UARTPCELLID3_UARTPCELLID3_BITS _u(0x000000ff) +#define UART_UARTPCELLID3_UARTPCELLID3_MSB _u(7) +#define UART_UARTPCELLID3_UARTPCELLID3_LSB _u(0) +#define UART_UARTPCELLID3_UARTPCELLID3_ACCESS "RO" +// ============================================================================= +#endif // HARDWARE_REGS_UART_DEFINED diff --git a/arkanoid/pico/hardware/regs/usb.h b/arkanoid/pico/hardware/regs/usb.h new file mode 100644 index 0000000..552cd11 --- /dev/null +++ b/arkanoid/pico/hardware/regs/usb.h @@ -0,0 +1,3603 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : USB +// Version : 1 +// Bus type : ahbl +// Description : USB FS/LS controller device registers +// ============================================================================= +#ifndef HARDWARE_REGS_USB_DEFINED +#define HARDWARE_REGS_USB_DEFINED +// ============================================================================= +// Register : USB_ADDR_ENDP +// Description : Device address and endpoint control +#define USB_ADDR_ENDP_OFFSET _u(0x00000000) +#define USB_ADDR_ENDP_BITS _u(0x000f007f) +#define USB_ADDR_ENDP_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP_ENDPOINT +// Description : Device endpoint to send data to. Only valid for HOST mode. +#define USB_ADDR_ENDP_ENDPOINT_RESET _u(0x0) +#define USB_ADDR_ENDP_ENDPOINT_BITS _u(0x000f0000) +#define USB_ADDR_ENDP_ENDPOINT_MSB _u(19) +#define USB_ADDR_ENDP_ENDPOINT_LSB _u(16) +#define USB_ADDR_ENDP_ENDPOINT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP_ADDRESS +// Description : In device mode, the address that the device should respond to. +// Set in response to a SET_ADDR setup packet from the host. In +// host mode set to the address of the device to communicate with. +#define USB_ADDR_ENDP_ADDRESS_RESET _u(0x00) +#define USB_ADDR_ENDP_ADDRESS_BITS _u(0x0000007f) +#define USB_ADDR_ENDP_ADDRESS_MSB _u(6) +#define USB_ADDR_ENDP_ADDRESS_LSB _u(0) +#define USB_ADDR_ENDP_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_ADDR_ENDP1 +// Description : Interrupt endpoint 1. Only valid for HOST mode. +#define USB_ADDR_ENDP1_OFFSET _u(0x00000004) +#define USB_ADDR_ENDP1_BITS _u(0x060f007f) +#define USB_ADDR_ENDP1_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP1_INTEP_PREAMBLE +// Description : Interrupt EP requires preamble (is a low speed device on a full +// speed hub) +#define USB_ADDR_ENDP1_INTEP_PREAMBLE_RESET _u(0x0) +#define USB_ADDR_ENDP1_INTEP_PREAMBLE_BITS _u(0x04000000) +#define USB_ADDR_ENDP1_INTEP_PREAMBLE_MSB _u(26) +#define USB_ADDR_ENDP1_INTEP_PREAMBLE_LSB _u(26) +#define USB_ADDR_ENDP1_INTEP_PREAMBLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP1_INTEP_DIR +// Description : Direction of the interrupt endpoint. In=0, Out=1 +#define USB_ADDR_ENDP1_INTEP_DIR_RESET _u(0x0) +#define USB_ADDR_ENDP1_INTEP_DIR_BITS _u(0x02000000) +#define USB_ADDR_ENDP1_INTEP_DIR_MSB _u(25) +#define USB_ADDR_ENDP1_INTEP_DIR_LSB _u(25) +#define USB_ADDR_ENDP1_INTEP_DIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP1_ENDPOINT +// Description : Endpoint number of the interrupt endpoint +#define USB_ADDR_ENDP1_ENDPOINT_RESET _u(0x0) +#define USB_ADDR_ENDP1_ENDPOINT_BITS _u(0x000f0000) +#define USB_ADDR_ENDP1_ENDPOINT_MSB _u(19) +#define USB_ADDR_ENDP1_ENDPOINT_LSB _u(16) +#define USB_ADDR_ENDP1_ENDPOINT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP1_ADDRESS +// Description : Device address +#define USB_ADDR_ENDP1_ADDRESS_RESET _u(0x00) +#define USB_ADDR_ENDP1_ADDRESS_BITS _u(0x0000007f) +#define USB_ADDR_ENDP1_ADDRESS_MSB _u(6) +#define USB_ADDR_ENDP1_ADDRESS_LSB _u(0) +#define USB_ADDR_ENDP1_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_ADDR_ENDP2 +// Description : Interrupt endpoint 2. Only valid for HOST mode. +#define USB_ADDR_ENDP2_OFFSET _u(0x00000008) +#define USB_ADDR_ENDP2_BITS _u(0x060f007f) +#define USB_ADDR_ENDP2_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP2_INTEP_PREAMBLE +// Description : Interrupt EP requires preamble (is a low speed device on a full +// speed hub) +#define USB_ADDR_ENDP2_INTEP_PREAMBLE_RESET _u(0x0) +#define USB_ADDR_ENDP2_INTEP_PREAMBLE_BITS _u(0x04000000) +#define USB_ADDR_ENDP2_INTEP_PREAMBLE_MSB _u(26) +#define USB_ADDR_ENDP2_INTEP_PREAMBLE_LSB _u(26) +#define USB_ADDR_ENDP2_INTEP_PREAMBLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP2_INTEP_DIR +// Description : Direction of the interrupt endpoint. In=0, Out=1 +#define USB_ADDR_ENDP2_INTEP_DIR_RESET _u(0x0) +#define USB_ADDR_ENDP2_INTEP_DIR_BITS _u(0x02000000) +#define USB_ADDR_ENDP2_INTEP_DIR_MSB _u(25) +#define USB_ADDR_ENDP2_INTEP_DIR_LSB _u(25) +#define USB_ADDR_ENDP2_INTEP_DIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP2_ENDPOINT +// Description : Endpoint number of the interrupt endpoint +#define USB_ADDR_ENDP2_ENDPOINT_RESET _u(0x0) +#define USB_ADDR_ENDP2_ENDPOINT_BITS _u(0x000f0000) +#define USB_ADDR_ENDP2_ENDPOINT_MSB _u(19) +#define USB_ADDR_ENDP2_ENDPOINT_LSB _u(16) +#define USB_ADDR_ENDP2_ENDPOINT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP2_ADDRESS +// Description : Device address +#define USB_ADDR_ENDP2_ADDRESS_RESET _u(0x00) +#define USB_ADDR_ENDP2_ADDRESS_BITS _u(0x0000007f) +#define USB_ADDR_ENDP2_ADDRESS_MSB _u(6) +#define USB_ADDR_ENDP2_ADDRESS_LSB _u(0) +#define USB_ADDR_ENDP2_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_ADDR_ENDP3 +// Description : Interrupt endpoint 3. Only valid for HOST mode. +#define USB_ADDR_ENDP3_OFFSET _u(0x0000000c) +#define USB_ADDR_ENDP3_BITS _u(0x060f007f) +#define USB_ADDR_ENDP3_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP3_INTEP_PREAMBLE +// Description : Interrupt EP requires preamble (is a low speed device on a full +// speed hub) +#define USB_ADDR_ENDP3_INTEP_PREAMBLE_RESET _u(0x0) +#define USB_ADDR_ENDP3_INTEP_PREAMBLE_BITS _u(0x04000000) +#define USB_ADDR_ENDP3_INTEP_PREAMBLE_MSB _u(26) +#define USB_ADDR_ENDP3_INTEP_PREAMBLE_LSB _u(26) +#define USB_ADDR_ENDP3_INTEP_PREAMBLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP3_INTEP_DIR +// Description : Direction of the interrupt endpoint. In=0, Out=1 +#define USB_ADDR_ENDP3_INTEP_DIR_RESET _u(0x0) +#define USB_ADDR_ENDP3_INTEP_DIR_BITS _u(0x02000000) +#define USB_ADDR_ENDP3_INTEP_DIR_MSB _u(25) +#define USB_ADDR_ENDP3_INTEP_DIR_LSB _u(25) +#define USB_ADDR_ENDP3_INTEP_DIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP3_ENDPOINT +// Description : Endpoint number of the interrupt endpoint +#define USB_ADDR_ENDP3_ENDPOINT_RESET _u(0x0) +#define USB_ADDR_ENDP3_ENDPOINT_BITS _u(0x000f0000) +#define USB_ADDR_ENDP3_ENDPOINT_MSB _u(19) +#define USB_ADDR_ENDP3_ENDPOINT_LSB _u(16) +#define USB_ADDR_ENDP3_ENDPOINT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP3_ADDRESS +// Description : Device address +#define USB_ADDR_ENDP3_ADDRESS_RESET _u(0x00) +#define USB_ADDR_ENDP3_ADDRESS_BITS _u(0x0000007f) +#define USB_ADDR_ENDP3_ADDRESS_MSB _u(6) +#define USB_ADDR_ENDP3_ADDRESS_LSB _u(0) +#define USB_ADDR_ENDP3_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_ADDR_ENDP4 +// Description : Interrupt endpoint 4. Only valid for HOST mode. +#define USB_ADDR_ENDP4_OFFSET _u(0x00000010) +#define USB_ADDR_ENDP4_BITS _u(0x060f007f) +#define USB_ADDR_ENDP4_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP4_INTEP_PREAMBLE +// Description : Interrupt EP requires preamble (is a low speed device on a full +// speed hub) +#define USB_ADDR_ENDP4_INTEP_PREAMBLE_RESET _u(0x0) +#define USB_ADDR_ENDP4_INTEP_PREAMBLE_BITS _u(0x04000000) +#define USB_ADDR_ENDP4_INTEP_PREAMBLE_MSB _u(26) +#define USB_ADDR_ENDP4_INTEP_PREAMBLE_LSB _u(26) +#define USB_ADDR_ENDP4_INTEP_PREAMBLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP4_INTEP_DIR +// Description : Direction of the interrupt endpoint. In=0, Out=1 +#define USB_ADDR_ENDP4_INTEP_DIR_RESET _u(0x0) +#define USB_ADDR_ENDP4_INTEP_DIR_BITS _u(0x02000000) +#define USB_ADDR_ENDP4_INTEP_DIR_MSB _u(25) +#define USB_ADDR_ENDP4_INTEP_DIR_LSB _u(25) +#define USB_ADDR_ENDP4_INTEP_DIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP4_ENDPOINT +// Description : Endpoint number of the interrupt endpoint +#define USB_ADDR_ENDP4_ENDPOINT_RESET _u(0x0) +#define USB_ADDR_ENDP4_ENDPOINT_BITS _u(0x000f0000) +#define USB_ADDR_ENDP4_ENDPOINT_MSB _u(19) +#define USB_ADDR_ENDP4_ENDPOINT_LSB _u(16) +#define USB_ADDR_ENDP4_ENDPOINT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP4_ADDRESS +// Description : Device address +#define USB_ADDR_ENDP4_ADDRESS_RESET _u(0x00) +#define USB_ADDR_ENDP4_ADDRESS_BITS _u(0x0000007f) +#define USB_ADDR_ENDP4_ADDRESS_MSB _u(6) +#define USB_ADDR_ENDP4_ADDRESS_LSB _u(0) +#define USB_ADDR_ENDP4_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_ADDR_ENDP5 +// Description : Interrupt endpoint 5. Only valid for HOST mode. +#define USB_ADDR_ENDP5_OFFSET _u(0x00000014) +#define USB_ADDR_ENDP5_BITS _u(0x060f007f) +#define USB_ADDR_ENDP5_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP5_INTEP_PREAMBLE +// Description : Interrupt EP requires preamble (is a low speed device on a full +// speed hub) +#define USB_ADDR_ENDP5_INTEP_PREAMBLE_RESET _u(0x0) +#define USB_ADDR_ENDP5_INTEP_PREAMBLE_BITS _u(0x04000000) +#define USB_ADDR_ENDP5_INTEP_PREAMBLE_MSB _u(26) +#define USB_ADDR_ENDP5_INTEP_PREAMBLE_LSB _u(26) +#define USB_ADDR_ENDP5_INTEP_PREAMBLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP5_INTEP_DIR +// Description : Direction of the interrupt endpoint. In=0, Out=1 +#define USB_ADDR_ENDP5_INTEP_DIR_RESET _u(0x0) +#define USB_ADDR_ENDP5_INTEP_DIR_BITS _u(0x02000000) +#define USB_ADDR_ENDP5_INTEP_DIR_MSB _u(25) +#define USB_ADDR_ENDP5_INTEP_DIR_LSB _u(25) +#define USB_ADDR_ENDP5_INTEP_DIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP5_ENDPOINT +// Description : Endpoint number of the interrupt endpoint +#define USB_ADDR_ENDP5_ENDPOINT_RESET _u(0x0) +#define USB_ADDR_ENDP5_ENDPOINT_BITS _u(0x000f0000) +#define USB_ADDR_ENDP5_ENDPOINT_MSB _u(19) +#define USB_ADDR_ENDP5_ENDPOINT_LSB _u(16) +#define USB_ADDR_ENDP5_ENDPOINT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP5_ADDRESS +// Description : Device address +#define USB_ADDR_ENDP5_ADDRESS_RESET _u(0x00) +#define USB_ADDR_ENDP5_ADDRESS_BITS _u(0x0000007f) +#define USB_ADDR_ENDP5_ADDRESS_MSB _u(6) +#define USB_ADDR_ENDP5_ADDRESS_LSB _u(0) +#define USB_ADDR_ENDP5_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_ADDR_ENDP6 +// Description : Interrupt endpoint 6. Only valid for HOST mode. +#define USB_ADDR_ENDP6_OFFSET _u(0x00000018) +#define USB_ADDR_ENDP6_BITS _u(0x060f007f) +#define USB_ADDR_ENDP6_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP6_INTEP_PREAMBLE +// Description : Interrupt EP requires preamble (is a low speed device on a full +// speed hub) +#define USB_ADDR_ENDP6_INTEP_PREAMBLE_RESET _u(0x0) +#define USB_ADDR_ENDP6_INTEP_PREAMBLE_BITS _u(0x04000000) +#define USB_ADDR_ENDP6_INTEP_PREAMBLE_MSB _u(26) +#define USB_ADDR_ENDP6_INTEP_PREAMBLE_LSB _u(26) +#define USB_ADDR_ENDP6_INTEP_PREAMBLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP6_INTEP_DIR +// Description : Direction of the interrupt endpoint. In=0, Out=1 +#define USB_ADDR_ENDP6_INTEP_DIR_RESET _u(0x0) +#define USB_ADDR_ENDP6_INTEP_DIR_BITS _u(0x02000000) +#define USB_ADDR_ENDP6_INTEP_DIR_MSB _u(25) +#define USB_ADDR_ENDP6_INTEP_DIR_LSB _u(25) +#define USB_ADDR_ENDP6_INTEP_DIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP6_ENDPOINT +// Description : Endpoint number of the interrupt endpoint +#define USB_ADDR_ENDP6_ENDPOINT_RESET _u(0x0) +#define USB_ADDR_ENDP6_ENDPOINT_BITS _u(0x000f0000) +#define USB_ADDR_ENDP6_ENDPOINT_MSB _u(19) +#define USB_ADDR_ENDP6_ENDPOINT_LSB _u(16) +#define USB_ADDR_ENDP6_ENDPOINT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP6_ADDRESS +// Description : Device address +#define USB_ADDR_ENDP6_ADDRESS_RESET _u(0x00) +#define USB_ADDR_ENDP6_ADDRESS_BITS _u(0x0000007f) +#define USB_ADDR_ENDP6_ADDRESS_MSB _u(6) +#define USB_ADDR_ENDP6_ADDRESS_LSB _u(0) +#define USB_ADDR_ENDP6_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_ADDR_ENDP7 +// Description : Interrupt endpoint 7. Only valid for HOST mode. +#define USB_ADDR_ENDP7_OFFSET _u(0x0000001c) +#define USB_ADDR_ENDP7_BITS _u(0x060f007f) +#define USB_ADDR_ENDP7_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP7_INTEP_PREAMBLE +// Description : Interrupt EP requires preamble (is a low speed device on a full +// speed hub) +#define USB_ADDR_ENDP7_INTEP_PREAMBLE_RESET _u(0x0) +#define USB_ADDR_ENDP7_INTEP_PREAMBLE_BITS _u(0x04000000) +#define USB_ADDR_ENDP7_INTEP_PREAMBLE_MSB _u(26) +#define USB_ADDR_ENDP7_INTEP_PREAMBLE_LSB _u(26) +#define USB_ADDR_ENDP7_INTEP_PREAMBLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP7_INTEP_DIR +// Description : Direction of the interrupt endpoint. In=0, Out=1 +#define USB_ADDR_ENDP7_INTEP_DIR_RESET _u(0x0) +#define USB_ADDR_ENDP7_INTEP_DIR_BITS _u(0x02000000) +#define USB_ADDR_ENDP7_INTEP_DIR_MSB _u(25) +#define USB_ADDR_ENDP7_INTEP_DIR_LSB _u(25) +#define USB_ADDR_ENDP7_INTEP_DIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP7_ENDPOINT +// Description : Endpoint number of the interrupt endpoint +#define USB_ADDR_ENDP7_ENDPOINT_RESET _u(0x0) +#define USB_ADDR_ENDP7_ENDPOINT_BITS _u(0x000f0000) +#define USB_ADDR_ENDP7_ENDPOINT_MSB _u(19) +#define USB_ADDR_ENDP7_ENDPOINT_LSB _u(16) +#define USB_ADDR_ENDP7_ENDPOINT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP7_ADDRESS +// Description : Device address +#define USB_ADDR_ENDP7_ADDRESS_RESET _u(0x00) +#define USB_ADDR_ENDP7_ADDRESS_BITS _u(0x0000007f) +#define USB_ADDR_ENDP7_ADDRESS_MSB _u(6) +#define USB_ADDR_ENDP7_ADDRESS_LSB _u(0) +#define USB_ADDR_ENDP7_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_ADDR_ENDP8 +// Description : Interrupt endpoint 8. Only valid for HOST mode. +#define USB_ADDR_ENDP8_OFFSET _u(0x00000020) +#define USB_ADDR_ENDP8_BITS _u(0x060f007f) +#define USB_ADDR_ENDP8_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP8_INTEP_PREAMBLE +// Description : Interrupt EP requires preamble (is a low speed device on a full +// speed hub) +#define USB_ADDR_ENDP8_INTEP_PREAMBLE_RESET _u(0x0) +#define USB_ADDR_ENDP8_INTEP_PREAMBLE_BITS _u(0x04000000) +#define USB_ADDR_ENDP8_INTEP_PREAMBLE_MSB _u(26) +#define USB_ADDR_ENDP8_INTEP_PREAMBLE_LSB _u(26) +#define USB_ADDR_ENDP8_INTEP_PREAMBLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP8_INTEP_DIR +// Description : Direction of the interrupt endpoint. In=0, Out=1 +#define USB_ADDR_ENDP8_INTEP_DIR_RESET _u(0x0) +#define USB_ADDR_ENDP8_INTEP_DIR_BITS _u(0x02000000) +#define USB_ADDR_ENDP8_INTEP_DIR_MSB _u(25) +#define USB_ADDR_ENDP8_INTEP_DIR_LSB _u(25) +#define USB_ADDR_ENDP8_INTEP_DIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP8_ENDPOINT +// Description : Endpoint number of the interrupt endpoint +#define USB_ADDR_ENDP8_ENDPOINT_RESET _u(0x0) +#define USB_ADDR_ENDP8_ENDPOINT_BITS _u(0x000f0000) +#define USB_ADDR_ENDP8_ENDPOINT_MSB _u(19) +#define USB_ADDR_ENDP8_ENDPOINT_LSB _u(16) +#define USB_ADDR_ENDP8_ENDPOINT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP8_ADDRESS +// Description : Device address +#define USB_ADDR_ENDP8_ADDRESS_RESET _u(0x00) +#define USB_ADDR_ENDP8_ADDRESS_BITS _u(0x0000007f) +#define USB_ADDR_ENDP8_ADDRESS_MSB _u(6) +#define USB_ADDR_ENDP8_ADDRESS_LSB _u(0) +#define USB_ADDR_ENDP8_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_ADDR_ENDP9 +// Description : Interrupt endpoint 9. Only valid for HOST mode. +#define USB_ADDR_ENDP9_OFFSET _u(0x00000024) +#define USB_ADDR_ENDP9_BITS _u(0x060f007f) +#define USB_ADDR_ENDP9_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP9_INTEP_PREAMBLE +// Description : Interrupt EP requires preamble (is a low speed device on a full +// speed hub) +#define USB_ADDR_ENDP9_INTEP_PREAMBLE_RESET _u(0x0) +#define USB_ADDR_ENDP9_INTEP_PREAMBLE_BITS _u(0x04000000) +#define USB_ADDR_ENDP9_INTEP_PREAMBLE_MSB _u(26) +#define USB_ADDR_ENDP9_INTEP_PREAMBLE_LSB _u(26) +#define USB_ADDR_ENDP9_INTEP_PREAMBLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP9_INTEP_DIR +// Description : Direction of the interrupt endpoint. In=0, Out=1 +#define USB_ADDR_ENDP9_INTEP_DIR_RESET _u(0x0) +#define USB_ADDR_ENDP9_INTEP_DIR_BITS _u(0x02000000) +#define USB_ADDR_ENDP9_INTEP_DIR_MSB _u(25) +#define USB_ADDR_ENDP9_INTEP_DIR_LSB _u(25) +#define USB_ADDR_ENDP9_INTEP_DIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP9_ENDPOINT +// Description : Endpoint number of the interrupt endpoint +#define USB_ADDR_ENDP9_ENDPOINT_RESET _u(0x0) +#define USB_ADDR_ENDP9_ENDPOINT_BITS _u(0x000f0000) +#define USB_ADDR_ENDP9_ENDPOINT_MSB _u(19) +#define USB_ADDR_ENDP9_ENDPOINT_LSB _u(16) +#define USB_ADDR_ENDP9_ENDPOINT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP9_ADDRESS +// Description : Device address +#define USB_ADDR_ENDP9_ADDRESS_RESET _u(0x00) +#define USB_ADDR_ENDP9_ADDRESS_BITS _u(0x0000007f) +#define USB_ADDR_ENDP9_ADDRESS_MSB _u(6) +#define USB_ADDR_ENDP9_ADDRESS_LSB _u(0) +#define USB_ADDR_ENDP9_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_ADDR_ENDP10 +// Description : Interrupt endpoint 10. Only valid for HOST mode. +#define USB_ADDR_ENDP10_OFFSET _u(0x00000028) +#define USB_ADDR_ENDP10_BITS _u(0x060f007f) +#define USB_ADDR_ENDP10_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP10_INTEP_PREAMBLE +// Description : Interrupt EP requires preamble (is a low speed device on a full +// speed hub) +#define USB_ADDR_ENDP10_INTEP_PREAMBLE_RESET _u(0x0) +#define USB_ADDR_ENDP10_INTEP_PREAMBLE_BITS _u(0x04000000) +#define USB_ADDR_ENDP10_INTEP_PREAMBLE_MSB _u(26) +#define USB_ADDR_ENDP10_INTEP_PREAMBLE_LSB _u(26) +#define USB_ADDR_ENDP10_INTEP_PREAMBLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP10_INTEP_DIR +// Description : Direction of the interrupt endpoint. In=0, Out=1 +#define USB_ADDR_ENDP10_INTEP_DIR_RESET _u(0x0) +#define USB_ADDR_ENDP10_INTEP_DIR_BITS _u(0x02000000) +#define USB_ADDR_ENDP10_INTEP_DIR_MSB _u(25) +#define USB_ADDR_ENDP10_INTEP_DIR_LSB _u(25) +#define USB_ADDR_ENDP10_INTEP_DIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP10_ENDPOINT +// Description : Endpoint number of the interrupt endpoint +#define USB_ADDR_ENDP10_ENDPOINT_RESET _u(0x0) +#define USB_ADDR_ENDP10_ENDPOINT_BITS _u(0x000f0000) +#define USB_ADDR_ENDP10_ENDPOINT_MSB _u(19) +#define USB_ADDR_ENDP10_ENDPOINT_LSB _u(16) +#define USB_ADDR_ENDP10_ENDPOINT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP10_ADDRESS +// Description : Device address +#define USB_ADDR_ENDP10_ADDRESS_RESET _u(0x00) +#define USB_ADDR_ENDP10_ADDRESS_BITS _u(0x0000007f) +#define USB_ADDR_ENDP10_ADDRESS_MSB _u(6) +#define USB_ADDR_ENDP10_ADDRESS_LSB _u(0) +#define USB_ADDR_ENDP10_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_ADDR_ENDP11 +// Description : Interrupt endpoint 11. Only valid for HOST mode. +#define USB_ADDR_ENDP11_OFFSET _u(0x0000002c) +#define USB_ADDR_ENDP11_BITS _u(0x060f007f) +#define USB_ADDR_ENDP11_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP11_INTEP_PREAMBLE +// Description : Interrupt EP requires preamble (is a low speed device on a full +// speed hub) +#define USB_ADDR_ENDP11_INTEP_PREAMBLE_RESET _u(0x0) +#define USB_ADDR_ENDP11_INTEP_PREAMBLE_BITS _u(0x04000000) +#define USB_ADDR_ENDP11_INTEP_PREAMBLE_MSB _u(26) +#define USB_ADDR_ENDP11_INTEP_PREAMBLE_LSB _u(26) +#define USB_ADDR_ENDP11_INTEP_PREAMBLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP11_INTEP_DIR +// Description : Direction of the interrupt endpoint. In=0, Out=1 +#define USB_ADDR_ENDP11_INTEP_DIR_RESET _u(0x0) +#define USB_ADDR_ENDP11_INTEP_DIR_BITS _u(0x02000000) +#define USB_ADDR_ENDP11_INTEP_DIR_MSB _u(25) +#define USB_ADDR_ENDP11_INTEP_DIR_LSB _u(25) +#define USB_ADDR_ENDP11_INTEP_DIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP11_ENDPOINT +// Description : Endpoint number of the interrupt endpoint +#define USB_ADDR_ENDP11_ENDPOINT_RESET _u(0x0) +#define USB_ADDR_ENDP11_ENDPOINT_BITS _u(0x000f0000) +#define USB_ADDR_ENDP11_ENDPOINT_MSB _u(19) +#define USB_ADDR_ENDP11_ENDPOINT_LSB _u(16) +#define USB_ADDR_ENDP11_ENDPOINT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP11_ADDRESS +// Description : Device address +#define USB_ADDR_ENDP11_ADDRESS_RESET _u(0x00) +#define USB_ADDR_ENDP11_ADDRESS_BITS _u(0x0000007f) +#define USB_ADDR_ENDP11_ADDRESS_MSB _u(6) +#define USB_ADDR_ENDP11_ADDRESS_LSB _u(0) +#define USB_ADDR_ENDP11_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_ADDR_ENDP12 +// Description : Interrupt endpoint 12. Only valid for HOST mode. +#define USB_ADDR_ENDP12_OFFSET _u(0x00000030) +#define USB_ADDR_ENDP12_BITS _u(0x060f007f) +#define USB_ADDR_ENDP12_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP12_INTEP_PREAMBLE +// Description : Interrupt EP requires preamble (is a low speed device on a full +// speed hub) +#define USB_ADDR_ENDP12_INTEP_PREAMBLE_RESET _u(0x0) +#define USB_ADDR_ENDP12_INTEP_PREAMBLE_BITS _u(0x04000000) +#define USB_ADDR_ENDP12_INTEP_PREAMBLE_MSB _u(26) +#define USB_ADDR_ENDP12_INTEP_PREAMBLE_LSB _u(26) +#define USB_ADDR_ENDP12_INTEP_PREAMBLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP12_INTEP_DIR +// Description : Direction of the interrupt endpoint. In=0, Out=1 +#define USB_ADDR_ENDP12_INTEP_DIR_RESET _u(0x0) +#define USB_ADDR_ENDP12_INTEP_DIR_BITS _u(0x02000000) +#define USB_ADDR_ENDP12_INTEP_DIR_MSB _u(25) +#define USB_ADDR_ENDP12_INTEP_DIR_LSB _u(25) +#define USB_ADDR_ENDP12_INTEP_DIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP12_ENDPOINT +// Description : Endpoint number of the interrupt endpoint +#define USB_ADDR_ENDP12_ENDPOINT_RESET _u(0x0) +#define USB_ADDR_ENDP12_ENDPOINT_BITS _u(0x000f0000) +#define USB_ADDR_ENDP12_ENDPOINT_MSB _u(19) +#define USB_ADDR_ENDP12_ENDPOINT_LSB _u(16) +#define USB_ADDR_ENDP12_ENDPOINT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP12_ADDRESS +// Description : Device address +#define USB_ADDR_ENDP12_ADDRESS_RESET _u(0x00) +#define USB_ADDR_ENDP12_ADDRESS_BITS _u(0x0000007f) +#define USB_ADDR_ENDP12_ADDRESS_MSB _u(6) +#define USB_ADDR_ENDP12_ADDRESS_LSB _u(0) +#define USB_ADDR_ENDP12_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_ADDR_ENDP13 +// Description : Interrupt endpoint 13. Only valid for HOST mode. +#define USB_ADDR_ENDP13_OFFSET _u(0x00000034) +#define USB_ADDR_ENDP13_BITS _u(0x060f007f) +#define USB_ADDR_ENDP13_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP13_INTEP_PREAMBLE +// Description : Interrupt EP requires preamble (is a low speed device on a full +// speed hub) +#define USB_ADDR_ENDP13_INTEP_PREAMBLE_RESET _u(0x0) +#define USB_ADDR_ENDP13_INTEP_PREAMBLE_BITS _u(0x04000000) +#define USB_ADDR_ENDP13_INTEP_PREAMBLE_MSB _u(26) +#define USB_ADDR_ENDP13_INTEP_PREAMBLE_LSB _u(26) +#define USB_ADDR_ENDP13_INTEP_PREAMBLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP13_INTEP_DIR +// Description : Direction of the interrupt endpoint. In=0, Out=1 +#define USB_ADDR_ENDP13_INTEP_DIR_RESET _u(0x0) +#define USB_ADDR_ENDP13_INTEP_DIR_BITS _u(0x02000000) +#define USB_ADDR_ENDP13_INTEP_DIR_MSB _u(25) +#define USB_ADDR_ENDP13_INTEP_DIR_LSB _u(25) +#define USB_ADDR_ENDP13_INTEP_DIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP13_ENDPOINT +// Description : Endpoint number of the interrupt endpoint +#define USB_ADDR_ENDP13_ENDPOINT_RESET _u(0x0) +#define USB_ADDR_ENDP13_ENDPOINT_BITS _u(0x000f0000) +#define USB_ADDR_ENDP13_ENDPOINT_MSB _u(19) +#define USB_ADDR_ENDP13_ENDPOINT_LSB _u(16) +#define USB_ADDR_ENDP13_ENDPOINT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP13_ADDRESS +// Description : Device address +#define USB_ADDR_ENDP13_ADDRESS_RESET _u(0x00) +#define USB_ADDR_ENDP13_ADDRESS_BITS _u(0x0000007f) +#define USB_ADDR_ENDP13_ADDRESS_MSB _u(6) +#define USB_ADDR_ENDP13_ADDRESS_LSB _u(0) +#define USB_ADDR_ENDP13_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_ADDR_ENDP14 +// Description : Interrupt endpoint 14. Only valid for HOST mode. +#define USB_ADDR_ENDP14_OFFSET _u(0x00000038) +#define USB_ADDR_ENDP14_BITS _u(0x060f007f) +#define USB_ADDR_ENDP14_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP14_INTEP_PREAMBLE +// Description : Interrupt EP requires preamble (is a low speed device on a full +// speed hub) +#define USB_ADDR_ENDP14_INTEP_PREAMBLE_RESET _u(0x0) +#define USB_ADDR_ENDP14_INTEP_PREAMBLE_BITS _u(0x04000000) +#define USB_ADDR_ENDP14_INTEP_PREAMBLE_MSB _u(26) +#define USB_ADDR_ENDP14_INTEP_PREAMBLE_LSB _u(26) +#define USB_ADDR_ENDP14_INTEP_PREAMBLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP14_INTEP_DIR +// Description : Direction of the interrupt endpoint. In=0, Out=1 +#define USB_ADDR_ENDP14_INTEP_DIR_RESET _u(0x0) +#define USB_ADDR_ENDP14_INTEP_DIR_BITS _u(0x02000000) +#define USB_ADDR_ENDP14_INTEP_DIR_MSB _u(25) +#define USB_ADDR_ENDP14_INTEP_DIR_LSB _u(25) +#define USB_ADDR_ENDP14_INTEP_DIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP14_ENDPOINT +// Description : Endpoint number of the interrupt endpoint +#define USB_ADDR_ENDP14_ENDPOINT_RESET _u(0x0) +#define USB_ADDR_ENDP14_ENDPOINT_BITS _u(0x000f0000) +#define USB_ADDR_ENDP14_ENDPOINT_MSB _u(19) +#define USB_ADDR_ENDP14_ENDPOINT_LSB _u(16) +#define USB_ADDR_ENDP14_ENDPOINT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP14_ADDRESS +// Description : Device address +#define USB_ADDR_ENDP14_ADDRESS_RESET _u(0x00) +#define USB_ADDR_ENDP14_ADDRESS_BITS _u(0x0000007f) +#define USB_ADDR_ENDP14_ADDRESS_MSB _u(6) +#define USB_ADDR_ENDP14_ADDRESS_LSB _u(0) +#define USB_ADDR_ENDP14_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_ADDR_ENDP15 +// Description : Interrupt endpoint 15. Only valid for HOST mode. +#define USB_ADDR_ENDP15_OFFSET _u(0x0000003c) +#define USB_ADDR_ENDP15_BITS _u(0x060f007f) +#define USB_ADDR_ENDP15_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP15_INTEP_PREAMBLE +// Description : Interrupt EP requires preamble (is a low speed device on a full +// speed hub) +#define USB_ADDR_ENDP15_INTEP_PREAMBLE_RESET _u(0x0) +#define USB_ADDR_ENDP15_INTEP_PREAMBLE_BITS _u(0x04000000) +#define USB_ADDR_ENDP15_INTEP_PREAMBLE_MSB _u(26) +#define USB_ADDR_ENDP15_INTEP_PREAMBLE_LSB _u(26) +#define USB_ADDR_ENDP15_INTEP_PREAMBLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP15_INTEP_DIR +// Description : Direction of the interrupt endpoint. In=0, Out=1 +#define USB_ADDR_ENDP15_INTEP_DIR_RESET _u(0x0) +#define USB_ADDR_ENDP15_INTEP_DIR_BITS _u(0x02000000) +#define USB_ADDR_ENDP15_INTEP_DIR_MSB _u(25) +#define USB_ADDR_ENDP15_INTEP_DIR_LSB _u(25) +#define USB_ADDR_ENDP15_INTEP_DIR_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP15_ENDPOINT +// Description : Endpoint number of the interrupt endpoint +#define USB_ADDR_ENDP15_ENDPOINT_RESET _u(0x0) +#define USB_ADDR_ENDP15_ENDPOINT_BITS _u(0x000f0000) +#define USB_ADDR_ENDP15_ENDPOINT_MSB _u(19) +#define USB_ADDR_ENDP15_ENDPOINT_LSB _u(16) +#define USB_ADDR_ENDP15_ENDPOINT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_ADDR_ENDP15_ADDRESS +// Description : Device address +#define USB_ADDR_ENDP15_ADDRESS_RESET _u(0x00) +#define USB_ADDR_ENDP15_ADDRESS_BITS _u(0x0000007f) +#define USB_ADDR_ENDP15_ADDRESS_MSB _u(6) +#define USB_ADDR_ENDP15_ADDRESS_LSB _u(0) +#define USB_ADDR_ENDP15_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_MAIN_CTRL +// Description : Main control register +#define USB_MAIN_CTRL_OFFSET _u(0x00000040) +#define USB_MAIN_CTRL_BITS _u(0x80000003) +#define USB_MAIN_CTRL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_MAIN_CTRL_SIM_TIMING +// Description : Reduced timings for simulation +#define USB_MAIN_CTRL_SIM_TIMING_RESET _u(0x0) +#define USB_MAIN_CTRL_SIM_TIMING_BITS _u(0x80000000) +#define USB_MAIN_CTRL_SIM_TIMING_MSB _u(31) +#define USB_MAIN_CTRL_SIM_TIMING_LSB _u(31) +#define USB_MAIN_CTRL_SIM_TIMING_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_MAIN_CTRL_HOST_NDEVICE +// Description : Device mode = 0, Host mode = 1 +#define USB_MAIN_CTRL_HOST_NDEVICE_RESET _u(0x0) +#define USB_MAIN_CTRL_HOST_NDEVICE_BITS _u(0x00000002) +#define USB_MAIN_CTRL_HOST_NDEVICE_MSB _u(1) +#define USB_MAIN_CTRL_HOST_NDEVICE_LSB _u(1) +#define USB_MAIN_CTRL_HOST_NDEVICE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_MAIN_CTRL_CONTROLLER_EN +// Description : Enable controller +#define USB_MAIN_CTRL_CONTROLLER_EN_RESET _u(0x0) +#define USB_MAIN_CTRL_CONTROLLER_EN_BITS _u(0x00000001) +#define USB_MAIN_CTRL_CONTROLLER_EN_MSB _u(0) +#define USB_MAIN_CTRL_CONTROLLER_EN_LSB _u(0) +#define USB_MAIN_CTRL_CONTROLLER_EN_ACCESS "RW" +// ============================================================================= +// Register : USB_SOF_WR +// Description : Set the SOF (Start of Frame) frame number in the host +// controller. The SOF packet is sent every 1ms and the host will +// increment the frame number by 1 each time. +#define USB_SOF_WR_OFFSET _u(0x00000044) +#define USB_SOF_WR_BITS _u(0x000007ff) +#define USB_SOF_WR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_SOF_WR_COUNT +// Description : None +#define USB_SOF_WR_COUNT_RESET _u(0x000) +#define USB_SOF_WR_COUNT_BITS _u(0x000007ff) +#define USB_SOF_WR_COUNT_MSB _u(10) +#define USB_SOF_WR_COUNT_LSB _u(0) +#define USB_SOF_WR_COUNT_ACCESS "WF" +// ============================================================================= +// Register : USB_SOF_RD +// Description : Read the last SOF (Start of Frame) frame number seen. In device +// mode the last SOF received from the host. In host mode the last +// SOF sent by the host. +#define USB_SOF_RD_OFFSET _u(0x00000048) +#define USB_SOF_RD_BITS _u(0x000007ff) +#define USB_SOF_RD_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_SOF_RD_COUNT +// Description : None +#define USB_SOF_RD_COUNT_RESET _u(0x000) +#define USB_SOF_RD_COUNT_BITS _u(0x000007ff) +#define USB_SOF_RD_COUNT_MSB _u(10) +#define USB_SOF_RD_COUNT_LSB _u(0) +#define USB_SOF_RD_COUNT_ACCESS "RO" +// ============================================================================= +// Register : USB_SIE_CTRL +// Description : SIE control register +#define USB_SIE_CTRL_OFFSET _u(0x0000004c) +#define USB_SIE_CTRL_BITS _u(0xff07bf5f) +#define USB_SIE_CTRL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_EP0_INT_STALL +// Description : Device: Set bit in EP_STATUS_STALL_NAK when EP0 sends a STALL +#define USB_SIE_CTRL_EP0_INT_STALL_RESET _u(0x0) +#define USB_SIE_CTRL_EP0_INT_STALL_BITS _u(0x80000000) +#define USB_SIE_CTRL_EP0_INT_STALL_MSB _u(31) +#define USB_SIE_CTRL_EP0_INT_STALL_LSB _u(31) +#define USB_SIE_CTRL_EP0_INT_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_EP0_DOUBLE_BUF +// Description : Device: EP0 single buffered = 0, double buffered = 1 +#define USB_SIE_CTRL_EP0_DOUBLE_BUF_RESET _u(0x0) +#define USB_SIE_CTRL_EP0_DOUBLE_BUF_BITS _u(0x40000000) +#define USB_SIE_CTRL_EP0_DOUBLE_BUF_MSB _u(30) +#define USB_SIE_CTRL_EP0_DOUBLE_BUF_LSB _u(30) +#define USB_SIE_CTRL_EP0_DOUBLE_BUF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_EP0_INT_1BUF +// Description : Device: Set bit in BUFF_STATUS for every buffer completed on +// EP0 +#define USB_SIE_CTRL_EP0_INT_1BUF_RESET _u(0x0) +#define USB_SIE_CTRL_EP0_INT_1BUF_BITS _u(0x20000000) +#define USB_SIE_CTRL_EP0_INT_1BUF_MSB _u(29) +#define USB_SIE_CTRL_EP0_INT_1BUF_LSB _u(29) +#define USB_SIE_CTRL_EP0_INT_1BUF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_EP0_INT_2BUF +// Description : Device: Set bit in BUFF_STATUS for every 2 buffers completed on +// EP0 +#define USB_SIE_CTRL_EP0_INT_2BUF_RESET _u(0x0) +#define USB_SIE_CTRL_EP0_INT_2BUF_BITS _u(0x10000000) +#define USB_SIE_CTRL_EP0_INT_2BUF_MSB _u(28) +#define USB_SIE_CTRL_EP0_INT_2BUF_LSB _u(28) +#define USB_SIE_CTRL_EP0_INT_2BUF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_EP0_INT_NAK +// Description : Device: Set bit in EP_STATUS_STALL_NAK when EP0 sends a NAK +#define USB_SIE_CTRL_EP0_INT_NAK_RESET _u(0x0) +#define USB_SIE_CTRL_EP0_INT_NAK_BITS _u(0x08000000) +#define USB_SIE_CTRL_EP0_INT_NAK_MSB _u(27) +#define USB_SIE_CTRL_EP0_INT_NAK_LSB _u(27) +#define USB_SIE_CTRL_EP0_INT_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_DIRECT_EN +// Description : Direct bus drive enable +#define USB_SIE_CTRL_DIRECT_EN_RESET _u(0x0) +#define USB_SIE_CTRL_DIRECT_EN_BITS _u(0x04000000) +#define USB_SIE_CTRL_DIRECT_EN_MSB _u(26) +#define USB_SIE_CTRL_DIRECT_EN_LSB _u(26) +#define USB_SIE_CTRL_DIRECT_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_DIRECT_DP +// Description : Direct control of DP +#define USB_SIE_CTRL_DIRECT_DP_RESET _u(0x0) +#define USB_SIE_CTRL_DIRECT_DP_BITS _u(0x02000000) +#define USB_SIE_CTRL_DIRECT_DP_MSB _u(25) +#define USB_SIE_CTRL_DIRECT_DP_LSB _u(25) +#define USB_SIE_CTRL_DIRECT_DP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_DIRECT_DM +// Description : Direct control of DM +#define USB_SIE_CTRL_DIRECT_DM_RESET _u(0x0) +#define USB_SIE_CTRL_DIRECT_DM_BITS _u(0x01000000) +#define USB_SIE_CTRL_DIRECT_DM_MSB _u(24) +#define USB_SIE_CTRL_DIRECT_DM_LSB _u(24) +#define USB_SIE_CTRL_DIRECT_DM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_TRANSCEIVER_PD +// Description : Power down bus transceiver +#define USB_SIE_CTRL_TRANSCEIVER_PD_RESET _u(0x0) +#define USB_SIE_CTRL_TRANSCEIVER_PD_BITS _u(0x00040000) +#define USB_SIE_CTRL_TRANSCEIVER_PD_MSB _u(18) +#define USB_SIE_CTRL_TRANSCEIVER_PD_LSB _u(18) +#define USB_SIE_CTRL_TRANSCEIVER_PD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_RPU_OPT +// Description : Device: Pull-up strength (0=1K2, 1=2k3) +#define USB_SIE_CTRL_RPU_OPT_RESET _u(0x0) +#define USB_SIE_CTRL_RPU_OPT_BITS _u(0x00020000) +#define USB_SIE_CTRL_RPU_OPT_MSB _u(17) +#define USB_SIE_CTRL_RPU_OPT_LSB _u(17) +#define USB_SIE_CTRL_RPU_OPT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_PULLUP_EN +// Description : Device: Enable pull up resistor +#define USB_SIE_CTRL_PULLUP_EN_RESET _u(0x0) +#define USB_SIE_CTRL_PULLUP_EN_BITS _u(0x00010000) +#define USB_SIE_CTRL_PULLUP_EN_MSB _u(16) +#define USB_SIE_CTRL_PULLUP_EN_LSB _u(16) +#define USB_SIE_CTRL_PULLUP_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_PULLDOWN_EN +// Description : Host: Enable pull down resistors +#define USB_SIE_CTRL_PULLDOWN_EN_RESET _u(0x0) +#define USB_SIE_CTRL_PULLDOWN_EN_BITS _u(0x00008000) +#define USB_SIE_CTRL_PULLDOWN_EN_MSB _u(15) +#define USB_SIE_CTRL_PULLDOWN_EN_LSB _u(15) +#define USB_SIE_CTRL_PULLDOWN_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_RESET_BUS +// Description : Host: Reset bus +#define USB_SIE_CTRL_RESET_BUS_RESET _u(0x0) +#define USB_SIE_CTRL_RESET_BUS_BITS _u(0x00002000) +#define USB_SIE_CTRL_RESET_BUS_MSB _u(13) +#define USB_SIE_CTRL_RESET_BUS_LSB _u(13) +#define USB_SIE_CTRL_RESET_BUS_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_RESUME +// Description : Device: Remote wakeup. Device can initiate its own resume after +// suspend. +#define USB_SIE_CTRL_RESUME_RESET _u(0x0) +#define USB_SIE_CTRL_RESUME_BITS _u(0x00001000) +#define USB_SIE_CTRL_RESUME_MSB _u(12) +#define USB_SIE_CTRL_RESUME_LSB _u(12) +#define USB_SIE_CTRL_RESUME_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_VBUS_EN +// Description : Host: Enable VBUS +#define USB_SIE_CTRL_VBUS_EN_RESET _u(0x0) +#define USB_SIE_CTRL_VBUS_EN_BITS _u(0x00000800) +#define USB_SIE_CTRL_VBUS_EN_MSB _u(11) +#define USB_SIE_CTRL_VBUS_EN_LSB _u(11) +#define USB_SIE_CTRL_VBUS_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_KEEP_ALIVE_EN +// Description : Host: Enable keep alive packet (for low speed bus) +#define USB_SIE_CTRL_KEEP_ALIVE_EN_RESET _u(0x0) +#define USB_SIE_CTRL_KEEP_ALIVE_EN_BITS _u(0x00000400) +#define USB_SIE_CTRL_KEEP_ALIVE_EN_MSB _u(10) +#define USB_SIE_CTRL_KEEP_ALIVE_EN_LSB _u(10) +#define USB_SIE_CTRL_KEEP_ALIVE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_SOF_EN +// Description : Host: Enable SOF generation (for full speed bus) +#define USB_SIE_CTRL_SOF_EN_RESET _u(0x0) +#define USB_SIE_CTRL_SOF_EN_BITS _u(0x00000200) +#define USB_SIE_CTRL_SOF_EN_MSB _u(9) +#define USB_SIE_CTRL_SOF_EN_LSB _u(9) +#define USB_SIE_CTRL_SOF_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_SOF_SYNC +// Description : Host: Delay packet(s) until after SOF +#define USB_SIE_CTRL_SOF_SYNC_RESET _u(0x0) +#define USB_SIE_CTRL_SOF_SYNC_BITS _u(0x00000100) +#define USB_SIE_CTRL_SOF_SYNC_MSB _u(8) +#define USB_SIE_CTRL_SOF_SYNC_LSB _u(8) +#define USB_SIE_CTRL_SOF_SYNC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_PREAMBLE_EN +// Description : Host: Preable enable for LS device on FS hub +#define USB_SIE_CTRL_PREAMBLE_EN_RESET _u(0x0) +#define USB_SIE_CTRL_PREAMBLE_EN_BITS _u(0x00000040) +#define USB_SIE_CTRL_PREAMBLE_EN_MSB _u(6) +#define USB_SIE_CTRL_PREAMBLE_EN_LSB _u(6) +#define USB_SIE_CTRL_PREAMBLE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_STOP_TRANS +// Description : Host: Stop transaction +#define USB_SIE_CTRL_STOP_TRANS_RESET _u(0x0) +#define USB_SIE_CTRL_STOP_TRANS_BITS _u(0x00000010) +#define USB_SIE_CTRL_STOP_TRANS_MSB _u(4) +#define USB_SIE_CTRL_STOP_TRANS_LSB _u(4) +#define USB_SIE_CTRL_STOP_TRANS_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_RECEIVE_DATA +// Description : Host: Receive transaction (IN to host) +#define USB_SIE_CTRL_RECEIVE_DATA_RESET _u(0x0) +#define USB_SIE_CTRL_RECEIVE_DATA_BITS _u(0x00000008) +#define USB_SIE_CTRL_RECEIVE_DATA_MSB _u(3) +#define USB_SIE_CTRL_RECEIVE_DATA_LSB _u(3) +#define USB_SIE_CTRL_RECEIVE_DATA_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_SEND_DATA +// Description : Host: Send transaction (OUT from host) +#define USB_SIE_CTRL_SEND_DATA_RESET _u(0x0) +#define USB_SIE_CTRL_SEND_DATA_BITS _u(0x00000004) +#define USB_SIE_CTRL_SEND_DATA_MSB _u(2) +#define USB_SIE_CTRL_SEND_DATA_LSB _u(2) +#define USB_SIE_CTRL_SEND_DATA_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_SEND_SETUP +// Description : Host: Send Setup packet +#define USB_SIE_CTRL_SEND_SETUP_RESET _u(0x0) +#define USB_SIE_CTRL_SEND_SETUP_BITS _u(0x00000002) +#define USB_SIE_CTRL_SEND_SETUP_MSB _u(1) +#define USB_SIE_CTRL_SEND_SETUP_LSB _u(1) +#define USB_SIE_CTRL_SEND_SETUP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_CTRL_START_TRANS +// Description : Host: Start transaction +#define USB_SIE_CTRL_START_TRANS_RESET _u(0x0) +#define USB_SIE_CTRL_START_TRANS_BITS _u(0x00000001) +#define USB_SIE_CTRL_START_TRANS_MSB _u(0) +#define USB_SIE_CTRL_START_TRANS_LSB _u(0) +#define USB_SIE_CTRL_START_TRANS_ACCESS "SC" +// ============================================================================= +// Register : USB_SIE_STATUS +// Description : SIE status register +#define USB_SIE_STATUS_OFFSET _u(0x00000050) +#define USB_SIE_STATUS_BITS _u(0xff0f0f1d) +#define USB_SIE_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_SIE_STATUS_DATA_SEQ_ERROR +// Description : Data Sequence Error. +// +// The device can raise a sequence error in the following +// conditions: +// +// * A SETUP packet is received followed by a DATA1 packet (data +// phase should always be DATA0) * An OUT packet is received from +// the host but doesn't match the data pid in the buffer control +// register read from DPSRAM +// +// The host can raise a data sequence error in the following +// conditions: +// +// * An IN packet from the device has the wrong data PID +#define USB_SIE_STATUS_DATA_SEQ_ERROR_RESET _u(0x0) +#define USB_SIE_STATUS_DATA_SEQ_ERROR_BITS _u(0x80000000) +#define USB_SIE_STATUS_DATA_SEQ_ERROR_MSB _u(31) +#define USB_SIE_STATUS_DATA_SEQ_ERROR_LSB _u(31) +#define USB_SIE_STATUS_DATA_SEQ_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_STATUS_ACK_REC +// Description : ACK received. Raised by both host and device. +#define USB_SIE_STATUS_ACK_REC_RESET _u(0x0) +#define USB_SIE_STATUS_ACK_REC_BITS _u(0x40000000) +#define USB_SIE_STATUS_ACK_REC_MSB _u(30) +#define USB_SIE_STATUS_ACK_REC_LSB _u(30) +#define USB_SIE_STATUS_ACK_REC_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_STATUS_STALL_REC +// Description : Host: STALL received +#define USB_SIE_STATUS_STALL_REC_RESET _u(0x0) +#define USB_SIE_STATUS_STALL_REC_BITS _u(0x20000000) +#define USB_SIE_STATUS_STALL_REC_MSB _u(29) +#define USB_SIE_STATUS_STALL_REC_LSB _u(29) +#define USB_SIE_STATUS_STALL_REC_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_STATUS_NAK_REC +// Description : Host: NAK received +#define USB_SIE_STATUS_NAK_REC_RESET _u(0x0) +#define USB_SIE_STATUS_NAK_REC_BITS _u(0x10000000) +#define USB_SIE_STATUS_NAK_REC_MSB _u(28) +#define USB_SIE_STATUS_NAK_REC_LSB _u(28) +#define USB_SIE_STATUS_NAK_REC_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_STATUS_RX_TIMEOUT +// Description : RX timeout is raised by both the host and device if an ACK is +// not received in the maximum time specified by the USB spec. +#define USB_SIE_STATUS_RX_TIMEOUT_RESET _u(0x0) +#define USB_SIE_STATUS_RX_TIMEOUT_BITS _u(0x08000000) +#define USB_SIE_STATUS_RX_TIMEOUT_MSB _u(27) +#define USB_SIE_STATUS_RX_TIMEOUT_LSB _u(27) +#define USB_SIE_STATUS_RX_TIMEOUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_STATUS_RX_OVERFLOW +// Description : RX overflow is raised by the Serial RX engine if the incoming +// data is too fast. +#define USB_SIE_STATUS_RX_OVERFLOW_RESET _u(0x0) +#define USB_SIE_STATUS_RX_OVERFLOW_BITS _u(0x04000000) +#define USB_SIE_STATUS_RX_OVERFLOW_MSB _u(26) +#define USB_SIE_STATUS_RX_OVERFLOW_LSB _u(26) +#define USB_SIE_STATUS_RX_OVERFLOW_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_STATUS_BIT_STUFF_ERROR +// Description : Bit Stuff Error. Raised by the Serial RX engine. +#define USB_SIE_STATUS_BIT_STUFF_ERROR_RESET _u(0x0) +#define USB_SIE_STATUS_BIT_STUFF_ERROR_BITS _u(0x02000000) +#define USB_SIE_STATUS_BIT_STUFF_ERROR_MSB _u(25) +#define USB_SIE_STATUS_BIT_STUFF_ERROR_LSB _u(25) +#define USB_SIE_STATUS_BIT_STUFF_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_STATUS_CRC_ERROR +// Description : CRC Error. Raised by the Serial RX engine. +#define USB_SIE_STATUS_CRC_ERROR_RESET _u(0x0) +#define USB_SIE_STATUS_CRC_ERROR_BITS _u(0x01000000) +#define USB_SIE_STATUS_CRC_ERROR_MSB _u(24) +#define USB_SIE_STATUS_CRC_ERROR_LSB _u(24) +#define USB_SIE_STATUS_CRC_ERROR_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_STATUS_BUS_RESET +// Description : Device: bus reset received +#define USB_SIE_STATUS_BUS_RESET_RESET _u(0x0) +#define USB_SIE_STATUS_BUS_RESET_BITS _u(0x00080000) +#define USB_SIE_STATUS_BUS_RESET_MSB _u(19) +#define USB_SIE_STATUS_BUS_RESET_LSB _u(19) +#define USB_SIE_STATUS_BUS_RESET_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_STATUS_TRANS_COMPLETE +// Description : Transaction complete. +// +// Raised by device if: +// +// * An IN or OUT packet is sent with the `LAST_BUFF` bit set in +// the buffer control register +// +// Raised by host if: +// +// * A setup packet is sent when no data in or data out +// transaction follows * An IN packet is received and the +// `LAST_BUFF` bit is set in the buffer control register * An IN +// packet is received with zero length * An OUT packet is sent and +// the `LAST_BUFF` bit is set +#define USB_SIE_STATUS_TRANS_COMPLETE_RESET _u(0x0) +#define USB_SIE_STATUS_TRANS_COMPLETE_BITS _u(0x00040000) +#define USB_SIE_STATUS_TRANS_COMPLETE_MSB _u(18) +#define USB_SIE_STATUS_TRANS_COMPLETE_LSB _u(18) +#define USB_SIE_STATUS_TRANS_COMPLETE_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_STATUS_SETUP_REC +// Description : Device: Setup packet received +#define USB_SIE_STATUS_SETUP_REC_RESET _u(0x0) +#define USB_SIE_STATUS_SETUP_REC_BITS _u(0x00020000) +#define USB_SIE_STATUS_SETUP_REC_MSB _u(17) +#define USB_SIE_STATUS_SETUP_REC_LSB _u(17) +#define USB_SIE_STATUS_SETUP_REC_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_STATUS_CONNECTED +// Description : Device: connected +#define USB_SIE_STATUS_CONNECTED_RESET _u(0x0) +#define USB_SIE_STATUS_CONNECTED_BITS _u(0x00010000) +#define USB_SIE_STATUS_CONNECTED_MSB _u(16) +#define USB_SIE_STATUS_CONNECTED_LSB _u(16) +#define USB_SIE_STATUS_CONNECTED_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_STATUS_RESUME +// Description : Host: Device has initiated a remote resume. Device: host has +// initiated a resume. +#define USB_SIE_STATUS_RESUME_RESET _u(0x0) +#define USB_SIE_STATUS_RESUME_BITS _u(0x00000800) +#define USB_SIE_STATUS_RESUME_MSB _u(11) +#define USB_SIE_STATUS_RESUME_LSB _u(11) +#define USB_SIE_STATUS_RESUME_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_STATUS_VBUS_OVER_CURR +// Description : VBUS over current detected +#define USB_SIE_STATUS_VBUS_OVER_CURR_RESET _u(0x0) +#define USB_SIE_STATUS_VBUS_OVER_CURR_BITS _u(0x00000400) +#define USB_SIE_STATUS_VBUS_OVER_CURR_MSB _u(10) +#define USB_SIE_STATUS_VBUS_OVER_CURR_LSB _u(10) +#define USB_SIE_STATUS_VBUS_OVER_CURR_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_STATUS_SPEED +// Description : Host: device speed. Disconnected = 00, LS = 01, FS = 10 +#define USB_SIE_STATUS_SPEED_RESET _u(0x0) +#define USB_SIE_STATUS_SPEED_BITS _u(0x00000300) +#define USB_SIE_STATUS_SPEED_MSB _u(9) +#define USB_SIE_STATUS_SPEED_LSB _u(8) +#define USB_SIE_STATUS_SPEED_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_STATUS_SUSPENDED +// Description : Bus in suspended state. Valid for device and host. Host and +// device will go into suspend if neither Keep Alive / SOF frames +// are enabled. +#define USB_SIE_STATUS_SUSPENDED_RESET _u(0x0) +#define USB_SIE_STATUS_SUSPENDED_BITS _u(0x00000010) +#define USB_SIE_STATUS_SUSPENDED_MSB _u(4) +#define USB_SIE_STATUS_SUSPENDED_LSB _u(4) +#define USB_SIE_STATUS_SUSPENDED_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_STATUS_LINE_STATE +// Description : USB bus line state +#define USB_SIE_STATUS_LINE_STATE_RESET _u(0x0) +#define USB_SIE_STATUS_LINE_STATE_BITS _u(0x0000000c) +#define USB_SIE_STATUS_LINE_STATE_MSB _u(3) +#define USB_SIE_STATUS_LINE_STATE_LSB _u(2) +#define USB_SIE_STATUS_LINE_STATE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_SIE_STATUS_VBUS_DETECTED +// Description : Device: VBUS Detected +#define USB_SIE_STATUS_VBUS_DETECTED_RESET _u(0x0) +#define USB_SIE_STATUS_VBUS_DETECTED_BITS _u(0x00000001) +#define USB_SIE_STATUS_VBUS_DETECTED_MSB _u(0) +#define USB_SIE_STATUS_VBUS_DETECTED_LSB _u(0) +#define USB_SIE_STATUS_VBUS_DETECTED_ACCESS "RO" +// ============================================================================= +// Register : USB_INT_EP_CTRL +// Description : interrupt endpoint control register +#define USB_INT_EP_CTRL_OFFSET _u(0x00000054) +#define USB_INT_EP_CTRL_BITS _u(0x0000fffe) +#define USB_INT_EP_CTRL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_INT_EP_CTRL_INT_EP_ACTIVE +// Description : Host: Enable interrupt endpoint 1 -> 15 +#define USB_INT_EP_CTRL_INT_EP_ACTIVE_RESET _u(0x0000) +#define USB_INT_EP_CTRL_INT_EP_ACTIVE_BITS _u(0x0000fffe) +#define USB_INT_EP_CTRL_INT_EP_ACTIVE_MSB _u(15) +#define USB_INT_EP_CTRL_INT_EP_ACTIVE_LSB _u(1) +#define USB_INT_EP_CTRL_INT_EP_ACTIVE_ACCESS "RW" +// ============================================================================= +// Register : USB_BUFF_STATUS +// Description : Buffer status register. A bit set here indicates that a buffer +// has completed on the endpoint (if the buffer interrupt is +// enabled). It is possible for 2 buffers to be completed, so +// clearing the buffer status bit may instantly re set it on the +// next clock cycle. +#define USB_BUFF_STATUS_OFFSET _u(0x00000058) +#define USB_BUFF_STATUS_BITS _u(0xffffffff) +#define USB_BUFF_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP15_OUT +// Description : None +#define USB_BUFF_STATUS_EP15_OUT_RESET _u(0x0) +#define USB_BUFF_STATUS_EP15_OUT_BITS _u(0x80000000) +#define USB_BUFF_STATUS_EP15_OUT_MSB _u(31) +#define USB_BUFF_STATUS_EP15_OUT_LSB _u(31) +#define USB_BUFF_STATUS_EP15_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP15_IN +// Description : None +#define USB_BUFF_STATUS_EP15_IN_RESET _u(0x0) +#define USB_BUFF_STATUS_EP15_IN_BITS _u(0x40000000) +#define USB_BUFF_STATUS_EP15_IN_MSB _u(30) +#define USB_BUFF_STATUS_EP15_IN_LSB _u(30) +#define USB_BUFF_STATUS_EP15_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP14_OUT +// Description : None +#define USB_BUFF_STATUS_EP14_OUT_RESET _u(0x0) +#define USB_BUFF_STATUS_EP14_OUT_BITS _u(0x20000000) +#define USB_BUFF_STATUS_EP14_OUT_MSB _u(29) +#define USB_BUFF_STATUS_EP14_OUT_LSB _u(29) +#define USB_BUFF_STATUS_EP14_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP14_IN +// Description : None +#define USB_BUFF_STATUS_EP14_IN_RESET _u(0x0) +#define USB_BUFF_STATUS_EP14_IN_BITS _u(0x10000000) +#define USB_BUFF_STATUS_EP14_IN_MSB _u(28) +#define USB_BUFF_STATUS_EP14_IN_LSB _u(28) +#define USB_BUFF_STATUS_EP14_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP13_OUT +// Description : None +#define USB_BUFF_STATUS_EP13_OUT_RESET _u(0x0) +#define USB_BUFF_STATUS_EP13_OUT_BITS _u(0x08000000) +#define USB_BUFF_STATUS_EP13_OUT_MSB _u(27) +#define USB_BUFF_STATUS_EP13_OUT_LSB _u(27) +#define USB_BUFF_STATUS_EP13_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP13_IN +// Description : None +#define USB_BUFF_STATUS_EP13_IN_RESET _u(0x0) +#define USB_BUFF_STATUS_EP13_IN_BITS _u(0x04000000) +#define USB_BUFF_STATUS_EP13_IN_MSB _u(26) +#define USB_BUFF_STATUS_EP13_IN_LSB _u(26) +#define USB_BUFF_STATUS_EP13_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP12_OUT +// Description : None +#define USB_BUFF_STATUS_EP12_OUT_RESET _u(0x0) +#define USB_BUFF_STATUS_EP12_OUT_BITS _u(0x02000000) +#define USB_BUFF_STATUS_EP12_OUT_MSB _u(25) +#define USB_BUFF_STATUS_EP12_OUT_LSB _u(25) +#define USB_BUFF_STATUS_EP12_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP12_IN +// Description : None +#define USB_BUFF_STATUS_EP12_IN_RESET _u(0x0) +#define USB_BUFF_STATUS_EP12_IN_BITS _u(0x01000000) +#define USB_BUFF_STATUS_EP12_IN_MSB _u(24) +#define USB_BUFF_STATUS_EP12_IN_LSB _u(24) +#define USB_BUFF_STATUS_EP12_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP11_OUT +// Description : None +#define USB_BUFF_STATUS_EP11_OUT_RESET _u(0x0) +#define USB_BUFF_STATUS_EP11_OUT_BITS _u(0x00800000) +#define USB_BUFF_STATUS_EP11_OUT_MSB _u(23) +#define USB_BUFF_STATUS_EP11_OUT_LSB _u(23) +#define USB_BUFF_STATUS_EP11_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP11_IN +// Description : None +#define USB_BUFF_STATUS_EP11_IN_RESET _u(0x0) +#define USB_BUFF_STATUS_EP11_IN_BITS _u(0x00400000) +#define USB_BUFF_STATUS_EP11_IN_MSB _u(22) +#define USB_BUFF_STATUS_EP11_IN_LSB _u(22) +#define USB_BUFF_STATUS_EP11_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP10_OUT +// Description : None +#define USB_BUFF_STATUS_EP10_OUT_RESET _u(0x0) +#define USB_BUFF_STATUS_EP10_OUT_BITS _u(0x00200000) +#define USB_BUFF_STATUS_EP10_OUT_MSB _u(21) +#define USB_BUFF_STATUS_EP10_OUT_LSB _u(21) +#define USB_BUFF_STATUS_EP10_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP10_IN +// Description : None +#define USB_BUFF_STATUS_EP10_IN_RESET _u(0x0) +#define USB_BUFF_STATUS_EP10_IN_BITS _u(0x00100000) +#define USB_BUFF_STATUS_EP10_IN_MSB _u(20) +#define USB_BUFF_STATUS_EP10_IN_LSB _u(20) +#define USB_BUFF_STATUS_EP10_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP9_OUT +// Description : None +#define USB_BUFF_STATUS_EP9_OUT_RESET _u(0x0) +#define USB_BUFF_STATUS_EP9_OUT_BITS _u(0x00080000) +#define USB_BUFF_STATUS_EP9_OUT_MSB _u(19) +#define USB_BUFF_STATUS_EP9_OUT_LSB _u(19) +#define USB_BUFF_STATUS_EP9_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP9_IN +// Description : None +#define USB_BUFF_STATUS_EP9_IN_RESET _u(0x0) +#define USB_BUFF_STATUS_EP9_IN_BITS _u(0x00040000) +#define USB_BUFF_STATUS_EP9_IN_MSB _u(18) +#define USB_BUFF_STATUS_EP9_IN_LSB _u(18) +#define USB_BUFF_STATUS_EP9_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP8_OUT +// Description : None +#define USB_BUFF_STATUS_EP8_OUT_RESET _u(0x0) +#define USB_BUFF_STATUS_EP8_OUT_BITS _u(0x00020000) +#define USB_BUFF_STATUS_EP8_OUT_MSB _u(17) +#define USB_BUFF_STATUS_EP8_OUT_LSB _u(17) +#define USB_BUFF_STATUS_EP8_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP8_IN +// Description : None +#define USB_BUFF_STATUS_EP8_IN_RESET _u(0x0) +#define USB_BUFF_STATUS_EP8_IN_BITS _u(0x00010000) +#define USB_BUFF_STATUS_EP8_IN_MSB _u(16) +#define USB_BUFF_STATUS_EP8_IN_LSB _u(16) +#define USB_BUFF_STATUS_EP8_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP7_OUT +// Description : None +#define USB_BUFF_STATUS_EP7_OUT_RESET _u(0x0) +#define USB_BUFF_STATUS_EP7_OUT_BITS _u(0x00008000) +#define USB_BUFF_STATUS_EP7_OUT_MSB _u(15) +#define USB_BUFF_STATUS_EP7_OUT_LSB _u(15) +#define USB_BUFF_STATUS_EP7_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP7_IN +// Description : None +#define USB_BUFF_STATUS_EP7_IN_RESET _u(0x0) +#define USB_BUFF_STATUS_EP7_IN_BITS _u(0x00004000) +#define USB_BUFF_STATUS_EP7_IN_MSB _u(14) +#define USB_BUFF_STATUS_EP7_IN_LSB _u(14) +#define USB_BUFF_STATUS_EP7_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP6_OUT +// Description : None +#define USB_BUFF_STATUS_EP6_OUT_RESET _u(0x0) +#define USB_BUFF_STATUS_EP6_OUT_BITS _u(0x00002000) +#define USB_BUFF_STATUS_EP6_OUT_MSB _u(13) +#define USB_BUFF_STATUS_EP6_OUT_LSB _u(13) +#define USB_BUFF_STATUS_EP6_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP6_IN +// Description : None +#define USB_BUFF_STATUS_EP6_IN_RESET _u(0x0) +#define USB_BUFF_STATUS_EP6_IN_BITS _u(0x00001000) +#define USB_BUFF_STATUS_EP6_IN_MSB _u(12) +#define USB_BUFF_STATUS_EP6_IN_LSB _u(12) +#define USB_BUFF_STATUS_EP6_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP5_OUT +// Description : None +#define USB_BUFF_STATUS_EP5_OUT_RESET _u(0x0) +#define USB_BUFF_STATUS_EP5_OUT_BITS _u(0x00000800) +#define USB_BUFF_STATUS_EP5_OUT_MSB _u(11) +#define USB_BUFF_STATUS_EP5_OUT_LSB _u(11) +#define USB_BUFF_STATUS_EP5_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP5_IN +// Description : None +#define USB_BUFF_STATUS_EP5_IN_RESET _u(0x0) +#define USB_BUFF_STATUS_EP5_IN_BITS _u(0x00000400) +#define USB_BUFF_STATUS_EP5_IN_MSB _u(10) +#define USB_BUFF_STATUS_EP5_IN_LSB _u(10) +#define USB_BUFF_STATUS_EP5_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP4_OUT +// Description : None +#define USB_BUFF_STATUS_EP4_OUT_RESET _u(0x0) +#define USB_BUFF_STATUS_EP4_OUT_BITS _u(0x00000200) +#define USB_BUFF_STATUS_EP4_OUT_MSB _u(9) +#define USB_BUFF_STATUS_EP4_OUT_LSB _u(9) +#define USB_BUFF_STATUS_EP4_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP4_IN +// Description : None +#define USB_BUFF_STATUS_EP4_IN_RESET _u(0x0) +#define USB_BUFF_STATUS_EP4_IN_BITS _u(0x00000100) +#define USB_BUFF_STATUS_EP4_IN_MSB _u(8) +#define USB_BUFF_STATUS_EP4_IN_LSB _u(8) +#define USB_BUFF_STATUS_EP4_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP3_OUT +// Description : None +#define USB_BUFF_STATUS_EP3_OUT_RESET _u(0x0) +#define USB_BUFF_STATUS_EP3_OUT_BITS _u(0x00000080) +#define USB_BUFF_STATUS_EP3_OUT_MSB _u(7) +#define USB_BUFF_STATUS_EP3_OUT_LSB _u(7) +#define USB_BUFF_STATUS_EP3_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP3_IN +// Description : None +#define USB_BUFF_STATUS_EP3_IN_RESET _u(0x0) +#define USB_BUFF_STATUS_EP3_IN_BITS _u(0x00000040) +#define USB_BUFF_STATUS_EP3_IN_MSB _u(6) +#define USB_BUFF_STATUS_EP3_IN_LSB _u(6) +#define USB_BUFF_STATUS_EP3_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP2_OUT +// Description : None +#define USB_BUFF_STATUS_EP2_OUT_RESET _u(0x0) +#define USB_BUFF_STATUS_EP2_OUT_BITS _u(0x00000020) +#define USB_BUFF_STATUS_EP2_OUT_MSB _u(5) +#define USB_BUFF_STATUS_EP2_OUT_LSB _u(5) +#define USB_BUFF_STATUS_EP2_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP2_IN +// Description : None +#define USB_BUFF_STATUS_EP2_IN_RESET _u(0x0) +#define USB_BUFF_STATUS_EP2_IN_BITS _u(0x00000010) +#define USB_BUFF_STATUS_EP2_IN_MSB _u(4) +#define USB_BUFF_STATUS_EP2_IN_LSB _u(4) +#define USB_BUFF_STATUS_EP2_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP1_OUT +// Description : None +#define USB_BUFF_STATUS_EP1_OUT_RESET _u(0x0) +#define USB_BUFF_STATUS_EP1_OUT_BITS _u(0x00000008) +#define USB_BUFF_STATUS_EP1_OUT_MSB _u(3) +#define USB_BUFF_STATUS_EP1_OUT_LSB _u(3) +#define USB_BUFF_STATUS_EP1_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP1_IN +// Description : None +#define USB_BUFF_STATUS_EP1_IN_RESET _u(0x0) +#define USB_BUFF_STATUS_EP1_IN_BITS _u(0x00000004) +#define USB_BUFF_STATUS_EP1_IN_MSB _u(2) +#define USB_BUFF_STATUS_EP1_IN_LSB _u(2) +#define USB_BUFF_STATUS_EP1_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP0_OUT +// Description : None +#define USB_BUFF_STATUS_EP0_OUT_RESET _u(0x0) +#define USB_BUFF_STATUS_EP0_OUT_BITS _u(0x00000002) +#define USB_BUFF_STATUS_EP0_OUT_MSB _u(1) +#define USB_BUFF_STATUS_EP0_OUT_LSB _u(1) +#define USB_BUFF_STATUS_EP0_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_STATUS_EP0_IN +// Description : None +#define USB_BUFF_STATUS_EP0_IN_RESET _u(0x0) +#define USB_BUFF_STATUS_EP0_IN_BITS _u(0x00000001) +#define USB_BUFF_STATUS_EP0_IN_MSB _u(0) +#define USB_BUFF_STATUS_EP0_IN_LSB _u(0) +#define USB_BUFF_STATUS_EP0_IN_ACCESS "WC" +// ============================================================================= +// Register : USB_BUFF_CPU_SHOULD_HANDLE +// Description : Which of the double buffers should be handled. Only valid if +// using an interrupt per buffer (i.e. not per 2 buffers). Not +// valid for host interrupt endpoint polling because they are only +// single buffered. +#define USB_BUFF_CPU_SHOULD_HANDLE_OFFSET _u(0x0000005c) +#define USB_BUFF_CPU_SHOULD_HANDLE_BITS _u(0xffffffff) +#define USB_BUFF_CPU_SHOULD_HANDLE_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP15_OUT +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP15_OUT_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP15_OUT_BITS _u(0x80000000) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP15_OUT_MSB _u(31) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP15_OUT_LSB _u(31) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP15_OUT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP15_IN +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP15_IN_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP15_IN_BITS _u(0x40000000) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP15_IN_MSB _u(30) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP15_IN_LSB _u(30) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP15_IN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP14_OUT +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP14_OUT_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP14_OUT_BITS _u(0x20000000) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP14_OUT_MSB _u(29) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP14_OUT_LSB _u(29) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP14_OUT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP14_IN +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP14_IN_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP14_IN_BITS _u(0x10000000) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP14_IN_MSB _u(28) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP14_IN_LSB _u(28) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP14_IN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP13_OUT +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP13_OUT_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP13_OUT_BITS _u(0x08000000) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP13_OUT_MSB _u(27) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP13_OUT_LSB _u(27) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP13_OUT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP13_IN +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP13_IN_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP13_IN_BITS _u(0x04000000) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP13_IN_MSB _u(26) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP13_IN_LSB _u(26) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP13_IN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP12_OUT +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP12_OUT_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP12_OUT_BITS _u(0x02000000) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP12_OUT_MSB _u(25) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP12_OUT_LSB _u(25) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP12_OUT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP12_IN +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP12_IN_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP12_IN_BITS _u(0x01000000) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP12_IN_MSB _u(24) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP12_IN_LSB _u(24) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP12_IN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP11_OUT +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP11_OUT_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP11_OUT_BITS _u(0x00800000) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP11_OUT_MSB _u(23) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP11_OUT_LSB _u(23) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP11_OUT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP11_IN +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP11_IN_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP11_IN_BITS _u(0x00400000) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP11_IN_MSB _u(22) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP11_IN_LSB _u(22) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP11_IN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP10_OUT +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP10_OUT_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP10_OUT_BITS _u(0x00200000) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP10_OUT_MSB _u(21) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP10_OUT_LSB _u(21) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP10_OUT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP10_IN +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP10_IN_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP10_IN_BITS _u(0x00100000) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP10_IN_MSB _u(20) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP10_IN_LSB _u(20) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP10_IN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP9_OUT +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP9_OUT_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP9_OUT_BITS _u(0x00080000) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP9_OUT_MSB _u(19) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP9_OUT_LSB _u(19) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP9_OUT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP9_IN +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP9_IN_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP9_IN_BITS _u(0x00040000) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP9_IN_MSB _u(18) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP9_IN_LSB _u(18) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP9_IN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP8_OUT +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP8_OUT_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP8_OUT_BITS _u(0x00020000) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP8_OUT_MSB _u(17) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP8_OUT_LSB _u(17) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP8_OUT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP8_IN +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP8_IN_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP8_IN_BITS _u(0x00010000) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP8_IN_MSB _u(16) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP8_IN_LSB _u(16) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP8_IN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP7_OUT +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP7_OUT_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP7_OUT_BITS _u(0x00008000) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP7_OUT_MSB _u(15) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP7_OUT_LSB _u(15) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP7_OUT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP7_IN +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP7_IN_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP7_IN_BITS _u(0x00004000) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP7_IN_MSB _u(14) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP7_IN_LSB _u(14) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP7_IN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP6_OUT +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP6_OUT_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP6_OUT_BITS _u(0x00002000) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP6_OUT_MSB _u(13) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP6_OUT_LSB _u(13) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP6_OUT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP6_IN +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP6_IN_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP6_IN_BITS _u(0x00001000) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP6_IN_MSB _u(12) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP6_IN_LSB _u(12) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP6_IN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP5_OUT +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP5_OUT_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP5_OUT_BITS _u(0x00000800) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP5_OUT_MSB _u(11) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP5_OUT_LSB _u(11) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP5_OUT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP5_IN +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP5_IN_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP5_IN_BITS _u(0x00000400) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP5_IN_MSB _u(10) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP5_IN_LSB _u(10) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP5_IN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP4_OUT +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP4_OUT_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP4_OUT_BITS _u(0x00000200) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP4_OUT_MSB _u(9) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP4_OUT_LSB _u(9) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP4_OUT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP4_IN +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP4_IN_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP4_IN_BITS _u(0x00000100) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP4_IN_MSB _u(8) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP4_IN_LSB _u(8) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP4_IN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP3_OUT +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP3_OUT_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP3_OUT_BITS _u(0x00000080) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP3_OUT_MSB _u(7) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP3_OUT_LSB _u(7) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP3_OUT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP3_IN +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP3_IN_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP3_IN_BITS _u(0x00000040) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP3_IN_MSB _u(6) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP3_IN_LSB _u(6) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP3_IN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP2_OUT +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP2_OUT_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP2_OUT_BITS _u(0x00000020) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP2_OUT_MSB _u(5) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP2_OUT_LSB _u(5) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP2_OUT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP2_IN +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP2_IN_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP2_IN_BITS _u(0x00000010) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP2_IN_MSB _u(4) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP2_IN_LSB _u(4) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP2_IN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP1_OUT +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP1_OUT_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP1_OUT_BITS _u(0x00000008) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP1_OUT_MSB _u(3) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP1_OUT_LSB _u(3) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP1_OUT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP1_IN +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP1_IN_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP1_IN_BITS _u(0x00000004) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP1_IN_MSB _u(2) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP1_IN_LSB _u(2) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP1_IN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP0_OUT +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP0_OUT_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP0_OUT_BITS _u(0x00000002) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP0_OUT_MSB _u(1) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP0_OUT_LSB _u(1) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP0_OUT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_BUFF_CPU_SHOULD_HANDLE_EP0_IN +// Description : None +#define USB_BUFF_CPU_SHOULD_HANDLE_EP0_IN_RESET _u(0x0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP0_IN_BITS _u(0x00000001) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP0_IN_MSB _u(0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP0_IN_LSB _u(0) +#define USB_BUFF_CPU_SHOULD_HANDLE_EP0_IN_ACCESS "RO" +// ============================================================================= +// Register : USB_EP_ABORT +// Description : Device only: Can be set to ignore the buffer control register +// for this endpoint in case you would like to revoke a buffer. A +// NAK will be sent for every access to the endpoint until this +// bit is cleared. A corresponding bit in `EP_ABORT_DONE` is set +// when it is safe to modify the buffer control register. +#define USB_EP_ABORT_OFFSET _u(0x00000060) +#define USB_EP_ABORT_BITS _u(0xffffffff) +#define USB_EP_ABORT_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP15_OUT +// Description : None +#define USB_EP_ABORT_EP15_OUT_RESET _u(0x0) +#define USB_EP_ABORT_EP15_OUT_BITS _u(0x80000000) +#define USB_EP_ABORT_EP15_OUT_MSB _u(31) +#define USB_EP_ABORT_EP15_OUT_LSB _u(31) +#define USB_EP_ABORT_EP15_OUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP15_IN +// Description : None +#define USB_EP_ABORT_EP15_IN_RESET _u(0x0) +#define USB_EP_ABORT_EP15_IN_BITS _u(0x40000000) +#define USB_EP_ABORT_EP15_IN_MSB _u(30) +#define USB_EP_ABORT_EP15_IN_LSB _u(30) +#define USB_EP_ABORT_EP15_IN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP14_OUT +// Description : None +#define USB_EP_ABORT_EP14_OUT_RESET _u(0x0) +#define USB_EP_ABORT_EP14_OUT_BITS _u(0x20000000) +#define USB_EP_ABORT_EP14_OUT_MSB _u(29) +#define USB_EP_ABORT_EP14_OUT_LSB _u(29) +#define USB_EP_ABORT_EP14_OUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP14_IN +// Description : None +#define USB_EP_ABORT_EP14_IN_RESET _u(0x0) +#define USB_EP_ABORT_EP14_IN_BITS _u(0x10000000) +#define USB_EP_ABORT_EP14_IN_MSB _u(28) +#define USB_EP_ABORT_EP14_IN_LSB _u(28) +#define USB_EP_ABORT_EP14_IN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP13_OUT +// Description : None +#define USB_EP_ABORT_EP13_OUT_RESET _u(0x0) +#define USB_EP_ABORT_EP13_OUT_BITS _u(0x08000000) +#define USB_EP_ABORT_EP13_OUT_MSB _u(27) +#define USB_EP_ABORT_EP13_OUT_LSB _u(27) +#define USB_EP_ABORT_EP13_OUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP13_IN +// Description : None +#define USB_EP_ABORT_EP13_IN_RESET _u(0x0) +#define USB_EP_ABORT_EP13_IN_BITS _u(0x04000000) +#define USB_EP_ABORT_EP13_IN_MSB _u(26) +#define USB_EP_ABORT_EP13_IN_LSB _u(26) +#define USB_EP_ABORT_EP13_IN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP12_OUT +// Description : None +#define USB_EP_ABORT_EP12_OUT_RESET _u(0x0) +#define USB_EP_ABORT_EP12_OUT_BITS _u(0x02000000) +#define USB_EP_ABORT_EP12_OUT_MSB _u(25) +#define USB_EP_ABORT_EP12_OUT_LSB _u(25) +#define USB_EP_ABORT_EP12_OUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP12_IN +// Description : None +#define USB_EP_ABORT_EP12_IN_RESET _u(0x0) +#define USB_EP_ABORT_EP12_IN_BITS _u(0x01000000) +#define USB_EP_ABORT_EP12_IN_MSB _u(24) +#define USB_EP_ABORT_EP12_IN_LSB _u(24) +#define USB_EP_ABORT_EP12_IN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP11_OUT +// Description : None +#define USB_EP_ABORT_EP11_OUT_RESET _u(0x0) +#define USB_EP_ABORT_EP11_OUT_BITS _u(0x00800000) +#define USB_EP_ABORT_EP11_OUT_MSB _u(23) +#define USB_EP_ABORT_EP11_OUT_LSB _u(23) +#define USB_EP_ABORT_EP11_OUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP11_IN +// Description : None +#define USB_EP_ABORT_EP11_IN_RESET _u(0x0) +#define USB_EP_ABORT_EP11_IN_BITS _u(0x00400000) +#define USB_EP_ABORT_EP11_IN_MSB _u(22) +#define USB_EP_ABORT_EP11_IN_LSB _u(22) +#define USB_EP_ABORT_EP11_IN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP10_OUT +// Description : None +#define USB_EP_ABORT_EP10_OUT_RESET _u(0x0) +#define USB_EP_ABORT_EP10_OUT_BITS _u(0x00200000) +#define USB_EP_ABORT_EP10_OUT_MSB _u(21) +#define USB_EP_ABORT_EP10_OUT_LSB _u(21) +#define USB_EP_ABORT_EP10_OUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP10_IN +// Description : None +#define USB_EP_ABORT_EP10_IN_RESET _u(0x0) +#define USB_EP_ABORT_EP10_IN_BITS _u(0x00100000) +#define USB_EP_ABORT_EP10_IN_MSB _u(20) +#define USB_EP_ABORT_EP10_IN_LSB _u(20) +#define USB_EP_ABORT_EP10_IN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP9_OUT +// Description : None +#define USB_EP_ABORT_EP9_OUT_RESET _u(0x0) +#define USB_EP_ABORT_EP9_OUT_BITS _u(0x00080000) +#define USB_EP_ABORT_EP9_OUT_MSB _u(19) +#define USB_EP_ABORT_EP9_OUT_LSB _u(19) +#define USB_EP_ABORT_EP9_OUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP9_IN +// Description : None +#define USB_EP_ABORT_EP9_IN_RESET _u(0x0) +#define USB_EP_ABORT_EP9_IN_BITS _u(0x00040000) +#define USB_EP_ABORT_EP9_IN_MSB _u(18) +#define USB_EP_ABORT_EP9_IN_LSB _u(18) +#define USB_EP_ABORT_EP9_IN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP8_OUT +// Description : None +#define USB_EP_ABORT_EP8_OUT_RESET _u(0x0) +#define USB_EP_ABORT_EP8_OUT_BITS _u(0x00020000) +#define USB_EP_ABORT_EP8_OUT_MSB _u(17) +#define USB_EP_ABORT_EP8_OUT_LSB _u(17) +#define USB_EP_ABORT_EP8_OUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP8_IN +// Description : None +#define USB_EP_ABORT_EP8_IN_RESET _u(0x0) +#define USB_EP_ABORT_EP8_IN_BITS _u(0x00010000) +#define USB_EP_ABORT_EP8_IN_MSB _u(16) +#define USB_EP_ABORT_EP8_IN_LSB _u(16) +#define USB_EP_ABORT_EP8_IN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP7_OUT +// Description : None +#define USB_EP_ABORT_EP7_OUT_RESET _u(0x0) +#define USB_EP_ABORT_EP7_OUT_BITS _u(0x00008000) +#define USB_EP_ABORT_EP7_OUT_MSB _u(15) +#define USB_EP_ABORT_EP7_OUT_LSB _u(15) +#define USB_EP_ABORT_EP7_OUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP7_IN +// Description : None +#define USB_EP_ABORT_EP7_IN_RESET _u(0x0) +#define USB_EP_ABORT_EP7_IN_BITS _u(0x00004000) +#define USB_EP_ABORT_EP7_IN_MSB _u(14) +#define USB_EP_ABORT_EP7_IN_LSB _u(14) +#define USB_EP_ABORT_EP7_IN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP6_OUT +// Description : None +#define USB_EP_ABORT_EP6_OUT_RESET _u(0x0) +#define USB_EP_ABORT_EP6_OUT_BITS _u(0x00002000) +#define USB_EP_ABORT_EP6_OUT_MSB _u(13) +#define USB_EP_ABORT_EP6_OUT_LSB _u(13) +#define USB_EP_ABORT_EP6_OUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP6_IN +// Description : None +#define USB_EP_ABORT_EP6_IN_RESET _u(0x0) +#define USB_EP_ABORT_EP6_IN_BITS _u(0x00001000) +#define USB_EP_ABORT_EP6_IN_MSB _u(12) +#define USB_EP_ABORT_EP6_IN_LSB _u(12) +#define USB_EP_ABORT_EP6_IN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP5_OUT +// Description : None +#define USB_EP_ABORT_EP5_OUT_RESET _u(0x0) +#define USB_EP_ABORT_EP5_OUT_BITS _u(0x00000800) +#define USB_EP_ABORT_EP5_OUT_MSB _u(11) +#define USB_EP_ABORT_EP5_OUT_LSB _u(11) +#define USB_EP_ABORT_EP5_OUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP5_IN +// Description : None +#define USB_EP_ABORT_EP5_IN_RESET _u(0x0) +#define USB_EP_ABORT_EP5_IN_BITS _u(0x00000400) +#define USB_EP_ABORT_EP5_IN_MSB _u(10) +#define USB_EP_ABORT_EP5_IN_LSB _u(10) +#define USB_EP_ABORT_EP5_IN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP4_OUT +// Description : None +#define USB_EP_ABORT_EP4_OUT_RESET _u(0x0) +#define USB_EP_ABORT_EP4_OUT_BITS _u(0x00000200) +#define USB_EP_ABORT_EP4_OUT_MSB _u(9) +#define USB_EP_ABORT_EP4_OUT_LSB _u(9) +#define USB_EP_ABORT_EP4_OUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP4_IN +// Description : None +#define USB_EP_ABORT_EP4_IN_RESET _u(0x0) +#define USB_EP_ABORT_EP4_IN_BITS _u(0x00000100) +#define USB_EP_ABORT_EP4_IN_MSB _u(8) +#define USB_EP_ABORT_EP4_IN_LSB _u(8) +#define USB_EP_ABORT_EP4_IN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP3_OUT +// Description : None +#define USB_EP_ABORT_EP3_OUT_RESET _u(0x0) +#define USB_EP_ABORT_EP3_OUT_BITS _u(0x00000080) +#define USB_EP_ABORT_EP3_OUT_MSB _u(7) +#define USB_EP_ABORT_EP3_OUT_LSB _u(7) +#define USB_EP_ABORT_EP3_OUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP3_IN +// Description : None +#define USB_EP_ABORT_EP3_IN_RESET _u(0x0) +#define USB_EP_ABORT_EP3_IN_BITS _u(0x00000040) +#define USB_EP_ABORT_EP3_IN_MSB _u(6) +#define USB_EP_ABORT_EP3_IN_LSB _u(6) +#define USB_EP_ABORT_EP3_IN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP2_OUT +// Description : None +#define USB_EP_ABORT_EP2_OUT_RESET _u(0x0) +#define USB_EP_ABORT_EP2_OUT_BITS _u(0x00000020) +#define USB_EP_ABORT_EP2_OUT_MSB _u(5) +#define USB_EP_ABORT_EP2_OUT_LSB _u(5) +#define USB_EP_ABORT_EP2_OUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP2_IN +// Description : None +#define USB_EP_ABORT_EP2_IN_RESET _u(0x0) +#define USB_EP_ABORT_EP2_IN_BITS _u(0x00000010) +#define USB_EP_ABORT_EP2_IN_MSB _u(4) +#define USB_EP_ABORT_EP2_IN_LSB _u(4) +#define USB_EP_ABORT_EP2_IN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP1_OUT +// Description : None +#define USB_EP_ABORT_EP1_OUT_RESET _u(0x0) +#define USB_EP_ABORT_EP1_OUT_BITS _u(0x00000008) +#define USB_EP_ABORT_EP1_OUT_MSB _u(3) +#define USB_EP_ABORT_EP1_OUT_LSB _u(3) +#define USB_EP_ABORT_EP1_OUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP1_IN +// Description : None +#define USB_EP_ABORT_EP1_IN_RESET _u(0x0) +#define USB_EP_ABORT_EP1_IN_BITS _u(0x00000004) +#define USB_EP_ABORT_EP1_IN_MSB _u(2) +#define USB_EP_ABORT_EP1_IN_LSB _u(2) +#define USB_EP_ABORT_EP1_IN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP0_OUT +// Description : None +#define USB_EP_ABORT_EP0_OUT_RESET _u(0x0) +#define USB_EP_ABORT_EP0_OUT_BITS _u(0x00000002) +#define USB_EP_ABORT_EP0_OUT_MSB _u(1) +#define USB_EP_ABORT_EP0_OUT_LSB _u(1) +#define USB_EP_ABORT_EP0_OUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_EP0_IN +// Description : None +#define USB_EP_ABORT_EP0_IN_RESET _u(0x0) +#define USB_EP_ABORT_EP0_IN_BITS _u(0x00000001) +#define USB_EP_ABORT_EP0_IN_MSB _u(0) +#define USB_EP_ABORT_EP0_IN_LSB _u(0) +#define USB_EP_ABORT_EP0_IN_ACCESS "RW" +// ============================================================================= +// Register : USB_EP_ABORT_DONE +// Description : Device only: Used in conjunction with `EP_ABORT`. Set once an +// endpoint is idle so the programmer knows it is safe to modify +// the buffer control register. +#define USB_EP_ABORT_DONE_OFFSET _u(0x00000064) +#define USB_EP_ABORT_DONE_BITS _u(0xffffffff) +#define USB_EP_ABORT_DONE_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP15_OUT +// Description : None +#define USB_EP_ABORT_DONE_EP15_OUT_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP15_OUT_BITS _u(0x80000000) +#define USB_EP_ABORT_DONE_EP15_OUT_MSB _u(31) +#define USB_EP_ABORT_DONE_EP15_OUT_LSB _u(31) +#define USB_EP_ABORT_DONE_EP15_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP15_IN +// Description : None +#define USB_EP_ABORT_DONE_EP15_IN_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP15_IN_BITS _u(0x40000000) +#define USB_EP_ABORT_DONE_EP15_IN_MSB _u(30) +#define USB_EP_ABORT_DONE_EP15_IN_LSB _u(30) +#define USB_EP_ABORT_DONE_EP15_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP14_OUT +// Description : None +#define USB_EP_ABORT_DONE_EP14_OUT_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP14_OUT_BITS _u(0x20000000) +#define USB_EP_ABORT_DONE_EP14_OUT_MSB _u(29) +#define USB_EP_ABORT_DONE_EP14_OUT_LSB _u(29) +#define USB_EP_ABORT_DONE_EP14_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP14_IN +// Description : None +#define USB_EP_ABORT_DONE_EP14_IN_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP14_IN_BITS _u(0x10000000) +#define USB_EP_ABORT_DONE_EP14_IN_MSB _u(28) +#define USB_EP_ABORT_DONE_EP14_IN_LSB _u(28) +#define USB_EP_ABORT_DONE_EP14_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP13_OUT +// Description : None +#define USB_EP_ABORT_DONE_EP13_OUT_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP13_OUT_BITS _u(0x08000000) +#define USB_EP_ABORT_DONE_EP13_OUT_MSB _u(27) +#define USB_EP_ABORT_DONE_EP13_OUT_LSB _u(27) +#define USB_EP_ABORT_DONE_EP13_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP13_IN +// Description : None +#define USB_EP_ABORT_DONE_EP13_IN_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP13_IN_BITS _u(0x04000000) +#define USB_EP_ABORT_DONE_EP13_IN_MSB _u(26) +#define USB_EP_ABORT_DONE_EP13_IN_LSB _u(26) +#define USB_EP_ABORT_DONE_EP13_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP12_OUT +// Description : None +#define USB_EP_ABORT_DONE_EP12_OUT_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP12_OUT_BITS _u(0x02000000) +#define USB_EP_ABORT_DONE_EP12_OUT_MSB _u(25) +#define USB_EP_ABORT_DONE_EP12_OUT_LSB _u(25) +#define USB_EP_ABORT_DONE_EP12_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP12_IN +// Description : None +#define USB_EP_ABORT_DONE_EP12_IN_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP12_IN_BITS _u(0x01000000) +#define USB_EP_ABORT_DONE_EP12_IN_MSB _u(24) +#define USB_EP_ABORT_DONE_EP12_IN_LSB _u(24) +#define USB_EP_ABORT_DONE_EP12_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP11_OUT +// Description : None +#define USB_EP_ABORT_DONE_EP11_OUT_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP11_OUT_BITS _u(0x00800000) +#define USB_EP_ABORT_DONE_EP11_OUT_MSB _u(23) +#define USB_EP_ABORT_DONE_EP11_OUT_LSB _u(23) +#define USB_EP_ABORT_DONE_EP11_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP11_IN +// Description : None +#define USB_EP_ABORT_DONE_EP11_IN_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP11_IN_BITS _u(0x00400000) +#define USB_EP_ABORT_DONE_EP11_IN_MSB _u(22) +#define USB_EP_ABORT_DONE_EP11_IN_LSB _u(22) +#define USB_EP_ABORT_DONE_EP11_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP10_OUT +// Description : None +#define USB_EP_ABORT_DONE_EP10_OUT_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP10_OUT_BITS _u(0x00200000) +#define USB_EP_ABORT_DONE_EP10_OUT_MSB _u(21) +#define USB_EP_ABORT_DONE_EP10_OUT_LSB _u(21) +#define USB_EP_ABORT_DONE_EP10_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP10_IN +// Description : None +#define USB_EP_ABORT_DONE_EP10_IN_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP10_IN_BITS _u(0x00100000) +#define USB_EP_ABORT_DONE_EP10_IN_MSB _u(20) +#define USB_EP_ABORT_DONE_EP10_IN_LSB _u(20) +#define USB_EP_ABORT_DONE_EP10_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP9_OUT +// Description : None +#define USB_EP_ABORT_DONE_EP9_OUT_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP9_OUT_BITS _u(0x00080000) +#define USB_EP_ABORT_DONE_EP9_OUT_MSB _u(19) +#define USB_EP_ABORT_DONE_EP9_OUT_LSB _u(19) +#define USB_EP_ABORT_DONE_EP9_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP9_IN +// Description : None +#define USB_EP_ABORT_DONE_EP9_IN_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP9_IN_BITS _u(0x00040000) +#define USB_EP_ABORT_DONE_EP9_IN_MSB _u(18) +#define USB_EP_ABORT_DONE_EP9_IN_LSB _u(18) +#define USB_EP_ABORT_DONE_EP9_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP8_OUT +// Description : None +#define USB_EP_ABORT_DONE_EP8_OUT_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP8_OUT_BITS _u(0x00020000) +#define USB_EP_ABORT_DONE_EP8_OUT_MSB _u(17) +#define USB_EP_ABORT_DONE_EP8_OUT_LSB _u(17) +#define USB_EP_ABORT_DONE_EP8_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP8_IN +// Description : None +#define USB_EP_ABORT_DONE_EP8_IN_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP8_IN_BITS _u(0x00010000) +#define USB_EP_ABORT_DONE_EP8_IN_MSB _u(16) +#define USB_EP_ABORT_DONE_EP8_IN_LSB _u(16) +#define USB_EP_ABORT_DONE_EP8_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP7_OUT +// Description : None +#define USB_EP_ABORT_DONE_EP7_OUT_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP7_OUT_BITS _u(0x00008000) +#define USB_EP_ABORT_DONE_EP7_OUT_MSB _u(15) +#define USB_EP_ABORT_DONE_EP7_OUT_LSB _u(15) +#define USB_EP_ABORT_DONE_EP7_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP7_IN +// Description : None +#define USB_EP_ABORT_DONE_EP7_IN_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP7_IN_BITS _u(0x00004000) +#define USB_EP_ABORT_DONE_EP7_IN_MSB _u(14) +#define USB_EP_ABORT_DONE_EP7_IN_LSB _u(14) +#define USB_EP_ABORT_DONE_EP7_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP6_OUT +// Description : None +#define USB_EP_ABORT_DONE_EP6_OUT_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP6_OUT_BITS _u(0x00002000) +#define USB_EP_ABORT_DONE_EP6_OUT_MSB _u(13) +#define USB_EP_ABORT_DONE_EP6_OUT_LSB _u(13) +#define USB_EP_ABORT_DONE_EP6_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP6_IN +// Description : None +#define USB_EP_ABORT_DONE_EP6_IN_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP6_IN_BITS _u(0x00001000) +#define USB_EP_ABORT_DONE_EP6_IN_MSB _u(12) +#define USB_EP_ABORT_DONE_EP6_IN_LSB _u(12) +#define USB_EP_ABORT_DONE_EP6_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP5_OUT +// Description : None +#define USB_EP_ABORT_DONE_EP5_OUT_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP5_OUT_BITS _u(0x00000800) +#define USB_EP_ABORT_DONE_EP5_OUT_MSB _u(11) +#define USB_EP_ABORT_DONE_EP5_OUT_LSB _u(11) +#define USB_EP_ABORT_DONE_EP5_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP5_IN +// Description : None +#define USB_EP_ABORT_DONE_EP5_IN_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP5_IN_BITS _u(0x00000400) +#define USB_EP_ABORT_DONE_EP5_IN_MSB _u(10) +#define USB_EP_ABORT_DONE_EP5_IN_LSB _u(10) +#define USB_EP_ABORT_DONE_EP5_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP4_OUT +// Description : None +#define USB_EP_ABORT_DONE_EP4_OUT_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP4_OUT_BITS _u(0x00000200) +#define USB_EP_ABORT_DONE_EP4_OUT_MSB _u(9) +#define USB_EP_ABORT_DONE_EP4_OUT_LSB _u(9) +#define USB_EP_ABORT_DONE_EP4_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP4_IN +// Description : None +#define USB_EP_ABORT_DONE_EP4_IN_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP4_IN_BITS _u(0x00000100) +#define USB_EP_ABORT_DONE_EP4_IN_MSB _u(8) +#define USB_EP_ABORT_DONE_EP4_IN_LSB _u(8) +#define USB_EP_ABORT_DONE_EP4_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP3_OUT +// Description : None +#define USB_EP_ABORT_DONE_EP3_OUT_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP3_OUT_BITS _u(0x00000080) +#define USB_EP_ABORT_DONE_EP3_OUT_MSB _u(7) +#define USB_EP_ABORT_DONE_EP3_OUT_LSB _u(7) +#define USB_EP_ABORT_DONE_EP3_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP3_IN +// Description : None +#define USB_EP_ABORT_DONE_EP3_IN_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP3_IN_BITS _u(0x00000040) +#define USB_EP_ABORT_DONE_EP3_IN_MSB _u(6) +#define USB_EP_ABORT_DONE_EP3_IN_LSB _u(6) +#define USB_EP_ABORT_DONE_EP3_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP2_OUT +// Description : None +#define USB_EP_ABORT_DONE_EP2_OUT_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP2_OUT_BITS _u(0x00000020) +#define USB_EP_ABORT_DONE_EP2_OUT_MSB _u(5) +#define USB_EP_ABORT_DONE_EP2_OUT_LSB _u(5) +#define USB_EP_ABORT_DONE_EP2_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP2_IN +// Description : None +#define USB_EP_ABORT_DONE_EP2_IN_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP2_IN_BITS _u(0x00000010) +#define USB_EP_ABORT_DONE_EP2_IN_MSB _u(4) +#define USB_EP_ABORT_DONE_EP2_IN_LSB _u(4) +#define USB_EP_ABORT_DONE_EP2_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP1_OUT +// Description : None +#define USB_EP_ABORT_DONE_EP1_OUT_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP1_OUT_BITS _u(0x00000008) +#define USB_EP_ABORT_DONE_EP1_OUT_MSB _u(3) +#define USB_EP_ABORT_DONE_EP1_OUT_LSB _u(3) +#define USB_EP_ABORT_DONE_EP1_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP1_IN +// Description : None +#define USB_EP_ABORT_DONE_EP1_IN_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP1_IN_BITS _u(0x00000004) +#define USB_EP_ABORT_DONE_EP1_IN_MSB _u(2) +#define USB_EP_ABORT_DONE_EP1_IN_LSB _u(2) +#define USB_EP_ABORT_DONE_EP1_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP0_OUT +// Description : None +#define USB_EP_ABORT_DONE_EP0_OUT_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP0_OUT_BITS _u(0x00000002) +#define USB_EP_ABORT_DONE_EP0_OUT_MSB _u(1) +#define USB_EP_ABORT_DONE_EP0_OUT_LSB _u(1) +#define USB_EP_ABORT_DONE_EP0_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_ABORT_DONE_EP0_IN +// Description : None +#define USB_EP_ABORT_DONE_EP0_IN_RESET _u(0x0) +#define USB_EP_ABORT_DONE_EP0_IN_BITS _u(0x00000001) +#define USB_EP_ABORT_DONE_EP0_IN_MSB _u(0) +#define USB_EP_ABORT_DONE_EP0_IN_LSB _u(0) +#define USB_EP_ABORT_DONE_EP0_IN_ACCESS "WC" +// ============================================================================= +// Register : USB_EP_STALL_ARM +// Description : Device: this bit must be set in conjunction with the `STALL` +// bit in the buffer control register to send a STALL on EP0. The +// device controller clears these bits when a SETUP packet is +// received because the USB spec requires that a STALL condition +// is cleared when a SETUP packet is received. +#define USB_EP_STALL_ARM_OFFSET _u(0x00000068) +#define USB_EP_STALL_ARM_BITS _u(0x00000003) +#define USB_EP_STALL_ARM_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_EP_STALL_ARM_EP0_OUT +// Description : None +#define USB_EP_STALL_ARM_EP0_OUT_RESET _u(0x0) +#define USB_EP_STALL_ARM_EP0_OUT_BITS _u(0x00000002) +#define USB_EP_STALL_ARM_EP0_OUT_MSB _u(1) +#define USB_EP_STALL_ARM_EP0_OUT_LSB _u(1) +#define USB_EP_STALL_ARM_EP0_OUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STALL_ARM_EP0_IN +// Description : None +#define USB_EP_STALL_ARM_EP0_IN_RESET _u(0x0) +#define USB_EP_STALL_ARM_EP0_IN_BITS _u(0x00000001) +#define USB_EP_STALL_ARM_EP0_IN_MSB _u(0) +#define USB_EP_STALL_ARM_EP0_IN_LSB _u(0) +#define USB_EP_STALL_ARM_EP0_IN_ACCESS "RW" +// ============================================================================= +// Register : USB_NAK_POLL +// Description : Used by the host controller. Sets the wait time in microseconds +// before trying again if the device replies with a NAK. +#define USB_NAK_POLL_OFFSET _u(0x0000006c) +#define USB_NAK_POLL_BITS _u(0x03ff03ff) +#define USB_NAK_POLL_RESET _u(0x00100010) +// ----------------------------------------------------------------------------- +// Field : USB_NAK_POLL_DELAY_FS +// Description : NAK polling interval for a full speed device +#define USB_NAK_POLL_DELAY_FS_RESET _u(0x010) +#define USB_NAK_POLL_DELAY_FS_BITS _u(0x03ff0000) +#define USB_NAK_POLL_DELAY_FS_MSB _u(25) +#define USB_NAK_POLL_DELAY_FS_LSB _u(16) +#define USB_NAK_POLL_DELAY_FS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_NAK_POLL_DELAY_LS +// Description : NAK polling interval for a low speed device +#define USB_NAK_POLL_DELAY_LS_RESET _u(0x010) +#define USB_NAK_POLL_DELAY_LS_BITS _u(0x000003ff) +#define USB_NAK_POLL_DELAY_LS_MSB _u(9) +#define USB_NAK_POLL_DELAY_LS_LSB _u(0) +#define USB_NAK_POLL_DELAY_LS_ACCESS "RW" +// ============================================================================= +// Register : USB_EP_STATUS_STALL_NAK +// Description : Device: bits are set when the `IRQ_ON_NAK` or `IRQ_ON_STALL` +// bits are set. For EP0 this comes from `SIE_CTRL`. For all other +// endpoints it comes from the endpoint control register. +#define USB_EP_STATUS_STALL_NAK_OFFSET _u(0x00000070) +#define USB_EP_STATUS_STALL_NAK_BITS _u(0xffffffff) +#define USB_EP_STATUS_STALL_NAK_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP15_OUT +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP15_OUT_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP15_OUT_BITS _u(0x80000000) +#define USB_EP_STATUS_STALL_NAK_EP15_OUT_MSB _u(31) +#define USB_EP_STATUS_STALL_NAK_EP15_OUT_LSB _u(31) +#define USB_EP_STATUS_STALL_NAK_EP15_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP15_IN +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP15_IN_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP15_IN_BITS _u(0x40000000) +#define USB_EP_STATUS_STALL_NAK_EP15_IN_MSB _u(30) +#define USB_EP_STATUS_STALL_NAK_EP15_IN_LSB _u(30) +#define USB_EP_STATUS_STALL_NAK_EP15_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP14_OUT +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP14_OUT_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP14_OUT_BITS _u(0x20000000) +#define USB_EP_STATUS_STALL_NAK_EP14_OUT_MSB _u(29) +#define USB_EP_STATUS_STALL_NAK_EP14_OUT_LSB _u(29) +#define USB_EP_STATUS_STALL_NAK_EP14_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP14_IN +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP14_IN_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP14_IN_BITS _u(0x10000000) +#define USB_EP_STATUS_STALL_NAK_EP14_IN_MSB _u(28) +#define USB_EP_STATUS_STALL_NAK_EP14_IN_LSB _u(28) +#define USB_EP_STATUS_STALL_NAK_EP14_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP13_OUT +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP13_OUT_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP13_OUT_BITS _u(0x08000000) +#define USB_EP_STATUS_STALL_NAK_EP13_OUT_MSB _u(27) +#define USB_EP_STATUS_STALL_NAK_EP13_OUT_LSB _u(27) +#define USB_EP_STATUS_STALL_NAK_EP13_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP13_IN +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP13_IN_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP13_IN_BITS _u(0x04000000) +#define USB_EP_STATUS_STALL_NAK_EP13_IN_MSB _u(26) +#define USB_EP_STATUS_STALL_NAK_EP13_IN_LSB _u(26) +#define USB_EP_STATUS_STALL_NAK_EP13_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP12_OUT +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP12_OUT_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP12_OUT_BITS _u(0x02000000) +#define USB_EP_STATUS_STALL_NAK_EP12_OUT_MSB _u(25) +#define USB_EP_STATUS_STALL_NAK_EP12_OUT_LSB _u(25) +#define USB_EP_STATUS_STALL_NAK_EP12_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP12_IN +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP12_IN_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP12_IN_BITS _u(0x01000000) +#define USB_EP_STATUS_STALL_NAK_EP12_IN_MSB _u(24) +#define USB_EP_STATUS_STALL_NAK_EP12_IN_LSB _u(24) +#define USB_EP_STATUS_STALL_NAK_EP12_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP11_OUT +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP11_OUT_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP11_OUT_BITS _u(0x00800000) +#define USB_EP_STATUS_STALL_NAK_EP11_OUT_MSB _u(23) +#define USB_EP_STATUS_STALL_NAK_EP11_OUT_LSB _u(23) +#define USB_EP_STATUS_STALL_NAK_EP11_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP11_IN +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP11_IN_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP11_IN_BITS _u(0x00400000) +#define USB_EP_STATUS_STALL_NAK_EP11_IN_MSB _u(22) +#define USB_EP_STATUS_STALL_NAK_EP11_IN_LSB _u(22) +#define USB_EP_STATUS_STALL_NAK_EP11_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP10_OUT +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP10_OUT_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP10_OUT_BITS _u(0x00200000) +#define USB_EP_STATUS_STALL_NAK_EP10_OUT_MSB _u(21) +#define USB_EP_STATUS_STALL_NAK_EP10_OUT_LSB _u(21) +#define USB_EP_STATUS_STALL_NAK_EP10_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP10_IN +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP10_IN_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP10_IN_BITS _u(0x00100000) +#define USB_EP_STATUS_STALL_NAK_EP10_IN_MSB _u(20) +#define USB_EP_STATUS_STALL_NAK_EP10_IN_LSB _u(20) +#define USB_EP_STATUS_STALL_NAK_EP10_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP9_OUT +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP9_OUT_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP9_OUT_BITS _u(0x00080000) +#define USB_EP_STATUS_STALL_NAK_EP9_OUT_MSB _u(19) +#define USB_EP_STATUS_STALL_NAK_EP9_OUT_LSB _u(19) +#define USB_EP_STATUS_STALL_NAK_EP9_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP9_IN +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP9_IN_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP9_IN_BITS _u(0x00040000) +#define USB_EP_STATUS_STALL_NAK_EP9_IN_MSB _u(18) +#define USB_EP_STATUS_STALL_NAK_EP9_IN_LSB _u(18) +#define USB_EP_STATUS_STALL_NAK_EP9_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP8_OUT +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP8_OUT_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP8_OUT_BITS _u(0x00020000) +#define USB_EP_STATUS_STALL_NAK_EP8_OUT_MSB _u(17) +#define USB_EP_STATUS_STALL_NAK_EP8_OUT_LSB _u(17) +#define USB_EP_STATUS_STALL_NAK_EP8_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP8_IN +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP8_IN_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP8_IN_BITS _u(0x00010000) +#define USB_EP_STATUS_STALL_NAK_EP8_IN_MSB _u(16) +#define USB_EP_STATUS_STALL_NAK_EP8_IN_LSB _u(16) +#define USB_EP_STATUS_STALL_NAK_EP8_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP7_OUT +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP7_OUT_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP7_OUT_BITS _u(0x00008000) +#define USB_EP_STATUS_STALL_NAK_EP7_OUT_MSB _u(15) +#define USB_EP_STATUS_STALL_NAK_EP7_OUT_LSB _u(15) +#define USB_EP_STATUS_STALL_NAK_EP7_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP7_IN +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP7_IN_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP7_IN_BITS _u(0x00004000) +#define USB_EP_STATUS_STALL_NAK_EP7_IN_MSB _u(14) +#define USB_EP_STATUS_STALL_NAK_EP7_IN_LSB _u(14) +#define USB_EP_STATUS_STALL_NAK_EP7_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP6_OUT +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP6_OUT_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP6_OUT_BITS _u(0x00002000) +#define USB_EP_STATUS_STALL_NAK_EP6_OUT_MSB _u(13) +#define USB_EP_STATUS_STALL_NAK_EP6_OUT_LSB _u(13) +#define USB_EP_STATUS_STALL_NAK_EP6_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP6_IN +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP6_IN_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP6_IN_BITS _u(0x00001000) +#define USB_EP_STATUS_STALL_NAK_EP6_IN_MSB _u(12) +#define USB_EP_STATUS_STALL_NAK_EP6_IN_LSB _u(12) +#define USB_EP_STATUS_STALL_NAK_EP6_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP5_OUT +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP5_OUT_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP5_OUT_BITS _u(0x00000800) +#define USB_EP_STATUS_STALL_NAK_EP5_OUT_MSB _u(11) +#define USB_EP_STATUS_STALL_NAK_EP5_OUT_LSB _u(11) +#define USB_EP_STATUS_STALL_NAK_EP5_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP5_IN +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP5_IN_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP5_IN_BITS _u(0x00000400) +#define USB_EP_STATUS_STALL_NAK_EP5_IN_MSB _u(10) +#define USB_EP_STATUS_STALL_NAK_EP5_IN_LSB _u(10) +#define USB_EP_STATUS_STALL_NAK_EP5_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP4_OUT +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP4_OUT_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP4_OUT_BITS _u(0x00000200) +#define USB_EP_STATUS_STALL_NAK_EP4_OUT_MSB _u(9) +#define USB_EP_STATUS_STALL_NAK_EP4_OUT_LSB _u(9) +#define USB_EP_STATUS_STALL_NAK_EP4_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP4_IN +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP4_IN_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP4_IN_BITS _u(0x00000100) +#define USB_EP_STATUS_STALL_NAK_EP4_IN_MSB _u(8) +#define USB_EP_STATUS_STALL_NAK_EP4_IN_LSB _u(8) +#define USB_EP_STATUS_STALL_NAK_EP4_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP3_OUT +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP3_OUT_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP3_OUT_BITS _u(0x00000080) +#define USB_EP_STATUS_STALL_NAK_EP3_OUT_MSB _u(7) +#define USB_EP_STATUS_STALL_NAK_EP3_OUT_LSB _u(7) +#define USB_EP_STATUS_STALL_NAK_EP3_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP3_IN +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP3_IN_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP3_IN_BITS _u(0x00000040) +#define USB_EP_STATUS_STALL_NAK_EP3_IN_MSB _u(6) +#define USB_EP_STATUS_STALL_NAK_EP3_IN_LSB _u(6) +#define USB_EP_STATUS_STALL_NAK_EP3_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP2_OUT +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP2_OUT_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP2_OUT_BITS _u(0x00000020) +#define USB_EP_STATUS_STALL_NAK_EP2_OUT_MSB _u(5) +#define USB_EP_STATUS_STALL_NAK_EP2_OUT_LSB _u(5) +#define USB_EP_STATUS_STALL_NAK_EP2_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP2_IN +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP2_IN_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP2_IN_BITS _u(0x00000010) +#define USB_EP_STATUS_STALL_NAK_EP2_IN_MSB _u(4) +#define USB_EP_STATUS_STALL_NAK_EP2_IN_LSB _u(4) +#define USB_EP_STATUS_STALL_NAK_EP2_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP1_OUT +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP1_OUT_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP1_OUT_BITS _u(0x00000008) +#define USB_EP_STATUS_STALL_NAK_EP1_OUT_MSB _u(3) +#define USB_EP_STATUS_STALL_NAK_EP1_OUT_LSB _u(3) +#define USB_EP_STATUS_STALL_NAK_EP1_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP1_IN +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP1_IN_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP1_IN_BITS _u(0x00000004) +#define USB_EP_STATUS_STALL_NAK_EP1_IN_MSB _u(2) +#define USB_EP_STATUS_STALL_NAK_EP1_IN_LSB _u(2) +#define USB_EP_STATUS_STALL_NAK_EP1_IN_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP0_OUT +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP0_OUT_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP0_OUT_BITS _u(0x00000002) +#define USB_EP_STATUS_STALL_NAK_EP0_OUT_MSB _u(1) +#define USB_EP_STATUS_STALL_NAK_EP0_OUT_LSB _u(1) +#define USB_EP_STATUS_STALL_NAK_EP0_OUT_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : USB_EP_STATUS_STALL_NAK_EP0_IN +// Description : None +#define USB_EP_STATUS_STALL_NAK_EP0_IN_RESET _u(0x0) +#define USB_EP_STATUS_STALL_NAK_EP0_IN_BITS _u(0x00000001) +#define USB_EP_STATUS_STALL_NAK_EP0_IN_MSB _u(0) +#define USB_EP_STATUS_STALL_NAK_EP0_IN_LSB _u(0) +#define USB_EP_STATUS_STALL_NAK_EP0_IN_ACCESS "WC" +// ============================================================================= +// Register : USB_USB_MUXING +// Description : Where to connect the USB controller. Should be to_phy by +// default. +#define USB_USB_MUXING_OFFSET _u(0x00000074) +#define USB_USB_MUXING_BITS _u(0x0000000f) +#define USB_USB_MUXING_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_USB_MUXING_SOFTCON +// Description : None +#define USB_USB_MUXING_SOFTCON_RESET _u(0x0) +#define USB_USB_MUXING_SOFTCON_BITS _u(0x00000008) +#define USB_USB_MUXING_SOFTCON_MSB _u(3) +#define USB_USB_MUXING_SOFTCON_LSB _u(3) +#define USB_USB_MUXING_SOFTCON_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USB_MUXING_TO_DIGITAL_PAD +// Description : None +#define USB_USB_MUXING_TO_DIGITAL_PAD_RESET _u(0x0) +#define USB_USB_MUXING_TO_DIGITAL_PAD_BITS _u(0x00000004) +#define USB_USB_MUXING_TO_DIGITAL_PAD_MSB _u(2) +#define USB_USB_MUXING_TO_DIGITAL_PAD_LSB _u(2) +#define USB_USB_MUXING_TO_DIGITAL_PAD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USB_MUXING_TO_EXTPHY +// Description : None +#define USB_USB_MUXING_TO_EXTPHY_RESET _u(0x0) +#define USB_USB_MUXING_TO_EXTPHY_BITS _u(0x00000002) +#define USB_USB_MUXING_TO_EXTPHY_MSB _u(1) +#define USB_USB_MUXING_TO_EXTPHY_LSB _u(1) +#define USB_USB_MUXING_TO_EXTPHY_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USB_MUXING_TO_PHY +// Description : None +#define USB_USB_MUXING_TO_PHY_RESET _u(0x0) +#define USB_USB_MUXING_TO_PHY_BITS _u(0x00000001) +#define USB_USB_MUXING_TO_PHY_MSB _u(0) +#define USB_USB_MUXING_TO_PHY_LSB _u(0) +#define USB_USB_MUXING_TO_PHY_ACCESS "RW" +// ============================================================================= +// Register : USB_USB_PWR +// Description : Overrides for the power signals in the event that the VBUS +// signals are not hooked up to GPIO. Set the value of the +// override and then the override enable to switch over to the +// override value. +#define USB_USB_PWR_OFFSET _u(0x00000078) +#define USB_USB_PWR_BITS _u(0x0000003f) +#define USB_USB_PWR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_USB_PWR_OVERCURR_DETECT_EN +// Description : None +#define USB_USB_PWR_OVERCURR_DETECT_EN_RESET _u(0x0) +#define USB_USB_PWR_OVERCURR_DETECT_EN_BITS _u(0x00000020) +#define USB_USB_PWR_OVERCURR_DETECT_EN_MSB _u(5) +#define USB_USB_PWR_OVERCURR_DETECT_EN_LSB _u(5) +#define USB_USB_PWR_OVERCURR_DETECT_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USB_PWR_OVERCURR_DETECT +// Description : None +#define USB_USB_PWR_OVERCURR_DETECT_RESET _u(0x0) +#define USB_USB_PWR_OVERCURR_DETECT_BITS _u(0x00000010) +#define USB_USB_PWR_OVERCURR_DETECT_MSB _u(4) +#define USB_USB_PWR_OVERCURR_DETECT_LSB _u(4) +#define USB_USB_PWR_OVERCURR_DETECT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USB_PWR_VBUS_DETECT_OVERRIDE_EN +// Description : None +#define USB_USB_PWR_VBUS_DETECT_OVERRIDE_EN_RESET _u(0x0) +#define USB_USB_PWR_VBUS_DETECT_OVERRIDE_EN_BITS _u(0x00000008) +#define USB_USB_PWR_VBUS_DETECT_OVERRIDE_EN_MSB _u(3) +#define USB_USB_PWR_VBUS_DETECT_OVERRIDE_EN_LSB _u(3) +#define USB_USB_PWR_VBUS_DETECT_OVERRIDE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USB_PWR_VBUS_DETECT +// Description : None +#define USB_USB_PWR_VBUS_DETECT_RESET _u(0x0) +#define USB_USB_PWR_VBUS_DETECT_BITS _u(0x00000004) +#define USB_USB_PWR_VBUS_DETECT_MSB _u(2) +#define USB_USB_PWR_VBUS_DETECT_LSB _u(2) +#define USB_USB_PWR_VBUS_DETECT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USB_PWR_VBUS_EN_OVERRIDE_EN +// Description : None +#define USB_USB_PWR_VBUS_EN_OVERRIDE_EN_RESET _u(0x0) +#define USB_USB_PWR_VBUS_EN_OVERRIDE_EN_BITS _u(0x00000002) +#define USB_USB_PWR_VBUS_EN_OVERRIDE_EN_MSB _u(1) +#define USB_USB_PWR_VBUS_EN_OVERRIDE_EN_LSB _u(1) +#define USB_USB_PWR_VBUS_EN_OVERRIDE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USB_PWR_VBUS_EN +// Description : None +#define USB_USB_PWR_VBUS_EN_RESET _u(0x0) +#define USB_USB_PWR_VBUS_EN_BITS _u(0x00000001) +#define USB_USB_PWR_VBUS_EN_MSB _u(0) +#define USB_USB_PWR_VBUS_EN_LSB _u(0) +#define USB_USB_PWR_VBUS_EN_ACCESS "RW" +// ============================================================================= +// Register : USB_USBPHY_DIRECT +// Description : This register allows for direct control of the USB phy. Use in +// conjunction with usbphy_direct_override register to enable each +// override bit. +#define USB_USBPHY_DIRECT_OFFSET _u(0x0000007c) +#define USB_USBPHY_DIRECT_BITS _u(0x007fff77) +#define USB_USBPHY_DIRECT_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_DM_OVV +// Description : DM over voltage +#define USB_USBPHY_DIRECT_DM_OVV_RESET _u(0x0) +#define USB_USBPHY_DIRECT_DM_OVV_BITS _u(0x00400000) +#define USB_USBPHY_DIRECT_DM_OVV_MSB _u(22) +#define USB_USBPHY_DIRECT_DM_OVV_LSB _u(22) +#define USB_USBPHY_DIRECT_DM_OVV_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_DP_OVV +// Description : DP over voltage +#define USB_USBPHY_DIRECT_DP_OVV_RESET _u(0x0) +#define USB_USBPHY_DIRECT_DP_OVV_BITS _u(0x00200000) +#define USB_USBPHY_DIRECT_DP_OVV_MSB _u(21) +#define USB_USBPHY_DIRECT_DP_OVV_LSB _u(21) +#define USB_USBPHY_DIRECT_DP_OVV_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_DM_OVCN +// Description : DM overcurrent +#define USB_USBPHY_DIRECT_DM_OVCN_RESET _u(0x0) +#define USB_USBPHY_DIRECT_DM_OVCN_BITS _u(0x00100000) +#define USB_USBPHY_DIRECT_DM_OVCN_MSB _u(20) +#define USB_USBPHY_DIRECT_DM_OVCN_LSB _u(20) +#define USB_USBPHY_DIRECT_DM_OVCN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_DP_OVCN +// Description : DP overcurrent +#define USB_USBPHY_DIRECT_DP_OVCN_RESET _u(0x0) +#define USB_USBPHY_DIRECT_DP_OVCN_BITS _u(0x00080000) +#define USB_USBPHY_DIRECT_DP_OVCN_MSB _u(19) +#define USB_USBPHY_DIRECT_DP_OVCN_LSB _u(19) +#define USB_USBPHY_DIRECT_DP_OVCN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_RX_DM +// Description : DPM pin state +#define USB_USBPHY_DIRECT_RX_DM_RESET _u(0x0) +#define USB_USBPHY_DIRECT_RX_DM_BITS _u(0x00040000) +#define USB_USBPHY_DIRECT_RX_DM_MSB _u(18) +#define USB_USBPHY_DIRECT_RX_DM_LSB _u(18) +#define USB_USBPHY_DIRECT_RX_DM_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_RX_DP +// Description : DPP pin state +#define USB_USBPHY_DIRECT_RX_DP_RESET _u(0x0) +#define USB_USBPHY_DIRECT_RX_DP_BITS _u(0x00020000) +#define USB_USBPHY_DIRECT_RX_DP_MSB _u(17) +#define USB_USBPHY_DIRECT_RX_DP_LSB _u(17) +#define USB_USBPHY_DIRECT_RX_DP_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_RX_DD +// Description : Differential RX +#define USB_USBPHY_DIRECT_RX_DD_RESET _u(0x0) +#define USB_USBPHY_DIRECT_RX_DD_BITS _u(0x00010000) +#define USB_USBPHY_DIRECT_RX_DD_MSB _u(16) +#define USB_USBPHY_DIRECT_RX_DD_LSB _u(16) +#define USB_USBPHY_DIRECT_RX_DD_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_TX_DIFFMODE +// Description : TX_DIFFMODE=0: Single ended mode +// TX_DIFFMODE=1: Differential drive mode (TX_DM, TX_DM_OE +// ignored) +#define USB_USBPHY_DIRECT_TX_DIFFMODE_RESET _u(0x0) +#define USB_USBPHY_DIRECT_TX_DIFFMODE_BITS _u(0x00008000) +#define USB_USBPHY_DIRECT_TX_DIFFMODE_MSB _u(15) +#define USB_USBPHY_DIRECT_TX_DIFFMODE_LSB _u(15) +#define USB_USBPHY_DIRECT_TX_DIFFMODE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_TX_FSSLEW +// Description : TX_FSSLEW=0: Low speed slew rate +// TX_FSSLEW=1: Full speed slew rate +#define USB_USBPHY_DIRECT_TX_FSSLEW_RESET _u(0x0) +#define USB_USBPHY_DIRECT_TX_FSSLEW_BITS _u(0x00004000) +#define USB_USBPHY_DIRECT_TX_FSSLEW_MSB _u(14) +#define USB_USBPHY_DIRECT_TX_FSSLEW_LSB _u(14) +#define USB_USBPHY_DIRECT_TX_FSSLEW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_TX_PD +// Description : TX power down override (if override enable is set). 1 = powered +// down. +#define USB_USBPHY_DIRECT_TX_PD_RESET _u(0x0) +#define USB_USBPHY_DIRECT_TX_PD_BITS _u(0x00002000) +#define USB_USBPHY_DIRECT_TX_PD_MSB _u(13) +#define USB_USBPHY_DIRECT_TX_PD_LSB _u(13) +#define USB_USBPHY_DIRECT_TX_PD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_RX_PD +// Description : RX power down override (if override enable is set). 1 = powered +// down. +#define USB_USBPHY_DIRECT_RX_PD_RESET _u(0x0) +#define USB_USBPHY_DIRECT_RX_PD_BITS _u(0x00001000) +#define USB_USBPHY_DIRECT_RX_PD_MSB _u(12) +#define USB_USBPHY_DIRECT_RX_PD_LSB _u(12) +#define USB_USBPHY_DIRECT_RX_PD_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_TX_DM +// Description : Output data. TX_DIFFMODE=1, Ignored +// TX_DIFFMODE=0, Drives DPM only. TX_DM_OE=1 to enable drive. +// DPM=TX_DM +#define USB_USBPHY_DIRECT_TX_DM_RESET _u(0x0) +#define USB_USBPHY_DIRECT_TX_DM_BITS _u(0x00000800) +#define USB_USBPHY_DIRECT_TX_DM_MSB _u(11) +#define USB_USBPHY_DIRECT_TX_DM_LSB _u(11) +#define USB_USBPHY_DIRECT_TX_DM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_TX_DP +// Description : Output data. If TX_DIFFMODE=1, Drives DPP/DPM diff pair. +// TX_DP_OE=1 to enable drive. DPP=TX_DP, DPM=~TX_DP +// If TX_DIFFMODE=0, Drives DPP only. TX_DP_OE=1 to enable drive. +// DPP=TX_DP +#define USB_USBPHY_DIRECT_TX_DP_RESET _u(0x0) +#define USB_USBPHY_DIRECT_TX_DP_BITS _u(0x00000400) +#define USB_USBPHY_DIRECT_TX_DP_MSB _u(10) +#define USB_USBPHY_DIRECT_TX_DP_LSB _u(10) +#define USB_USBPHY_DIRECT_TX_DP_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_TX_DM_OE +// Description : Output enable. If TX_DIFFMODE=1, Ignored. +// If TX_DIFFMODE=0, OE for DPM only. 0 - DPM in Hi-Z state; 1 - +// DPM driving +#define USB_USBPHY_DIRECT_TX_DM_OE_RESET _u(0x0) +#define USB_USBPHY_DIRECT_TX_DM_OE_BITS _u(0x00000200) +#define USB_USBPHY_DIRECT_TX_DM_OE_MSB _u(9) +#define USB_USBPHY_DIRECT_TX_DM_OE_LSB _u(9) +#define USB_USBPHY_DIRECT_TX_DM_OE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_TX_DP_OE +// Description : Output enable. If TX_DIFFMODE=1, OE for DPP/DPM diff pair. 0 - +// DPP/DPM in Hi-Z state; 1 - DPP/DPM driving +// If TX_DIFFMODE=0, OE for DPP only. 0 - DPP in Hi-Z state; 1 - +// DPP driving +#define USB_USBPHY_DIRECT_TX_DP_OE_RESET _u(0x0) +#define USB_USBPHY_DIRECT_TX_DP_OE_BITS _u(0x00000100) +#define USB_USBPHY_DIRECT_TX_DP_OE_MSB _u(8) +#define USB_USBPHY_DIRECT_TX_DP_OE_LSB _u(8) +#define USB_USBPHY_DIRECT_TX_DP_OE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_DM_PULLDN_EN +// Description : DM pull down enable +#define USB_USBPHY_DIRECT_DM_PULLDN_EN_RESET _u(0x0) +#define USB_USBPHY_DIRECT_DM_PULLDN_EN_BITS _u(0x00000040) +#define USB_USBPHY_DIRECT_DM_PULLDN_EN_MSB _u(6) +#define USB_USBPHY_DIRECT_DM_PULLDN_EN_LSB _u(6) +#define USB_USBPHY_DIRECT_DM_PULLDN_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_DM_PULLUP_EN +// Description : DM pull up enable +#define USB_USBPHY_DIRECT_DM_PULLUP_EN_RESET _u(0x0) +#define USB_USBPHY_DIRECT_DM_PULLUP_EN_BITS _u(0x00000020) +#define USB_USBPHY_DIRECT_DM_PULLUP_EN_MSB _u(5) +#define USB_USBPHY_DIRECT_DM_PULLUP_EN_LSB _u(5) +#define USB_USBPHY_DIRECT_DM_PULLUP_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_DM_PULLUP_HISEL +// Description : Enable the second DM pull up resistor. 0 - Pull = Rpu2; 1 - +// Pull = Rpu1 + Rpu2 +#define USB_USBPHY_DIRECT_DM_PULLUP_HISEL_RESET _u(0x0) +#define USB_USBPHY_DIRECT_DM_PULLUP_HISEL_BITS _u(0x00000010) +#define USB_USBPHY_DIRECT_DM_PULLUP_HISEL_MSB _u(4) +#define USB_USBPHY_DIRECT_DM_PULLUP_HISEL_LSB _u(4) +#define USB_USBPHY_DIRECT_DM_PULLUP_HISEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_DP_PULLDN_EN +// Description : DP pull down enable +#define USB_USBPHY_DIRECT_DP_PULLDN_EN_RESET _u(0x0) +#define USB_USBPHY_DIRECT_DP_PULLDN_EN_BITS _u(0x00000004) +#define USB_USBPHY_DIRECT_DP_PULLDN_EN_MSB _u(2) +#define USB_USBPHY_DIRECT_DP_PULLDN_EN_LSB _u(2) +#define USB_USBPHY_DIRECT_DP_PULLDN_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_DP_PULLUP_EN +// Description : DP pull up enable +#define USB_USBPHY_DIRECT_DP_PULLUP_EN_RESET _u(0x0) +#define USB_USBPHY_DIRECT_DP_PULLUP_EN_BITS _u(0x00000002) +#define USB_USBPHY_DIRECT_DP_PULLUP_EN_MSB _u(1) +#define USB_USBPHY_DIRECT_DP_PULLUP_EN_LSB _u(1) +#define USB_USBPHY_DIRECT_DP_PULLUP_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_DP_PULLUP_HISEL +// Description : Enable the second DP pull up resistor. 0 - Pull = Rpu2; 1 - +// Pull = Rpu1 + Rpu2 +#define USB_USBPHY_DIRECT_DP_PULLUP_HISEL_RESET _u(0x0) +#define USB_USBPHY_DIRECT_DP_PULLUP_HISEL_BITS _u(0x00000001) +#define USB_USBPHY_DIRECT_DP_PULLUP_HISEL_MSB _u(0) +#define USB_USBPHY_DIRECT_DP_PULLUP_HISEL_LSB _u(0) +#define USB_USBPHY_DIRECT_DP_PULLUP_HISEL_ACCESS "RW" +// ============================================================================= +// Register : USB_USBPHY_DIRECT_OVERRIDE +// Description : Override enable for each control in usbphy_direct +#define USB_USBPHY_DIRECT_OVERRIDE_OFFSET _u(0x00000080) +#define USB_USBPHY_DIRECT_OVERRIDE_BITS _u(0x00009fff) +#define USB_USBPHY_DIRECT_OVERRIDE_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_OVERRIDE_TX_DIFFMODE_OVERRIDE_EN +// Description : None +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DIFFMODE_OVERRIDE_EN_RESET _u(0x0) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DIFFMODE_OVERRIDE_EN_BITS _u(0x00008000) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DIFFMODE_OVERRIDE_EN_MSB _u(15) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DIFFMODE_OVERRIDE_EN_LSB _u(15) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DIFFMODE_OVERRIDE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_OVERRIDE_DM_PULLUP_OVERRIDE_EN +// Description : None +#define USB_USBPHY_DIRECT_OVERRIDE_DM_PULLUP_OVERRIDE_EN_RESET _u(0x0) +#define USB_USBPHY_DIRECT_OVERRIDE_DM_PULLUP_OVERRIDE_EN_BITS _u(0x00001000) +#define USB_USBPHY_DIRECT_OVERRIDE_DM_PULLUP_OVERRIDE_EN_MSB _u(12) +#define USB_USBPHY_DIRECT_OVERRIDE_DM_PULLUP_OVERRIDE_EN_LSB _u(12) +#define USB_USBPHY_DIRECT_OVERRIDE_DM_PULLUP_OVERRIDE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_OVERRIDE_TX_FSSLEW_OVERRIDE_EN +// Description : None +#define USB_USBPHY_DIRECT_OVERRIDE_TX_FSSLEW_OVERRIDE_EN_RESET _u(0x0) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_FSSLEW_OVERRIDE_EN_BITS _u(0x00000800) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_FSSLEW_OVERRIDE_EN_MSB _u(11) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_FSSLEW_OVERRIDE_EN_LSB _u(11) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_FSSLEW_OVERRIDE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_OVERRIDE_TX_PD_OVERRIDE_EN +// Description : None +#define USB_USBPHY_DIRECT_OVERRIDE_TX_PD_OVERRIDE_EN_RESET _u(0x0) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_PD_OVERRIDE_EN_BITS _u(0x00000400) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_PD_OVERRIDE_EN_MSB _u(10) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_PD_OVERRIDE_EN_LSB _u(10) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_PD_OVERRIDE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_OVERRIDE_RX_PD_OVERRIDE_EN +// Description : None +#define USB_USBPHY_DIRECT_OVERRIDE_RX_PD_OVERRIDE_EN_RESET _u(0x0) +#define USB_USBPHY_DIRECT_OVERRIDE_RX_PD_OVERRIDE_EN_BITS _u(0x00000200) +#define USB_USBPHY_DIRECT_OVERRIDE_RX_PD_OVERRIDE_EN_MSB _u(9) +#define USB_USBPHY_DIRECT_OVERRIDE_RX_PD_OVERRIDE_EN_LSB _u(9) +#define USB_USBPHY_DIRECT_OVERRIDE_RX_PD_OVERRIDE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_OVERRIDE_TX_DM_OVERRIDE_EN +// Description : None +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DM_OVERRIDE_EN_RESET _u(0x0) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DM_OVERRIDE_EN_BITS _u(0x00000100) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DM_OVERRIDE_EN_MSB _u(8) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DM_OVERRIDE_EN_LSB _u(8) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DM_OVERRIDE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_OVERRIDE_TX_DP_OVERRIDE_EN +// Description : None +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DP_OVERRIDE_EN_RESET _u(0x0) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DP_OVERRIDE_EN_BITS _u(0x00000080) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DP_OVERRIDE_EN_MSB _u(7) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DP_OVERRIDE_EN_LSB _u(7) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DP_OVERRIDE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_OVERRIDE_TX_DM_OE_OVERRIDE_EN +// Description : None +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DM_OE_OVERRIDE_EN_RESET _u(0x0) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DM_OE_OVERRIDE_EN_BITS _u(0x00000040) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DM_OE_OVERRIDE_EN_MSB _u(6) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DM_OE_OVERRIDE_EN_LSB _u(6) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DM_OE_OVERRIDE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_OVERRIDE_TX_DP_OE_OVERRIDE_EN +// Description : None +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DP_OE_OVERRIDE_EN_RESET _u(0x0) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DP_OE_OVERRIDE_EN_BITS _u(0x00000020) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DP_OE_OVERRIDE_EN_MSB _u(5) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DP_OE_OVERRIDE_EN_LSB _u(5) +#define USB_USBPHY_DIRECT_OVERRIDE_TX_DP_OE_OVERRIDE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_OVERRIDE_DM_PULLDN_EN_OVERRIDE_EN +// Description : None +#define USB_USBPHY_DIRECT_OVERRIDE_DM_PULLDN_EN_OVERRIDE_EN_RESET _u(0x0) +#define USB_USBPHY_DIRECT_OVERRIDE_DM_PULLDN_EN_OVERRIDE_EN_BITS _u(0x00000010) +#define USB_USBPHY_DIRECT_OVERRIDE_DM_PULLDN_EN_OVERRIDE_EN_MSB _u(4) +#define USB_USBPHY_DIRECT_OVERRIDE_DM_PULLDN_EN_OVERRIDE_EN_LSB _u(4) +#define USB_USBPHY_DIRECT_OVERRIDE_DM_PULLDN_EN_OVERRIDE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_OVERRIDE_DP_PULLDN_EN_OVERRIDE_EN +// Description : None +#define USB_USBPHY_DIRECT_OVERRIDE_DP_PULLDN_EN_OVERRIDE_EN_RESET _u(0x0) +#define USB_USBPHY_DIRECT_OVERRIDE_DP_PULLDN_EN_OVERRIDE_EN_BITS _u(0x00000008) +#define USB_USBPHY_DIRECT_OVERRIDE_DP_PULLDN_EN_OVERRIDE_EN_MSB _u(3) +#define USB_USBPHY_DIRECT_OVERRIDE_DP_PULLDN_EN_OVERRIDE_EN_LSB _u(3) +#define USB_USBPHY_DIRECT_OVERRIDE_DP_PULLDN_EN_OVERRIDE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_OVERRIDE_DP_PULLUP_EN_OVERRIDE_EN +// Description : None +#define USB_USBPHY_DIRECT_OVERRIDE_DP_PULLUP_EN_OVERRIDE_EN_RESET _u(0x0) +#define USB_USBPHY_DIRECT_OVERRIDE_DP_PULLUP_EN_OVERRIDE_EN_BITS _u(0x00000004) +#define USB_USBPHY_DIRECT_OVERRIDE_DP_PULLUP_EN_OVERRIDE_EN_MSB _u(2) +#define USB_USBPHY_DIRECT_OVERRIDE_DP_PULLUP_EN_OVERRIDE_EN_LSB _u(2) +#define USB_USBPHY_DIRECT_OVERRIDE_DP_PULLUP_EN_OVERRIDE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_OVERRIDE_DM_PULLUP_HISEL_OVERRIDE_EN +// Description : None +#define USB_USBPHY_DIRECT_OVERRIDE_DM_PULLUP_HISEL_OVERRIDE_EN_RESET _u(0x0) +#define USB_USBPHY_DIRECT_OVERRIDE_DM_PULLUP_HISEL_OVERRIDE_EN_BITS _u(0x00000002) +#define USB_USBPHY_DIRECT_OVERRIDE_DM_PULLUP_HISEL_OVERRIDE_EN_MSB _u(1) +#define USB_USBPHY_DIRECT_OVERRIDE_DM_PULLUP_HISEL_OVERRIDE_EN_LSB _u(1) +#define USB_USBPHY_DIRECT_OVERRIDE_DM_PULLUP_HISEL_OVERRIDE_EN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_DIRECT_OVERRIDE_DP_PULLUP_HISEL_OVERRIDE_EN +// Description : None +#define USB_USBPHY_DIRECT_OVERRIDE_DP_PULLUP_HISEL_OVERRIDE_EN_RESET _u(0x0) +#define USB_USBPHY_DIRECT_OVERRIDE_DP_PULLUP_HISEL_OVERRIDE_EN_BITS _u(0x00000001) +#define USB_USBPHY_DIRECT_OVERRIDE_DP_PULLUP_HISEL_OVERRIDE_EN_MSB _u(0) +#define USB_USBPHY_DIRECT_OVERRIDE_DP_PULLUP_HISEL_OVERRIDE_EN_LSB _u(0) +#define USB_USBPHY_DIRECT_OVERRIDE_DP_PULLUP_HISEL_OVERRIDE_EN_ACCESS "RW" +// ============================================================================= +// Register : USB_USBPHY_TRIM +// Description : Used to adjust trim values of USB phy pull down resistors. +#define USB_USBPHY_TRIM_OFFSET _u(0x00000084) +#define USB_USBPHY_TRIM_BITS _u(0x00001f1f) +#define USB_USBPHY_TRIM_RESET _u(0x00001f1f) +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_TRIM_DM_PULLDN_TRIM +// Description : Value to drive to USB PHY +// DM pulldown resistor trim control +// Experimental data suggests that the reset value will work, but +// this register allows adjustment if required +#define USB_USBPHY_TRIM_DM_PULLDN_TRIM_RESET _u(0x1f) +#define USB_USBPHY_TRIM_DM_PULLDN_TRIM_BITS _u(0x00001f00) +#define USB_USBPHY_TRIM_DM_PULLDN_TRIM_MSB _u(12) +#define USB_USBPHY_TRIM_DM_PULLDN_TRIM_LSB _u(8) +#define USB_USBPHY_TRIM_DM_PULLDN_TRIM_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_USBPHY_TRIM_DP_PULLDN_TRIM +// Description : Value to drive to USB PHY +// DP pulldown resistor trim control +// Experimental data suggests that the reset value will work, but +// this register allows adjustment if required +#define USB_USBPHY_TRIM_DP_PULLDN_TRIM_RESET _u(0x1f) +#define USB_USBPHY_TRIM_DP_PULLDN_TRIM_BITS _u(0x0000001f) +#define USB_USBPHY_TRIM_DP_PULLDN_TRIM_MSB _u(4) +#define USB_USBPHY_TRIM_DP_PULLDN_TRIM_LSB _u(0) +#define USB_USBPHY_TRIM_DP_PULLDN_TRIM_ACCESS "RW" +// ============================================================================= +// Register : USB_INTR +// Description : Raw Interrupts +#define USB_INTR_OFFSET _u(0x0000008c) +#define USB_INTR_BITS _u(0x000fffff) +#define USB_INTR_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_INTR_EP_STALL_NAK +// Description : Raised when any bit in EP_STATUS_STALL_NAK is set. Clear by +// clearing all bits in EP_STATUS_STALL_NAK. +#define USB_INTR_EP_STALL_NAK_RESET _u(0x0) +#define USB_INTR_EP_STALL_NAK_BITS _u(0x00080000) +#define USB_INTR_EP_STALL_NAK_MSB _u(19) +#define USB_INTR_EP_STALL_NAK_LSB _u(19) +#define USB_INTR_EP_STALL_NAK_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTR_ABORT_DONE +// Description : Raised when any bit in ABORT_DONE is set. Clear by clearing all +// bits in ABORT_DONE. +#define USB_INTR_ABORT_DONE_RESET _u(0x0) +#define USB_INTR_ABORT_DONE_BITS _u(0x00040000) +#define USB_INTR_ABORT_DONE_MSB _u(18) +#define USB_INTR_ABORT_DONE_LSB _u(18) +#define USB_INTR_ABORT_DONE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTR_DEV_SOF +// Description : Set every time the device receives a SOF (Start of Frame) +// packet. Cleared by reading SOF_RD +#define USB_INTR_DEV_SOF_RESET _u(0x0) +#define USB_INTR_DEV_SOF_BITS _u(0x00020000) +#define USB_INTR_DEV_SOF_MSB _u(17) +#define USB_INTR_DEV_SOF_LSB _u(17) +#define USB_INTR_DEV_SOF_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTR_SETUP_REQ +// Description : Device. Source: SIE_STATUS.SETUP_REC +#define USB_INTR_SETUP_REQ_RESET _u(0x0) +#define USB_INTR_SETUP_REQ_BITS _u(0x00010000) +#define USB_INTR_SETUP_REQ_MSB _u(16) +#define USB_INTR_SETUP_REQ_LSB _u(16) +#define USB_INTR_SETUP_REQ_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTR_DEV_RESUME_FROM_HOST +// Description : Set when the device receives a resume from the host. Cleared by +// writing to SIE_STATUS.RESUME +#define USB_INTR_DEV_RESUME_FROM_HOST_RESET _u(0x0) +#define USB_INTR_DEV_RESUME_FROM_HOST_BITS _u(0x00008000) +#define USB_INTR_DEV_RESUME_FROM_HOST_MSB _u(15) +#define USB_INTR_DEV_RESUME_FROM_HOST_LSB _u(15) +#define USB_INTR_DEV_RESUME_FROM_HOST_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTR_DEV_SUSPEND +// Description : Set when the device suspend state changes. Cleared by writing +// to SIE_STATUS.SUSPENDED +#define USB_INTR_DEV_SUSPEND_RESET _u(0x0) +#define USB_INTR_DEV_SUSPEND_BITS _u(0x00004000) +#define USB_INTR_DEV_SUSPEND_MSB _u(14) +#define USB_INTR_DEV_SUSPEND_LSB _u(14) +#define USB_INTR_DEV_SUSPEND_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTR_DEV_CONN_DIS +// Description : Set when the device connection state changes. Cleared by +// writing to SIE_STATUS.CONNECTED +#define USB_INTR_DEV_CONN_DIS_RESET _u(0x0) +#define USB_INTR_DEV_CONN_DIS_BITS _u(0x00002000) +#define USB_INTR_DEV_CONN_DIS_MSB _u(13) +#define USB_INTR_DEV_CONN_DIS_LSB _u(13) +#define USB_INTR_DEV_CONN_DIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTR_BUS_RESET +// Description : Source: SIE_STATUS.BUS_RESET +#define USB_INTR_BUS_RESET_RESET _u(0x0) +#define USB_INTR_BUS_RESET_BITS _u(0x00001000) +#define USB_INTR_BUS_RESET_MSB _u(12) +#define USB_INTR_BUS_RESET_LSB _u(12) +#define USB_INTR_BUS_RESET_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTR_VBUS_DETECT +// Description : Source: SIE_STATUS.VBUS_DETECTED +#define USB_INTR_VBUS_DETECT_RESET _u(0x0) +#define USB_INTR_VBUS_DETECT_BITS _u(0x00000800) +#define USB_INTR_VBUS_DETECT_MSB _u(11) +#define USB_INTR_VBUS_DETECT_LSB _u(11) +#define USB_INTR_VBUS_DETECT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTR_STALL +// Description : Source: SIE_STATUS.STALL_REC +#define USB_INTR_STALL_RESET _u(0x0) +#define USB_INTR_STALL_BITS _u(0x00000400) +#define USB_INTR_STALL_MSB _u(10) +#define USB_INTR_STALL_LSB _u(10) +#define USB_INTR_STALL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTR_ERROR_CRC +// Description : Source: SIE_STATUS.CRC_ERROR +#define USB_INTR_ERROR_CRC_RESET _u(0x0) +#define USB_INTR_ERROR_CRC_BITS _u(0x00000200) +#define USB_INTR_ERROR_CRC_MSB _u(9) +#define USB_INTR_ERROR_CRC_LSB _u(9) +#define USB_INTR_ERROR_CRC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTR_ERROR_BIT_STUFF +// Description : Source: SIE_STATUS.BIT_STUFF_ERROR +#define USB_INTR_ERROR_BIT_STUFF_RESET _u(0x0) +#define USB_INTR_ERROR_BIT_STUFF_BITS _u(0x00000100) +#define USB_INTR_ERROR_BIT_STUFF_MSB _u(8) +#define USB_INTR_ERROR_BIT_STUFF_LSB _u(8) +#define USB_INTR_ERROR_BIT_STUFF_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTR_ERROR_RX_OVERFLOW +// Description : Source: SIE_STATUS.RX_OVERFLOW +#define USB_INTR_ERROR_RX_OVERFLOW_RESET _u(0x0) +#define USB_INTR_ERROR_RX_OVERFLOW_BITS _u(0x00000080) +#define USB_INTR_ERROR_RX_OVERFLOW_MSB _u(7) +#define USB_INTR_ERROR_RX_OVERFLOW_LSB _u(7) +#define USB_INTR_ERROR_RX_OVERFLOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTR_ERROR_RX_TIMEOUT +// Description : Source: SIE_STATUS.RX_TIMEOUT +#define USB_INTR_ERROR_RX_TIMEOUT_RESET _u(0x0) +#define USB_INTR_ERROR_RX_TIMEOUT_BITS _u(0x00000040) +#define USB_INTR_ERROR_RX_TIMEOUT_MSB _u(6) +#define USB_INTR_ERROR_RX_TIMEOUT_LSB _u(6) +#define USB_INTR_ERROR_RX_TIMEOUT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTR_ERROR_DATA_SEQ +// Description : Source: SIE_STATUS.DATA_SEQ_ERROR +#define USB_INTR_ERROR_DATA_SEQ_RESET _u(0x0) +#define USB_INTR_ERROR_DATA_SEQ_BITS _u(0x00000020) +#define USB_INTR_ERROR_DATA_SEQ_MSB _u(5) +#define USB_INTR_ERROR_DATA_SEQ_LSB _u(5) +#define USB_INTR_ERROR_DATA_SEQ_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTR_BUFF_STATUS +// Description : Raised when any bit in BUFF_STATUS is set. Clear by clearing +// all bits in BUFF_STATUS. +#define USB_INTR_BUFF_STATUS_RESET _u(0x0) +#define USB_INTR_BUFF_STATUS_BITS _u(0x00000010) +#define USB_INTR_BUFF_STATUS_MSB _u(4) +#define USB_INTR_BUFF_STATUS_LSB _u(4) +#define USB_INTR_BUFF_STATUS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTR_TRANS_COMPLETE +// Description : Raised every time SIE_STATUS.TRANS_COMPLETE is set. Clear by +// writing to this bit. +#define USB_INTR_TRANS_COMPLETE_RESET _u(0x0) +#define USB_INTR_TRANS_COMPLETE_BITS _u(0x00000008) +#define USB_INTR_TRANS_COMPLETE_MSB _u(3) +#define USB_INTR_TRANS_COMPLETE_LSB _u(3) +#define USB_INTR_TRANS_COMPLETE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTR_HOST_SOF +// Description : Host: raised every time the host sends a SOF (Start of Frame). +// Cleared by reading SOF_RD +#define USB_INTR_HOST_SOF_RESET _u(0x0) +#define USB_INTR_HOST_SOF_BITS _u(0x00000004) +#define USB_INTR_HOST_SOF_MSB _u(2) +#define USB_INTR_HOST_SOF_LSB _u(2) +#define USB_INTR_HOST_SOF_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTR_HOST_RESUME +// Description : Host: raised when a device wakes up the host. Cleared by +// writing to SIE_STATUS.RESUME +#define USB_INTR_HOST_RESUME_RESET _u(0x0) +#define USB_INTR_HOST_RESUME_BITS _u(0x00000002) +#define USB_INTR_HOST_RESUME_MSB _u(1) +#define USB_INTR_HOST_RESUME_LSB _u(1) +#define USB_INTR_HOST_RESUME_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTR_HOST_CONN_DIS +// Description : Host: raised when a device is connected or disconnected (i.e. +// when SIE_STATUS.SPEED changes). Cleared by writing to +// SIE_STATUS.SPEED +#define USB_INTR_HOST_CONN_DIS_RESET _u(0x0) +#define USB_INTR_HOST_CONN_DIS_BITS _u(0x00000001) +#define USB_INTR_HOST_CONN_DIS_MSB _u(0) +#define USB_INTR_HOST_CONN_DIS_LSB _u(0) +#define USB_INTR_HOST_CONN_DIS_ACCESS "RO" +// ============================================================================= +// Register : USB_INTE +// Description : Interrupt Enable +#define USB_INTE_OFFSET _u(0x00000090) +#define USB_INTE_BITS _u(0x000fffff) +#define USB_INTE_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_INTE_EP_STALL_NAK +// Description : Raised when any bit in EP_STATUS_STALL_NAK is set. Clear by +// clearing all bits in EP_STATUS_STALL_NAK. +#define USB_INTE_EP_STALL_NAK_RESET _u(0x0) +#define USB_INTE_EP_STALL_NAK_BITS _u(0x00080000) +#define USB_INTE_EP_STALL_NAK_MSB _u(19) +#define USB_INTE_EP_STALL_NAK_LSB _u(19) +#define USB_INTE_EP_STALL_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTE_ABORT_DONE +// Description : Raised when any bit in ABORT_DONE is set. Clear by clearing all +// bits in ABORT_DONE. +#define USB_INTE_ABORT_DONE_RESET _u(0x0) +#define USB_INTE_ABORT_DONE_BITS _u(0x00040000) +#define USB_INTE_ABORT_DONE_MSB _u(18) +#define USB_INTE_ABORT_DONE_LSB _u(18) +#define USB_INTE_ABORT_DONE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTE_DEV_SOF +// Description : Set every time the device receives a SOF (Start of Frame) +// packet. Cleared by reading SOF_RD +#define USB_INTE_DEV_SOF_RESET _u(0x0) +#define USB_INTE_DEV_SOF_BITS _u(0x00020000) +#define USB_INTE_DEV_SOF_MSB _u(17) +#define USB_INTE_DEV_SOF_LSB _u(17) +#define USB_INTE_DEV_SOF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTE_SETUP_REQ +// Description : Device. Source: SIE_STATUS.SETUP_REC +#define USB_INTE_SETUP_REQ_RESET _u(0x0) +#define USB_INTE_SETUP_REQ_BITS _u(0x00010000) +#define USB_INTE_SETUP_REQ_MSB _u(16) +#define USB_INTE_SETUP_REQ_LSB _u(16) +#define USB_INTE_SETUP_REQ_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTE_DEV_RESUME_FROM_HOST +// Description : Set when the device receives a resume from the host. Cleared by +// writing to SIE_STATUS.RESUME +#define USB_INTE_DEV_RESUME_FROM_HOST_RESET _u(0x0) +#define USB_INTE_DEV_RESUME_FROM_HOST_BITS _u(0x00008000) +#define USB_INTE_DEV_RESUME_FROM_HOST_MSB _u(15) +#define USB_INTE_DEV_RESUME_FROM_HOST_LSB _u(15) +#define USB_INTE_DEV_RESUME_FROM_HOST_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTE_DEV_SUSPEND +// Description : Set when the device suspend state changes. Cleared by writing +// to SIE_STATUS.SUSPENDED +#define USB_INTE_DEV_SUSPEND_RESET _u(0x0) +#define USB_INTE_DEV_SUSPEND_BITS _u(0x00004000) +#define USB_INTE_DEV_SUSPEND_MSB _u(14) +#define USB_INTE_DEV_SUSPEND_LSB _u(14) +#define USB_INTE_DEV_SUSPEND_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTE_DEV_CONN_DIS +// Description : Set when the device connection state changes. Cleared by +// writing to SIE_STATUS.CONNECTED +#define USB_INTE_DEV_CONN_DIS_RESET _u(0x0) +#define USB_INTE_DEV_CONN_DIS_BITS _u(0x00002000) +#define USB_INTE_DEV_CONN_DIS_MSB _u(13) +#define USB_INTE_DEV_CONN_DIS_LSB _u(13) +#define USB_INTE_DEV_CONN_DIS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTE_BUS_RESET +// Description : Source: SIE_STATUS.BUS_RESET +#define USB_INTE_BUS_RESET_RESET _u(0x0) +#define USB_INTE_BUS_RESET_BITS _u(0x00001000) +#define USB_INTE_BUS_RESET_MSB _u(12) +#define USB_INTE_BUS_RESET_LSB _u(12) +#define USB_INTE_BUS_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTE_VBUS_DETECT +// Description : Source: SIE_STATUS.VBUS_DETECTED +#define USB_INTE_VBUS_DETECT_RESET _u(0x0) +#define USB_INTE_VBUS_DETECT_BITS _u(0x00000800) +#define USB_INTE_VBUS_DETECT_MSB _u(11) +#define USB_INTE_VBUS_DETECT_LSB _u(11) +#define USB_INTE_VBUS_DETECT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTE_STALL +// Description : Source: SIE_STATUS.STALL_REC +#define USB_INTE_STALL_RESET _u(0x0) +#define USB_INTE_STALL_BITS _u(0x00000400) +#define USB_INTE_STALL_MSB _u(10) +#define USB_INTE_STALL_LSB _u(10) +#define USB_INTE_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTE_ERROR_CRC +// Description : Source: SIE_STATUS.CRC_ERROR +#define USB_INTE_ERROR_CRC_RESET _u(0x0) +#define USB_INTE_ERROR_CRC_BITS _u(0x00000200) +#define USB_INTE_ERROR_CRC_MSB _u(9) +#define USB_INTE_ERROR_CRC_LSB _u(9) +#define USB_INTE_ERROR_CRC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTE_ERROR_BIT_STUFF +// Description : Source: SIE_STATUS.BIT_STUFF_ERROR +#define USB_INTE_ERROR_BIT_STUFF_RESET _u(0x0) +#define USB_INTE_ERROR_BIT_STUFF_BITS _u(0x00000100) +#define USB_INTE_ERROR_BIT_STUFF_MSB _u(8) +#define USB_INTE_ERROR_BIT_STUFF_LSB _u(8) +#define USB_INTE_ERROR_BIT_STUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTE_ERROR_RX_OVERFLOW +// Description : Source: SIE_STATUS.RX_OVERFLOW +#define USB_INTE_ERROR_RX_OVERFLOW_RESET _u(0x0) +#define USB_INTE_ERROR_RX_OVERFLOW_BITS _u(0x00000080) +#define USB_INTE_ERROR_RX_OVERFLOW_MSB _u(7) +#define USB_INTE_ERROR_RX_OVERFLOW_LSB _u(7) +#define USB_INTE_ERROR_RX_OVERFLOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTE_ERROR_RX_TIMEOUT +// Description : Source: SIE_STATUS.RX_TIMEOUT +#define USB_INTE_ERROR_RX_TIMEOUT_RESET _u(0x0) +#define USB_INTE_ERROR_RX_TIMEOUT_BITS _u(0x00000040) +#define USB_INTE_ERROR_RX_TIMEOUT_MSB _u(6) +#define USB_INTE_ERROR_RX_TIMEOUT_LSB _u(6) +#define USB_INTE_ERROR_RX_TIMEOUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTE_ERROR_DATA_SEQ +// Description : Source: SIE_STATUS.DATA_SEQ_ERROR +#define USB_INTE_ERROR_DATA_SEQ_RESET _u(0x0) +#define USB_INTE_ERROR_DATA_SEQ_BITS _u(0x00000020) +#define USB_INTE_ERROR_DATA_SEQ_MSB _u(5) +#define USB_INTE_ERROR_DATA_SEQ_LSB _u(5) +#define USB_INTE_ERROR_DATA_SEQ_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTE_BUFF_STATUS +// Description : Raised when any bit in BUFF_STATUS is set. Clear by clearing +// all bits in BUFF_STATUS. +#define USB_INTE_BUFF_STATUS_RESET _u(0x0) +#define USB_INTE_BUFF_STATUS_BITS _u(0x00000010) +#define USB_INTE_BUFF_STATUS_MSB _u(4) +#define USB_INTE_BUFF_STATUS_LSB _u(4) +#define USB_INTE_BUFF_STATUS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTE_TRANS_COMPLETE +// Description : Raised every time SIE_STATUS.TRANS_COMPLETE is set. Clear by +// writing to this bit. +#define USB_INTE_TRANS_COMPLETE_RESET _u(0x0) +#define USB_INTE_TRANS_COMPLETE_BITS _u(0x00000008) +#define USB_INTE_TRANS_COMPLETE_MSB _u(3) +#define USB_INTE_TRANS_COMPLETE_LSB _u(3) +#define USB_INTE_TRANS_COMPLETE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTE_HOST_SOF +// Description : Host: raised every time the host sends a SOF (Start of Frame). +// Cleared by reading SOF_RD +#define USB_INTE_HOST_SOF_RESET _u(0x0) +#define USB_INTE_HOST_SOF_BITS _u(0x00000004) +#define USB_INTE_HOST_SOF_MSB _u(2) +#define USB_INTE_HOST_SOF_LSB _u(2) +#define USB_INTE_HOST_SOF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTE_HOST_RESUME +// Description : Host: raised when a device wakes up the host. Cleared by +// writing to SIE_STATUS.RESUME +#define USB_INTE_HOST_RESUME_RESET _u(0x0) +#define USB_INTE_HOST_RESUME_BITS _u(0x00000002) +#define USB_INTE_HOST_RESUME_MSB _u(1) +#define USB_INTE_HOST_RESUME_LSB _u(1) +#define USB_INTE_HOST_RESUME_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTE_HOST_CONN_DIS +// Description : Host: raised when a device is connected or disconnected (i.e. +// when SIE_STATUS.SPEED changes). Cleared by writing to +// SIE_STATUS.SPEED +#define USB_INTE_HOST_CONN_DIS_RESET _u(0x0) +#define USB_INTE_HOST_CONN_DIS_BITS _u(0x00000001) +#define USB_INTE_HOST_CONN_DIS_MSB _u(0) +#define USB_INTE_HOST_CONN_DIS_LSB _u(0) +#define USB_INTE_HOST_CONN_DIS_ACCESS "RW" +// ============================================================================= +// Register : USB_INTF +// Description : Interrupt Force +#define USB_INTF_OFFSET _u(0x00000094) +#define USB_INTF_BITS _u(0x000fffff) +#define USB_INTF_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_INTF_EP_STALL_NAK +// Description : Raised when any bit in EP_STATUS_STALL_NAK is set. Clear by +// clearing all bits in EP_STATUS_STALL_NAK. +#define USB_INTF_EP_STALL_NAK_RESET _u(0x0) +#define USB_INTF_EP_STALL_NAK_BITS _u(0x00080000) +#define USB_INTF_EP_STALL_NAK_MSB _u(19) +#define USB_INTF_EP_STALL_NAK_LSB _u(19) +#define USB_INTF_EP_STALL_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTF_ABORT_DONE +// Description : Raised when any bit in ABORT_DONE is set. Clear by clearing all +// bits in ABORT_DONE. +#define USB_INTF_ABORT_DONE_RESET _u(0x0) +#define USB_INTF_ABORT_DONE_BITS _u(0x00040000) +#define USB_INTF_ABORT_DONE_MSB _u(18) +#define USB_INTF_ABORT_DONE_LSB _u(18) +#define USB_INTF_ABORT_DONE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTF_DEV_SOF +// Description : Set every time the device receives a SOF (Start of Frame) +// packet. Cleared by reading SOF_RD +#define USB_INTF_DEV_SOF_RESET _u(0x0) +#define USB_INTF_DEV_SOF_BITS _u(0x00020000) +#define USB_INTF_DEV_SOF_MSB _u(17) +#define USB_INTF_DEV_SOF_LSB _u(17) +#define USB_INTF_DEV_SOF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTF_SETUP_REQ +// Description : Device. Source: SIE_STATUS.SETUP_REC +#define USB_INTF_SETUP_REQ_RESET _u(0x0) +#define USB_INTF_SETUP_REQ_BITS _u(0x00010000) +#define USB_INTF_SETUP_REQ_MSB _u(16) +#define USB_INTF_SETUP_REQ_LSB _u(16) +#define USB_INTF_SETUP_REQ_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTF_DEV_RESUME_FROM_HOST +// Description : Set when the device receives a resume from the host. Cleared by +// writing to SIE_STATUS.RESUME +#define USB_INTF_DEV_RESUME_FROM_HOST_RESET _u(0x0) +#define USB_INTF_DEV_RESUME_FROM_HOST_BITS _u(0x00008000) +#define USB_INTF_DEV_RESUME_FROM_HOST_MSB _u(15) +#define USB_INTF_DEV_RESUME_FROM_HOST_LSB _u(15) +#define USB_INTF_DEV_RESUME_FROM_HOST_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTF_DEV_SUSPEND +// Description : Set when the device suspend state changes. Cleared by writing +// to SIE_STATUS.SUSPENDED +#define USB_INTF_DEV_SUSPEND_RESET _u(0x0) +#define USB_INTF_DEV_SUSPEND_BITS _u(0x00004000) +#define USB_INTF_DEV_SUSPEND_MSB _u(14) +#define USB_INTF_DEV_SUSPEND_LSB _u(14) +#define USB_INTF_DEV_SUSPEND_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTF_DEV_CONN_DIS +// Description : Set when the device connection state changes. Cleared by +// writing to SIE_STATUS.CONNECTED +#define USB_INTF_DEV_CONN_DIS_RESET _u(0x0) +#define USB_INTF_DEV_CONN_DIS_BITS _u(0x00002000) +#define USB_INTF_DEV_CONN_DIS_MSB _u(13) +#define USB_INTF_DEV_CONN_DIS_LSB _u(13) +#define USB_INTF_DEV_CONN_DIS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTF_BUS_RESET +// Description : Source: SIE_STATUS.BUS_RESET +#define USB_INTF_BUS_RESET_RESET _u(0x0) +#define USB_INTF_BUS_RESET_BITS _u(0x00001000) +#define USB_INTF_BUS_RESET_MSB _u(12) +#define USB_INTF_BUS_RESET_LSB _u(12) +#define USB_INTF_BUS_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTF_VBUS_DETECT +// Description : Source: SIE_STATUS.VBUS_DETECTED +#define USB_INTF_VBUS_DETECT_RESET _u(0x0) +#define USB_INTF_VBUS_DETECT_BITS _u(0x00000800) +#define USB_INTF_VBUS_DETECT_MSB _u(11) +#define USB_INTF_VBUS_DETECT_LSB _u(11) +#define USB_INTF_VBUS_DETECT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTF_STALL +// Description : Source: SIE_STATUS.STALL_REC +#define USB_INTF_STALL_RESET _u(0x0) +#define USB_INTF_STALL_BITS _u(0x00000400) +#define USB_INTF_STALL_MSB _u(10) +#define USB_INTF_STALL_LSB _u(10) +#define USB_INTF_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTF_ERROR_CRC +// Description : Source: SIE_STATUS.CRC_ERROR +#define USB_INTF_ERROR_CRC_RESET _u(0x0) +#define USB_INTF_ERROR_CRC_BITS _u(0x00000200) +#define USB_INTF_ERROR_CRC_MSB _u(9) +#define USB_INTF_ERROR_CRC_LSB _u(9) +#define USB_INTF_ERROR_CRC_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTF_ERROR_BIT_STUFF +// Description : Source: SIE_STATUS.BIT_STUFF_ERROR +#define USB_INTF_ERROR_BIT_STUFF_RESET _u(0x0) +#define USB_INTF_ERROR_BIT_STUFF_BITS _u(0x00000100) +#define USB_INTF_ERROR_BIT_STUFF_MSB _u(8) +#define USB_INTF_ERROR_BIT_STUFF_LSB _u(8) +#define USB_INTF_ERROR_BIT_STUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTF_ERROR_RX_OVERFLOW +// Description : Source: SIE_STATUS.RX_OVERFLOW +#define USB_INTF_ERROR_RX_OVERFLOW_RESET _u(0x0) +#define USB_INTF_ERROR_RX_OVERFLOW_BITS _u(0x00000080) +#define USB_INTF_ERROR_RX_OVERFLOW_MSB _u(7) +#define USB_INTF_ERROR_RX_OVERFLOW_LSB _u(7) +#define USB_INTF_ERROR_RX_OVERFLOW_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTF_ERROR_RX_TIMEOUT +// Description : Source: SIE_STATUS.RX_TIMEOUT +#define USB_INTF_ERROR_RX_TIMEOUT_RESET _u(0x0) +#define USB_INTF_ERROR_RX_TIMEOUT_BITS _u(0x00000040) +#define USB_INTF_ERROR_RX_TIMEOUT_MSB _u(6) +#define USB_INTF_ERROR_RX_TIMEOUT_LSB _u(6) +#define USB_INTF_ERROR_RX_TIMEOUT_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTF_ERROR_DATA_SEQ +// Description : Source: SIE_STATUS.DATA_SEQ_ERROR +#define USB_INTF_ERROR_DATA_SEQ_RESET _u(0x0) +#define USB_INTF_ERROR_DATA_SEQ_BITS _u(0x00000020) +#define USB_INTF_ERROR_DATA_SEQ_MSB _u(5) +#define USB_INTF_ERROR_DATA_SEQ_LSB _u(5) +#define USB_INTF_ERROR_DATA_SEQ_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTF_BUFF_STATUS +// Description : Raised when any bit in BUFF_STATUS is set. Clear by clearing +// all bits in BUFF_STATUS. +#define USB_INTF_BUFF_STATUS_RESET _u(0x0) +#define USB_INTF_BUFF_STATUS_BITS _u(0x00000010) +#define USB_INTF_BUFF_STATUS_MSB _u(4) +#define USB_INTF_BUFF_STATUS_LSB _u(4) +#define USB_INTF_BUFF_STATUS_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTF_TRANS_COMPLETE +// Description : Raised every time SIE_STATUS.TRANS_COMPLETE is set. Clear by +// writing to this bit. +#define USB_INTF_TRANS_COMPLETE_RESET _u(0x0) +#define USB_INTF_TRANS_COMPLETE_BITS _u(0x00000008) +#define USB_INTF_TRANS_COMPLETE_MSB _u(3) +#define USB_INTF_TRANS_COMPLETE_LSB _u(3) +#define USB_INTF_TRANS_COMPLETE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTF_HOST_SOF +// Description : Host: raised every time the host sends a SOF (Start of Frame). +// Cleared by reading SOF_RD +#define USB_INTF_HOST_SOF_RESET _u(0x0) +#define USB_INTF_HOST_SOF_BITS _u(0x00000004) +#define USB_INTF_HOST_SOF_MSB _u(2) +#define USB_INTF_HOST_SOF_LSB _u(2) +#define USB_INTF_HOST_SOF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTF_HOST_RESUME +// Description : Host: raised when a device wakes up the host. Cleared by +// writing to SIE_STATUS.RESUME +#define USB_INTF_HOST_RESUME_RESET _u(0x0) +#define USB_INTF_HOST_RESUME_BITS _u(0x00000002) +#define USB_INTF_HOST_RESUME_MSB _u(1) +#define USB_INTF_HOST_RESUME_LSB _u(1) +#define USB_INTF_HOST_RESUME_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_INTF_HOST_CONN_DIS +// Description : Host: raised when a device is connected or disconnected (i.e. +// when SIE_STATUS.SPEED changes). Cleared by writing to +// SIE_STATUS.SPEED +#define USB_INTF_HOST_CONN_DIS_RESET _u(0x0) +#define USB_INTF_HOST_CONN_DIS_BITS _u(0x00000001) +#define USB_INTF_HOST_CONN_DIS_MSB _u(0) +#define USB_INTF_HOST_CONN_DIS_LSB _u(0) +#define USB_INTF_HOST_CONN_DIS_ACCESS "RW" +// ============================================================================= +// Register : USB_INTS +// Description : Interrupt status after masking & forcing +#define USB_INTS_OFFSET _u(0x00000098) +#define USB_INTS_BITS _u(0x000fffff) +#define USB_INTS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_INTS_EP_STALL_NAK +// Description : Raised when any bit in EP_STATUS_STALL_NAK is set. Clear by +// clearing all bits in EP_STATUS_STALL_NAK. +#define USB_INTS_EP_STALL_NAK_RESET _u(0x0) +#define USB_INTS_EP_STALL_NAK_BITS _u(0x00080000) +#define USB_INTS_EP_STALL_NAK_MSB _u(19) +#define USB_INTS_EP_STALL_NAK_LSB _u(19) +#define USB_INTS_EP_STALL_NAK_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTS_ABORT_DONE +// Description : Raised when any bit in ABORT_DONE is set. Clear by clearing all +// bits in ABORT_DONE. +#define USB_INTS_ABORT_DONE_RESET _u(0x0) +#define USB_INTS_ABORT_DONE_BITS _u(0x00040000) +#define USB_INTS_ABORT_DONE_MSB _u(18) +#define USB_INTS_ABORT_DONE_LSB _u(18) +#define USB_INTS_ABORT_DONE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTS_DEV_SOF +// Description : Set every time the device receives a SOF (Start of Frame) +// packet. Cleared by reading SOF_RD +#define USB_INTS_DEV_SOF_RESET _u(0x0) +#define USB_INTS_DEV_SOF_BITS _u(0x00020000) +#define USB_INTS_DEV_SOF_MSB _u(17) +#define USB_INTS_DEV_SOF_LSB _u(17) +#define USB_INTS_DEV_SOF_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTS_SETUP_REQ +// Description : Device. Source: SIE_STATUS.SETUP_REC +#define USB_INTS_SETUP_REQ_RESET _u(0x0) +#define USB_INTS_SETUP_REQ_BITS _u(0x00010000) +#define USB_INTS_SETUP_REQ_MSB _u(16) +#define USB_INTS_SETUP_REQ_LSB _u(16) +#define USB_INTS_SETUP_REQ_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTS_DEV_RESUME_FROM_HOST +// Description : Set when the device receives a resume from the host. Cleared by +// writing to SIE_STATUS.RESUME +#define USB_INTS_DEV_RESUME_FROM_HOST_RESET _u(0x0) +#define USB_INTS_DEV_RESUME_FROM_HOST_BITS _u(0x00008000) +#define USB_INTS_DEV_RESUME_FROM_HOST_MSB _u(15) +#define USB_INTS_DEV_RESUME_FROM_HOST_LSB _u(15) +#define USB_INTS_DEV_RESUME_FROM_HOST_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTS_DEV_SUSPEND +// Description : Set when the device suspend state changes. Cleared by writing +// to SIE_STATUS.SUSPENDED +#define USB_INTS_DEV_SUSPEND_RESET _u(0x0) +#define USB_INTS_DEV_SUSPEND_BITS _u(0x00004000) +#define USB_INTS_DEV_SUSPEND_MSB _u(14) +#define USB_INTS_DEV_SUSPEND_LSB _u(14) +#define USB_INTS_DEV_SUSPEND_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTS_DEV_CONN_DIS +// Description : Set when the device connection state changes. Cleared by +// writing to SIE_STATUS.CONNECTED +#define USB_INTS_DEV_CONN_DIS_RESET _u(0x0) +#define USB_INTS_DEV_CONN_DIS_BITS _u(0x00002000) +#define USB_INTS_DEV_CONN_DIS_MSB _u(13) +#define USB_INTS_DEV_CONN_DIS_LSB _u(13) +#define USB_INTS_DEV_CONN_DIS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTS_BUS_RESET +// Description : Source: SIE_STATUS.BUS_RESET +#define USB_INTS_BUS_RESET_RESET _u(0x0) +#define USB_INTS_BUS_RESET_BITS _u(0x00001000) +#define USB_INTS_BUS_RESET_MSB _u(12) +#define USB_INTS_BUS_RESET_LSB _u(12) +#define USB_INTS_BUS_RESET_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTS_VBUS_DETECT +// Description : Source: SIE_STATUS.VBUS_DETECTED +#define USB_INTS_VBUS_DETECT_RESET _u(0x0) +#define USB_INTS_VBUS_DETECT_BITS _u(0x00000800) +#define USB_INTS_VBUS_DETECT_MSB _u(11) +#define USB_INTS_VBUS_DETECT_LSB _u(11) +#define USB_INTS_VBUS_DETECT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTS_STALL +// Description : Source: SIE_STATUS.STALL_REC +#define USB_INTS_STALL_RESET _u(0x0) +#define USB_INTS_STALL_BITS _u(0x00000400) +#define USB_INTS_STALL_MSB _u(10) +#define USB_INTS_STALL_LSB _u(10) +#define USB_INTS_STALL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTS_ERROR_CRC +// Description : Source: SIE_STATUS.CRC_ERROR +#define USB_INTS_ERROR_CRC_RESET _u(0x0) +#define USB_INTS_ERROR_CRC_BITS _u(0x00000200) +#define USB_INTS_ERROR_CRC_MSB _u(9) +#define USB_INTS_ERROR_CRC_LSB _u(9) +#define USB_INTS_ERROR_CRC_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTS_ERROR_BIT_STUFF +// Description : Source: SIE_STATUS.BIT_STUFF_ERROR +#define USB_INTS_ERROR_BIT_STUFF_RESET _u(0x0) +#define USB_INTS_ERROR_BIT_STUFF_BITS _u(0x00000100) +#define USB_INTS_ERROR_BIT_STUFF_MSB _u(8) +#define USB_INTS_ERROR_BIT_STUFF_LSB _u(8) +#define USB_INTS_ERROR_BIT_STUFF_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTS_ERROR_RX_OVERFLOW +// Description : Source: SIE_STATUS.RX_OVERFLOW +#define USB_INTS_ERROR_RX_OVERFLOW_RESET _u(0x0) +#define USB_INTS_ERROR_RX_OVERFLOW_BITS _u(0x00000080) +#define USB_INTS_ERROR_RX_OVERFLOW_MSB _u(7) +#define USB_INTS_ERROR_RX_OVERFLOW_LSB _u(7) +#define USB_INTS_ERROR_RX_OVERFLOW_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTS_ERROR_RX_TIMEOUT +// Description : Source: SIE_STATUS.RX_TIMEOUT +#define USB_INTS_ERROR_RX_TIMEOUT_RESET _u(0x0) +#define USB_INTS_ERROR_RX_TIMEOUT_BITS _u(0x00000040) +#define USB_INTS_ERROR_RX_TIMEOUT_MSB _u(6) +#define USB_INTS_ERROR_RX_TIMEOUT_LSB _u(6) +#define USB_INTS_ERROR_RX_TIMEOUT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTS_ERROR_DATA_SEQ +// Description : Source: SIE_STATUS.DATA_SEQ_ERROR +#define USB_INTS_ERROR_DATA_SEQ_RESET _u(0x0) +#define USB_INTS_ERROR_DATA_SEQ_BITS _u(0x00000020) +#define USB_INTS_ERROR_DATA_SEQ_MSB _u(5) +#define USB_INTS_ERROR_DATA_SEQ_LSB _u(5) +#define USB_INTS_ERROR_DATA_SEQ_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTS_BUFF_STATUS +// Description : Raised when any bit in BUFF_STATUS is set. Clear by clearing +// all bits in BUFF_STATUS. +#define USB_INTS_BUFF_STATUS_RESET _u(0x0) +#define USB_INTS_BUFF_STATUS_BITS _u(0x00000010) +#define USB_INTS_BUFF_STATUS_MSB _u(4) +#define USB_INTS_BUFF_STATUS_LSB _u(4) +#define USB_INTS_BUFF_STATUS_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTS_TRANS_COMPLETE +// Description : Raised every time SIE_STATUS.TRANS_COMPLETE is set. Clear by +// writing to this bit. +#define USB_INTS_TRANS_COMPLETE_RESET _u(0x0) +#define USB_INTS_TRANS_COMPLETE_BITS _u(0x00000008) +#define USB_INTS_TRANS_COMPLETE_MSB _u(3) +#define USB_INTS_TRANS_COMPLETE_LSB _u(3) +#define USB_INTS_TRANS_COMPLETE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTS_HOST_SOF +// Description : Host: raised every time the host sends a SOF (Start of Frame). +// Cleared by reading SOF_RD +#define USB_INTS_HOST_SOF_RESET _u(0x0) +#define USB_INTS_HOST_SOF_BITS _u(0x00000004) +#define USB_INTS_HOST_SOF_MSB _u(2) +#define USB_INTS_HOST_SOF_LSB _u(2) +#define USB_INTS_HOST_SOF_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTS_HOST_RESUME +// Description : Host: raised when a device wakes up the host. Cleared by +// writing to SIE_STATUS.RESUME +#define USB_INTS_HOST_RESUME_RESET _u(0x0) +#define USB_INTS_HOST_RESUME_BITS _u(0x00000002) +#define USB_INTS_HOST_RESUME_MSB _u(1) +#define USB_INTS_HOST_RESUME_LSB _u(1) +#define USB_INTS_HOST_RESUME_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : USB_INTS_HOST_CONN_DIS +// Description : Host: raised when a device is connected or disconnected (i.e. +// when SIE_STATUS.SPEED changes). Cleared by writing to +// SIE_STATUS.SPEED +#define USB_INTS_HOST_CONN_DIS_RESET _u(0x0) +#define USB_INTS_HOST_CONN_DIS_BITS _u(0x00000001) +#define USB_INTS_HOST_CONN_DIS_MSB _u(0) +#define USB_INTS_HOST_CONN_DIS_LSB _u(0) +#define USB_INTS_HOST_CONN_DIS_ACCESS "RO" +// ============================================================================= +#endif // HARDWARE_REGS_USB_DEFINED diff --git a/arkanoid/pico/hardware/regs/usb_device_dpram.h b/arkanoid/pico/hardware/regs/usb_device_dpram.h new file mode 100644 index 0000000..fe65ffb --- /dev/null +++ b/arkanoid/pico/hardware/regs/usb_device_dpram.h @@ -0,0 +1,6807 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : USB_DEVICE_DPRAM +// Version : 1 +// Bus type : ahbl +// Description : DPRAM layout for USB device. +// ============================================================================= +#ifndef HARDWARE_REGS_USB_DEVICE_DPRAM_DEFINED +#define HARDWARE_REGS_USB_DEVICE_DPRAM_DEFINED +// ============================================================================= +// Register : USB_DEVICE_DPRAM_SETUP_PACKET_LOW +// Description : Bytes 0-3 of the SETUP packet from the host. +#define USB_DEVICE_DPRAM_SETUP_PACKET_LOW_OFFSET _u(0x00000000) +#define USB_DEVICE_DPRAM_SETUP_PACKET_LOW_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_SETUP_PACKET_LOW_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_SETUP_PACKET_LOW_WVALUE +// Description : None +#define USB_DEVICE_DPRAM_SETUP_PACKET_LOW_WVALUE_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_SETUP_PACKET_LOW_WVALUE_BITS _u(0xffff0000) +#define USB_DEVICE_DPRAM_SETUP_PACKET_LOW_WVALUE_MSB _u(31) +#define USB_DEVICE_DPRAM_SETUP_PACKET_LOW_WVALUE_LSB _u(16) +#define USB_DEVICE_DPRAM_SETUP_PACKET_LOW_WVALUE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_SETUP_PACKET_LOW_BREQUEST +// Description : None +#define USB_DEVICE_DPRAM_SETUP_PACKET_LOW_BREQUEST_RESET _u(0x00) +#define USB_DEVICE_DPRAM_SETUP_PACKET_LOW_BREQUEST_BITS _u(0x0000ff00) +#define USB_DEVICE_DPRAM_SETUP_PACKET_LOW_BREQUEST_MSB _u(15) +#define USB_DEVICE_DPRAM_SETUP_PACKET_LOW_BREQUEST_LSB _u(8) +#define USB_DEVICE_DPRAM_SETUP_PACKET_LOW_BREQUEST_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_SETUP_PACKET_LOW_BMREQUESTTYPE +// Description : None +#define USB_DEVICE_DPRAM_SETUP_PACKET_LOW_BMREQUESTTYPE_RESET _u(0x00) +#define USB_DEVICE_DPRAM_SETUP_PACKET_LOW_BMREQUESTTYPE_BITS _u(0x000000ff) +#define USB_DEVICE_DPRAM_SETUP_PACKET_LOW_BMREQUESTTYPE_MSB _u(7) +#define USB_DEVICE_DPRAM_SETUP_PACKET_LOW_BMREQUESTTYPE_LSB _u(0) +#define USB_DEVICE_DPRAM_SETUP_PACKET_LOW_BMREQUESTTYPE_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_SETUP_PACKET_HIGH +// Description : Bytes 4-7 of the setup packet from the host. +#define USB_DEVICE_DPRAM_SETUP_PACKET_HIGH_OFFSET _u(0x00000004) +#define USB_DEVICE_DPRAM_SETUP_PACKET_HIGH_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_SETUP_PACKET_HIGH_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_SETUP_PACKET_HIGH_WLENGTH +// Description : None +#define USB_DEVICE_DPRAM_SETUP_PACKET_HIGH_WLENGTH_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_SETUP_PACKET_HIGH_WLENGTH_BITS _u(0xffff0000) +#define USB_DEVICE_DPRAM_SETUP_PACKET_HIGH_WLENGTH_MSB _u(31) +#define USB_DEVICE_DPRAM_SETUP_PACKET_HIGH_WLENGTH_LSB _u(16) +#define USB_DEVICE_DPRAM_SETUP_PACKET_HIGH_WLENGTH_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_SETUP_PACKET_HIGH_WINDEX +// Description : None +#define USB_DEVICE_DPRAM_SETUP_PACKET_HIGH_WINDEX_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_SETUP_PACKET_HIGH_WINDEX_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_SETUP_PACKET_HIGH_WINDEX_MSB _u(15) +#define USB_DEVICE_DPRAM_SETUP_PACKET_HIGH_WINDEX_LSB _u(0) +#define USB_DEVICE_DPRAM_SETUP_PACKET_HIGH_WINDEX_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP1_IN_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_OFFSET _u(0x00000008) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP1_IN_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP1_OUT_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_OFFSET _u(0x0000000c) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP1_OUT_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP2_IN_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_OFFSET _u(0x00000010) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP2_IN_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP2_OUT_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_OFFSET _u(0x00000014) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP2_OUT_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP3_IN_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_OFFSET _u(0x00000018) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP3_IN_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP3_OUT_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_OFFSET _u(0x0000001c) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP3_OUT_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP4_IN_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_OFFSET _u(0x00000020) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP4_IN_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP4_OUT_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_OFFSET _u(0x00000024) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP4_OUT_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP5_IN_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_OFFSET _u(0x00000028) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP5_IN_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP5_OUT_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_OFFSET _u(0x0000002c) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP5_OUT_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP6_IN_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_OFFSET _u(0x00000030) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP6_IN_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP6_OUT_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_OFFSET _u(0x00000034) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP6_OUT_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP7_IN_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_OFFSET _u(0x00000038) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP7_IN_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP7_OUT_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_OFFSET _u(0x0000003c) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP7_OUT_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP8_IN_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_OFFSET _u(0x00000040) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP8_IN_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP8_OUT_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_OFFSET _u(0x00000044) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP8_OUT_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP9_IN_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_OFFSET _u(0x00000048) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP9_IN_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP9_OUT_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_OFFSET _u(0x0000004c) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP9_OUT_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP10_IN_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_OFFSET _u(0x00000050) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP10_IN_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP10_OUT_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_OFFSET _u(0x00000054) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP10_OUT_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP11_IN_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_OFFSET _u(0x00000058) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP11_IN_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP11_OUT_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_OFFSET _u(0x0000005c) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP11_OUT_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP12_IN_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_OFFSET _u(0x00000060) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP12_IN_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP12_OUT_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_OFFSET _u(0x00000064) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP12_OUT_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP13_IN_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_OFFSET _u(0x00000068) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP13_IN_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP13_OUT_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_OFFSET _u(0x0000006c) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP13_OUT_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP14_IN_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_OFFSET _u(0x00000070) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP14_IN_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP14_OUT_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_OFFSET _u(0x00000074) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP14_OUT_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP15_IN_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_OFFSET _u(0x00000078) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP15_IN_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP15_OUT_CONTROL +// Description : None +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_OFFSET _u(0x0000007c) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_BITS _u(0xfc03ffff) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_CONTROL_ENABLE +// Description : Enable this endpoint. The device will not reply to any packets +// for this endpoint if this bit is not set. +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_ENABLE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_ENABLE_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_ENABLE_MSB _u(31) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_ENABLE_LSB _u(31) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_CONTROL_DOUBLE_BUFFERED +// Description : This endpoint is double buffered. +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_DOUBLE_BUFFERED_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_DOUBLE_BUFFERED_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_DOUBLE_BUFFERED_MSB _u(30) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_DOUBLE_BUFFERED_LSB _u(30) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_DOUBLE_BUFFERED_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_PER_BUFF +// Description : Trigger an interrupt each time a buffer is done. +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_PER_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_PER_BUFF_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_PER_BUFF_MSB _u(29) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_PER_BUFF_LSB _u(29) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_PER_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF +// Description : Trigger an interrupt each time both buffers are done. Only +// valid in double buffered mode. +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_BITS _u(0x10000000) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_MSB _u(28) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_LSB _u(28) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_PER_DOUBLE_BUFF_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_CONTROL_ENDPOINT_TYPE +// Description : 0x0 -> Control +// 0x1 -> Isochronous +// 0x2 -> Bulk +// 0x3 -> Interrupt +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_ENDPOINT_TYPE_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_ENDPOINT_TYPE_BITS _u(0x0c000000) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_ENDPOINT_TYPE_MSB _u(27) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_ENDPOINT_TYPE_LSB _u(26) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_ENDPOINT_TYPE_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_ENDPOINT_TYPE_VALUE_CONTROL _u(0x0) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_ENDPOINT_TYPE_VALUE_ISOCHRONOUS _u(0x1) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_ENDPOINT_TYPE_VALUE_BULK _u(0x2) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_ENDPOINT_TYPE_VALUE_INTERRUPT _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_ON_STALL +// Description : Trigger an interrupt if a STALL is sent. Intended for debug +// only. +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_ON_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_ON_STALL_BITS _u(0x00020000) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_ON_STALL_MSB _u(17) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_ON_STALL_LSB _u(17) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_ON_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_ON_NAK +// Description : Trigger an interrupt if a NAK is sent. Intended for debug only. +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_ON_NAK_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_ON_NAK_BITS _u(0x00010000) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_ON_NAK_MSB _u(16) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_ON_NAK_LSB _u(16) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_INTERRUPT_ON_NAK_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_CONTROL_BUFFER_ADDRESS +// Description : 64 byte aligned buffer address for this EP (bits 0-5 are +// ignored). Relative to the start of the DPRAM. +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_BUFFER_ADDRESS_RESET _u(0x0000) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_BUFFER_ADDRESS_BITS _u(0x0000ffff) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_BUFFER_ADDRESS_MSB _u(15) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_BUFFER_ADDRESS_LSB _u(0) +#define USB_DEVICE_DPRAM_EP15_OUT_CONTROL_BUFFER_ADDRESS_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_OFFSET _u(0x00000080) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP0_IN_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_OFFSET _u(0x00000084) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSE +// T +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP0_OUT_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_OFFSET _u(0x00000088) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP1_IN_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_OFFSET _u(0x0000008c) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSE +// T +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP1_OUT_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_OFFSET _u(0x00000090) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP2_IN_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_OFFSET _u(0x00000094) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSE +// T +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP2_OUT_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_OFFSET _u(0x00000098) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP3_IN_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_OFFSET _u(0x0000009c) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSE +// T +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP3_OUT_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_OFFSET _u(0x000000a0) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP4_IN_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_OFFSET _u(0x000000a4) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSE +// T +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP4_OUT_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_OFFSET _u(0x000000a8) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP5_IN_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_OFFSET _u(0x000000ac) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSE +// T +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP5_OUT_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_OFFSET _u(0x000000b0) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP6_IN_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_OFFSET _u(0x000000b4) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSE +// T +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP6_OUT_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_OFFSET _u(0x000000b8) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP7_IN_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_OFFSET _u(0x000000bc) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSE +// T +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP7_OUT_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_OFFSET _u(0x000000c0) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP8_IN_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_OFFSET _u(0x000000c4) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSE +// T +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP8_OUT_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_OFFSET _u(0x000000c8) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP9_IN_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_OFFSET _u(0x000000cc) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSE +// T +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP9_OUT_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_OFFSET _u(0x000000d0) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSE +// T +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP10_IN_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_OFFSET _u(0x000000d4) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFS +// ET +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP10_OUT_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_OFFSET _u(0x000000d8) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSE +// T +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP11_IN_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_OFFSET _u(0x000000dc) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFS +// ET +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP11_OUT_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_OFFSET _u(0x000000e0) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSE +// T +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP12_IN_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_OFFSET _u(0x000000e4) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFS +// ET +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP12_OUT_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_OFFSET _u(0x000000e8) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSE +// T +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP13_IN_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_OFFSET _u(0x000000ec) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFS +// ET +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP13_OUT_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_OFFSET _u(0x000000f0) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSE +// T +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP14_IN_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_OFFSET _u(0x000000f4) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFS +// ET +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP14_OUT_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_OFFSET _u(0x000000f8) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSE +// T +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP15_IN_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +// Register : USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL +// Description : Buffer control for both buffers of an endpoint. Fields ending +// in a _1 are for buffer 1. +// Fields ending in a _0 are for buffer 0. Buffer 1 controls are +// only valid if the endpoint is in double buffered mode. +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_OFFSET _u(0x000000fc) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_BITS _u(0xffffffff) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_FULL_1 +// Description : Buffer 1 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_FULL_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_FULL_1_BITS _u(0x80000000) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_FULL_1_MSB _u(31) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_FULL_1_LSB _u(31) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_FULL_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LAST_1 +// Description : Buffer 1 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LAST_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LAST_1_BITS _u(0x40000000) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LAST_1_MSB _u(30) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LAST_1_LSB _u(30) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LAST_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_PID_1 +// Description : The data pid of buffer 1. +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_PID_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_PID_1_BITS _u(0x20000000) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_PID_1_MSB _u(29) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_PID_1_LSB _u(29) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_PID_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFS +// ET +// Description : The number of bytes buffer 1 is offset from buffer 0 in +// Isochronous mode. Only valid in double buffered mode for an +// Isochronous endpoint. +// For a non Isochronous endpoint the offset is always 64 bytes. +// 0x0 -> 128 +// 0x1 -> 256 +// 0x2 -> 512 +// 0x3 -> 1024 +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_BITS _u(0x18000000) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_MSB _u(28) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_LSB _u(27) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_ACCESS "RW" +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_128 _u(0x0) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_256 _u(0x1) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_512 _u(0x2) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_DOUBLE_BUFFER_ISO_OFFSET_VALUE_1024 _u(0x3) +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_AVAILABLE_1 +// Description : Buffer 1 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_AVAILABLE_1_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_AVAILABLE_1_BITS _u(0x04000000) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_AVAILABLE_1_MSB _u(26) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_AVAILABLE_1_LSB _u(26) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_AVAILABLE_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LENGTH_1 +// Description : The length of the data in buffer 1. +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LENGTH_1_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LENGTH_1_BITS _u(0x03ff0000) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LENGTH_1_MSB _u(25) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LENGTH_1_LSB _u(16) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LENGTH_1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_FULL_0 +// Description : Buffer 0 is full. For an IN transfer (TX to the host) the bit +// is set to indicate the data is valid. For an OUT transfer (RX +// from the host) this bit should be left as a 0. The host will +// set it when it has filled the buffer with data. +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_FULL_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_FULL_0_BITS _u(0x00008000) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_FULL_0_MSB _u(15) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_FULL_0_LSB _u(15) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_FULL_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LAST_0 +// Description : Buffer 0 is the last buffer of the transfer. +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LAST_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LAST_0_BITS _u(0x00004000) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LAST_0_MSB _u(14) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LAST_0_LSB _u(14) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LAST_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_PID_0 +// Description : The data pid of buffer 0. +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_PID_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_PID_0_BITS _u(0x00002000) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_PID_0_MSB _u(13) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_PID_0_LSB _u(13) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_PID_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_RESET +// Description : Reset the buffer selector to buffer 0. +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_RESET_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_RESET_BITS _u(0x00001000) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_RESET_MSB _u(12) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_RESET_LSB _u(12) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_RESET_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_STALL +// Description : Reply with a stall (valid for both buffers). +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_STALL_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_STALL_BITS _u(0x00000800) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_STALL_MSB _u(11) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_STALL_LSB _u(11) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_STALL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_AVAILABLE_0 +// Description : Buffer 0 is available. This bit is set to indicate the buffer +// can be used by the controller. The controller clears the +// available bit when writing the status back. +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_AVAILABLE_0_RESET _u(0x0) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_AVAILABLE_0_BITS _u(0x00000400) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_AVAILABLE_0_MSB _u(10) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_AVAILABLE_0_LSB _u(10) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_AVAILABLE_0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LENGTH_0 +// Description : The length of the data in buffer 0. +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LENGTH_0_RESET _u(0x000) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LENGTH_0_BITS _u(0x000003ff) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LENGTH_0_MSB _u(9) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LENGTH_0_LSB _u(0) +#define USB_DEVICE_DPRAM_EP15_OUT_BUFFER_CONTROL_LENGTH_0_ACCESS "RW" +// ============================================================================= +#endif // HARDWARE_REGS_USB_DEVICE_DPRAM_DEFINED diff --git a/arkanoid/pico/hardware/regs/vreg_and_chip_reset.h b/arkanoid/pico/hardware/regs/vreg_and_chip_reset.h new file mode 100644 index 0000000..356ff56 --- /dev/null +++ b/arkanoid/pico/hardware/regs/vreg_and_chip_reset.h @@ -0,0 +1,151 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : VREG_AND_CHIP_RESET +// Version : 1 +// Bus type : apb +// Description : control and status for on-chip voltage regulator and chip +// level reset subsystem +// ============================================================================= +#ifndef HARDWARE_REGS_VREG_AND_CHIP_RESET_DEFINED +#define HARDWARE_REGS_VREG_AND_CHIP_RESET_DEFINED +// ============================================================================= +// Register : VREG_AND_CHIP_RESET_VREG +// Description : Voltage regulator control and status +#define VREG_AND_CHIP_RESET_VREG_OFFSET _u(0x00000000) +#define VREG_AND_CHIP_RESET_VREG_BITS _u(0x000010f3) +#define VREG_AND_CHIP_RESET_VREG_RESET _u(0x000000b1) +// ----------------------------------------------------------------------------- +// Field : VREG_AND_CHIP_RESET_VREG_ROK +// Description : regulation status +// 0=not in regulation, 1=in regulation +#define VREG_AND_CHIP_RESET_VREG_ROK_RESET _u(0x0) +#define VREG_AND_CHIP_RESET_VREG_ROK_BITS _u(0x00001000) +#define VREG_AND_CHIP_RESET_VREG_ROK_MSB _u(12) +#define VREG_AND_CHIP_RESET_VREG_ROK_LSB _u(12) +#define VREG_AND_CHIP_RESET_VREG_ROK_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : VREG_AND_CHIP_RESET_VREG_VSEL +// Description : output voltage select +// 0000 to 0101 - 0.80V +// 0110 - 0.85V +// 0111 - 0.90V +// 1000 - 0.95V +// 1001 - 1.00V +// 1010 - 1.05V +// 1011 - 1.10V (default) +// 1100 - 1.15V +// 1101 - 1.20V +// 1110 - 1.25V +// 1111 - 1.30V +#define VREG_AND_CHIP_RESET_VREG_VSEL_RESET _u(0xb) +#define VREG_AND_CHIP_RESET_VREG_VSEL_BITS _u(0x000000f0) +#define VREG_AND_CHIP_RESET_VREG_VSEL_MSB _u(7) +#define VREG_AND_CHIP_RESET_VREG_VSEL_LSB _u(4) +#define VREG_AND_CHIP_RESET_VREG_VSEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : VREG_AND_CHIP_RESET_VREG_HIZ +// Description : high impedance mode select +// 0=not in high impedance mode, 1=in high impedance mode +#define VREG_AND_CHIP_RESET_VREG_HIZ_RESET _u(0x0) +#define VREG_AND_CHIP_RESET_VREG_HIZ_BITS _u(0x00000002) +#define VREG_AND_CHIP_RESET_VREG_HIZ_MSB _u(1) +#define VREG_AND_CHIP_RESET_VREG_HIZ_LSB _u(1) +#define VREG_AND_CHIP_RESET_VREG_HIZ_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : VREG_AND_CHIP_RESET_VREG_EN +// Description : enable +// 0=not enabled, 1=enabled +#define VREG_AND_CHIP_RESET_VREG_EN_RESET _u(0x1) +#define VREG_AND_CHIP_RESET_VREG_EN_BITS _u(0x00000001) +#define VREG_AND_CHIP_RESET_VREG_EN_MSB _u(0) +#define VREG_AND_CHIP_RESET_VREG_EN_LSB _u(0) +#define VREG_AND_CHIP_RESET_VREG_EN_ACCESS "RW" +// ============================================================================= +// Register : VREG_AND_CHIP_RESET_BOD +// Description : brown-out detection control +#define VREG_AND_CHIP_RESET_BOD_OFFSET _u(0x00000004) +#define VREG_AND_CHIP_RESET_BOD_BITS _u(0x000000f1) +#define VREG_AND_CHIP_RESET_BOD_RESET _u(0x00000091) +// ----------------------------------------------------------------------------- +// Field : VREG_AND_CHIP_RESET_BOD_VSEL +// Description : threshold select +// 0000 - 0.473V +// 0001 - 0.516V +// 0010 - 0.559V +// 0011 - 0.602V +// 0100 - 0.645V +// 0101 - 0.688V +// 0110 - 0.731V +// 0111 - 0.774V +// 1000 - 0.817V +// 1001 - 0.860V (default) +// 1010 - 0.903V +// 1011 - 0.946V +// 1100 - 0.989V +// 1101 - 1.032V +// 1110 - 1.075V +// 1111 - 1.118V +#define VREG_AND_CHIP_RESET_BOD_VSEL_RESET _u(0x9) +#define VREG_AND_CHIP_RESET_BOD_VSEL_BITS _u(0x000000f0) +#define VREG_AND_CHIP_RESET_BOD_VSEL_MSB _u(7) +#define VREG_AND_CHIP_RESET_BOD_VSEL_LSB _u(4) +#define VREG_AND_CHIP_RESET_BOD_VSEL_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : VREG_AND_CHIP_RESET_BOD_EN +// Description : enable +// 0=not enabled, 1=enabled +#define VREG_AND_CHIP_RESET_BOD_EN_RESET _u(0x1) +#define VREG_AND_CHIP_RESET_BOD_EN_BITS _u(0x00000001) +#define VREG_AND_CHIP_RESET_BOD_EN_MSB _u(0) +#define VREG_AND_CHIP_RESET_BOD_EN_LSB _u(0) +#define VREG_AND_CHIP_RESET_BOD_EN_ACCESS "RW" +// ============================================================================= +// Register : VREG_AND_CHIP_RESET_CHIP_RESET +// Description : Chip reset control and status +#define VREG_AND_CHIP_RESET_CHIP_RESET_OFFSET _u(0x00000008) +#define VREG_AND_CHIP_RESET_CHIP_RESET_BITS _u(0x01110100) +#define VREG_AND_CHIP_RESET_CHIP_RESET_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : VREG_AND_CHIP_RESET_CHIP_RESET_PSM_RESTART_FLAG +// Description : This is set by psm_restart from the debugger. +// Its purpose is to branch bootcode to a safe mode when the +// debugger has issued a psm_restart in order to recover from a +// boot lock-up. +// In the safe mode the debugger can repair the boot code, clear +// this flag then reboot the processor. +#define VREG_AND_CHIP_RESET_CHIP_RESET_PSM_RESTART_FLAG_RESET _u(0x0) +#define VREG_AND_CHIP_RESET_CHIP_RESET_PSM_RESTART_FLAG_BITS _u(0x01000000) +#define VREG_AND_CHIP_RESET_CHIP_RESET_PSM_RESTART_FLAG_MSB _u(24) +#define VREG_AND_CHIP_RESET_CHIP_RESET_PSM_RESTART_FLAG_LSB _u(24) +#define VREG_AND_CHIP_RESET_CHIP_RESET_PSM_RESTART_FLAG_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : VREG_AND_CHIP_RESET_CHIP_RESET_HAD_PSM_RESTART +// Description : Last reset was from the debug port +#define VREG_AND_CHIP_RESET_CHIP_RESET_HAD_PSM_RESTART_RESET _u(0x0) +#define VREG_AND_CHIP_RESET_CHIP_RESET_HAD_PSM_RESTART_BITS _u(0x00100000) +#define VREG_AND_CHIP_RESET_CHIP_RESET_HAD_PSM_RESTART_MSB _u(20) +#define VREG_AND_CHIP_RESET_CHIP_RESET_HAD_PSM_RESTART_LSB _u(20) +#define VREG_AND_CHIP_RESET_CHIP_RESET_HAD_PSM_RESTART_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : VREG_AND_CHIP_RESET_CHIP_RESET_HAD_RUN +// Description : Last reset was from the RUN pin +#define VREG_AND_CHIP_RESET_CHIP_RESET_HAD_RUN_RESET _u(0x0) +#define VREG_AND_CHIP_RESET_CHIP_RESET_HAD_RUN_BITS _u(0x00010000) +#define VREG_AND_CHIP_RESET_CHIP_RESET_HAD_RUN_MSB _u(16) +#define VREG_AND_CHIP_RESET_CHIP_RESET_HAD_RUN_LSB _u(16) +#define VREG_AND_CHIP_RESET_CHIP_RESET_HAD_RUN_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : VREG_AND_CHIP_RESET_CHIP_RESET_HAD_POR +// Description : Last reset was from the power-on reset or brown-out detection +// blocks +#define VREG_AND_CHIP_RESET_CHIP_RESET_HAD_POR_RESET _u(0x0) +#define VREG_AND_CHIP_RESET_CHIP_RESET_HAD_POR_BITS _u(0x00000100) +#define VREG_AND_CHIP_RESET_CHIP_RESET_HAD_POR_MSB _u(8) +#define VREG_AND_CHIP_RESET_CHIP_RESET_HAD_POR_LSB _u(8) +#define VREG_AND_CHIP_RESET_CHIP_RESET_HAD_POR_ACCESS "RO" +// ============================================================================= +#endif // HARDWARE_REGS_VREG_AND_CHIP_RESET_DEFINED diff --git a/arkanoid/pico/hardware/regs/watchdog.h b/arkanoid/pico/hardware/regs/watchdog.h new file mode 100644 index 0000000..6a9853d --- /dev/null +++ b/arkanoid/pico/hardware/regs/watchdog.h @@ -0,0 +1,226 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : WATCHDOG +// Version : 1 +// Bus type : apb +// Description : None +// ============================================================================= +#ifndef HARDWARE_REGS_WATCHDOG_DEFINED +#define HARDWARE_REGS_WATCHDOG_DEFINED +// ============================================================================= +// Register : WATCHDOG_CTRL +// Description : Watchdog control +// The rst_wdsel register determines which subsystems are reset +// when the watchdog is triggered. +// The watchdog can be triggered in software. +#define WATCHDOG_CTRL_OFFSET _u(0x00000000) +#define WATCHDOG_CTRL_BITS _u(0xc7ffffff) +#define WATCHDOG_CTRL_RESET _u(0x07000000) +// ----------------------------------------------------------------------------- +// Field : WATCHDOG_CTRL_TRIGGER +// Description : Trigger a watchdog reset +#define WATCHDOG_CTRL_TRIGGER_RESET _u(0x0) +#define WATCHDOG_CTRL_TRIGGER_BITS _u(0x80000000) +#define WATCHDOG_CTRL_TRIGGER_MSB _u(31) +#define WATCHDOG_CTRL_TRIGGER_LSB _u(31) +#define WATCHDOG_CTRL_TRIGGER_ACCESS "SC" +// ----------------------------------------------------------------------------- +// Field : WATCHDOG_CTRL_ENABLE +// Description : When not enabled the watchdog timer is paused +#define WATCHDOG_CTRL_ENABLE_RESET _u(0x0) +#define WATCHDOG_CTRL_ENABLE_BITS _u(0x40000000) +#define WATCHDOG_CTRL_ENABLE_MSB _u(30) +#define WATCHDOG_CTRL_ENABLE_LSB _u(30) +#define WATCHDOG_CTRL_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : WATCHDOG_CTRL_PAUSE_DBG1 +// Description : Pause the watchdog timer when processor 1 is in debug mode +#define WATCHDOG_CTRL_PAUSE_DBG1_RESET _u(0x1) +#define WATCHDOG_CTRL_PAUSE_DBG1_BITS _u(0x04000000) +#define WATCHDOG_CTRL_PAUSE_DBG1_MSB _u(26) +#define WATCHDOG_CTRL_PAUSE_DBG1_LSB _u(26) +#define WATCHDOG_CTRL_PAUSE_DBG1_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : WATCHDOG_CTRL_PAUSE_DBG0 +// Description : Pause the watchdog timer when processor 0 is in debug mode +#define WATCHDOG_CTRL_PAUSE_DBG0_RESET _u(0x1) +#define WATCHDOG_CTRL_PAUSE_DBG0_BITS _u(0x02000000) +#define WATCHDOG_CTRL_PAUSE_DBG0_MSB _u(25) +#define WATCHDOG_CTRL_PAUSE_DBG0_LSB _u(25) +#define WATCHDOG_CTRL_PAUSE_DBG0_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : WATCHDOG_CTRL_PAUSE_JTAG +// Description : Pause the watchdog timer when JTAG is accessing the bus fabric +#define WATCHDOG_CTRL_PAUSE_JTAG_RESET _u(0x1) +#define WATCHDOG_CTRL_PAUSE_JTAG_BITS _u(0x01000000) +#define WATCHDOG_CTRL_PAUSE_JTAG_MSB _u(24) +#define WATCHDOG_CTRL_PAUSE_JTAG_LSB _u(24) +#define WATCHDOG_CTRL_PAUSE_JTAG_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : WATCHDOG_CTRL_TIME +// Description : Indicates the number of ticks / 2 (see errata RP2040-E1) before +// a watchdog reset will be triggered +#define WATCHDOG_CTRL_TIME_RESET _u(0x000000) +#define WATCHDOG_CTRL_TIME_BITS _u(0x00ffffff) +#define WATCHDOG_CTRL_TIME_MSB _u(23) +#define WATCHDOG_CTRL_TIME_LSB _u(0) +#define WATCHDOG_CTRL_TIME_ACCESS "RO" +// ============================================================================= +// Register : WATCHDOG_LOAD +// Description : Load the watchdog timer. The maximum setting is 0xffffff which +// corresponds to 0xffffff / 2 ticks before triggering a watchdog +// reset (see errata RP2040-E1). +#define WATCHDOG_LOAD_OFFSET _u(0x00000004) +#define WATCHDOG_LOAD_BITS _u(0x00ffffff) +#define WATCHDOG_LOAD_RESET _u(0x00000000) +#define WATCHDOG_LOAD_MSB _u(23) +#define WATCHDOG_LOAD_LSB _u(0) +#define WATCHDOG_LOAD_ACCESS "WF" +// ============================================================================= +// Register : WATCHDOG_REASON +// Description : Logs the reason for the last reset. Both bits are zero for the +// case of a hardware reset. +#define WATCHDOG_REASON_OFFSET _u(0x00000008) +#define WATCHDOG_REASON_BITS _u(0x00000003) +#define WATCHDOG_REASON_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : WATCHDOG_REASON_FORCE +// Description : None +#define WATCHDOG_REASON_FORCE_RESET _u(0x0) +#define WATCHDOG_REASON_FORCE_BITS _u(0x00000002) +#define WATCHDOG_REASON_FORCE_MSB _u(1) +#define WATCHDOG_REASON_FORCE_LSB _u(1) +#define WATCHDOG_REASON_FORCE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : WATCHDOG_REASON_TIMER +// Description : None +#define WATCHDOG_REASON_TIMER_RESET _u(0x0) +#define WATCHDOG_REASON_TIMER_BITS _u(0x00000001) +#define WATCHDOG_REASON_TIMER_MSB _u(0) +#define WATCHDOG_REASON_TIMER_LSB _u(0) +#define WATCHDOG_REASON_TIMER_ACCESS "RO" +// ============================================================================= +// Register : WATCHDOG_SCRATCH0 +// Description : Scratch register. Information persists through soft reset of +// the chip. +#define WATCHDOG_SCRATCH0_OFFSET _u(0x0000000c) +#define WATCHDOG_SCRATCH0_BITS _u(0xffffffff) +#define WATCHDOG_SCRATCH0_RESET _u(0x00000000) +#define WATCHDOG_SCRATCH0_MSB _u(31) +#define WATCHDOG_SCRATCH0_LSB _u(0) +#define WATCHDOG_SCRATCH0_ACCESS "RW" +// ============================================================================= +// Register : WATCHDOG_SCRATCH1 +// Description : Scratch register. Information persists through soft reset of +// the chip. +#define WATCHDOG_SCRATCH1_OFFSET _u(0x00000010) +#define WATCHDOG_SCRATCH1_BITS _u(0xffffffff) +#define WATCHDOG_SCRATCH1_RESET _u(0x00000000) +#define WATCHDOG_SCRATCH1_MSB _u(31) +#define WATCHDOG_SCRATCH1_LSB _u(0) +#define WATCHDOG_SCRATCH1_ACCESS "RW" +// ============================================================================= +// Register : WATCHDOG_SCRATCH2 +// Description : Scratch register. Information persists through soft reset of +// the chip. +#define WATCHDOG_SCRATCH2_OFFSET _u(0x00000014) +#define WATCHDOG_SCRATCH2_BITS _u(0xffffffff) +#define WATCHDOG_SCRATCH2_RESET _u(0x00000000) +#define WATCHDOG_SCRATCH2_MSB _u(31) +#define WATCHDOG_SCRATCH2_LSB _u(0) +#define WATCHDOG_SCRATCH2_ACCESS "RW" +// ============================================================================= +// Register : WATCHDOG_SCRATCH3 +// Description : Scratch register. Information persists through soft reset of +// the chip. +#define WATCHDOG_SCRATCH3_OFFSET _u(0x00000018) +#define WATCHDOG_SCRATCH3_BITS _u(0xffffffff) +#define WATCHDOG_SCRATCH3_RESET _u(0x00000000) +#define WATCHDOG_SCRATCH3_MSB _u(31) +#define WATCHDOG_SCRATCH3_LSB _u(0) +#define WATCHDOG_SCRATCH3_ACCESS "RW" +// ============================================================================= +// Register : WATCHDOG_SCRATCH4 +// Description : Scratch register. Information persists through soft reset of +// the chip. +#define WATCHDOG_SCRATCH4_OFFSET _u(0x0000001c) +#define WATCHDOG_SCRATCH4_BITS _u(0xffffffff) +#define WATCHDOG_SCRATCH4_RESET _u(0x00000000) +#define WATCHDOG_SCRATCH4_MSB _u(31) +#define WATCHDOG_SCRATCH4_LSB _u(0) +#define WATCHDOG_SCRATCH4_ACCESS "RW" +// ============================================================================= +// Register : WATCHDOG_SCRATCH5 +// Description : Scratch register. Information persists through soft reset of +// the chip. +#define WATCHDOG_SCRATCH5_OFFSET _u(0x00000020) +#define WATCHDOG_SCRATCH5_BITS _u(0xffffffff) +#define WATCHDOG_SCRATCH5_RESET _u(0x00000000) +#define WATCHDOG_SCRATCH5_MSB _u(31) +#define WATCHDOG_SCRATCH5_LSB _u(0) +#define WATCHDOG_SCRATCH5_ACCESS "RW" +// ============================================================================= +// Register : WATCHDOG_SCRATCH6 +// Description : Scratch register. Information persists through soft reset of +// the chip. +#define WATCHDOG_SCRATCH6_OFFSET _u(0x00000024) +#define WATCHDOG_SCRATCH6_BITS _u(0xffffffff) +#define WATCHDOG_SCRATCH6_RESET _u(0x00000000) +#define WATCHDOG_SCRATCH6_MSB _u(31) +#define WATCHDOG_SCRATCH6_LSB _u(0) +#define WATCHDOG_SCRATCH6_ACCESS "RW" +// ============================================================================= +// Register : WATCHDOG_SCRATCH7 +// Description : Scratch register. Information persists through soft reset of +// the chip. +#define WATCHDOG_SCRATCH7_OFFSET _u(0x00000028) +#define WATCHDOG_SCRATCH7_BITS _u(0xffffffff) +#define WATCHDOG_SCRATCH7_RESET _u(0x00000000) +#define WATCHDOG_SCRATCH7_MSB _u(31) +#define WATCHDOG_SCRATCH7_LSB _u(0) +#define WATCHDOG_SCRATCH7_ACCESS "RW" +// ============================================================================= +// Register : WATCHDOG_TICK +// Description : Controls the tick generator +#define WATCHDOG_TICK_OFFSET _u(0x0000002c) +#define WATCHDOG_TICK_BITS _u(0x000fffff) +#define WATCHDOG_TICK_RESET _u(0x00000200) +// ----------------------------------------------------------------------------- +// Field : WATCHDOG_TICK_COUNT +// Description : Count down timer: the remaining number clk_tick cycles before +// the next tick is generated. +#define WATCHDOG_TICK_COUNT_RESET "-" +#define WATCHDOG_TICK_COUNT_BITS _u(0x000ff800) +#define WATCHDOG_TICK_COUNT_MSB _u(19) +#define WATCHDOG_TICK_COUNT_LSB _u(11) +#define WATCHDOG_TICK_COUNT_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : WATCHDOG_TICK_RUNNING +// Description : Is the tick generator running? +#define WATCHDOG_TICK_RUNNING_RESET "-" +#define WATCHDOG_TICK_RUNNING_BITS _u(0x00000400) +#define WATCHDOG_TICK_RUNNING_MSB _u(10) +#define WATCHDOG_TICK_RUNNING_LSB _u(10) +#define WATCHDOG_TICK_RUNNING_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : WATCHDOG_TICK_ENABLE +// Description : start / stop tick generation +#define WATCHDOG_TICK_ENABLE_RESET _u(0x1) +#define WATCHDOG_TICK_ENABLE_BITS _u(0x00000200) +#define WATCHDOG_TICK_ENABLE_MSB _u(9) +#define WATCHDOG_TICK_ENABLE_LSB _u(9) +#define WATCHDOG_TICK_ENABLE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : WATCHDOG_TICK_CYCLES +// Description : Total number of clk_tick cycles before the next tick. +#define WATCHDOG_TICK_CYCLES_RESET _u(0x000) +#define WATCHDOG_TICK_CYCLES_BITS _u(0x000001ff) +#define WATCHDOG_TICK_CYCLES_MSB _u(8) +#define WATCHDOG_TICK_CYCLES_LSB _u(0) +#define WATCHDOG_TICK_CYCLES_ACCESS "RW" +// ============================================================================= +#endif // HARDWARE_REGS_WATCHDOG_DEFINED diff --git a/arkanoid/pico/hardware/regs/xip.h b/arkanoid/pico/hardware/regs/xip.h new file mode 100644 index 0000000..3964f67 --- /dev/null +++ b/arkanoid/pico/hardware/regs/xip.h @@ -0,0 +1,187 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : XIP +// Version : 1 +// Bus type : ahb +// Description : QSPI flash execute-in-place block +// ============================================================================= +#ifndef HARDWARE_REGS_XIP_DEFINED +#define HARDWARE_REGS_XIP_DEFINED +// ============================================================================= +// Register : XIP_CTRL +// Description : Cache control +#define XIP_CTRL_OFFSET _u(0x00000000) +#define XIP_CTRL_BITS _u(0x0000000b) +#define XIP_CTRL_RESET _u(0x00000003) +// ----------------------------------------------------------------------------- +// Field : XIP_CTRL_POWER_DOWN +// Description : When 1, the cache memories are powered down. They retain state, +// but can not be accessed. This reduces static power dissipation. +// Writing 1 to this bit forces CTRL_EN to 0, i.e. the cache +// cannot +// be enabled when powered down. +// Cache-as-SRAM accesses will produce a bus error response when +// the cache is powered down. +#define XIP_CTRL_POWER_DOWN_RESET _u(0x0) +#define XIP_CTRL_POWER_DOWN_BITS _u(0x00000008) +#define XIP_CTRL_POWER_DOWN_MSB _u(3) +#define XIP_CTRL_POWER_DOWN_LSB _u(3) +#define XIP_CTRL_POWER_DOWN_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : XIP_CTRL_ERR_BADWRITE +// Description : When 1, writes to any alias other than 0x0 (caching, +// allocating) +// will produce a bus fault. When 0, these writes are silently +// ignored. +// In either case, writes to the 0x0 alias will deallocate on tag +// match, +// as usual. +#define XIP_CTRL_ERR_BADWRITE_RESET _u(0x1) +#define XIP_CTRL_ERR_BADWRITE_BITS _u(0x00000002) +#define XIP_CTRL_ERR_BADWRITE_MSB _u(1) +#define XIP_CTRL_ERR_BADWRITE_LSB _u(1) +#define XIP_CTRL_ERR_BADWRITE_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : XIP_CTRL_EN +// Description : When 1, enable the cache. When the cache is disabled, all XIP +// accesses +// will go straight to the flash, without querying the cache. When +// enabled, +// cacheable XIP accesses will query the cache, and the flash will +// not be accessed if the tag matches and the valid bit is set. +// +// If the cache is enabled, cache-as-SRAM accesses have no effect +// on the +// cache data RAM, and will produce a bus error response. +#define XIP_CTRL_EN_RESET _u(0x1) +#define XIP_CTRL_EN_BITS _u(0x00000001) +#define XIP_CTRL_EN_MSB _u(0) +#define XIP_CTRL_EN_LSB _u(0) +#define XIP_CTRL_EN_ACCESS "RW" +// ============================================================================= +// Register : XIP_FLUSH +// Description : Cache Flush control +// Write 1 to flush the cache. This clears the tag memory, but +// the data memory retains its contents. (This means cache-as-SRAM +// contents is not affected by flush or reset.) +// Reading will hold the bus (stall the processor) until the flush +// completes. Alternatively STAT can be polled until completion. +#define XIP_FLUSH_OFFSET _u(0x00000004) +#define XIP_FLUSH_BITS _u(0x00000001) +#define XIP_FLUSH_RESET _u(0x00000000) +#define XIP_FLUSH_MSB _u(0) +#define XIP_FLUSH_LSB _u(0) +#define XIP_FLUSH_ACCESS "SC" +// ============================================================================= +// Register : XIP_STAT +// Description : Cache Status +#define XIP_STAT_OFFSET _u(0x00000008) +#define XIP_STAT_BITS _u(0x00000007) +#define XIP_STAT_RESET _u(0x00000002) +// ----------------------------------------------------------------------------- +// Field : XIP_STAT_FIFO_FULL +// Description : When 1, indicates the XIP streaming FIFO is completely full. +// The streaming FIFO is 2 entries deep, so the full and empty +// flag allow its level to be ascertained. +#define XIP_STAT_FIFO_FULL_RESET _u(0x0) +#define XIP_STAT_FIFO_FULL_BITS _u(0x00000004) +#define XIP_STAT_FIFO_FULL_MSB _u(2) +#define XIP_STAT_FIFO_FULL_LSB _u(2) +#define XIP_STAT_FIFO_FULL_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : XIP_STAT_FIFO_EMPTY +// Description : When 1, indicates the XIP streaming FIFO is completely empty. +#define XIP_STAT_FIFO_EMPTY_RESET _u(0x1) +#define XIP_STAT_FIFO_EMPTY_BITS _u(0x00000002) +#define XIP_STAT_FIFO_EMPTY_MSB _u(1) +#define XIP_STAT_FIFO_EMPTY_LSB _u(1) +#define XIP_STAT_FIFO_EMPTY_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : XIP_STAT_FLUSH_READY +// Description : Reads as 0 while a cache flush is in progress, and 1 otherwise. +// The cache is flushed whenever the XIP block is reset, and also +// when requested via the FLUSH register. +#define XIP_STAT_FLUSH_READY_RESET _u(0x0) +#define XIP_STAT_FLUSH_READY_BITS _u(0x00000001) +#define XIP_STAT_FLUSH_READY_MSB _u(0) +#define XIP_STAT_FLUSH_READY_LSB _u(0) +#define XIP_STAT_FLUSH_READY_ACCESS "RO" +// ============================================================================= +// Register : XIP_CTR_HIT +// Description : Cache Hit counter +// A 32 bit saturating counter that increments upon each cache +// hit, +// i.e. when an XIP access is serviced directly from cached data. +// Write any value to clear. +#define XIP_CTR_HIT_OFFSET _u(0x0000000c) +#define XIP_CTR_HIT_BITS _u(0xffffffff) +#define XIP_CTR_HIT_RESET _u(0x00000000) +#define XIP_CTR_HIT_MSB _u(31) +#define XIP_CTR_HIT_LSB _u(0) +#define XIP_CTR_HIT_ACCESS "WC" +// ============================================================================= +// Register : XIP_CTR_ACC +// Description : Cache Access counter +// A 32 bit saturating counter that increments upon each XIP +// access, +// whether the cache is hit or not. This includes noncacheable +// accesses. +// Write any value to clear. +#define XIP_CTR_ACC_OFFSET _u(0x00000010) +#define XIP_CTR_ACC_BITS _u(0xffffffff) +#define XIP_CTR_ACC_RESET _u(0x00000000) +#define XIP_CTR_ACC_MSB _u(31) +#define XIP_CTR_ACC_LSB _u(0) +#define XIP_CTR_ACC_ACCESS "WC" +// ============================================================================= +// Register : XIP_STREAM_ADDR +// Description : FIFO stream address +// The address of the next word to be streamed from flash to the +// streaming FIFO. +// Increments automatically after each flash access. +// Write the initial access address here before starting a +// streaming read. +#define XIP_STREAM_ADDR_OFFSET _u(0x00000014) +#define XIP_STREAM_ADDR_BITS _u(0xfffffffc) +#define XIP_STREAM_ADDR_RESET _u(0x00000000) +#define XIP_STREAM_ADDR_MSB _u(31) +#define XIP_STREAM_ADDR_LSB _u(2) +#define XIP_STREAM_ADDR_ACCESS "RW" +// ============================================================================= +// Register : XIP_STREAM_CTR +// Description : FIFO stream control +// Write a nonzero value to start a streaming read. This will then +// progress in the background, using flash idle cycles to transfer +// a linear data block from flash to the streaming FIFO. +// Decrements automatically (1 at a time) as the stream +// progresses, and halts on reaching 0. +// Write 0 to halt an in-progress stream, and discard any +// in-flight +// read, so that a new stream can immediately be started (after +// draining the FIFO and reinitialising STREAM_ADDR) +#define XIP_STREAM_CTR_OFFSET _u(0x00000018) +#define XIP_STREAM_CTR_BITS _u(0x003fffff) +#define XIP_STREAM_CTR_RESET _u(0x00000000) +#define XIP_STREAM_CTR_MSB _u(21) +#define XIP_STREAM_CTR_LSB _u(0) +#define XIP_STREAM_CTR_ACCESS "RW" +// ============================================================================= +// Register : XIP_STREAM_FIFO +// Description : FIFO stream data +// Streamed data is buffered here, for retrieval by the system +// DMA. +// This FIFO can also be accessed via the XIP_AUX slave, to avoid +// exposing +// the DMA to bus stalls caused by other XIP traffic. +#define XIP_STREAM_FIFO_OFFSET _u(0x0000001c) +#define XIP_STREAM_FIFO_BITS _u(0xffffffff) +#define XIP_STREAM_FIFO_RESET _u(0x00000000) +#define XIP_STREAM_FIFO_MSB _u(31) +#define XIP_STREAM_FIFO_LSB _u(0) +#define XIP_STREAM_FIFO_ACCESS "RF" +// ============================================================================= +#endif // HARDWARE_REGS_XIP_DEFINED diff --git a/arkanoid/pico/hardware/regs/xosc.h b/arkanoid/pico/hardware/regs/xosc.h new file mode 100644 index 0000000..ec84d3d --- /dev/null +++ b/arkanoid/pico/hardware/regs/xosc.h @@ -0,0 +1,160 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +// ============================================================================= +// Register block : XOSC +// Version : 1 +// Bus type : apb +// Description : Controls the crystal oscillator +// ============================================================================= +#ifndef HARDWARE_REGS_XOSC_DEFINED +#define HARDWARE_REGS_XOSC_DEFINED +// ============================================================================= +// Register : XOSC_CTRL +// Description : Crystal Oscillator Control +#define XOSC_CTRL_OFFSET _u(0x00000000) +#define XOSC_CTRL_BITS _u(0x00ffffff) +#define XOSC_CTRL_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : XOSC_CTRL_ENABLE +// Description : On power-up this field is initialised to DISABLE and the chip +// runs from the ROSC. +// If the chip has subsequently been programmed to run from the +// XOSC then setting this field to DISABLE may lock-up the chip. +// If this is a concern then run the clk_ref from the ROSC and +// enable the clk_sys RESUS feature. +// The 12-bit code is intended to give some protection against +// accidental writes. An invalid setting will enable the +// oscillator. +// 0xd1e -> DISABLE +// 0xfab -> ENABLE +#define XOSC_CTRL_ENABLE_RESET "-" +#define XOSC_CTRL_ENABLE_BITS _u(0x00fff000) +#define XOSC_CTRL_ENABLE_MSB _u(23) +#define XOSC_CTRL_ENABLE_LSB _u(12) +#define XOSC_CTRL_ENABLE_ACCESS "RW" +#define XOSC_CTRL_ENABLE_VALUE_DISABLE _u(0xd1e) +#define XOSC_CTRL_ENABLE_VALUE_ENABLE _u(0xfab) +// ----------------------------------------------------------------------------- +// Field : XOSC_CTRL_FREQ_RANGE +// Description : Frequency range. This resets to 0xAA0 and cannot be changed. +// 0xaa0 -> 1_15MHZ +// 0xaa1 -> RESERVED_1 +// 0xaa2 -> RESERVED_2 +// 0xaa3 -> RESERVED_3 +#define XOSC_CTRL_FREQ_RANGE_RESET "-" +#define XOSC_CTRL_FREQ_RANGE_BITS _u(0x00000fff) +#define XOSC_CTRL_FREQ_RANGE_MSB _u(11) +#define XOSC_CTRL_FREQ_RANGE_LSB _u(0) +#define XOSC_CTRL_FREQ_RANGE_ACCESS "RW" +#define XOSC_CTRL_FREQ_RANGE_VALUE_1_15MHZ _u(0xaa0) +#define XOSC_CTRL_FREQ_RANGE_VALUE_RESERVED_1 _u(0xaa1) +#define XOSC_CTRL_FREQ_RANGE_VALUE_RESERVED_2 _u(0xaa2) +#define XOSC_CTRL_FREQ_RANGE_VALUE_RESERVED_3 _u(0xaa3) +// ============================================================================= +// Register : XOSC_STATUS +// Description : Crystal Oscillator Status +#define XOSC_STATUS_OFFSET _u(0x00000004) +#define XOSC_STATUS_BITS _u(0x81001003) +#define XOSC_STATUS_RESET _u(0x00000000) +// ----------------------------------------------------------------------------- +// Field : XOSC_STATUS_STABLE +// Description : Oscillator is running and stable +#define XOSC_STATUS_STABLE_RESET _u(0x0) +#define XOSC_STATUS_STABLE_BITS _u(0x80000000) +#define XOSC_STATUS_STABLE_MSB _u(31) +#define XOSC_STATUS_STABLE_LSB _u(31) +#define XOSC_STATUS_STABLE_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : XOSC_STATUS_BADWRITE +// Description : An invalid value has been written to CTRL_ENABLE or +// CTRL_FREQ_RANGE or DORMANT +#define XOSC_STATUS_BADWRITE_RESET _u(0x0) +#define XOSC_STATUS_BADWRITE_BITS _u(0x01000000) +#define XOSC_STATUS_BADWRITE_MSB _u(24) +#define XOSC_STATUS_BADWRITE_LSB _u(24) +#define XOSC_STATUS_BADWRITE_ACCESS "WC" +// ----------------------------------------------------------------------------- +// Field : XOSC_STATUS_ENABLED +// Description : Oscillator is enabled but not necessarily running and stable, +// resets to 0 +#define XOSC_STATUS_ENABLED_RESET "-" +#define XOSC_STATUS_ENABLED_BITS _u(0x00001000) +#define XOSC_STATUS_ENABLED_MSB _u(12) +#define XOSC_STATUS_ENABLED_LSB _u(12) +#define XOSC_STATUS_ENABLED_ACCESS "RO" +// ----------------------------------------------------------------------------- +// Field : XOSC_STATUS_FREQ_RANGE +// Description : The current frequency range setting, always reads 0 +// 0x0 -> 1_15MHZ +// 0x1 -> RESERVED_1 +// 0x2 -> RESERVED_2 +// 0x3 -> RESERVED_3 +#define XOSC_STATUS_FREQ_RANGE_RESET "-" +#define XOSC_STATUS_FREQ_RANGE_BITS _u(0x00000003) +#define XOSC_STATUS_FREQ_RANGE_MSB _u(1) +#define XOSC_STATUS_FREQ_RANGE_LSB _u(0) +#define XOSC_STATUS_FREQ_RANGE_ACCESS "RO" +#define XOSC_STATUS_FREQ_RANGE_VALUE_1_15MHZ _u(0x0) +#define XOSC_STATUS_FREQ_RANGE_VALUE_RESERVED_1 _u(0x1) +#define XOSC_STATUS_FREQ_RANGE_VALUE_RESERVED_2 _u(0x2) +#define XOSC_STATUS_FREQ_RANGE_VALUE_RESERVED_3 _u(0x3) +// ============================================================================= +// Register : XOSC_DORMANT +// Description : Crystal Oscillator pause control +// This is used to save power by pausing the XOSC +// On power-up this field is initialised to WAKE +// An invalid write will also select WAKE +// WARNING: stop the PLLs before selecting dormant mode +// WARNING: setup the irq before selecting dormant mode +// 0x636f6d61 -> DORMANT +// 0x77616b65 -> WAKE +#define XOSC_DORMANT_OFFSET _u(0x00000008) +#define XOSC_DORMANT_BITS _u(0xffffffff) +#define XOSC_DORMANT_RESET "-" +#define XOSC_DORMANT_MSB _u(31) +#define XOSC_DORMANT_LSB _u(0) +#define XOSC_DORMANT_ACCESS "RW" +#define XOSC_DORMANT_VALUE_DORMANT _u(0x636f6d61) +#define XOSC_DORMANT_VALUE_WAKE _u(0x77616b65) +// ============================================================================= +// Register : XOSC_STARTUP +// Description : Controls the startup delay +#define XOSC_STARTUP_OFFSET _u(0x0000000c) +#define XOSC_STARTUP_BITS _u(0x00103fff) +#define XOSC_STARTUP_RESET _u(0x000000c4) +// ----------------------------------------------------------------------------- +// Field : XOSC_STARTUP_X4 +// Description : Multiplies the startup_delay by 4. This is of little value to +// the user given that the delay can be programmed directly. +#define XOSC_STARTUP_X4_RESET _u(0x0) +#define XOSC_STARTUP_X4_BITS _u(0x00100000) +#define XOSC_STARTUP_X4_MSB _u(20) +#define XOSC_STARTUP_X4_LSB _u(20) +#define XOSC_STARTUP_X4_ACCESS "RW" +// ----------------------------------------------------------------------------- +// Field : XOSC_STARTUP_DELAY +// Description : in multiples of 256*xtal_period. The reset value of 0xc4 +// corresponds to approx 50 000 cycles. +#define XOSC_STARTUP_DELAY_RESET _u(0x00c4) +#define XOSC_STARTUP_DELAY_BITS _u(0x00003fff) +#define XOSC_STARTUP_DELAY_MSB _u(13) +#define XOSC_STARTUP_DELAY_LSB _u(0) +#define XOSC_STARTUP_DELAY_ACCESS "RW" +// ============================================================================= +// Register : XOSC_COUNT +// Description : A down counter running at the xosc frequency which counts to +// zero and stops. +// To start the counter write a non-zero value. +// Can be used for short software pauses when setting up time +// sensitive hardware. +#define XOSC_COUNT_OFFSET _u(0x0000001c) +#define XOSC_COUNT_BITS _u(0x000000ff) +#define XOSC_COUNT_RESET _u(0x00000000) +#define XOSC_COUNT_MSB _u(7) +#define XOSC_COUNT_LSB _u(0) +#define XOSC_COUNT_ACCESS "RW" +// ============================================================================= +#endif // HARDWARE_REGS_XOSC_DEFINED diff --git a/arkanoid/pico/hardware/resets.h b/arkanoid/pico/hardware/resets.h new file mode 100644 index 0000000..213dbe6 --- /dev/null +++ b/arkanoid/pico/hardware/resets.h @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_RESETS_H +#define _HARDWARE_RESETS_H + +#include "../pico.h" +#include "structs/resets.h" + +/** \file resets.h + * \defgroup hardware_resets hardware_resets + * + * Hardware Reset API + * + * The reset controller allows software control of the resets to all of the peripherals that are not + * critical to boot the processor in the RP2040. + * + * \subsubsection reset_bitmask + * \addtogroup hardware_resets + * + * Multiple blocks are referred to using a bitmask as follows: + * + * Block to reset | Bit + * ---------------|---- + * USB | 24 + * UART 1 | 23 + * UART 0 | 22 + * Timer | 21 + * TB Manager | 20 + * SysInfo | 19 + * System Config | 18 + * SPI 1 | 17 + * SPI 0 | 16 + * RTC | 15 + * PWM | 14 + * PLL USB | 13 + * PLL System | 12 + * PIO 1 | 11 + * PIO 0 | 10 + * Pads - QSPI | 9 + * Pads - bank 0 | 8 + * JTAG | 7 + * IO Bank 1 | 6 + * IO Bank 0 | 5 + * I2C 1 | 4 + * I2C 0 | 3 + * DMA | 2 + * Bus Control | 1 + * ADC 0 | 0 + * + * \subsection reset_example Example + * \addtogroup hardware_resets + * \include hello_reset.c + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/// \tag::reset_funcs[] + +/*! \brief Reset the specified HW blocks + * \ingroup hardware_resets + * + * \param bits Bit pattern indicating blocks to reset. See \ref reset_bitmask + */ +static inline void reset_block(uint32_t bits) { + hw_set_bits(&resets_hw->reset, bits); +} + +/*! \brief bring specified HW blocks out of reset + * \ingroup hardware_resets + * + * \param bits Bit pattern indicating blocks to unreset. See \ref reset_bitmask + */ +static inline void unreset_block(uint32_t bits) { + hw_clear_bits(&resets_hw->reset, bits); +} + +/*! \brief Bring specified HW blocks out of reset and wait for completion + * \ingroup hardware_resets + * + * \param bits Bit pattern indicating blocks to unreset. See \ref reset_bitmask + */ +static inline void unreset_block_wait(uint32_t bits) { + hw_clear_bits(&resets_hw->reset, bits); + while (~resets_hw->reset_done & bits) + tight_loop_contents(); +} +/// \end::reset_funcs[] + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/hardware/rtc.c b/arkanoid/pico/hardware/rtc.c new file mode 100644 index 0000000..f3d2c12 --- /dev/null +++ b/arkanoid/pico/hardware/rtc.c @@ -0,0 +1,191 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "../pico.h" + +#include "irq.h" +#include "rtc.h" +#include "resets.h" +#include "clocks.h" + +// Set this when setting an alarm +static rtc_callback_t _callback = NULL; +static bool _alarm_repeats = false; + +bool rtc_running(void) { + return (rtc_hw->ctrl & RTC_CTRL_RTC_ACTIVE_BITS); +} + +void rtc_init(void) { + // Get clk_rtc freq and make sure it is running + uint rtc_freq = clock_get_hz(clk_rtc); + assert(rtc_freq != 0); + + // Take rtc out of reset now that we know clk_rtc is running + reset_block(RESETS_RESET_RTC_BITS); + unreset_block_wait(RESETS_RESET_RTC_BITS); + + // Set up the 1 second divider. + // If rtc_freq is 400 then clkdiv_m1 should be 399 + rtc_freq -= 1; + + // Check the freq is not too big to divide + assert(rtc_freq <= RTC_CLKDIV_M1_BITS); + + // Write divide value + rtc_hw->clkdiv_m1 = rtc_freq; +} + +static bool valid_datetime(datetime_t *t) { + // Valid ranges taken from RTC doc. Note when setting an RTC alarm + // these values are allowed to be -1 to say "don't match this value" + if (!(t->year >= 0 && t->year <= 4095)) return false; + if (!(t->month >= 1 && t->month <= 12)) return false; + if (!(t->day >= 1 && t->day <= 31)) return false; + if (!(t->dotw >= 0 && t->dotw <= 6)) return false; + if (!(t->hour >= 0 && t->hour <= 23)) return false; + if (!(t->min >= 0 && t->min <= 59)) return false; + if (!(t->sec >= 0 && t->sec <= 59)) return false; + return true; +} + +bool rtc_set_datetime(datetime_t *t) { + if (!valid_datetime(t)) { + return false; + } + + // Disable RTC + rtc_hw->ctrl = 0; + // Wait while it is still active + while (rtc_running()) { + tight_loop_contents(); + } + + // Write to setup registers + rtc_hw->setup_0 = (((uint)t->year) << RTC_SETUP_0_YEAR_LSB ) | + (((uint)t->month) << RTC_SETUP_0_MONTH_LSB) | + (((uint)t->day) << RTC_SETUP_0_DAY_LSB); + rtc_hw->setup_1 = (((uint)t->dotw) << RTC_SETUP_1_DOTW_LSB) | + (((uint)t->hour) << RTC_SETUP_1_HOUR_LSB) | + (((uint)t->min) << RTC_SETUP_1_MIN_LSB) | + (((uint)t->sec) << RTC_SETUP_1_SEC_LSB); + + // Load setup values into rtc clock domain + rtc_hw->ctrl = RTC_CTRL_LOAD_BITS; + + // Enable RTC and wait for it to be running + rtc_hw->ctrl = RTC_CTRL_RTC_ENABLE_BITS; + while (!rtc_running()) { + tight_loop_contents(); + } + + return true; +} + +bool rtc_get_datetime(datetime_t *t) { + // Make sure RTC is running + if (!rtc_running()) { + return false; + } + + // Note: RTC_0 should be read before RTC_1 + uint32_t rtc_0 = rtc_hw->rtc_0; + uint32_t rtc_1 = rtc_hw->rtc_1; + + t->dotw = (rtc_0 & RTC_RTC_0_DOTW_BITS ) >> RTC_RTC_0_DOTW_LSB; + t->hour = (rtc_0 & RTC_RTC_0_HOUR_BITS ) >> RTC_RTC_0_HOUR_LSB; + t->min = (rtc_0 & RTC_RTC_0_MIN_BITS ) >> RTC_RTC_0_MIN_LSB; + t->sec = (rtc_0 & RTC_RTC_0_SEC_BITS ) >> RTC_RTC_0_SEC_LSB; + t->year = (rtc_1 & RTC_RTC_1_YEAR_BITS ) >> RTC_RTC_1_YEAR_LSB; + t->month = (rtc_1 & RTC_RTC_1_MONTH_BITS) >> RTC_RTC_1_MONTH_LSB; + t->day = (rtc_1 & RTC_RTC_1_DAY_BITS ) >> RTC_RTC_1_DAY_LSB; + + return true; +} + +void rtc_enable_alarm(void) { + // Set matching and wait for it to be enabled + hw_set_bits(&rtc_hw->irq_setup_0, RTC_IRQ_SETUP_0_MATCH_ENA_BITS); + while(!(rtc_hw->irq_setup_0 & RTC_IRQ_SETUP_0_MATCH_ACTIVE_BITS)) { + tight_loop_contents(); + } +} + +static void rtc_irq_handler(void) { + // Always disable the alarm to clear the current IRQ. + // Even if it is a repeatable alarm, we don't want it to keep firing. + // If it matches on a second it can keep firing for that second. + rtc_disable_alarm(); + + if (_alarm_repeats) { + // If it is a repeatable alarm, re enable the alarm. + rtc_enable_alarm(); + } + + // Call user callback function + if (_callback) { + _callback(); + } +} + +static bool rtc_alarm_repeats(datetime_t *t) { + // If any value is set to -1 then we don't match on that value + // hence the alarm will eventually repeat + if (t->year < 0) return true; + if (t->month < 0) return true; + if (t->day < 0) return true; + if (t->dotw < 0) return true; + if (t->hour < 0) return true; + if (t->min < 0) return true; + if (t->sec < 0) return true; + return false; +} + +void rtc_set_alarm(datetime_t *t, rtc_callback_t user_callback) { + rtc_disable_alarm(); + + // Only add to setup if it isn't -1 + rtc_hw->irq_setup_0 = ((t->year < 0) ? 0 : (((uint)t->year) << RTC_IRQ_SETUP_0_YEAR_LSB )) | + ((t->month < 0) ? 0 : (((uint)t->month) << RTC_IRQ_SETUP_0_MONTH_LSB)) | + ((t->day < 0) ? 0 : (((uint)t->day) << RTC_IRQ_SETUP_0_DAY_LSB )); + rtc_hw->irq_setup_1 = ((t->dotw < 0) ? 0 : (((uint)t->dotw) << RTC_IRQ_SETUP_1_DOTW_LSB)) | + ((t->hour < 0) ? 0 : (((uint)t->hour) << RTC_IRQ_SETUP_1_HOUR_LSB)) | + ((t->min < 0) ? 0 : (((uint)t->min) << RTC_IRQ_SETUP_1_MIN_LSB )) | + ((t->sec < 0) ? 0 : (((uint)t->sec) << RTC_IRQ_SETUP_1_SEC_LSB )); + + // Set the match enable bits for things we care about + if (t->year >= 0) hw_set_bits(&rtc_hw->irq_setup_0, RTC_IRQ_SETUP_0_YEAR_ENA_BITS); + if (t->month >= 0) hw_set_bits(&rtc_hw->irq_setup_0, RTC_IRQ_SETUP_0_MONTH_ENA_BITS); + if (t->day >= 0) hw_set_bits(&rtc_hw->irq_setup_0, RTC_IRQ_SETUP_0_DAY_ENA_BITS); + if (t->dotw >= 0) hw_set_bits(&rtc_hw->irq_setup_1, RTC_IRQ_SETUP_1_DOTW_ENA_BITS); + if (t->hour >= 0) hw_set_bits(&rtc_hw->irq_setup_1, RTC_IRQ_SETUP_1_HOUR_ENA_BITS); + if (t->min >= 0) hw_set_bits(&rtc_hw->irq_setup_1, RTC_IRQ_SETUP_1_MIN_ENA_BITS); + if (t->sec >= 0) hw_set_bits(&rtc_hw->irq_setup_1, RTC_IRQ_SETUP_1_SEC_ENA_BITS); + + // Does it repeat? I.e. do we not match on any of the bits + _alarm_repeats = rtc_alarm_repeats(t); + + // Store function pointer we can call later + _callback = user_callback; + + irq_set_exclusive_handler(RTC_IRQ, rtc_irq_handler); + + // Enable the IRQ at the peri + rtc_hw->inte = RTC_INTE_RTC_BITS; + + // Enable the IRQ at the proc + irq_set_enabled(RTC_IRQ, true); + + rtc_enable_alarm(); +} + +void rtc_disable_alarm(void) { + // Disable matching and wait for it to stop being active + hw_clear_bits(&rtc_hw->irq_setup_0, RTC_IRQ_SETUP_0_MATCH_ENA_BITS); + while(rtc_hw->irq_setup_0 & RTC_IRQ_SETUP_0_MATCH_ACTIVE_BITS) { + tight_loop_contents(); + } +} diff --git a/arkanoid/pico/hardware/rtc.h b/arkanoid/pico/hardware/rtc.h new file mode 100644 index 0000000..5ec08a5 --- /dev/null +++ b/arkanoid/pico/hardware/rtc.h @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_RTC_H +#define _HARDWARE_RTC_H + +#include "../pico.h" +#include "structs/rtc.h" + +/** \file rtc.h + * \defgroup hardware_rtc hardware_rtc + * + * Hardware Real Time Clock API + * + * The RTC keeps track of time in human readable format and generates events when the time is equal + * to a preset value. Think of a digital clock, not epoch time used by most computers. There are seven + * fields, one each for year (12 bit), month (4 bit), day (5 bit), day of the week (3 bit), hour (5 bit) + * minute (6 bit) and second (6 bit), storing the data in binary format. + * + * \sa datetime_t + * + * \subsection rtc_example Example + * \addtogroup hardware_rtc + * + * \include hello_rtc.c + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/*! Callback function type for RTC alarms + * \ingroup hardware_rtc + * + * \sa rtc_set_alarm() + */ +typedef void (*rtc_callback_t)(void); + +/*! \brief Initialise the RTC system + * \ingroup hardware_rtc + */ +void rtc_init(void); + +/*! \brief Set the RTC to the specified time + * \ingroup hardware_rtc + * + * \param t Pointer to a \ref datetime_t structure contains time to set + * \return true if set, false if the passed in datetime was invalid. + */ +bool rtc_set_datetime(datetime_t *t); + +/*! \brief Get the current time from the RTC + * \ingroup hardware_rtc + * + * \param t Pointer to a \ref datetime_t structure to receive the current RTC time + * \return true if datetime is valid, false if the RTC is not running. + */ +bool rtc_get_datetime(datetime_t *t); + +/*! \brief Is the RTC running? + * \ingroup hardware_rtc + * + */ +bool rtc_running(void); + +/*! \brief Set a time in the future for the RTC to call a user provided callback + * \ingroup hardware_rtc + * + * \param t Pointer to a \ref datetime_t structure containing a time in the future to fire the alarm. Any values set to -1 will not be matched on. + * \param user_callback pointer to a \ref rtc_callback_t to call when the alarm fires + */ +void rtc_set_alarm(datetime_t *t, rtc_callback_t user_callback); + +/*! \brief Enable the RTC alarm (if inactive) + * \ingroup hardware_rtc + */ +void rtc_enable_alarm(void); + +/*! \brief Disable the RTC alarm (if active) + * \ingroup hardware_rtc + */ +void rtc_disable_alarm(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/hardware/spi.c b/arkanoid/pico/hardware/spi.c new file mode 100644 index 0000000..76a729d --- /dev/null +++ b/arkanoid/pico/hardware/spi.c @@ -0,0 +1,212 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "resets.h" +#include "clocks.h" +#include "spi.h" + +static inline void spi_reset(spi_inst_t *spi) { + invalid_params_if(SPI, spi != spi0 && spi != spi1); + reset_block(spi == spi0 ? RESETS_RESET_SPI0_BITS : RESETS_RESET_SPI1_BITS); +} + +static inline void spi_unreset(spi_inst_t *spi) { + invalid_params_if(SPI, spi != spi0 && spi != spi1); + unreset_block_wait(spi == spi0 ? RESETS_RESET_SPI0_BITS : RESETS_RESET_SPI1_BITS); +} + +uint spi_init(spi_inst_t *spi, uint baudrate) { + spi_reset(spi); + spi_unreset(spi); + + uint baud = spi_set_baudrate(spi, baudrate); + spi_set_format(spi, 8, SPI_CPOL_0, SPI_CPHA_0, SPI_MSB_FIRST); + // Always enable DREQ signals -- harmless if DMA is not listening + hw_set_bits(&spi_get_hw(spi)->dmacr, SPI_SSPDMACR_TXDMAE_BITS | SPI_SSPDMACR_RXDMAE_BITS); + + // Finally enable the SPI + hw_set_bits(&spi_get_hw(spi)->cr1, SPI_SSPCR1_SSE_BITS); + return baud; +} + +void spi_deinit(spi_inst_t *spi) { + hw_clear_bits(&spi_get_hw(spi)->cr1, SPI_SSPCR1_SSE_BITS); + hw_clear_bits(&spi_get_hw(spi)->dmacr, SPI_SSPDMACR_TXDMAE_BITS | SPI_SSPDMACR_RXDMAE_BITS); + spi_reset(spi); +} + +uint spi_set_baudrate(spi_inst_t *spi, uint baudrate) { + uint freq_in = clock_get_hz(clk_peri); + uint prescale, postdiv; + invalid_params_if(SPI, baudrate > freq_in); + + // Find smallest prescale value which puts output frequency in range of + // post-divide. Prescale is an even number from 2 to 254 inclusive. + for (prescale = 2; prescale <= 254; prescale += 2) { + if (freq_in < (prescale + 2) * 256 * (uint64_t) baudrate) + break; + } + invalid_params_if(SPI, prescale > 254); // Frequency too low + + // Find largest post-divide which makes output <= baudrate. Post-divide is + // an integer in the range 1 to 256 inclusive. + for (postdiv = 256; postdiv > 1; --postdiv) { + if (freq_in / (prescale * (postdiv - 1)) > baudrate) + break; + } + + spi_get_hw(spi)->cpsr = prescale; + hw_write_masked(&spi_get_hw(spi)->cr0, (postdiv - 1) << SPI_SSPCR0_SCR_LSB, SPI_SSPCR0_SCR_BITS); + + // Return the frequency we were able to achieve + return freq_in / (prescale * postdiv); +} + +uint spi_get_baudrate(const spi_inst_t *spi) { + uint prescale = spi_get_const_hw(spi)->cpsr; + uint postdiv = ((spi_get_const_hw(spi)->cr0 & SPI_SSPCR0_SCR_BITS) >> SPI_SSPCR0_SCR_LSB) + 1; + return clock_get_hz(clk_peri) / (prescale * postdiv); +} + +// Write len bytes from src to SPI. Simultaneously read len bytes from SPI to dst. +// Note this function is guaranteed to exit in a known amount of time (bits sent * time per bit) +int __not_in_flash_func(spi_write_read_blocking)(spi_inst_t *spi, const uint8_t *src, uint8_t *dst, size_t len) { + invalid_params_if(SPI, 0 > (int)len); + + // Never have more transfers in flight than will fit into the RX FIFO, + // else FIFO will overflow if this code is heavily interrupted. + const size_t fifo_depth = 8; + size_t rx_remaining = len, tx_remaining = len; + + while (rx_remaining || tx_remaining) { + if (tx_remaining && spi_is_writable(spi) && rx_remaining < tx_remaining + fifo_depth) { + spi_get_hw(spi)->dr = (uint32_t) *src++; + --tx_remaining; + } + if (rx_remaining && spi_is_readable(spi)) { + *dst++ = (uint8_t) spi_get_hw(spi)->dr; + --rx_remaining; + } + } + + return (int)len; +} + +// Write len bytes directly from src to the SPI, and discard any data received back +int __not_in_flash_func(spi_write_blocking)(spi_inst_t *spi, const uint8_t *src, size_t len) { + invalid_params_if(SPI, 0 > (int)len); + // Write to TX FIFO whilst ignoring RX, then clean up afterward. When RX + // is full, PL022 inhibits RX pushes, and sets a sticky flag on + // push-on-full, but continues shifting. Safe if SSPIMSC_RORIM is not set. + for (size_t i = 0; i < len; ++i) { + while (!spi_is_writable(spi)) + tight_loop_contents(); + spi_get_hw(spi)->dr = (uint32_t)src[i]; + } + // Drain RX FIFO, then wait for shifting to finish (which may be *after* + // TX FIFO drains), then drain RX FIFO again + while (spi_is_readable(spi)) + (void)spi_get_hw(spi)->dr; + while (spi_get_hw(spi)->sr & SPI_SSPSR_BSY_BITS) + tight_loop_contents(); + while (spi_is_readable(spi)) + (void)spi_get_hw(spi)->dr; + + // Don't leave overrun flag set + spi_get_hw(spi)->icr = SPI_SSPICR_RORIC_BITS; + + return (int)len; +} + +// Read len bytes directly from the SPI to dst. +// repeated_tx_data is output repeatedly on SO as data is read in from SI. +// Generally this can be 0, but some devices require a specific value here, +// e.g. SD cards expect 0xff +int __not_in_flash_func(spi_read_blocking)(spi_inst_t *spi, uint8_t repeated_tx_data, uint8_t *dst, size_t len) { + invalid_params_if(SPI, 0 > (int)len); + const size_t fifo_depth = 8; + size_t rx_remaining = len, tx_remaining = len; + + while (rx_remaining || tx_remaining) { + if (tx_remaining && spi_is_writable(spi) && rx_remaining < tx_remaining + fifo_depth) { + spi_get_hw(spi)->dr = (uint32_t) repeated_tx_data; + --tx_remaining; + } + if (rx_remaining && spi_is_readable(spi)) { + *dst++ = (uint8_t) spi_get_hw(spi)->dr; + --rx_remaining; + } + } + + return (int)len; +} + +// Write len halfwords from src to SPI. Simultaneously read len halfwords from SPI to dst. +int __not_in_flash_func(spi_write16_read16_blocking)(spi_inst_t *spi, const uint16_t *src, uint16_t *dst, size_t len) { + invalid_params_if(SPI, 0 > (int)len); + // Never have more transfers in flight than will fit into the RX FIFO, + // else FIFO will overflow if this code is heavily interrupted. + const size_t fifo_depth = 8; + size_t rx_remaining = len, tx_remaining = len; + + while (rx_remaining || tx_remaining) { + if (tx_remaining && spi_is_writable(spi) && rx_remaining < tx_remaining + fifo_depth) { + spi_get_hw(spi)->dr = (uint32_t) *src++; + --tx_remaining; + } + if (rx_remaining && spi_is_readable(spi)) { + *dst++ = (uint16_t) spi_get_hw(spi)->dr; + --rx_remaining; + } + } + + return (int)len; +} + +// Write len bytes directly from src to the SPI, and discard any data received back +int __not_in_flash_func(spi_write16_blocking)(spi_inst_t *spi, const uint16_t *src, size_t len) { + invalid_params_if(SPI, 0 > (int)len); + // Deliberately overflow FIFO, then clean up afterward, to minimise amount + // of APB polling required per halfword + for (size_t i = 0; i < len; ++i) { + while (!spi_is_writable(spi)) + tight_loop_contents(); + spi_get_hw(spi)->dr = (uint32_t)src[i]; + } + + while (spi_is_readable(spi)) + (void)spi_get_hw(spi)->dr; + while (spi_get_hw(spi)->sr & SPI_SSPSR_BSY_BITS) + tight_loop_contents(); + while (spi_is_readable(spi)) + (void)spi_get_hw(spi)->dr; + + // Don't leave overrun flag set + spi_get_hw(spi)->icr = SPI_SSPICR_RORIC_BITS; + + return (int)len; +} + +// Read len halfwords directly from the SPI to dst. +// repeated_tx_data is output repeatedly on SO as data is read in from SI. +int __not_in_flash_func(spi_read16_blocking)(spi_inst_t *spi, uint16_t repeated_tx_data, uint16_t *dst, size_t len) { + invalid_params_if(SPI, 0 > (int)len); + const size_t fifo_depth = 8; + size_t rx_remaining = len, tx_remaining = len; + + while (rx_remaining || tx_remaining) { + if (tx_remaining && spi_is_writable(spi) && rx_remaining < tx_remaining + fifo_depth) { + spi_get_hw(spi)->dr = (uint32_t) repeated_tx_data; + --tx_remaining; + } + if (rx_remaining && spi_is_readable(spi)) { + *dst++ = (uint16_t) spi_get_hw(spi)->dr; + --rx_remaining; + } + } + + return (int)len; +} diff --git a/arkanoid/pico/hardware/spi.h b/arkanoid/pico/hardware/spi.h new file mode 100644 index 0000000..dabcc7c --- /dev/null +++ b/arkanoid/pico/hardware/spi.h @@ -0,0 +1,358 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_SPI_H +#define _HARDWARE_SPI_H + +#include "../pico.h" +#include "../time.h" +#include "structs/spi.h" +#include "regs/dreq.h" + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_SPI, Enable/disable assertions in the SPI module, type=bool, default=0, group=hardware_spi +#ifndef PARAM_ASSERTIONS_ENABLED_SPI +#define PARAM_ASSERTIONS_ENABLED_SPI 0 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file spi.h + * \defgroup hardware_spi hardware_spi + * + * Hardware SPI API + * + * RP2040 has 2 identical instances of the Serial Peripheral Interface (SPI) controller. + * + * The PrimeCell SSP is a master or slave interface for synchronous serial communication with peripheral devices that have + * Motorola SPI, National Semiconductor Microwire, or Texas Instruments synchronous serial interfaces. + * + * Controller can be defined as master or slave using the \ref spi_set_slave function. + * + * Each controller can be connected to a number of GPIO pins, see the datasheet GPIO function selection table for more information. + */ + +// PICO_CONFIG: PICO_DEFAULT_SPI, Define the default SPI for a board, min=0, max=1, group=hardware_spi +// PICO_CONFIG: PICO_DEFAULT_SPI_SCK_PIN, Define the default SPI SCK pin, min=0, max=29, group=hardware_spi +// PICO_CONFIG: PICO_DEFAULT_SPI_TX_PIN, Define the default SPI TX pin, min=0, max=29, group=hardware_spi +// PICO_CONFIG: PICO_DEFAULT_SPI_RX_PIN, Define the default SPI RX pin, min=0, max=29, group=hardware_spi +// PICO_CONFIG: PICO_DEFAULT_SPI_CSN_PIN, Define the default SPI CSN pin, min=0, max=29, group=hardware_spi + +/** + * Opaque type representing an SPI instance. + */ +typedef struct spi_inst spi_inst_t; + +/** Identifier for the first (SPI 0) hardware SPI instance (for use in SPI functions). + * + * e.g. spi_init(spi0, 48000) + * + * \ingroup hardware_spi + */ +#define spi0 ((spi_inst_t * const)spi0_hw) + +/** Identifier for the second (SPI 1) hardware SPI instance (for use in SPI functions). + * + * e.g. spi_init(spi1, 48000) + * + * \ingroup hardware_spi + */ +#define spi1 ((spi_inst_t * const)spi1_hw) + +#if !defined(PICO_DEFAULT_SPI_INSTANCE) && defined(PICO_DEFAULT_SPI) +#define PICO_DEFAULT_SPI_INSTANCE (__CONCAT(spi,PICO_DEFAULT_SPI)) +#endif + +#ifdef PICO_DEFAULT_SPI_INSTANCE +#define spi_default PICO_DEFAULT_SPI_INSTANCE +#endif + +/** \brief Enumeration of SPI CPHA (clock phase) values. + * \ingroup hardware_spi + */ +typedef enum { + SPI_CPHA_0 = 0, + SPI_CPHA_1 = 1 +} spi_cpha_t; + +/** \brief Enumeration of SPI CPOL (clock polarity) values. + * \ingroup hardware_spi + */ +typedef enum { + SPI_CPOL_0 = 0, + SPI_CPOL_1 = 1 +} spi_cpol_t; + +/** \brief Enumeration of SPI bit-order values. + * \ingroup hardware_spi + */ +typedef enum { + SPI_LSB_FIRST = 0, + SPI_MSB_FIRST = 1 +} spi_order_t; + +// ---------------------------------------------------------------------------- +// Setup + +/*! \brief Initialise SPI instances + * \ingroup hardware_spi + * Puts the SPI into a known state, and enable it. Must be called before other + * functions. + * + * \note There is no guarantee that the baudrate requested can be achieved exactly; the nearest will be chosen + * and returned + * + * \param spi SPI instance specifier, either \ref spi0 or \ref spi1 + * \param baudrate Baudrate requested in Hz + * \return the actual baud rate set + */ +uint spi_init(spi_inst_t *spi, uint baudrate); + +/*! \brief Deinitialise SPI instances + * \ingroup hardware_spi + * Puts the SPI into a disabled state. Init will need to be called to reenable the device + * functions. + * + * \param spi SPI instance specifier, either \ref spi0 or \ref spi1 + */ +void spi_deinit(spi_inst_t *spi); + +/*! \brief Set SPI baudrate + * \ingroup hardware_spi + * + * Set SPI frequency as close as possible to baudrate, and return the actual + * achieved rate. + * + * \param spi SPI instance specifier, either \ref spi0 or \ref spi1 + * \param baudrate Baudrate required in Hz, should be capable of a bitrate of at least 2Mbps, or higher, depending on system clock settings. + * \return The actual baudrate set + */ +uint spi_set_baudrate(spi_inst_t *spi, uint baudrate); + +/*! \brief Get SPI baudrate + * \ingroup hardware_spi + * + * Get SPI baudrate which was set by \see spi_set_baudrate + * + * \param spi SPI instance specifier, either \ref spi0 or \ref spi1 + * \return The actual baudrate set + */ +uint spi_get_baudrate(const spi_inst_t *spi); + +/*! \brief Convert SPI instance to hardware instance number + * \ingroup hardware_spi + * + * \param spi SPI instance + * \return Number of SPI, 0 or 1. + */ +static inline uint spi_get_index(const spi_inst_t *spi) { + invalid_params_if(SPI, spi != spi0 && spi != spi1); + return spi == spi1 ? 1 : 0; +} + +static inline spi_hw_t *spi_get_hw(spi_inst_t *spi) { + spi_get_index(spi); // check it is a hw spi + return (spi_hw_t *)spi; +} + +static inline const spi_hw_t *spi_get_const_hw(const spi_inst_t *spi) { + spi_get_index(spi); // check it is a hw spi + return (const spi_hw_t *)spi; +} + +/*! \brief Configure SPI + * \ingroup hardware_spi + * + * Configure how the SPI serialises and deserialises data on the wire + * + * \param spi SPI instance specifier, either \ref spi0 or \ref spi1 + * \param data_bits Number of data bits per transfer. Valid values 4..16. + * \param cpol SSPCLKOUT polarity, applicable to Motorola SPI frame format only. + * \param cpha SSPCLKOUT phase, applicable to Motorola SPI frame format only + * \param order Must be SPI_MSB_FIRST, no other values supported on the PL022 + */ +static inline void spi_set_format(spi_inst_t *spi, uint data_bits, spi_cpol_t cpol, spi_cpha_t cpha, __unused spi_order_t order) { + invalid_params_if(SPI, data_bits < 4 || data_bits > 16); + // LSB-first not supported on PL022: + invalid_params_if(SPI, order != SPI_MSB_FIRST); + invalid_params_if(SPI, cpol != SPI_CPOL_0 && cpol != SPI_CPOL_1); + invalid_params_if(SPI, cpha != SPI_CPHA_0 && cpha != SPI_CPHA_1); + hw_write_masked(&spi_get_hw(spi)->cr0, + ((uint)(data_bits - 1)) << SPI_SSPCR0_DSS_LSB | + ((uint)cpol) << SPI_SSPCR0_SPO_LSB | + ((uint)cpha) << SPI_SSPCR0_SPH_LSB, + SPI_SSPCR0_DSS_BITS | + SPI_SSPCR0_SPO_BITS | + SPI_SSPCR0_SPH_BITS); +} + +/*! \brief Set SPI master/slave + * \ingroup hardware_spi + * + * Configure the SPI for master- or slave-mode operation. By default, + * spi_init() sets master-mode. + * + * \param spi SPI instance specifier, either \ref spi0 or \ref spi1 + * \param slave true to set SPI device as a slave device, false for master. + */ +static inline void spi_set_slave(spi_inst_t *spi, bool slave) { + if (slave) + hw_set_bits(&spi_get_hw(spi)->cr1, SPI_SSPCR1_MS_BITS); + else + hw_clear_bits(&spi_get_hw(spi)->cr1, SPI_SSPCR1_MS_BITS); +} + +// ---------------------------------------------------------------------------- +// Generic input/output + +/*! \brief Check whether a write can be done on SPI device + * \ingroup hardware_spi + * + * \param spi SPI instance specifier, either \ref spi0 or \ref spi1 + * \return false if no space is available to write. True if a write is possible + */ +static inline bool spi_is_writable(const spi_inst_t *spi) { + return (spi_get_const_hw(spi)->sr & SPI_SSPSR_TNF_BITS); +} + +/*! \brief Check whether a read can be done on SPI device + * \ingroup hardware_spi + * + * \param spi SPI instance specifier, either \ref spi0 or \ref spi1 + * \return true if a read is possible i.e. data is present + */ +static inline bool spi_is_readable(const spi_inst_t *spi) { + return (spi_get_const_hw(spi)->sr & SPI_SSPSR_RNE_BITS); +} + +/*! \brief Check whether SPI is busy + * \ingroup hardware_spi + * + * \param spi SPI instance specifier, either \ref spi0 or \ref spi1 + * \return true if SPI is busy + */ +static inline bool spi_is_busy(const spi_inst_t *spi) { + return (spi_get_const_hw(spi)->sr & SPI_SSPSR_BSY_BITS); +} + +/*! \brief Write/Read to/from an SPI device + * \ingroup hardware_spi + * + * Write \p len bytes from \p src to SPI. Simultaneously read \p len bytes from SPI to \p dst. + * Blocks until all data is transferred. No timeout, as SPI hardware always transfers at a known data rate. + * + * \param spi SPI instance specifier, either \ref spi0 or \ref spi1 + * \param src Buffer of data to write + * \param dst Buffer for read data + * \param len Length of BOTH buffers + * \return Number of bytes written/read +*/ +int spi_write_read_blocking(spi_inst_t *spi, const uint8_t *src, uint8_t *dst, size_t len); + +/*! \brief Write to an SPI device, blocking + * \ingroup hardware_spi + * + * Write \p len bytes from \p src to SPI, and discard any data received back + * Blocks until all data is transferred. No timeout, as SPI hardware always transfers at a known data rate. + * + * \param spi SPI instance specifier, either \ref spi0 or \ref spi1 + * \param src Buffer of data to write + * \param len Length of \p src + * \return Number of bytes written/read + */ +int spi_write_blocking(spi_inst_t *spi, const uint8_t *src, size_t len); + +/*! \brief Read from an SPI device + * \ingroup hardware_spi + * + * Read \p len bytes from SPI to \p dst. + * Blocks until all data is transferred. No timeout, as SPI hardware always transfers at a known data rate. + * \p repeated_tx_data is output repeatedly on TX as data is read in from RX. + * Generally this can be 0, but some devices require a specific value here, + * e.g. SD cards expect 0xff + * + * \param spi SPI instance specifier, either \ref spi0 or \ref spi1 + * \param repeated_tx_data Buffer of data to write + * \param dst Buffer for read data + * \param len Length of buffer \p dst + * \return Number of bytes written/read + */ +int spi_read_blocking(spi_inst_t *spi, uint8_t repeated_tx_data, uint8_t *dst, size_t len); + +// ---------------------------------------------------------------------------- +// SPI-specific operations and aliases + +// FIXME need some instance-private data for select() and deselect() if we are going that route + +/*! \brief Write/Read half words to/from an SPI device + * \ingroup hardware_spi + * + * Write \p len halfwords from \p src to SPI. Simultaneously read \p len halfwords from SPI to \p dst. + * Blocks until all data is transferred. No timeout, as SPI hardware always transfers at a known data rate. + * + * \note SPI should be initialised with 16 data_bits using \ref spi_set_format first, otherwise this function will only read/write 8 data_bits. + * + * \param spi SPI instance specifier, either \ref spi0 or \ref spi1 + * \param src Buffer of data to write + * \param dst Buffer for read data + * \param len Length of BOTH buffers in halfwords + * \return Number of halfwords written/read +*/ +int spi_write16_read16_blocking(spi_inst_t *spi, const uint16_t *src, uint16_t *dst, size_t len); + +/*! \brief Write to an SPI device + * \ingroup hardware_spi + * + * Write \p len halfwords from \p src to SPI. Discard any data received back. + * Blocks until all data is transferred. No timeout, as SPI hardware always transfers at a known data rate. + * + * \note SPI should be initialised with 16 data_bits using \ref spi_set_format first, otherwise this function will only write 8 data_bits. + * + * \param spi SPI instance specifier, either \ref spi0 or \ref spi1 + * \param src Buffer of data to write + * \param len Length of buffers + * \return Number of halfwords written/read +*/ +int spi_write16_blocking(spi_inst_t *spi, const uint16_t *src, size_t len); + +/*! \brief Read from an SPI device + * \ingroup hardware_spi + * + * Read \p len halfwords from SPI to \p dst. + * Blocks until all data is transferred. No timeout, as SPI hardware always transfers at a known data rate. + * \p repeated_tx_data is output repeatedly on TX as data is read in from RX. + * Generally this can be 0, but some devices require a specific value here, + * e.g. SD cards expect 0xff + * + * \note SPI should be initialised with 16 data_bits using \ref spi_set_format first, otherwise this function will only read 8 data_bits. + * + * \param spi SPI instance specifier, either \ref spi0 or \ref spi1 + * \param repeated_tx_data Buffer of data to write + * \param dst Buffer for read data + * \param len Length of buffer \p dst in halfwords + * \return Number of halfwords written/read + */ +int spi_read16_blocking(spi_inst_t *spi, uint16_t repeated_tx_data, uint16_t *dst, size_t len); + +/*! \brief Return the DREQ to use for pacing transfers to/from a particular SPI instance + * \ingroup hardware_spi + * + * \param spi SPI instance specifier, either \ref spi0 or \ref spi1 + * \param is_tx true for sending data to the SPI instance, false for receiving data from the SPI instance + */ +static inline uint spi_get_dreq(spi_inst_t *spi, bool is_tx) { + static_assert(DREQ_SPI0_RX == DREQ_SPI0_TX + 1, ""); + static_assert(DREQ_SPI1_RX == DREQ_SPI1_TX + 1, ""); + static_assert(DREQ_SPI1_TX == DREQ_SPI0_TX + 2, ""); + return DREQ_SPI0_TX + spi_get_index(spi) * 2 + !is_tx; +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/hardware/structs/adc.h b/arkanoid/pico/hardware/structs/adc.h new file mode 100644 index 0000000..acf51fd --- /dev/null +++ b/arkanoid/pico/hardware/structs/adc.h @@ -0,0 +1,91 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_ADC_H +#define _HARDWARE_STRUCTS_ADC_H + +#include "../address_mapped.h" +#include "../regs/adc.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_adc +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/adc.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(ADC_CS_OFFSET) // ADC_CS + // ADC Control and Status + // 0x001f0000 [20:16] : RROBIN (0): Round-robin sampling + // 0x00007000 [14:12] : AINSEL (0): Select analog mux input + // 0x00000400 [10] : ERR_STICKY (0): Some past ADC conversion encountered an error + // 0x00000200 [9] : ERR (0): The most recent ADC conversion encountered an error; result is undefined or noisy + // 0x00000100 [8] : READY (0): 1 if the ADC is ready to start a new conversion + // 0x00000008 [3] : START_MANY (0): Continuously perform conversions whilst this bit is 1 + // 0x00000004 [2] : START_ONCE (0): Start a single conversion + // 0x00000002 [1] : TS_EN (0): Power on temperature sensor + // 0x00000001 [0] : EN (0): Power on ADC and enable its clock + io_rw_32 cs; + + _REG_(ADC_RESULT_OFFSET) // ADC_RESULT + // Result of most recent ADC conversion + // 0x00000fff [11:0] : RESULT (0) + io_ro_32 result; + + _REG_(ADC_FCS_OFFSET) // ADC_FCS + // FIFO control and status + // 0x0f000000 [27:24] : THRESH (0): DREQ/IRQ asserted when level >= threshold + // 0x000f0000 [19:16] : LEVEL (0): The number of conversion results currently waiting in the FIFO + // 0x00000800 [11] : OVER (0): 1 if the FIFO has been overflowed + // 0x00000400 [10] : UNDER (0): 1 if the FIFO has been underflowed + // 0x00000200 [9] : FULL (0) + // 0x00000100 [8] : EMPTY (0) + // 0x00000008 [3] : DREQ_EN (0): If 1: assert DMA requests when FIFO contains data + // 0x00000004 [2] : ERR (0): If 1: conversion error bit appears in the FIFO alongside the result + // 0x00000002 [1] : SHIFT (0): If 1: FIFO results are right-shifted to be one byte in size + // 0x00000001 [0] : EN (0): If 1: write result to the FIFO after each conversion + io_rw_32 fcs; + + _REG_(ADC_FIFO_OFFSET) // ADC_FIFO + // Conversion result FIFO + // 0x00008000 [15] : ERR (0): 1 if this particular sample experienced a conversion error + // 0x00000fff [11:0] : VAL (0) + io_ro_32 fifo; + + _REG_(ADC_DIV_OFFSET) // ADC_DIV + // Clock divider + // 0x00ffff00 [23:8] : INT (0): Integer part of clock divisor + // 0x000000ff [7:0] : FRAC (0): Fractional part of clock divisor + io_rw_32 div; + + _REG_(ADC_INTR_OFFSET) // ADC_INTR + // Raw Interrupts + // 0x00000001 [0] : FIFO (0): Triggered when the sample FIFO reaches a certain level + io_ro_32 intr; + + _REG_(ADC_INTE_OFFSET) // ADC_INTE + // Interrupt Enable + // 0x00000001 [0] : FIFO (0): Triggered when the sample FIFO reaches a certain level + io_rw_32 inte; + + _REG_(ADC_INTF_OFFSET) // ADC_INTF + // Interrupt Force + // 0x00000001 [0] : FIFO (0): Triggered when the sample FIFO reaches a certain level + io_rw_32 intf; + + _REG_(ADC_INTS_OFFSET) // ADC_INTS + // Interrupt status after masking & forcing + // 0x00000001 [0] : FIFO (0): Triggered when the sample FIFO reaches a certain level + io_ro_32 ints; +} adc_hw_t; + +#define adc_hw ((adc_hw_t *const)ADC_BASE) + +#endif diff --git a/arkanoid/pico/hardware/structs/bus_ctrl.h b/arkanoid/pico/hardware/structs/bus_ctrl.h new file mode 100644 index 0000000..c1f73c5 --- /dev/null +++ b/arkanoid/pico/hardware/structs/bus_ctrl.h @@ -0,0 +1,77 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_BUS_CTRL_H +#define _HARDWARE_STRUCTS_BUS_CTRL_H + +#include "../address_mapped.h" +#include "../regs/busctrl.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_busctrl +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/busctrl.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +enum bus_ctrl_perf_counter { + arbiter_rom_perf_event_access = 19, + arbiter_rom_perf_event_access_contested = 18, + arbiter_xip_main_perf_event_access = 17, + arbiter_xip_main_perf_event_access_contested = 16, + arbiter_sram0_perf_event_access = 15, + arbiter_sram0_perf_event_access_contested = 14, + arbiter_sram1_perf_event_access = 13, + arbiter_sram1_perf_event_access_contested = 12, + arbiter_sram2_perf_event_access = 11, + arbiter_sram2_perf_event_access_contested = 10, + arbiter_sram3_perf_event_access = 9, + arbiter_sram3_perf_event_access_contested = 8, + arbiter_sram4_perf_event_access = 7, + arbiter_sram4_perf_event_access_contested = 6, + arbiter_sram5_perf_event_access = 5, + arbiter_sram5_perf_event_access_contested = 4, + arbiter_fastperi_perf_event_access = 3, + arbiter_fastperi_perf_event_access_contested = 2, + arbiter_apb_perf_event_access = 1, + arbiter_apb_perf_event_access_contested = 0 +}; + +typedef struct { + _REG_(BUSCTRL_PERFCTR0_OFFSET) // BUSCTRL_PERFCTR0 + // Bus fabric performance counter 0 + // 0x00ffffff [23:0] : PERFCTR0 (0): Busfabric saturating performance counter 0 + io_rw_32 value; + + _REG_(BUSCTRL_PERFSEL0_OFFSET) // BUSCTRL_PERFSEL0 + // Bus fabric performance event select for PERFCTR0 + // 0x0000001f [4:0] : PERFSEL0 (0x1f): Select an event for PERFCTR0 + io_rw_32 sel; +} bus_ctrl_perf_hw_t; + +typedef struct { + _REG_(BUSCTRL_BUS_PRIORITY_OFFSET) // BUSCTRL_BUS_PRIORITY + // Set the priority of each master for bus arbitration + // 0x00001000 [12] : DMA_W (0): 0 - low priority, 1 - high priority + // 0x00000100 [8] : DMA_R (0): 0 - low priority, 1 - high priority + // 0x00000010 [4] : PROC1 (0): 0 - low priority, 1 - high priority + // 0x00000001 [0] : PROC0 (0): 0 - low priority, 1 - high priority + io_rw_32 priority; + + _REG_(BUSCTRL_BUS_PRIORITY_ACK_OFFSET) // BUSCTRL_BUS_PRIORITY_ACK + // Bus priority acknowledge + // 0x00000001 [0] : BUS_PRIORITY_ACK (0): Goes to 1 once all arbiters have registered the new global priority levels + io_ro_32 priority_ack; + + bus_ctrl_perf_hw_t counter[4]; +} bus_ctrl_hw_t; + +#define bus_ctrl_hw ((bus_ctrl_hw_t *const)BUSCTRL_BASE) + +#endif diff --git a/arkanoid/pico/hardware/structs/clocks.h b/arkanoid/pico/hardware/structs/clocks.h new file mode 100644 index 0000000..ba3c0bd --- /dev/null +++ b/arkanoid/pico/hardware/structs/clocks.h @@ -0,0 +1,326 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_CLOCKS_H +#define _HARDWARE_STRUCTS_CLOCKS_H + +#include "../address_mapped.h" +#include "../regs/clocks.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_clocks +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/clocks.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +/*! \brief Enumeration identifying a hardware clock + * \ingroup hardware_clocks + */ +/// \tag::clkenum[] +enum clock_index { + clk_gpout0 = 0, ///< GPIO Muxing 0 + clk_gpout1, ///< GPIO Muxing 1 + clk_gpout2, ///< GPIO Muxing 2 + clk_gpout3, ///< GPIO Muxing 3 + clk_ref, ///< Watchdog and timers reference clock + clk_sys, ///< Processors, bus fabric, memory, memory mapped registers + clk_peri, ///< Peripheral clock for UART and SPI + clk_usb, ///< USB clock + clk_adc, ///< ADC clock + clk_rtc, ///< Real time clock + CLK_COUNT +}; +/// \end::clkenum[] + +/// \tag::clock_hw[] +typedef struct { + _REG_(CLOCKS_CLK_GPOUT0_CTRL_OFFSET) // CLOCKS_CLK_GPOUT0_CTRL + // Clock control, can be changed on-the-fly (except for auxsrc) + // 0x00100000 [20] : NUDGE (0): An edge on this signal shifts the phase of the output by 1 cycle of the input clock + // 0x00030000 [17:16] : PHASE (0): This delays the enable signal by up to 3 cycles of the input clock + // 0x00001000 [12] : DC50 (0): Enables duty cycle correction for odd divisors + // 0x00000800 [11] : ENABLE (0): Starts and stops the clock generator cleanly + // 0x00000400 [10] : KILL (0): Asynchronously kills the clock generator + // 0x000001e0 [8:5] : AUXSRC (0): Selects the auxiliary clock source, will glitch when switching + io_rw_32 ctrl; + + _REG_(CLOCKS_CLK_GPOUT0_DIV_OFFSET) // CLOCKS_CLK_GPOUT0_DIV + // Clock divisor, can be changed on-the-fly + // 0xffffff00 [31:8] : INT (1): Integer component of the divisor, 0 -> divide by 2^16 + // 0x000000ff [7:0] : FRAC (0): Fractional component of the divisor + io_rw_32 div; + + _REG_(CLOCKS_CLK_GPOUT0_SELECTED_OFFSET) // CLOCKS_CLK_GPOUT0_SELECTED + // Indicates which SRC is currently selected by the glitchless mux (one-hot) + io_ro_32 selected; +} clock_hw_t; +/// \end::clock_hw[] + +typedef struct { + _REG_(CLOCKS_CLK_SYS_RESUS_CTRL_OFFSET) // CLOCKS_CLK_SYS_RESUS_CTRL + // 0x00010000 [16] : CLEAR (0): For clearing the resus after the fault that triggered it has been corrected + // 0x00001000 [12] : FRCE (0): Force a resus, for test purposes only + // 0x00000100 [8] : ENABLE (0): Enable resus + // 0x000000ff [7:0] : TIMEOUT (0xff): This is expressed as a number of clk_ref cycles + io_rw_32 ctrl; + + _REG_(CLOCKS_CLK_SYS_RESUS_STATUS_OFFSET) // CLOCKS_CLK_SYS_RESUS_STATUS + // 0x00000001 [0] : RESUSSED (0): Clock has been resuscitated, correct the error then send ctrl_clear=1 + io_ro_32 status; +} clock_resus_hw_t; + +typedef struct { + _REG_(CLOCKS_FC0_REF_KHZ_OFFSET) // CLOCKS_FC0_REF_KHZ + // Reference clock frequency in kHz + // 0x000fffff [19:0] : FC0_REF_KHZ (0) + io_rw_32 ref_khz; + + _REG_(CLOCKS_FC0_MIN_KHZ_OFFSET) // CLOCKS_FC0_MIN_KHZ + // Minimum pass frequency in kHz + // 0x01ffffff [24:0] : FC0_MIN_KHZ (0) + io_rw_32 min_khz; + + _REG_(CLOCKS_FC0_MAX_KHZ_OFFSET) // CLOCKS_FC0_MAX_KHZ + // Maximum pass frequency in kHz + // 0x01ffffff [24:0] : FC0_MAX_KHZ (0x1ffffff) + io_rw_32 max_khz; + + _REG_(CLOCKS_FC0_DELAY_OFFSET) // CLOCKS_FC0_DELAY + // Delays the start of frequency counting to allow the mux to settle + // 0x00000007 [2:0] : FC0_DELAY (1) + io_rw_32 delay; + + _REG_(CLOCKS_FC0_INTERVAL_OFFSET) // CLOCKS_FC0_INTERVAL + // The test interval is 0 + // 0x0000000f [3:0] : FC0_INTERVAL (0x8) + io_rw_32 interval; + + _REG_(CLOCKS_FC0_SRC_OFFSET) // CLOCKS_FC0_SRC + // Clock sent to frequency counter, set to 0 when not required + // 0x000000ff [7:0] : FC0_SRC (0) + io_rw_32 src; + + _REG_(CLOCKS_FC0_STATUS_OFFSET) // CLOCKS_FC0_STATUS + // Frequency counter status + // 0x10000000 [28] : DIED (0): Test clock stopped during test + // 0x01000000 [24] : FAST (0): Test clock faster than expected, only valid when status_done=1 + // 0x00100000 [20] : SLOW (0): Test clock slower than expected, only valid when status_done=1 + // 0x00010000 [16] : FAIL (0): Test failed + // 0x00001000 [12] : WAITING (0): Waiting for test clock to start + // 0x00000100 [8] : RUNNING (0): Test running + // 0x00000010 [4] : DONE (0): Test complete + // 0x00000001 [0] : PASS (0): Test passed + io_ro_32 status; + + _REG_(CLOCKS_FC0_RESULT_OFFSET) // CLOCKS_FC0_RESULT + // Result of frequency measurement, only valid when status_done=1 + // 0x3fffffe0 [29:5] : KHZ (0) + // 0x0000001f [4:0] : FRAC (0) + io_ro_32 result; +} fc_hw_t; + +typedef struct { + clock_hw_t clk[CLK_COUNT]; // 10 + + clock_resus_hw_t resus; + + fc_hw_t fc0; + + _REG_(CLOCKS_WAKE_EN0_OFFSET) // CLOCKS_WAKE_EN0 + // enable clock in wake mode + // 0x80000000 [31] : clk_sys_sram3 (1) + // 0x40000000 [30] : clk_sys_sram2 (1) + // 0x20000000 [29] : clk_sys_sram1 (1) + // 0x10000000 [28] : clk_sys_sram0 (1) + // 0x08000000 [27] : clk_sys_spi1 (1) + // 0x04000000 [26] : clk_peri_spi1 (1) + // 0x02000000 [25] : clk_sys_spi0 (1) + // 0x01000000 [24] : clk_peri_spi0 (1) + // 0x00800000 [23] : clk_sys_sio (1) + // 0x00400000 [22] : clk_sys_rtc (1) + // 0x00200000 [21] : clk_rtc_rtc (1) + // 0x00100000 [20] : clk_sys_rosc (1) + // 0x00080000 [19] : clk_sys_rom (1) + // 0x00040000 [18] : clk_sys_resets (1) + // 0x00020000 [17] : clk_sys_pwm (1) + // 0x00010000 [16] : clk_sys_psm (1) + // 0x00008000 [15] : clk_sys_pll_usb (1) + // 0x00004000 [14] : clk_sys_pll_sys (1) + // 0x00002000 [13] : clk_sys_pio1 (1) + // 0x00001000 [12] : clk_sys_pio0 (1) + // 0x00000800 [11] : clk_sys_pads (1) + // 0x00000400 [10] : clk_sys_vreg_and_chip_reset (1) + // 0x00000200 [9] : clk_sys_jtag (1) + // 0x00000100 [8] : clk_sys_io (1) + // 0x00000080 [7] : clk_sys_i2c1 (1) + // 0x00000040 [6] : clk_sys_i2c0 (1) + // 0x00000020 [5] : clk_sys_dma (1) + // 0x00000010 [4] : clk_sys_busfabric (1) + // 0x00000008 [3] : clk_sys_busctrl (1) + // 0x00000004 [2] : clk_sys_adc (1) + // 0x00000002 [1] : clk_adc_adc (1) + // 0x00000001 [0] : clk_sys_clocks (1) + io_rw_32 wake_en0; + + _REG_(CLOCKS_WAKE_EN1_OFFSET) // CLOCKS_WAKE_EN1 + // enable clock in wake mode + // 0x00004000 [14] : clk_sys_xosc (1) + // 0x00002000 [13] : clk_sys_xip (1) + // 0x00001000 [12] : clk_sys_watchdog (1) + // 0x00000800 [11] : clk_usb_usbctrl (1) + // 0x00000400 [10] : clk_sys_usbctrl (1) + // 0x00000200 [9] : clk_sys_uart1 (1) + // 0x00000100 [8] : clk_peri_uart1 (1) + // 0x00000080 [7] : clk_sys_uart0 (1) + // 0x00000040 [6] : clk_peri_uart0 (1) + // 0x00000020 [5] : clk_sys_timer (1) + // 0x00000010 [4] : clk_sys_tbman (1) + // 0x00000008 [3] : clk_sys_sysinfo (1) + // 0x00000004 [2] : clk_sys_syscfg (1) + // 0x00000002 [1] : clk_sys_sram5 (1) + // 0x00000001 [0] : clk_sys_sram4 (1) + io_rw_32 wake_en1; + + _REG_(CLOCKS_SLEEP_EN0_OFFSET) // CLOCKS_SLEEP_EN0 + // enable clock in sleep mode + // 0x80000000 [31] : clk_sys_sram3 (1) + // 0x40000000 [30] : clk_sys_sram2 (1) + // 0x20000000 [29] : clk_sys_sram1 (1) + // 0x10000000 [28] : clk_sys_sram0 (1) + // 0x08000000 [27] : clk_sys_spi1 (1) + // 0x04000000 [26] : clk_peri_spi1 (1) + // 0x02000000 [25] : clk_sys_spi0 (1) + // 0x01000000 [24] : clk_peri_spi0 (1) + // 0x00800000 [23] : clk_sys_sio (1) + // 0x00400000 [22] : clk_sys_rtc (1) + // 0x00200000 [21] : clk_rtc_rtc (1) + // 0x00100000 [20] : clk_sys_rosc (1) + // 0x00080000 [19] : clk_sys_rom (1) + // 0x00040000 [18] : clk_sys_resets (1) + // 0x00020000 [17] : clk_sys_pwm (1) + // 0x00010000 [16] : clk_sys_psm (1) + // 0x00008000 [15] : clk_sys_pll_usb (1) + // 0x00004000 [14] : clk_sys_pll_sys (1) + // 0x00002000 [13] : clk_sys_pio1 (1) + // 0x00001000 [12] : clk_sys_pio0 (1) + // 0x00000800 [11] : clk_sys_pads (1) + // 0x00000400 [10] : clk_sys_vreg_and_chip_reset (1) + // 0x00000200 [9] : clk_sys_jtag (1) + // 0x00000100 [8] : clk_sys_io (1) + // 0x00000080 [7] : clk_sys_i2c1 (1) + // 0x00000040 [6] : clk_sys_i2c0 (1) + // 0x00000020 [5] : clk_sys_dma (1) + // 0x00000010 [4] : clk_sys_busfabric (1) + // 0x00000008 [3] : clk_sys_busctrl (1) + // 0x00000004 [2] : clk_sys_adc (1) + // 0x00000002 [1] : clk_adc_adc (1) + // 0x00000001 [0] : clk_sys_clocks (1) + io_rw_32 sleep_en0; + + _REG_(CLOCKS_SLEEP_EN1_OFFSET) // CLOCKS_SLEEP_EN1 + // enable clock in sleep mode + // 0x00004000 [14] : clk_sys_xosc (1) + // 0x00002000 [13] : clk_sys_xip (1) + // 0x00001000 [12] : clk_sys_watchdog (1) + // 0x00000800 [11] : clk_usb_usbctrl (1) + // 0x00000400 [10] : clk_sys_usbctrl (1) + // 0x00000200 [9] : clk_sys_uart1 (1) + // 0x00000100 [8] : clk_peri_uart1 (1) + // 0x00000080 [7] : clk_sys_uart0 (1) + // 0x00000040 [6] : clk_peri_uart0 (1) + // 0x00000020 [5] : clk_sys_timer (1) + // 0x00000010 [4] : clk_sys_tbman (1) + // 0x00000008 [3] : clk_sys_sysinfo (1) + // 0x00000004 [2] : clk_sys_syscfg (1) + // 0x00000002 [1] : clk_sys_sram5 (1) + // 0x00000001 [0] : clk_sys_sram4 (1) + io_rw_32 sleep_en1; + + _REG_(CLOCKS_ENABLED0_OFFSET) // CLOCKS_ENABLED0 + // indicates the state of the clock enable + // 0x80000000 [31] : clk_sys_sram3 (0) + // 0x40000000 [30] : clk_sys_sram2 (0) + // 0x20000000 [29] : clk_sys_sram1 (0) + // 0x10000000 [28] : clk_sys_sram0 (0) + // 0x08000000 [27] : clk_sys_spi1 (0) + // 0x04000000 [26] : clk_peri_spi1 (0) + // 0x02000000 [25] : clk_sys_spi0 (0) + // 0x01000000 [24] : clk_peri_spi0 (0) + // 0x00800000 [23] : clk_sys_sio (0) + // 0x00400000 [22] : clk_sys_rtc (0) + // 0x00200000 [21] : clk_rtc_rtc (0) + // 0x00100000 [20] : clk_sys_rosc (0) + // 0x00080000 [19] : clk_sys_rom (0) + // 0x00040000 [18] : clk_sys_resets (0) + // 0x00020000 [17] : clk_sys_pwm (0) + // 0x00010000 [16] : clk_sys_psm (0) + // 0x00008000 [15] : clk_sys_pll_usb (0) + // 0x00004000 [14] : clk_sys_pll_sys (0) + // 0x00002000 [13] : clk_sys_pio1 (0) + // 0x00001000 [12] : clk_sys_pio0 (0) + // 0x00000800 [11] : clk_sys_pads (0) + // 0x00000400 [10] : clk_sys_vreg_and_chip_reset (0) + // 0x00000200 [9] : clk_sys_jtag (0) + // 0x00000100 [8] : clk_sys_io (0) + // 0x00000080 [7] : clk_sys_i2c1 (0) + // 0x00000040 [6] : clk_sys_i2c0 (0) + // 0x00000020 [5] : clk_sys_dma (0) + // 0x00000010 [4] : clk_sys_busfabric (0) + // 0x00000008 [3] : clk_sys_busctrl (0) + // 0x00000004 [2] : clk_sys_adc (0) + // 0x00000002 [1] : clk_adc_adc (0) + // 0x00000001 [0] : clk_sys_clocks (0) + io_ro_32 enabled0; + + _REG_(CLOCKS_ENABLED1_OFFSET) // CLOCKS_ENABLED1 + // indicates the state of the clock enable + // 0x00004000 [14] : clk_sys_xosc (0) + // 0x00002000 [13] : clk_sys_xip (0) + // 0x00001000 [12] : clk_sys_watchdog (0) + // 0x00000800 [11] : clk_usb_usbctrl (0) + // 0x00000400 [10] : clk_sys_usbctrl (0) + // 0x00000200 [9] : clk_sys_uart1 (0) + // 0x00000100 [8] : clk_peri_uart1 (0) + // 0x00000080 [7] : clk_sys_uart0 (0) + // 0x00000040 [6] : clk_peri_uart0 (0) + // 0x00000020 [5] : clk_sys_timer (0) + // 0x00000010 [4] : clk_sys_tbman (0) + // 0x00000008 [3] : clk_sys_sysinfo (0) + // 0x00000004 [2] : clk_sys_syscfg (0) + // 0x00000002 [1] : clk_sys_sram5 (0) + // 0x00000001 [0] : clk_sys_sram4 (0) + io_ro_32 enabled1; + + _REG_(CLOCKS_INTR_OFFSET) // CLOCKS_INTR + // Raw Interrupts + // 0x00000001 [0] : CLK_SYS_RESUS (0) + io_ro_32 intr; + + _REG_(CLOCKS_INTE_OFFSET) // CLOCKS_INTE + // Interrupt Enable + // 0x00000001 [0] : CLK_SYS_RESUS (0) + io_rw_32 inte; + + _REG_(CLOCKS_INTF_OFFSET) // CLOCKS_INTF + // Interrupt Force + // 0x00000001 [0] : CLK_SYS_RESUS (0) + io_rw_32 intf; + + _REG_(CLOCKS_INTS_OFFSET) // CLOCKS_INTS + // Interrupt status after masking & forcing + // 0x00000001 [0] : CLK_SYS_RESUS (0) + io_ro_32 ints; +} clocks_hw_t; + +#define clocks_hw ((clocks_hw_t *const)CLOCKS_BASE) + +static_assert( CLK_COUNT == 10, ""); + +#endif diff --git a/arkanoid/pico/hardware/structs/dma.h b/arkanoid/pico/hardware/structs/dma.h new file mode 100644 index 0000000..a8bdd41 --- /dev/null +++ b/arkanoid/pico/hardware/structs/dma.h @@ -0,0 +1,203 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_DMA_H +#define _HARDWARE_STRUCTS_DMA_H + +#include "../address_mapped.h" +#include "../regs/dma.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_dma +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/dma.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(DMA_CH0_READ_ADDR_OFFSET) // DMA_CH0_READ_ADDR + // DMA Channel 0 Read Address pointer + io_rw_32 read_addr; + + _REG_(DMA_CH0_WRITE_ADDR_OFFSET) // DMA_CH0_WRITE_ADDR + // DMA Channel 0 Write Address pointer + io_rw_32 write_addr; + + _REG_(DMA_CH0_TRANS_COUNT_OFFSET) // DMA_CH0_TRANS_COUNT + // DMA Channel 0 Transfer Count + io_rw_32 transfer_count; + + _REG_(DMA_CH0_CTRL_TRIG_OFFSET) // DMA_CH0_CTRL_TRIG + // DMA Channel 0 Control and Status + // 0x80000000 [31] : AHB_ERROR (0): Logical OR of the READ_ERROR and WRITE_ERROR flags + // 0x40000000 [30] : READ_ERROR (0): If 1, the channel received a read bus error + // 0x20000000 [29] : WRITE_ERROR (0): If 1, the channel received a write bus error + // 0x01000000 [24] : BUSY (0): This flag goes high when the channel starts a new transfer sequence, and low when the... + // 0x00800000 [23] : SNIFF_EN (0): If 1, this channel's data transfers are visible to the sniff hardware, and each... + // 0x00400000 [22] : BSWAP (0): Apply byte-swap transformation to DMA data + // 0x00200000 [21] : IRQ_QUIET (0): In QUIET mode, the channel does not generate IRQs at the end of every transfer block + // 0x001f8000 [20:15] : TREQ_SEL (0): Select a Transfer Request signal + // 0x00007800 [14:11] : CHAIN_TO (0): When this channel completes, it will trigger the channel indicated by CHAIN_TO + // 0x00000400 [10] : RING_SEL (0): Select whether RING_SIZE applies to read or write addresses + // 0x000003c0 [9:6] : RING_SIZE (0): Size of address wrap region + // 0x00000020 [5] : INCR_WRITE (0): If 1, the write address increments with each transfer + // 0x00000010 [4] : INCR_READ (0): If 1, the read address increments with each transfer + // 0x0000000c [3:2] : DATA_SIZE (0): Set the size of each bus transfer (byte/halfword/word) + // 0x00000002 [1] : HIGH_PRIORITY (0): HIGH_PRIORITY gives a channel preferential treatment in issue scheduling: in... + // 0x00000001 [0] : EN (0): DMA Channel Enable + io_rw_32 ctrl_trig; + + _REG_(DMA_CH0_AL1_CTRL_OFFSET) // DMA_CH0_AL1_CTRL + // Alias for channel 0 CTRL register + io_rw_32 al1_ctrl; + + _REG_(DMA_CH0_AL1_READ_ADDR_OFFSET) // DMA_CH0_AL1_READ_ADDR + // Alias for channel 0 READ_ADDR register + io_rw_32 al1_read_addr; + + _REG_(DMA_CH0_AL1_WRITE_ADDR_OFFSET) // DMA_CH0_AL1_WRITE_ADDR + // Alias for channel 0 WRITE_ADDR register + io_rw_32 al1_write_addr; + + _REG_(DMA_CH0_AL1_TRANS_COUNT_TRIG_OFFSET) // DMA_CH0_AL1_TRANS_COUNT_TRIG + // Alias for channel 0 TRANS_COUNT register + io_rw_32 al1_transfer_count_trig; + + _REG_(DMA_CH0_AL2_CTRL_OFFSET) // DMA_CH0_AL2_CTRL + // Alias for channel 0 CTRL register + io_rw_32 al2_ctrl; + + _REG_(DMA_CH0_AL2_TRANS_COUNT_OFFSET) // DMA_CH0_AL2_TRANS_COUNT + // Alias for channel 0 TRANS_COUNT register + io_rw_32 al2_transfer_count; + + _REG_(DMA_CH0_AL2_READ_ADDR_OFFSET) // DMA_CH0_AL2_READ_ADDR + // Alias for channel 0 READ_ADDR register + io_rw_32 al2_read_addr; + + _REG_(DMA_CH0_AL2_WRITE_ADDR_TRIG_OFFSET) // DMA_CH0_AL2_WRITE_ADDR_TRIG + // Alias for channel 0 WRITE_ADDR register + io_rw_32 al2_write_addr_trig; + + _REG_(DMA_CH0_AL3_CTRL_OFFSET) // DMA_CH0_AL3_CTRL + // Alias for channel 0 CTRL register + io_rw_32 al3_ctrl; + + _REG_(DMA_CH0_AL3_WRITE_ADDR_OFFSET) // DMA_CH0_AL3_WRITE_ADDR + // Alias for channel 0 WRITE_ADDR register + io_rw_32 al3_write_addr; + + _REG_(DMA_CH0_AL3_TRANS_COUNT_OFFSET) // DMA_CH0_AL3_TRANS_COUNT + // Alias for channel 0 TRANS_COUNT register + io_rw_32 al3_transfer_count; + + _REG_(DMA_CH0_AL3_READ_ADDR_TRIG_OFFSET) // DMA_CH0_AL3_READ_ADDR_TRIG + // Alias for channel 0 READ_ADDR register + io_rw_32 al3_read_addr_trig; +} dma_channel_hw_t; + +typedef struct { + dma_channel_hw_t ch[NUM_DMA_CHANNELS]; // 12 + + uint32_t _pad0[64]; + + _REG_(DMA_INTR_OFFSET) // DMA_INTR + // Interrupt Status (raw) + // 0x0000ffff [15:0] : INTR (0): Raw interrupt status for DMA Channels 0 + io_ro_32 intr; + + _REG_(DMA_INTE0_OFFSET) // DMA_INTE0 + // Interrupt Enables for IRQ 0 + // 0x0000ffff [15:0] : INTE0 (0): Set bit n to pass interrupts from channel n to DMA IRQ 0 + io_rw_32 inte0; + + _REG_(DMA_INTF0_OFFSET) // DMA_INTF0 + // Force Interrupts + // 0x0000ffff [15:0] : INTF0 (0): Write 1s to force the corresponding bits in INTE0 + io_rw_32 intf0; + + _REG_(DMA_INTS0_OFFSET) // DMA_INTS0 + // Interrupt Status for IRQ 0 + // 0x0000ffff [15:0] : INTS0 (0): Indicates active channel interrupt requests which are currently causing IRQ 0 to be asserted + io_rw_32 ints0; + + uint32_t _pad1; + + _REG_(DMA_INTE1_OFFSET) // DMA_INTE1 + // Interrupt Enables for IRQ 1 + // 0x0000ffff [15:0] : INTE1 (0): Set bit n to pass interrupts from channel n to DMA IRQ 1 + io_rw_32 inte1; + + _REG_(DMA_INTF1_OFFSET) // DMA_INTF1 + // Force Interrupts for IRQ 1 + // 0x0000ffff [15:0] : INTF1 (0): Write 1s to force the corresponding bits in INTE0 + io_rw_32 intf1; + + _REG_(DMA_INTS1_OFFSET) // DMA_INTS1 + // Interrupt Status (masked) for IRQ 1 + // 0x0000ffff [15:0] : INTS1 (0): Indicates active channel interrupt requests which are currently causing IRQ 1 to be asserted + io_rw_32 ints1; + + _REG_(DMA_TIMER0_OFFSET) // DMA_TIMER0 + // (Description copied from array index 0 register DMA_TIMER0 applies similarly to other array indexes) + // + // Pacing (X/Y) Fractional Timer + // 0xffff0000 [31:16] : X (0): Pacing Timer Dividend + // 0x0000ffff [15:0] : Y (0): Pacing Timer Divisor + io_rw_32 timer[NUM_DMA_TIMERS]; // 4 + + _REG_(DMA_MULTI_CHAN_TRIGGER_OFFSET) // DMA_MULTI_CHAN_TRIGGER + // Trigger one or more channels simultaneously + // 0x0000ffff [15:0] : MULTI_CHAN_TRIGGER (0): Each bit in this register corresponds to a DMA channel + io_rw_32 multi_channel_trigger; + + _REG_(DMA_SNIFF_CTRL_OFFSET) // DMA_SNIFF_CTRL + // Sniffer Control + // 0x00000800 [11] : OUT_INV (0): If set, the result appears inverted (bitwise complement) when read + // 0x00000400 [10] : OUT_REV (0): If set, the result appears bit-reversed when read + // 0x00000200 [9] : BSWAP (0): Locally perform a byte reverse on the sniffed data, before feeding into checksum + // 0x000001e0 [8:5] : CALC (0) + // 0x0000001e [4:1] : DMACH (0): DMA channel for Sniffer to observe + // 0x00000001 [0] : EN (0): Enable sniffer + io_rw_32 sniff_ctrl; + + _REG_(DMA_SNIFF_DATA_OFFSET) // DMA_SNIFF_DATA + // Data accumulator for sniff hardware + io_rw_32 sniff_data; + + uint32_t _pad2; + + _REG_(DMA_FIFO_LEVELS_OFFSET) // DMA_FIFO_LEVELS + // Debug RAF, WAF, TDF levels + // 0x00ff0000 [23:16] : RAF_LVL (0): Current Read-Address-FIFO fill level + // 0x0000ff00 [15:8] : WAF_LVL (0): Current Write-Address-FIFO fill level + // 0x000000ff [7:0] : TDF_LVL (0): Current Transfer-Data-FIFO fill level + io_ro_32 fifo_levels; + + _REG_(DMA_CHAN_ABORT_OFFSET) // DMA_CHAN_ABORT + // Abort an in-progress transfer sequence on one or more channels + // 0x0000ffff [15:0] : CHAN_ABORT (0): Each bit corresponds to a channel + io_rw_32 abort; +} dma_hw_t; + +typedef struct { + struct dma_debug_hw_channel { + io_rw_32 ctrdeq; + io_ro_32 tcr; + uint32_t pad[14]; + } ch[NUM_DMA_CHANNELS]; +} dma_debug_hw_t; + +#define dma_hw ((dma_hw_t *const)DMA_BASE) +#define dma_debug_hw ((dma_debug_hw_t *const)(DMA_BASE + DMA_CH0_DBG_CTDREQ_OFFSET)) + +static_assert( NUM_DMA_TIMERS == 4, ""); +static_assert( NUM_DMA_CHANNELS == 12, ""); + +#endif diff --git a/arkanoid/pico/hardware/structs/i2c.h b/arkanoid/pico/hardware/structs/i2c.h new file mode 100644 index 0000000..03aa135 --- /dev/null +++ b/arkanoid/pico/hardware/structs/i2c.h @@ -0,0 +1,333 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_I2C_H +#define _HARDWARE_STRUCTS_I2C_H + +#include "../address_mapped.h" +#include "../regs/i2c.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_i2c +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/i2c.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(I2C_IC_CON_OFFSET) // I2C_IC_CON + // I2C Control Register + // 0x00000400 [10] : STOP_DET_IF_MASTER_ACTIVE (0): Master issues the STOP_DET interrupt irrespective of whether... + // 0x00000200 [9] : RX_FIFO_FULL_HLD_CTRL (0): This bit controls whether DW_apb_i2c should hold the bus when the Rx... + // 0x00000100 [8] : TX_EMPTY_CTRL (0): This bit controls the generation of the TX_EMPTY interrupt, as described in... + // 0x00000080 [7] : STOP_DET_IFADDRESSED (0): In slave mode: - 1'b1: issues the STOP_DET interrupt only when it is... + // 0x00000040 [6] : IC_SLAVE_DISABLE (1): This bit controls whether I2C has its slave disabled, which means once... + // 0x00000020 [5] : IC_RESTART_EN (1): Determines whether RESTART conditions may be sent when acting as a master + // 0x00000010 [4] : IC_10BITADDR_MASTER (0): Controls whether the DW_apb_i2c starts its transfers in 7- or 10-bit... + // 0x00000008 [3] : IC_10BITADDR_SLAVE (0): When acting as a slave, this bit controls whether the DW_apb_i2c... + // 0x00000006 [2:1] : SPEED (0x2): These bits control at which speed the DW_apb_i2c operates; its setting is relevant... + // 0x00000001 [0] : MASTER_MODE (1): This bit controls whether the DW_apb_i2c master is enabled + io_rw_32 con; + + _REG_(I2C_IC_TAR_OFFSET) // I2C_IC_TAR + // I2C Target Address Register + // 0x00000800 [11] : SPECIAL (0): This bit indicates whether software performs a Device-ID or General Call or START... + // 0x00000400 [10] : GC_OR_START (0): If bit 11 (SPECIAL) is set to 1 and bit 13(Device-ID) is set to 0, then this... + // 0x000003ff [9:0] : IC_TAR (0x55): This is the target address for any master transaction + io_rw_32 tar; + + _REG_(I2C_IC_SAR_OFFSET) // I2C_IC_SAR + // I2C Slave Address Register + // 0x000003ff [9:0] : IC_SAR (0x55): The IC_SAR holds the slave address when the I2C is operating as a slave + io_rw_32 sar; + + uint32_t _pad0; + + _REG_(I2C_IC_DATA_CMD_OFFSET) // I2C_IC_DATA_CMD + // I2C Rx/Tx Data Buffer and Command Register; this is the register the CPU writes to when filling the TX FIFO and the... + // 0x00000800 [11] : FIRST_DATA_BYTE (0): Indicates the first data byte received after the address phase for receive... + // 0x00000400 [10] : RESTART (0): This bit controls whether a RESTART is issued before the byte is sent or received + // 0x00000200 [9] : STOP (0): This bit controls whether a STOP is issued after the byte is sent or received + // 0x00000100 [8] : CMD (0): This bit controls whether a read or a write is performed + // 0x000000ff [7:0] : DAT (0): This register contains the data to be transmitted or received on the I2C bus + io_rw_32 data_cmd; + + _REG_(I2C_IC_SS_SCL_HCNT_OFFSET) // I2C_IC_SS_SCL_HCNT + // Standard Speed I2C Clock SCL High Count Register + // 0x0000ffff [15:0] : IC_SS_SCL_HCNT (0x28): This register must be set before any I2C bus transaction can take place... + io_rw_32 ss_scl_hcnt; + + _REG_(I2C_IC_SS_SCL_LCNT_OFFSET) // I2C_IC_SS_SCL_LCNT + // Standard Speed I2C Clock SCL Low Count Register + // 0x0000ffff [15:0] : IC_SS_SCL_LCNT (0x2f): This register must be set before any I2C bus transaction can take place... + io_rw_32 ss_scl_lcnt; + + _REG_(I2C_IC_FS_SCL_HCNT_OFFSET) // I2C_IC_FS_SCL_HCNT + // Fast Mode or Fast Mode Plus I2C Clock SCL High Count Register + // 0x0000ffff [15:0] : IC_FS_SCL_HCNT (0x6): This register must be set before any I2C bus transaction can take place... + io_rw_32 fs_scl_hcnt; + + _REG_(I2C_IC_FS_SCL_LCNT_OFFSET) // I2C_IC_FS_SCL_LCNT + // Fast Mode or Fast Mode Plus I2C Clock SCL Low Count Register + // 0x0000ffff [15:0] : IC_FS_SCL_LCNT (0xd): This register must be set before any I2C bus transaction can take place... + io_rw_32 fs_scl_lcnt; + + uint32_t _pad1[2]; + + _REG_(I2C_IC_INTR_STAT_OFFSET) // I2C_IC_INTR_STAT + // I2C Interrupt Status Register + // 0x00001000 [12] : R_RESTART_DET (0): See IC_RAW_INTR_STAT for a detailed description of R_RESTART_DET bit + // 0x00000800 [11] : R_GEN_CALL (0): See IC_RAW_INTR_STAT for a detailed description of R_GEN_CALL bit + // 0x00000400 [10] : R_START_DET (0): See IC_RAW_INTR_STAT for a detailed description of R_START_DET bit + // 0x00000200 [9] : R_STOP_DET (0): See IC_RAW_INTR_STAT for a detailed description of R_STOP_DET bit + // 0x00000100 [8] : R_ACTIVITY (0): See IC_RAW_INTR_STAT for a detailed description of R_ACTIVITY bit + // 0x00000080 [7] : R_RX_DONE (0): See IC_RAW_INTR_STAT for a detailed description of R_RX_DONE bit + // 0x00000040 [6] : R_TX_ABRT (0): See IC_RAW_INTR_STAT for a detailed description of R_TX_ABRT bit + // 0x00000020 [5] : R_RD_REQ (0): See IC_RAW_INTR_STAT for a detailed description of R_RD_REQ bit + // 0x00000010 [4] : R_TX_EMPTY (0): See IC_RAW_INTR_STAT for a detailed description of R_TX_EMPTY bit + // 0x00000008 [3] : R_TX_OVER (0): See IC_RAW_INTR_STAT for a detailed description of R_TX_OVER bit + // 0x00000004 [2] : R_RX_FULL (0): See IC_RAW_INTR_STAT for a detailed description of R_RX_FULL bit + // 0x00000002 [1] : R_RX_OVER (0): See IC_RAW_INTR_STAT for a detailed description of R_RX_OVER bit + // 0x00000001 [0] : R_RX_UNDER (0): See IC_RAW_INTR_STAT for a detailed description of R_RX_UNDER bit + io_ro_32 intr_stat; + + _REG_(I2C_IC_INTR_MASK_OFFSET) // I2C_IC_INTR_MASK + // I2C Interrupt Mask Register + // 0x00001000 [12] : M_RESTART_DET (0): This bit masks the R_RESTART_DET interrupt in IC_INTR_STAT register + // 0x00000800 [11] : M_GEN_CALL (1): This bit masks the R_GEN_CALL interrupt in IC_INTR_STAT register + // 0x00000400 [10] : M_START_DET (0): This bit masks the R_START_DET interrupt in IC_INTR_STAT register + // 0x00000200 [9] : M_STOP_DET (0): This bit masks the R_STOP_DET interrupt in IC_INTR_STAT register + // 0x00000100 [8] : M_ACTIVITY (0): This bit masks the R_ACTIVITY interrupt in IC_INTR_STAT register + // 0x00000080 [7] : M_RX_DONE (1): This bit masks the R_RX_DONE interrupt in IC_INTR_STAT register + // 0x00000040 [6] : M_TX_ABRT (1): This bit masks the R_TX_ABRT interrupt in IC_INTR_STAT register + // 0x00000020 [5] : M_RD_REQ (1): This bit masks the R_RD_REQ interrupt in IC_INTR_STAT register + // 0x00000010 [4] : M_TX_EMPTY (1): This bit masks the R_TX_EMPTY interrupt in IC_INTR_STAT register + // 0x00000008 [3] : M_TX_OVER (1): This bit masks the R_TX_OVER interrupt in IC_INTR_STAT register + // 0x00000004 [2] : M_RX_FULL (1): This bit masks the R_RX_FULL interrupt in IC_INTR_STAT register + // 0x00000002 [1] : M_RX_OVER (1): This bit masks the R_RX_OVER interrupt in IC_INTR_STAT register + // 0x00000001 [0] : M_RX_UNDER (1): This bit masks the R_RX_UNDER interrupt in IC_INTR_STAT register + io_rw_32 intr_mask; + + _REG_(I2C_IC_RAW_INTR_STAT_OFFSET) // I2C_IC_RAW_INTR_STAT + // I2C Raw Interrupt Status Register + // 0x00001000 [12] : RESTART_DET (0): Indicates whether a RESTART condition has occurred on the I2C interface when... + // 0x00000800 [11] : GEN_CALL (0): Set only when a General Call address is received and it is acknowledged + // 0x00000400 [10] : START_DET (0): Indicates whether a START or RESTART condition has occurred on the I2C interface... + // 0x00000200 [9] : STOP_DET (0): Indicates whether a STOP condition has occurred on the I2C interface regardless... + // 0x00000100 [8] : ACTIVITY (0): This bit captures DW_apb_i2c activity and stays set until it is cleared + // 0x00000080 [7] : RX_DONE (0): When the DW_apb_i2c is acting as a slave-transmitter, this bit is set to 1 if the... + // 0x00000040 [6] : TX_ABRT (0): This bit indicates if DW_apb_i2c, as an I2C transmitter, is unable to complete the... + // 0x00000020 [5] : RD_REQ (0): This bit is set to 1 when DW_apb_i2c is acting as a slave and another I2C master is... + // 0x00000010 [4] : TX_EMPTY (0): The behavior of the TX_EMPTY interrupt status differs based on the TX_EMPTY_CTRL... + // 0x00000008 [3] : TX_OVER (0): Set during transmit if the transmit buffer is filled to IC_TX_BUFFER_DEPTH and the... + // 0x00000004 [2] : RX_FULL (0): Set when the receive buffer reaches or goes above the RX_TL threshold in the... + // 0x00000002 [1] : RX_OVER (0): Set if the receive buffer is completely filled to IC_RX_BUFFER_DEPTH and an... + // 0x00000001 [0] : RX_UNDER (0): Set if the processor attempts to read the receive buffer when it is empty by... + io_ro_32 raw_intr_stat; + + _REG_(I2C_IC_RX_TL_OFFSET) // I2C_IC_RX_TL + // I2C Receive FIFO Threshold Register + // 0x000000ff [7:0] : RX_TL (0): Receive FIFO Threshold Level + io_rw_32 rx_tl; + + _REG_(I2C_IC_TX_TL_OFFSET) // I2C_IC_TX_TL + // I2C Transmit FIFO Threshold Register + // 0x000000ff [7:0] : TX_TL (0): Transmit FIFO Threshold Level + io_rw_32 tx_tl; + + _REG_(I2C_IC_CLR_INTR_OFFSET) // I2C_IC_CLR_INTR + // Clear Combined and Individual Interrupt Register + // 0x00000001 [0] : CLR_INTR (0): Read this register to clear the combined interrupt, all individual interrupts,... + io_ro_32 clr_intr; + + _REG_(I2C_IC_CLR_RX_UNDER_OFFSET) // I2C_IC_CLR_RX_UNDER + // Clear RX_UNDER Interrupt Register + // 0x00000001 [0] : CLR_RX_UNDER (0): Read this register to clear the RX_UNDER interrupt (bit 0) of the... + io_ro_32 clr_rx_under; + + _REG_(I2C_IC_CLR_RX_OVER_OFFSET) // I2C_IC_CLR_RX_OVER + // Clear RX_OVER Interrupt Register + // 0x00000001 [0] : CLR_RX_OVER (0): Read this register to clear the RX_OVER interrupt (bit 1) of the... + io_ro_32 clr_rx_over; + + _REG_(I2C_IC_CLR_TX_OVER_OFFSET) // I2C_IC_CLR_TX_OVER + // Clear TX_OVER Interrupt Register + // 0x00000001 [0] : CLR_TX_OVER (0): Read this register to clear the TX_OVER interrupt (bit 3) of the... + io_ro_32 clr_tx_over; + + _REG_(I2C_IC_CLR_RD_REQ_OFFSET) // I2C_IC_CLR_RD_REQ + // Clear RD_REQ Interrupt Register + // 0x00000001 [0] : CLR_RD_REQ (0): Read this register to clear the RD_REQ interrupt (bit 5) of the... + io_ro_32 clr_rd_req; + + _REG_(I2C_IC_CLR_TX_ABRT_OFFSET) // I2C_IC_CLR_TX_ABRT + // Clear TX_ABRT Interrupt Register + // 0x00000001 [0] : CLR_TX_ABRT (0): Read this register to clear the TX_ABRT interrupt (bit 6) of the... + io_ro_32 clr_tx_abrt; + + _REG_(I2C_IC_CLR_RX_DONE_OFFSET) // I2C_IC_CLR_RX_DONE + // Clear RX_DONE Interrupt Register + // 0x00000001 [0] : CLR_RX_DONE (0): Read this register to clear the RX_DONE interrupt (bit 7) of the... + io_ro_32 clr_rx_done; + + _REG_(I2C_IC_CLR_ACTIVITY_OFFSET) // I2C_IC_CLR_ACTIVITY + // Clear ACTIVITY Interrupt Register + // 0x00000001 [0] : CLR_ACTIVITY (0): Reading this register clears the ACTIVITY interrupt if the I2C is not active anymore + io_ro_32 clr_activity; + + _REG_(I2C_IC_CLR_STOP_DET_OFFSET) // I2C_IC_CLR_STOP_DET + // Clear STOP_DET Interrupt Register + // 0x00000001 [0] : CLR_STOP_DET (0): Read this register to clear the STOP_DET interrupt (bit 9) of the... + io_ro_32 clr_stop_det; + + _REG_(I2C_IC_CLR_START_DET_OFFSET) // I2C_IC_CLR_START_DET + // Clear START_DET Interrupt Register + // 0x00000001 [0] : CLR_START_DET (0): Read this register to clear the START_DET interrupt (bit 10) of the... + io_ro_32 clr_start_det; + + _REG_(I2C_IC_CLR_GEN_CALL_OFFSET) // I2C_IC_CLR_GEN_CALL + // Clear GEN_CALL Interrupt Register + // 0x00000001 [0] : CLR_GEN_CALL (0): Read this register to clear the GEN_CALL interrupt (bit 11) of... + io_ro_32 clr_gen_call; + + _REG_(I2C_IC_ENABLE_OFFSET) // I2C_IC_ENABLE + // I2C Enable Register + // 0x00000004 [2] : TX_CMD_BLOCK (0): In Master mode: - 1'b1: Blocks the transmission of data on I2C bus even if Tx... + // 0x00000002 [1] : ABORT (0): When set, the controller initiates the transfer abort + // 0x00000001 [0] : ENABLE (0): Controls whether the DW_apb_i2c is enabled + io_rw_32 enable; + + _REG_(I2C_IC_STATUS_OFFSET) // I2C_IC_STATUS + // I2C Status Register + // 0x00000040 [6] : SLV_ACTIVITY (0): Slave FSM Activity Status + // 0x00000020 [5] : MST_ACTIVITY (0): Master FSM Activity Status + // 0x00000010 [4] : RFF (0): Receive FIFO Completely Full + // 0x00000008 [3] : RFNE (0): Receive FIFO Not Empty + // 0x00000004 [2] : TFE (1): Transmit FIFO Completely Empty + // 0x00000002 [1] : TFNF (1): Transmit FIFO Not Full + // 0x00000001 [0] : ACTIVITY (0): I2C Activity Status + io_ro_32 status; + + _REG_(I2C_IC_TXFLR_OFFSET) // I2C_IC_TXFLR + // I2C Transmit FIFO Level Register This register contains the number of valid data entries in the transmit FIFO buffer + // 0x0000001f [4:0] : TXFLR (0): Transmit FIFO Level + io_ro_32 txflr; + + _REG_(I2C_IC_RXFLR_OFFSET) // I2C_IC_RXFLR + // I2C Receive FIFO Level Register This register contains the number of valid data entries in the receive FIFO buffer + // 0x0000001f [4:0] : RXFLR (0): Receive FIFO Level + io_ro_32 rxflr; + + _REG_(I2C_IC_SDA_HOLD_OFFSET) // I2C_IC_SDA_HOLD + // I2C SDA Hold Time Length Register + // 0x00ff0000 [23:16] : IC_SDA_RX_HOLD (0): Sets the required SDA hold time in units of ic_clk period, when DW_apb_i2c... + // 0x0000ffff [15:0] : IC_SDA_TX_HOLD (1): Sets the required SDA hold time in units of ic_clk period, when DW_apb_i2c... + io_rw_32 sda_hold; + + _REG_(I2C_IC_TX_ABRT_SOURCE_OFFSET) // I2C_IC_TX_ABRT_SOURCE + // I2C Transmit Abort Source Register + // 0xff800000 [31:23] : TX_FLUSH_CNT (0): This field indicates the number of Tx FIFO Data Commands which are flushed... + // 0x00010000 [16] : ABRT_USER_ABRT (0): This is a master-mode-only bit + // 0x00008000 [15] : ABRT_SLVRD_INTX (0): 1: When the processor side responds to a slave mode request for data to be... + // 0x00004000 [14] : ABRT_SLV_ARBLOST (0): This field indicates that a Slave has lost the bus while transmitting... + // 0x00002000 [13] : ABRT_SLVFLUSH_TXFIFO (0): This field specifies that the Slave has received a read command and... + // 0x00001000 [12] : ARB_LOST (0): This field specifies that the Master has lost arbitration, or if... + // 0x00000800 [11] : ABRT_MASTER_DIS (0): This field indicates that the User tries to initiate a Master operation... + // 0x00000400 [10] : ABRT_10B_RD_NORSTRT (0): This field indicates that the restart is disabled (IC_RESTART_EN bit... + // 0x00000200 [9] : ABRT_SBYTE_NORSTRT (0): To clear Bit 9, the source of the ABRT_SBYTE_NORSTRT must be fixed... + // 0x00000100 [8] : ABRT_HS_NORSTRT (0): This field indicates that the restart is disabled (IC_RESTART_EN bit... + // 0x00000080 [7] : ABRT_SBYTE_ACKDET (0): This field indicates that the Master has sent a START Byte and the START... + // 0x00000040 [6] : ABRT_HS_ACKDET (0): This field indicates that the Master is in High Speed mode and the High... + // 0x00000020 [5] : ABRT_GCALL_READ (0): This field indicates that DW_apb_i2c in the master mode has sent a General... + // 0x00000010 [4] : ABRT_GCALL_NOACK (0): This field indicates that DW_apb_i2c in master mode has sent a General... + // 0x00000008 [3] : ABRT_TXDATA_NOACK (0): This field indicates the master-mode only bit + // 0x00000004 [2] : ABRT_10ADDR2_NOACK (0): This field indicates that the Master is in 10-bit address mode and that... + // 0x00000002 [1] : ABRT_10ADDR1_NOACK (0): This field indicates that the Master is in 10-bit address mode and the... + // 0x00000001 [0] : ABRT_7B_ADDR_NOACK (0): This field indicates that the Master is in 7-bit addressing mode and... + io_ro_32 tx_abrt_source; + + _REG_(I2C_IC_SLV_DATA_NACK_ONLY_OFFSET) // I2C_IC_SLV_DATA_NACK_ONLY + // Generate Slave Data NACK Register + // 0x00000001 [0] : NACK (0): Generate NACK + io_rw_32 slv_data_nack_only; + + _REG_(I2C_IC_DMA_CR_OFFSET) // I2C_IC_DMA_CR + // DMA Control Register + // 0x00000002 [1] : TDMAE (0): Transmit DMA Enable + // 0x00000001 [0] : RDMAE (0): Receive DMA Enable + io_rw_32 dma_cr; + + _REG_(I2C_IC_DMA_TDLR_OFFSET) // I2C_IC_DMA_TDLR + // DMA Transmit Data Level Register + // 0x0000000f [3:0] : DMATDL (0): Transmit Data Level + io_rw_32 dma_tdlr; + + _REG_(I2C_IC_DMA_RDLR_OFFSET) // I2C_IC_DMA_RDLR + // I2C Receive Data Level Register + // 0x0000000f [3:0] : DMARDL (0): Receive Data Level + io_rw_32 dma_rdlr; + + _REG_(I2C_IC_SDA_SETUP_OFFSET) // I2C_IC_SDA_SETUP + // I2C SDA Setup Register + // 0x000000ff [7:0] : SDA_SETUP (0x64): SDA Setup + io_rw_32 sda_setup; + + _REG_(I2C_IC_ACK_GENERAL_CALL_OFFSET) // I2C_IC_ACK_GENERAL_CALL + // I2C ACK General Call Register + // 0x00000001 [0] : ACK_GEN_CALL (1): ACK General Call + io_rw_32 ack_general_call; + + _REG_(I2C_IC_ENABLE_STATUS_OFFSET) // I2C_IC_ENABLE_STATUS + // I2C Enable Status Register + // 0x00000004 [2] : SLV_RX_DATA_LOST (0): Slave Received Data Lost + // 0x00000002 [1] : SLV_DISABLED_WHILE_BUSY (0): Slave Disabled While Busy (Transmit, Receive) + // 0x00000001 [0] : IC_EN (0): ic_en Status + io_ro_32 enable_status; + + _REG_(I2C_IC_FS_SPKLEN_OFFSET) // I2C_IC_FS_SPKLEN + // I2C SS, FS or FM+ spike suppression limit + // 0x000000ff [7:0] : IC_FS_SPKLEN (0x7): This register must be set before any I2C bus transaction can take place to... + io_rw_32 fs_spklen; + + uint32_t _pad2; + + _REG_(I2C_IC_CLR_RESTART_DET_OFFSET) // I2C_IC_CLR_RESTART_DET + // Clear RESTART_DET Interrupt Register + // 0x00000001 [0] : CLR_RESTART_DET (0): Read this register to clear the RESTART_DET interrupt (bit 12) of... + io_ro_32 clr_restart_det; + + uint32_t _pad3[18]; + + _REG_(I2C_IC_COMP_PARAM_1_OFFSET) // I2C_IC_COMP_PARAM_1 + // Component Parameter Register 1 + // 0x00ff0000 [23:16] : TX_BUFFER_DEPTH (0): TX Buffer Depth = 16 + // 0x0000ff00 [15:8] : RX_BUFFER_DEPTH (0): RX Buffer Depth = 16 + // 0x00000080 [7] : ADD_ENCODED_PARAMS (0): Encoded parameters not visible + // 0x00000040 [6] : HAS_DMA (0): DMA handshaking signals are enabled + // 0x00000020 [5] : INTR_IO (0): COMBINED Interrupt outputs + // 0x00000010 [4] : HC_COUNT_VALUES (0): Programmable count values for each mode + // 0x0000000c [3:2] : MAX_SPEED_MODE (0): MAX SPEED MODE = FAST MODE + // 0x00000003 [1:0] : APB_DATA_WIDTH (0): APB data bus width is 32 bits + io_ro_32 comp_param_1; + + _REG_(I2C_IC_COMP_VERSION_OFFSET) // I2C_IC_COMP_VERSION + // I2C Component Version Register + // 0xffffffff [31:0] : IC_COMP_VERSION (0x3230312a) + io_ro_32 comp_version; + + _REG_(I2C_IC_COMP_TYPE_OFFSET) // I2C_IC_COMP_TYPE + // I2C Component Type Register + // 0xffffffff [31:0] : IC_COMP_TYPE (0x44570140): Designware Component Type number = 0x44_57_01_40 + io_ro_32 comp_type; +} i2c_hw_t; + +#define i2c0_hw ((i2c_hw_t *const)I2C0_BASE) +#define i2c1_hw ((i2c_hw_t *const)I2C1_BASE) + +#endif diff --git a/arkanoid/pico/hardware/structs/interp.h b/arkanoid/pico/hardware/structs/interp.h new file mode 100644 index 0000000..7b02bf2 --- /dev/null +++ b/arkanoid/pico/hardware/structs/interp.h @@ -0,0 +1,82 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_INTERP_H +#define _HARDWARE_STRUCTS_INTERP_H + +#include "../address_mapped.h" +#include "../regs/sio.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_sio +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/sio.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(SIO_INTERP0_ACCUM0_OFFSET) // SIO_INTERP0_ACCUM0 + // (Description copied from array index 0 register SIO_INTERP0_ACCUM0 applies similarly to other array indexes) + // + // Read/write access to accumulator 0 + io_rw_32 accum[2]; + + _REG_(SIO_INTERP0_BASE0_OFFSET) // SIO_INTERP0_BASE0 + // (Description copied from array index 0 register SIO_INTERP0_BASE0 applies similarly to other array indexes) + // + // Read/write access to BASE0 register + io_rw_32 base[3]; + + _REG_(SIO_INTERP0_POP_LANE0_OFFSET) // SIO_INTERP0_POP_LANE0 + // (Description copied from array index 0 register SIO_INTERP0_POP_LANE0 applies similarly to other array indexes) + // + // Read LANE0 result, and simultaneously write lane results to both accumulators (POP) + io_ro_32 pop[3]; + + _REG_(SIO_INTERP0_PEEK_LANE0_OFFSET) // SIO_INTERP0_PEEK_LANE0 + // (Description copied from array index 0 register SIO_INTERP0_PEEK_LANE0 applies similarly to other array indexes) + // + // Read LANE0 result, without altering any internal state (PEEK) + io_ro_32 peek[3]; + + _REG_(SIO_INTERP0_CTRL_LANE0_OFFSET) // SIO_INTERP0_CTRL_LANE0 + // (Description copied from array index 0 register SIO_INTERP0_CTRL_LANE0 applies similarly to other array indexes) + // + // Control register for lane 0 + // 0x02000000 [25] : OVERF (0): Set if either OVERF0 or OVERF1 is set + // 0x01000000 [24] : OVERF1 (0): Indicates if any masked-off MSBs in ACCUM1 are set + // 0x00800000 [23] : OVERF0 (0): Indicates if any masked-off MSBs in ACCUM0 are set + // 0x00200000 [21] : BLEND (0): Only present on INTERP0 on each core + // 0x00180000 [20:19] : FORCE_MSB (0): ORed into bits 29:28 of the lane result presented to the processor on the bus + // 0x00040000 [18] : ADD_RAW (0): If 1, mask + shift is bypassed for LANE0 result + // 0x00020000 [17] : CROSS_RESULT (0): If 1, feed the opposite lane's result into this lane's accumulator on POP + // 0x00010000 [16] : CROSS_INPUT (0): If 1, feed the opposite lane's accumulator into this lane's shift + mask hardware + // 0x00008000 [15] : SIGNED (0): If SIGNED is set, the shifted and masked accumulator value is sign-extended to 32 bits + // 0x00007c00 [14:10] : MASK_MSB (0): The most-significant bit allowed to pass by the mask (inclusive) + // 0x000003e0 [9:5] : MASK_LSB (0): The least-significant bit allowed to pass by the mask (inclusive) + // 0x0000001f [4:0] : SHIFT (0): Logical right-shift applied to accumulator before masking + io_rw_32 ctrl[2]; + + _REG_(SIO_INTERP0_ACCUM0_ADD_OFFSET) // SIO_INTERP0_ACCUM0_ADD + // (Description copied from array index 0 register SIO_INTERP0_ACCUM0_ADD applies similarly to other array indexes) + // + // Values written here are atomically added to ACCUM0 + // 0x00ffffff [23:0] : INTERP0_ACCUM0_ADD (0) + io_rw_32 add_raw[2]; + + _REG_(SIO_INTERP0_BASE_1AND0_OFFSET) // SIO_INTERP0_BASE_1AND0 + // On write, the lower 16 bits go to BASE0, upper bits to BASE1 simultaneously + io_wo_32 base01; +} interp_hw_t; + +#define interp_hw_array ((interp_hw_t *)(SIO_BASE + SIO_INTERP0_ACCUM0_OFFSET)) +#define interp0_hw (&interp_hw_array[0]) +#define interp1_hw (&interp_hw_array[1]) + +#endif diff --git a/arkanoid/pico/hardware/structs/iobank0.h b/arkanoid/pico/hardware/structs/iobank0.h new file mode 100644 index 0000000..6bad35a --- /dev/null +++ b/arkanoid/pico/hardware/structs/iobank0.h @@ -0,0 +1,216 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_IOBANK0_H +#define _HARDWARE_STRUCTS_IOBANK0_H + +#include "../address_mapped.h" +#include "../regs/io_bank0.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_io_bank0 +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/io_bank0.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(IO_BANK0_GPIO0_STATUS_OFFSET) // IO_BANK0_GPIO0_STATUS + // GPIO status + // 0x04000000 [26] : IRQTOPROC (0): interrupt to processors, after override is applied + // 0x01000000 [24] : IRQFROMPAD (0): interrupt from pad before override is applied + // 0x00080000 [19] : INTOPERI (0): input signal to peripheral, after override is applied + // 0x00020000 [17] : INFROMPAD (0): input signal from pad, before override is applied + // 0x00002000 [13] : OETOPAD (0): output enable to pad after register override is applied + // 0x00001000 [12] : OEFROMPERI (0): output enable from selected peripheral, before register override is applied + // 0x00000200 [9] : OUTTOPAD (0): output signal to pad after register override is applied + // 0x00000100 [8] : OUTFROMPERI (0): output signal from selected peripheral, before register override is applied + io_ro_32 status; + + _REG_(IO_BANK0_GPIO0_CTRL_OFFSET) // IO_BANK0_GPIO0_CTRL + // GPIO control including function select and overrides + // 0x30000000 [29:28] : IRQOVER (0) + // 0x00030000 [17:16] : INOVER (0) + // 0x00003000 [13:12] : OEOVER (0) + // 0x00000300 [9:8] : OUTOVER (0) + // 0x0000001f [4:0] : FUNCSEL (0x1f): 0-31 -> selects pin function according to the gpio table + io_rw_32 ctrl; +} iobank0_status_ctrl_hw_t; + +typedef struct { + _REG_(IO_BANK0_PROC0_INTE0_OFFSET) // IO_BANK0_PROC0_INTE0 + // (Description copied from array index 0 register IO_BANK0_PROC0_INTE0 applies similarly to other array indexes) + // + // Interrupt Enable for proc0 + // 0x80000000 [31] : GPIO7_EDGE_HIGH (0) + // 0x40000000 [30] : GPIO7_EDGE_LOW (0) + // 0x20000000 [29] : GPIO7_LEVEL_HIGH (0) + // 0x10000000 [28] : GPIO7_LEVEL_LOW (0) + // 0x08000000 [27] : GPIO6_EDGE_HIGH (0) + // 0x04000000 [26] : GPIO6_EDGE_LOW (0) + // 0x02000000 [25] : GPIO6_LEVEL_HIGH (0) + // 0x01000000 [24] : GPIO6_LEVEL_LOW (0) + // 0x00800000 [23] : GPIO5_EDGE_HIGH (0) + // 0x00400000 [22] : GPIO5_EDGE_LOW (0) + // 0x00200000 [21] : GPIO5_LEVEL_HIGH (0) + // 0x00100000 [20] : GPIO5_LEVEL_LOW (0) + // 0x00080000 [19] : GPIO4_EDGE_HIGH (0) + // 0x00040000 [18] : GPIO4_EDGE_LOW (0) + // 0x00020000 [17] : GPIO4_LEVEL_HIGH (0) + // 0x00010000 [16] : GPIO4_LEVEL_LOW (0) + // 0x00008000 [15] : GPIO3_EDGE_HIGH (0) + // 0x00004000 [14] : GPIO3_EDGE_LOW (0) + // 0x00002000 [13] : GPIO3_LEVEL_HIGH (0) + // 0x00001000 [12] : GPIO3_LEVEL_LOW (0) + // 0x00000800 [11] : GPIO2_EDGE_HIGH (0) + // 0x00000400 [10] : GPIO2_EDGE_LOW (0) + // 0x00000200 [9] : GPIO2_LEVEL_HIGH (0) + // 0x00000100 [8] : GPIO2_LEVEL_LOW (0) + // 0x00000080 [7] : GPIO1_EDGE_HIGH (0) + // 0x00000040 [6] : GPIO1_EDGE_LOW (0) + // 0x00000020 [5] : GPIO1_LEVEL_HIGH (0) + // 0x00000010 [4] : GPIO1_LEVEL_LOW (0) + // 0x00000008 [3] : GPIO0_EDGE_HIGH (0) + // 0x00000004 [2] : GPIO0_EDGE_LOW (0) + // 0x00000002 [1] : GPIO0_LEVEL_HIGH (0) + // 0x00000001 [0] : GPIO0_LEVEL_LOW (0) + io_rw_32 inte[4]; + + _REG_(IO_BANK0_PROC0_INTF0_OFFSET) // IO_BANK0_PROC0_INTF0 + // (Description copied from array index 0 register IO_BANK0_PROC0_INTF0 applies similarly to other array indexes) + // + // Interrupt Force for proc0 + // 0x80000000 [31] : GPIO7_EDGE_HIGH (0) + // 0x40000000 [30] : GPIO7_EDGE_LOW (0) + // 0x20000000 [29] : GPIO7_LEVEL_HIGH (0) + // 0x10000000 [28] : GPIO7_LEVEL_LOW (0) + // 0x08000000 [27] : GPIO6_EDGE_HIGH (0) + // 0x04000000 [26] : GPIO6_EDGE_LOW (0) + // 0x02000000 [25] : GPIO6_LEVEL_HIGH (0) + // 0x01000000 [24] : GPIO6_LEVEL_LOW (0) + // 0x00800000 [23] : GPIO5_EDGE_HIGH (0) + // 0x00400000 [22] : GPIO5_EDGE_LOW (0) + // 0x00200000 [21] : GPIO5_LEVEL_HIGH (0) + // 0x00100000 [20] : GPIO5_LEVEL_LOW (0) + // 0x00080000 [19] : GPIO4_EDGE_HIGH (0) + // 0x00040000 [18] : GPIO4_EDGE_LOW (0) + // 0x00020000 [17] : GPIO4_LEVEL_HIGH (0) + // 0x00010000 [16] : GPIO4_LEVEL_LOW (0) + // 0x00008000 [15] : GPIO3_EDGE_HIGH (0) + // 0x00004000 [14] : GPIO3_EDGE_LOW (0) + // 0x00002000 [13] : GPIO3_LEVEL_HIGH (0) + // 0x00001000 [12] : GPIO3_LEVEL_LOW (0) + // 0x00000800 [11] : GPIO2_EDGE_HIGH (0) + // 0x00000400 [10] : GPIO2_EDGE_LOW (0) + // 0x00000200 [9] : GPIO2_LEVEL_HIGH (0) + // 0x00000100 [8] : GPIO2_LEVEL_LOW (0) + // 0x00000080 [7] : GPIO1_EDGE_HIGH (0) + // 0x00000040 [6] : GPIO1_EDGE_LOW (0) + // 0x00000020 [5] : GPIO1_LEVEL_HIGH (0) + // 0x00000010 [4] : GPIO1_LEVEL_LOW (0) + // 0x00000008 [3] : GPIO0_EDGE_HIGH (0) + // 0x00000004 [2] : GPIO0_EDGE_LOW (0) + // 0x00000002 [1] : GPIO0_LEVEL_HIGH (0) + // 0x00000001 [0] : GPIO0_LEVEL_LOW (0) + io_rw_32 intf[4]; + + _REG_(IO_BANK0_PROC0_INTS0_OFFSET) // IO_BANK0_PROC0_INTS0 + // (Description copied from array index 0 register IO_BANK0_PROC0_INTS0 applies similarly to other array indexes) + // + // Interrupt status after masking & forcing for proc0 + // 0x80000000 [31] : GPIO7_EDGE_HIGH (0) + // 0x40000000 [30] : GPIO7_EDGE_LOW (0) + // 0x20000000 [29] : GPIO7_LEVEL_HIGH (0) + // 0x10000000 [28] : GPIO7_LEVEL_LOW (0) + // 0x08000000 [27] : GPIO6_EDGE_HIGH (0) + // 0x04000000 [26] : GPIO6_EDGE_LOW (0) + // 0x02000000 [25] : GPIO6_LEVEL_HIGH (0) + // 0x01000000 [24] : GPIO6_LEVEL_LOW (0) + // 0x00800000 [23] : GPIO5_EDGE_HIGH (0) + // 0x00400000 [22] : GPIO5_EDGE_LOW (0) + // 0x00200000 [21] : GPIO5_LEVEL_HIGH (0) + // 0x00100000 [20] : GPIO5_LEVEL_LOW (0) + // 0x00080000 [19] : GPIO4_EDGE_HIGH (0) + // 0x00040000 [18] : GPIO4_EDGE_LOW (0) + // 0x00020000 [17] : GPIO4_LEVEL_HIGH (0) + // 0x00010000 [16] : GPIO4_LEVEL_LOW (0) + // 0x00008000 [15] : GPIO3_EDGE_HIGH (0) + // 0x00004000 [14] : GPIO3_EDGE_LOW (0) + // 0x00002000 [13] : GPIO3_LEVEL_HIGH (0) + // 0x00001000 [12] : GPIO3_LEVEL_LOW (0) + // 0x00000800 [11] : GPIO2_EDGE_HIGH (0) + // 0x00000400 [10] : GPIO2_EDGE_LOW (0) + // 0x00000200 [9] : GPIO2_LEVEL_HIGH (0) + // 0x00000100 [8] : GPIO2_LEVEL_LOW (0) + // 0x00000080 [7] : GPIO1_EDGE_HIGH (0) + // 0x00000040 [6] : GPIO1_EDGE_LOW (0) + // 0x00000020 [5] : GPIO1_LEVEL_HIGH (0) + // 0x00000010 [4] : GPIO1_LEVEL_LOW (0) + // 0x00000008 [3] : GPIO0_EDGE_HIGH (0) + // 0x00000004 [2] : GPIO0_EDGE_LOW (0) + // 0x00000002 [1] : GPIO0_LEVEL_HIGH (0) + // 0x00000001 [0] : GPIO0_LEVEL_LOW (0) + io_ro_32 ints[4]; +} io_irq_ctrl_hw_t; + +/// \tag::iobank0_hw[] +typedef struct { + iobank0_status_ctrl_hw_t io[NUM_BANK0_GPIOS]; // 30 + + _REG_(IO_BANK0_INTR0_OFFSET) // IO_BANK0_INTR0 + // (Description copied from array index 0 register IO_BANK0_INTR0 applies similarly to other array indexes) + // + // Raw Interrupts + // 0x80000000 [31] : GPIO7_EDGE_HIGH (0) + // 0x40000000 [30] : GPIO7_EDGE_LOW (0) + // 0x20000000 [29] : GPIO7_LEVEL_HIGH (0) + // 0x10000000 [28] : GPIO7_LEVEL_LOW (0) + // 0x08000000 [27] : GPIO6_EDGE_HIGH (0) + // 0x04000000 [26] : GPIO6_EDGE_LOW (0) + // 0x02000000 [25] : GPIO6_LEVEL_HIGH (0) + // 0x01000000 [24] : GPIO6_LEVEL_LOW (0) + // 0x00800000 [23] : GPIO5_EDGE_HIGH (0) + // 0x00400000 [22] : GPIO5_EDGE_LOW (0) + // 0x00200000 [21] : GPIO5_LEVEL_HIGH (0) + // 0x00100000 [20] : GPIO5_LEVEL_LOW (0) + // 0x00080000 [19] : GPIO4_EDGE_HIGH (0) + // 0x00040000 [18] : GPIO4_EDGE_LOW (0) + // 0x00020000 [17] : GPIO4_LEVEL_HIGH (0) + // 0x00010000 [16] : GPIO4_LEVEL_LOW (0) + // 0x00008000 [15] : GPIO3_EDGE_HIGH (0) + // 0x00004000 [14] : GPIO3_EDGE_LOW (0) + // 0x00002000 [13] : GPIO3_LEVEL_HIGH (0) + // 0x00001000 [12] : GPIO3_LEVEL_LOW (0) + // 0x00000800 [11] : GPIO2_EDGE_HIGH (0) + // 0x00000400 [10] : GPIO2_EDGE_LOW (0) + // 0x00000200 [9] : GPIO2_LEVEL_HIGH (0) + // 0x00000100 [8] : GPIO2_LEVEL_LOW (0) + // 0x00000080 [7] : GPIO1_EDGE_HIGH (0) + // 0x00000040 [6] : GPIO1_EDGE_LOW (0) + // 0x00000020 [5] : GPIO1_LEVEL_HIGH (0) + // 0x00000010 [4] : GPIO1_LEVEL_LOW (0) + // 0x00000008 [3] : GPIO0_EDGE_HIGH (0) + // 0x00000004 [2] : GPIO0_EDGE_LOW (0) + // 0x00000002 [1] : GPIO0_LEVEL_HIGH (0) + // 0x00000001 [0] : GPIO0_LEVEL_LOW (0) + io_rw_32 intr[4]; + + io_irq_ctrl_hw_t proc0_irq_ctrl; + + io_irq_ctrl_hw_t proc1_irq_ctrl; + + io_irq_ctrl_hw_t dormant_wake_irq_ctrl; +} iobank0_hw_t; + +#define iobank0_hw ((iobank0_hw_t *const)IO_BANK0_BASE) +/// \end::iobank0_hw[] + +static_assert( NUM_BANK0_GPIOS == 30, ""); + +#endif diff --git a/arkanoid/pico/hardware/structs/ioqspi.h b/arkanoid/pico/hardware/structs/ioqspi.h new file mode 100644 index 0000000..b21607f --- /dev/null +++ b/arkanoid/pico/hardware/structs/ioqspi.h @@ -0,0 +1,174 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_IOQSPI_H +#define _HARDWARE_STRUCTS_IOQSPI_H + +#include "../address_mapped.h" +#include "../regs/io_qspi.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_io_qspi +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/io_qspi.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(IO_QSPI_GPIO_QSPI_SCLK_STATUS_OFFSET) // IO_QSPI_GPIO_QSPI_SCLK_STATUS + // GPIO status + // 0x04000000 [26] : IRQTOPROC (0): interrupt to processors, after override is applied + // 0x01000000 [24] : IRQFROMPAD (0): interrupt from pad before override is applied + // 0x00080000 [19] : INTOPERI (0): input signal to peripheral, after override is applied + // 0x00020000 [17] : INFROMPAD (0): input signal from pad, before override is applied + // 0x00002000 [13] : OETOPAD (0): output enable to pad after register override is applied + // 0x00001000 [12] : OEFROMPERI (0): output enable from selected peripheral, before register override is applied + // 0x00000200 [9] : OUTTOPAD (0): output signal to pad after register override is applied + // 0x00000100 [8] : OUTFROMPERI (0): output signal from selected peripheral, before register override is applied + io_ro_32 status; + + _REG_(IO_QSPI_GPIO_QSPI_SCLK_CTRL_OFFSET) // IO_QSPI_GPIO_QSPI_SCLK_CTRL + // GPIO control including function select and overrides + // 0x30000000 [29:28] : IRQOVER (0) + // 0x00030000 [17:16] : INOVER (0) + // 0x00003000 [13:12] : OEOVER (0) + // 0x00000300 [9:8] : OUTOVER (0) + // 0x0000001f [4:0] : FUNCSEL (0x1f): 0-31 -> selects pin function according to the gpio table + io_rw_32 ctrl; +} ioqspi_status_ctrl_hw_t; + +typedef struct { + _REG_(IO_QSPI_PROC0_INTE_OFFSET) // IO_QSPI_PROC0_INTE + // Interrupt Enable for proc0 + // 0x00800000 [23] : GPIO_QSPI_SD3_EDGE_HIGH (0) + // 0x00400000 [22] : GPIO_QSPI_SD3_EDGE_LOW (0) + // 0x00200000 [21] : GPIO_QSPI_SD3_LEVEL_HIGH (0) + // 0x00100000 [20] : GPIO_QSPI_SD3_LEVEL_LOW (0) + // 0x00080000 [19] : GPIO_QSPI_SD2_EDGE_HIGH (0) + // 0x00040000 [18] : GPIO_QSPI_SD2_EDGE_LOW (0) + // 0x00020000 [17] : GPIO_QSPI_SD2_LEVEL_HIGH (0) + // 0x00010000 [16] : GPIO_QSPI_SD2_LEVEL_LOW (0) + // 0x00008000 [15] : GPIO_QSPI_SD1_EDGE_HIGH (0) + // 0x00004000 [14] : GPIO_QSPI_SD1_EDGE_LOW (0) + // 0x00002000 [13] : GPIO_QSPI_SD1_LEVEL_HIGH (0) + // 0x00001000 [12] : GPIO_QSPI_SD1_LEVEL_LOW (0) + // 0x00000800 [11] : GPIO_QSPI_SD0_EDGE_HIGH (0) + // 0x00000400 [10] : GPIO_QSPI_SD0_EDGE_LOW (0) + // 0x00000200 [9] : GPIO_QSPI_SD0_LEVEL_HIGH (0) + // 0x00000100 [8] : GPIO_QSPI_SD0_LEVEL_LOW (0) + // 0x00000080 [7] : GPIO_QSPI_SS_EDGE_HIGH (0) + // 0x00000040 [6] : GPIO_QSPI_SS_EDGE_LOW (0) + // 0x00000020 [5] : GPIO_QSPI_SS_LEVEL_HIGH (0) + // 0x00000010 [4] : GPIO_QSPI_SS_LEVEL_LOW (0) + // 0x00000008 [3] : GPIO_QSPI_SCLK_EDGE_HIGH (0) + // 0x00000004 [2] : GPIO_QSPI_SCLK_EDGE_LOW (0) + // 0x00000002 [1] : GPIO_QSPI_SCLK_LEVEL_HIGH (0) + // 0x00000001 [0] : GPIO_QSPI_SCLK_LEVEL_LOW (0) + io_rw_32 inte; + + _REG_(IO_QSPI_PROC0_INTF_OFFSET) // IO_QSPI_PROC0_INTF + // Interrupt Force for proc0 + // 0x00800000 [23] : GPIO_QSPI_SD3_EDGE_HIGH (0) + // 0x00400000 [22] : GPIO_QSPI_SD3_EDGE_LOW (0) + // 0x00200000 [21] : GPIO_QSPI_SD3_LEVEL_HIGH (0) + // 0x00100000 [20] : GPIO_QSPI_SD3_LEVEL_LOW (0) + // 0x00080000 [19] : GPIO_QSPI_SD2_EDGE_HIGH (0) + // 0x00040000 [18] : GPIO_QSPI_SD2_EDGE_LOW (0) + // 0x00020000 [17] : GPIO_QSPI_SD2_LEVEL_HIGH (0) + // 0x00010000 [16] : GPIO_QSPI_SD2_LEVEL_LOW (0) + // 0x00008000 [15] : GPIO_QSPI_SD1_EDGE_HIGH (0) + // 0x00004000 [14] : GPIO_QSPI_SD1_EDGE_LOW (0) + // 0x00002000 [13] : GPIO_QSPI_SD1_LEVEL_HIGH (0) + // 0x00001000 [12] : GPIO_QSPI_SD1_LEVEL_LOW (0) + // 0x00000800 [11] : GPIO_QSPI_SD0_EDGE_HIGH (0) + // 0x00000400 [10] : GPIO_QSPI_SD0_EDGE_LOW (0) + // 0x00000200 [9] : GPIO_QSPI_SD0_LEVEL_HIGH (0) + // 0x00000100 [8] : GPIO_QSPI_SD0_LEVEL_LOW (0) + // 0x00000080 [7] : GPIO_QSPI_SS_EDGE_HIGH (0) + // 0x00000040 [6] : GPIO_QSPI_SS_EDGE_LOW (0) + // 0x00000020 [5] : GPIO_QSPI_SS_LEVEL_HIGH (0) + // 0x00000010 [4] : GPIO_QSPI_SS_LEVEL_LOW (0) + // 0x00000008 [3] : GPIO_QSPI_SCLK_EDGE_HIGH (0) + // 0x00000004 [2] : GPIO_QSPI_SCLK_EDGE_LOW (0) + // 0x00000002 [1] : GPIO_QSPI_SCLK_LEVEL_HIGH (0) + // 0x00000001 [0] : GPIO_QSPI_SCLK_LEVEL_LOW (0) + io_rw_32 intf; + + _REG_(IO_QSPI_PROC0_INTS_OFFSET) // IO_QSPI_PROC0_INTS + // Interrupt status after masking & forcing for proc0 + // 0x00800000 [23] : GPIO_QSPI_SD3_EDGE_HIGH (0) + // 0x00400000 [22] : GPIO_QSPI_SD3_EDGE_LOW (0) + // 0x00200000 [21] : GPIO_QSPI_SD3_LEVEL_HIGH (0) + // 0x00100000 [20] : GPIO_QSPI_SD3_LEVEL_LOW (0) + // 0x00080000 [19] : GPIO_QSPI_SD2_EDGE_HIGH (0) + // 0x00040000 [18] : GPIO_QSPI_SD2_EDGE_LOW (0) + // 0x00020000 [17] : GPIO_QSPI_SD2_LEVEL_HIGH (0) + // 0x00010000 [16] : GPIO_QSPI_SD2_LEVEL_LOW (0) + // 0x00008000 [15] : GPIO_QSPI_SD1_EDGE_HIGH (0) + // 0x00004000 [14] : GPIO_QSPI_SD1_EDGE_LOW (0) + // 0x00002000 [13] : GPIO_QSPI_SD1_LEVEL_HIGH (0) + // 0x00001000 [12] : GPIO_QSPI_SD1_LEVEL_LOW (0) + // 0x00000800 [11] : GPIO_QSPI_SD0_EDGE_HIGH (0) + // 0x00000400 [10] : GPIO_QSPI_SD0_EDGE_LOW (0) + // 0x00000200 [9] : GPIO_QSPI_SD0_LEVEL_HIGH (0) + // 0x00000100 [8] : GPIO_QSPI_SD0_LEVEL_LOW (0) + // 0x00000080 [7] : GPIO_QSPI_SS_EDGE_HIGH (0) + // 0x00000040 [6] : GPIO_QSPI_SS_EDGE_LOW (0) + // 0x00000020 [5] : GPIO_QSPI_SS_LEVEL_HIGH (0) + // 0x00000010 [4] : GPIO_QSPI_SS_LEVEL_LOW (0) + // 0x00000008 [3] : GPIO_QSPI_SCLK_EDGE_HIGH (0) + // 0x00000004 [2] : GPIO_QSPI_SCLK_EDGE_LOW (0) + // 0x00000002 [1] : GPIO_QSPI_SCLK_LEVEL_HIGH (0) + // 0x00000001 [0] : GPIO_QSPI_SCLK_LEVEL_LOW (0) + io_ro_32 ints; +} io_qspi_ctrl_hw_t; + +typedef struct { + ioqspi_status_ctrl_hw_t io[NUM_QSPI_GPIOS]; // 6 + + _REG_(IO_QSPI_INTR_OFFSET) // IO_QSPI_INTR + // Raw Interrupts + // 0x00800000 [23] : GPIO_QSPI_SD3_EDGE_HIGH (0) + // 0x00400000 [22] : GPIO_QSPI_SD3_EDGE_LOW (0) + // 0x00200000 [21] : GPIO_QSPI_SD3_LEVEL_HIGH (0) + // 0x00100000 [20] : GPIO_QSPI_SD3_LEVEL_LOW (0) + // 0x00080000 [19] : GPIO_QSPI_SD2_EDGE_HIGH (0) + // 0x00040000 [18] : GPIO_QSPI_SD2_EDGE_LOW (0) + // 0x00020000 [17] : GPIO_QSPI_SD2_LEVEL_HIGH (0) + // 0x00010000 [16] : GPIO_QSPI_SD2_LEVEL_LOW (0) + // 0x00008000 [15] : GPIO_QSPI_SD1_EDGE_HIGH (0) + // 0x00004000 [14] : GPIO_QSPI_SD1_EDGE_LOW (0) + // 0x00002000 [13] : GPIO_QSPI_SD1_LEVEL_HIGH (0) + // 0x00001000 [12] : GPIO_QSPI_SD1_LEVEL_LOW (0) + // 0x00000800 [11] : GPIO_QSPI_SD0_EDGE_HIGH (0) + // 0x00000400 [10] : GPIO_QSPI_SD0_EDGE_LOW (0) + // 0x00000200 [9] : GPIO_QSPI_SD0_LEVEL_HIGH (0) + // 0x00000100 [8] : GPIO_QSPI_SD0_LEVEL_LOW (0) + // 0x00000080 [7] : GPIO_QSPI_SS_EDGE_HIGH (0) + // 0x00000040 [6] : GPIO_QSPI_SS_EDGE_LOW (0) + // 0x00000020 [5] : GPIO_QSPI_SS_LEVEL_HIGH (0) + // 0x00000010 [4] : GPIO_QSPI_SS_LEVEL_LOW (0) + // 0x00000008 [3] : GPIO_QSPI_SCLK_EDGE_HIGH (0) + // 0x00000004 [2] : GPIO_QSPI_SCLK_EDGE_LOW (0) + // 0x00000002 [1] : GPIO_QSPI_SCLK_LEVEL_HIGH (0) + // 0x00000001 [0] : GPIO_QSPI_SCLK_LEVEL_LOW (0) + io_rw_32 intr; + + io_qspi_ctrl_hw_t proc0_qspi_ctrl; + + io_qspi_ctrl_hw_t proc1_qspi_ctrl; + + io_qspi_ctrl_hw_t dormant_wake_qspi_ctrl; +} ioqspi_hw_t; + +#define ioqspi_hw ((ioqspi_hw_t *const)IO_QSPI_BASE) + +static_assert( NUM_QSPI_GPIOS == 6, ""); + +#endif diff --git a/arkanoid/pico/hardware/structs/mpu.h b/arkanoid/pico/hardware/structs/mpu.h new file mode 100644 index 0000000..bf09782 --- /dev/null +++ b/arkanoid/pico/hardware/structs/mpu.h @@ -0,0 +1,61 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_MPU_H +#define _HARDWARE_STRUCTS_MPU_H + +#include "../address_mapped.h" +#include "../regs/m0plus.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_m0plus +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/m0plus.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(M0PLUS_MPU_TYPE_OFFSET) // M0PLUS_MPU_TYPE + // Read the MPU Type Register to determine if the processor implements an MPU, and how many regions the MPU supports + // 0x00ff0000 [23:16] : IREGION (0): Instruction region + // 0x0000ff00 [15:8] : DREGION (0x8): Number of regions supported by the MPU + // 0x00000001 [0] : SEPARATE (0): Indicates support for separate instruction and data address maps + io_ro_32 type; + + _REG_(M0PLUS_MPU_CTRL_OFFSET) // M0PLUS_MPU_CTRL + // Use the MPU Control Register to enable and disable the MPU, and to control whether the default memory map is enabled... + // 0x00000004 [2] : PRIVDEFENA (0): Controls whether the default memory map is enabled as a background region for... + // 0x00000002 [1] : HFNMIENA (0): Controls the use of the MPU for HardFaults and NMIs + // 0x00000001 [0] : ENABLE (0): Enables the MPU + io_rw_32 ctrl; + + _REG_(M0PLUS_MPU_RNR_OFFSET) // M0PLUS_MPU_RNR + // Use the MPU Region Number Register to select the region currently accessed by MPU_RBAR and MPU_RASR + // 0x0000000f [3:0] : REGION (0): Indicates the MPU region referenced by the MPU_RBAR and MPU_RASR registers + io_rw_32 rnr; + + _REG_(M0PLUS_MPU_RBAR_OFFSET) // M0PLUS_MPU_RBAR + // Read the MPU Region Base Address Register to determine the base address of the region identified by MPU_RNR + // 0xffffff00 [31:8] : ADDR (0): Base address of the region + // 0x00000010 [4] : VALID (0): On writes, indicates whether the write must update the base address of the region... + // 0x0000000f [3:0] : REGION (0): On writes, specifies the number of the region whose base address to update provided... + io_rw_32 rbar; + + _REG_(M0PLUS_MPU_RASR_OFFSET) // M0PLUS_MPU_RASR + // Use the MPU Region Attribute and Size Register to define the size, access behaviour and memory type of the region... + // 0xffff0000 [31:16] : ATTRS (0): The MPU Region Attribute field + // 0x0000ff00 [15:8] : SRD (0): Subregion Disable + // 0x0000003e [5:1] : SIZE (0): Indicates the region size + // 0x00000001 [0] : ENABLE (0): Enables the region + io_rw_32 rasr; +} mpu_hw_t; + +#define mpu_hw ((mpu_hw_t *const)(PPB_BASE + M0PLUS_MPU_TYPE_OFFSET)) + +#endif diff --git a/arkanoid/pico/hardware/structs/pads_qspi.h b/arkanoid/pico/hardware/structs/pads_qspi.h new file mode 100644 index 0000000..07fa454 --- /dev/null +++ b/arkanoid/pico/hardware/structs/pads_qspi.h @@ -0,0 +1,47 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_PADS_QSPI_H +#define _HARDWARE_STRUCTS_PADS_QSPI_H + +#include "../address_mapped.h" +#include "../regs/pads_qspi.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_pads_qspi +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/pads_qspi.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(PADS_QSPI_VOLTAGE_SELECT_OFFSET) // PADS_QSPI_VOLTAGE_SELECT + // Voltage select + // 0x00000001 [0] : VOLTAGE_SELECT (0) + io_rw_32 voltage_select; + + _REG_(PADS_QSPI_GPIO_QSPI_SCLK_OFFSET) // PADS_QSPI_GPIO_QSPI_SCLK + // (Description copied from array index 0 register PADS_QSPI_GPIO_QSPI_SCLK applies similarly to other array indexes) + // + // Pad control register + // 0x00000080 [7] : OD (0): Output disable + // 0x00000040 [6] : IE (1): Input enable + // 0x00000030 [5:4] : DRIVE (1): Drive strength + // 0x00000008 [3] : PUE (0): Pull up enable + // 0x00000004 [2] : PDE (1): Pull down enable + // 0x00000002 [1] : SCHMITT (1): Enable schmitt trigger + // 0x00000001 [0] : SLEWFAST (0): Slew rate control + io_rw_32 io[NUM_QSPI_GPIOS]; // 6 +} pads_qspi_hw_t; + +#define pads_qspi_hw ((pads_qspi_hw_t *const)PADS_QSPI_BASE) + +static_assert( NUM_QSPI_GPIOS == 6, ""); + +#endif diff --git a/arkanoid/pico/hardware/structs/padsbank0.h b/arkanoid/pico/hardware/structs/padsbank0.h new file mode 100644 index 0000000..471e361 --- /dev/null +++ b/arkanoid/pico/hardware/structs/padsbank0.h @@ -0,0 +1,47 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_PADSBANK0_H +#define _HARDWARE_STRUCTS_PADSBANK0_H + +#include "../address_mapped.h" +#include "../regs/pads_bank0.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_pads_bank0 +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/pads_bank0.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(PADS_BANK0_VOLTAGE_SELECT_OFFSET) // PADS_BANK0_VOLTAGE_SELECT + // Voltage select + // 0x00000001 [0] : VOLTAGE_SELECT (0) + io_rw_32 voltage_select; + + _REG_(PADS_BANK0_GPIO0_OFFSET) // PADS_BANK0_GPIO0 + // (Description copied from array index 0 register PADS_BANK0_GPIO0 applies similarly to other array indexes) + // + // Pad control register + // 0x00000080 [7] : OD (0): Output disable + // 0x00000040 [6] : IE (1): Input enable + // 0x00000030 [5:4] : DRIVE (1): Drive strength + // 0x00000008 [3] : PUE (0): Pull up enable + // 0x00000004 [2] : PDE (1): Pull down enable + // 0x00000002 [1] : SCHMITT (1): Enable schmitt trigger + // 0x00000001 [0] : SLEWFAST (0): Slew rate control + io_rw_32 io[NUM_BANK0_GPIOS]; // 30 +} padsbank0_hw_t; + +#define padsbank0_hw ((padsbank0_hw_t *const)PADS_BANK0_BASE) + +static_assert( NUM_BANK0_GPIOS == 30, ""); + +#endif diff --git a/arkanoid/pico/hardware/structs/pio.h b/arkanoid/pico/hardware/structs/pio.h new file mode 100644 index 0000000..e52766d --- /dev/null +++ b/arkanoid/pico/hardware/structs/pio.h @@ -0,0 +1,284 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_PIO_H +#define _HARDWARE_STRUCTS_PIO_H + +#include "../address_mapped.h" +#include "../regs/pio.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_pio +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/pio.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct pio_sm_hw { + _REG_(PIO_SM0_CLKDIV_OFFSET) // PIO_SM0_CLKDIV + // Clock divisor register for state machine 0 + // 0xffff0000 [31:16] : INT (1): Effective frequency is sysclk/(int + frac/256) + // 0x0000ff00 [15:8] : FRAC (0): Fractional part of clock divisor + io_rw_32 clkdiv; + + _REG_(PIO_SM0_EXECCTRL_OFFSET) // PIO_SM0_EXECCTRL + // Execution/behavioural settings for state machine 0 + // 0x80000000 [31] : EXEC_STALLED (0): If 1, an instruction written to SMx_INSTR is stalled, and latched by the state machine + // 0x40000000 [30] : SIDE_EN (0): If 1, the MSB of the Delay/Side-set instruction field is used as side-set enable,... + // 0x20000000 [29] : SIDE_PINDIR (0): If 1, side-set data is asserted to pin directions, instead of pin values + // 0x1f000000 [28:24] : JMP_PIN (0): The GPIO number to use as condition for JMP PIN + // 0x00f80000 [23:19] : OUT_EN_SEL (0): Which data bit to use for inline OUT enable + // 0x00040000 [18] : INLINE_OUT_EN (0): If 1, use a bit of OUT data as an auxiliary write enable + // 0x00020000 [17] : OUT_STICKY (0): Continuously assert the most recent OUT/SET to the pins + // 0x0001f000 [16:12] : WRAP_TOP (0x1f): After reaching this address, execution is wrapped to wrap_bottom + // 0x00000f80 [11:7] : WRAP_BOTTOM (0): After reaching wrap_top, execution is wrapped to this address + // 0x00000010 [4] : STATUS_SEL (0): Comparison used for the MOV x, STATUS instruction + // 0x0000000f [3:0] : STATUS_N (0): Comparison level for the MOV x, STATUS instruction + io_rw_32 execctrl; + + _REG_(PIO_SM0_SHIFTCTRL_OFFSET) // PIO_SM0_SHIFTCTRL + // Control behaviour of the input/output shift registers for state machine 0 + // 0x80000000 [31] : FJOIN_RX (0): When 1, RX FIFO steals the TX FIFO's storage, and becomes twice as deep + // 0x40000000 [30] : FJOIN_TX (0): When 1, TX FIFO steals the RX FIFO's storage, and becomes twice as deep + // 0x3e000000 [29:25] : PULL_THRESH (0): Number of bits shifted out of OSR before autopull, or conditional pull (PULL... + // 0x01f00000 [24:20] : PUSH_THRESH (0): Number of bits shifted into ISR before autopush, or conditional push (PUSH... + // 0x00080000 [19] : OUT_SHIFTDIR (1): 1 = shift out of output shift register to right + // 0x00040000 [18] : IN_SHIFTDIR (1): 1 = shift input shift register to right (data enters from left) + // 0x00020000 [17] : AUTOPULL (0): Pull automatically when the output shift register is emptied, i + // 0x00010000 [16] : AUTOPUSH (0): Push automatically when the input shift register is filled, i + io_rw_32 shiftctrl; + + _REG_(PIO_SM0_ADDR_OFFSET) // PIO_SM0_ADDR + // Current instruction address of state machine 0 + // 0x0000001f [4:0] : SM0_ADDR (0) + io_ro_32 addr; + + _REG_(PIO_SM0_INSTR_OFFSET) // PIO_SM0_INSTR + // Read to see the instruction currently addressed by state machine 0's program counter + // 0x0000ffff [15:0] : SM0_INSTR (0) + io_rw_32 instr; + + _REG_(PIO_SM0_PINCTRL_OFFSET) // PIO_SM0_PINCTRL + // State machine pin control + // 0xe0000000 [31:29] : SIDESET_COUNT (0): The number of MSBs of the Delay/Side-set instruction field which are used... + // 0x1c000000 [28:26] : SET_COUNT (0x5): The number of pins asserted by a SET + // 0x03f00000 [25:20] : OUT_COUNT (0): The number of pins asserted by an OUT PINS, OUT PINDIRS or MOV PINS instruction + // 0x000f8000 [19:15] : IN_BASE (0): The pin which is mapped to the least-significant bit of a state machine's IN data bus + // 0x00007c00 [14:10] : SIDESET_BASE (0): The lowest-numbered pin that will be affected by a side-set operation + // 0x000003e0 [9:5] : SET_BASE (0): The lowest-numbered pin that will be affected by a SET PINS or SET PINDIRS instruction + // 0x0000001f [4:0] : OUT_BASE (0): The lowest-numbered pin that will be affected by an OUT PINS, OUT PINDIRS or MOV... + io_rw_32 pinctrl; +} pio_sm_hw_t; + +typedef struct { + _REG_(PIO_CTRL_OFFSET) // PIO_CTRL + // PIO control register + // 0x00000f00 [11:8] : CLKDIV_RESTART (0): Restart a state machine's clock divider from an initial phase of 0 + // 0x000000f0 [7:4] : SM_RESTART (0): Write 1 to instantly clear internal SM state which may be otherwise difficult... + // 0x0000000f [3:0] : SM_ENABLE (0): Enable/disable each of the four state machines by writing 1/0 to each of these four bits + io_rw_32 ctrl; + + _REG_(PIO_FSTAT_OFFSET) // PIO_FSTAT + // FIFO status register + // 0x0f000000 [27:24] : TXEMPTY (0xf): State machine TX FIFO is empty + // 0x000f0000 [19:16] : TXFULL (0): State machine TX FIFO is full + // 0x00000f00 [11:8] : RXEMPTY (0xf): State machine RX FIFO is empty + // 0x0000000f [3:0] : RXFULL (0): State machine RX FIFO is full + io_ro_32 fstat; + + _REG_(PIO_FDEBUG_OFFSET) // PIO_FDEBUG + // FIFO debug register + // 0x0f000000 [27:24] : TXSTALL (0): State machine has stalled on empty TX FIFO during a blocking PULL, or an OUT with... + // 0x000f0000 [19:16] : TXOVER (0): TX FIFO overflow (i + // 0x00000f00 [11:8] : RXUNDER (0): RX FIFO underflow (i + // 0x0000000f [3:0] : RXSTALL (0): State machine has stalled on full RX FIFO during a blocking PUSH, or an IN with... + io_rw_32 fdebug; + + _REG_(PIO_FLEVEL_OFFSET) // PIO_FLEVEL + // FIFO levels + // 0xf0000000 [31:28] : RX3 (0) + // 0x0f000000 [27:24] : TX3 (0) + // 0x00f00000 [23:20] : RX2 (0) + // 0x000f0000 [19:16] : TX2 (0) + // 0x0000f000 [15:12] : RX1 (0) + // 0x00000f00 [11:8] : TX1 (0) + // 0x000000f0 [7:4] : RX0 (0) + // 0x0000000f [3:0] : TX0 (0) + io_ro_32 flevel; + + _REG_(PIO_TXF0_OFFSET) // PIO_TXF0 + // (Description copied from array index 0 register PIO_TXF0 applies similarly to other array indexes) + // + // Direct write access to the TX FIFO for this state machine + io_wo_32 txf[NUM_PIO_STATE_MACHINES]; // 4 + + _REG_(PIO_RXF0_OFFSET) // PIO_RXF0 + // (Description copied from array index 0 register PIO_RXF0 applies similarly to other array indexes) + // + // Direct read access to the RX FIFO for this state machine + io_ro_32 rxf[NUM_PIO_STATE_MACHINES]; // 4 + + _REG_(PIO_IRQ_OFFSET) // PIO_IRQ + // State machine IRQ flags register + // 0x000000ff [7:0] : IRQ (0) + io_rw_32 irq; + + _REG_(PIO_IRQ_FORCE_OFFSET) // PIO_IRQ_FORCE + // Writing a 1 to each of these bits will forcibly assert the corresponding IRQ + // 0x000000ff [7:0] : IRQ_FORCE (0) + io_wo_32 irq_force; + + _REG_(PIO_INPUT_SYNC_BYPASS_OFFSET) // PIO_INPUT_SYNC_BYPASS + // There is a 2-flipflop synchronizer on each GPIO input, which protects PIO logic from metastabilities + io_rw_32 input_sync_bypass; + + _REG_(PIO_DBG_PADOUT_OFFSET) // PIO_DBG_PADOUT + // Read to sample the pad output values PIO is currently driving to the GPIOs + io_ro_32 dbg_padout; + + _REG_(PIO_DBG_PADOE_OFFSET) // PIO_DBG_PADOE + // Read to sample the pad output enables (direction) PIO is currently driving to the GPIOs + io_ro_32 dbg_padoe; + + _REG_(PIO_DBG_CFGINFO_OFFSET) // PIO_DBG_CFGINFO + // The PIO hardware has some free parameters that may vary between chip products + // 0x003f0000 [21:16] : IMEM_SIZE (0): The size of the instruction memory, measured in units of one instruction + // 0x00000f00 [11:8] : SM_COUNT (0): The number of state machines this PIO instance is equipped with + // 0x0000003f [5:0] : FIFO_DEPTH (0): The depth of the state machine TX/RX FIFOs, measured in words + io_ro_32 dbg_cfginfo; + + _REG_(PIO_INSTR_MEM0_OFFSET) // PIO_INSTR_MEM0 + // (Description copied from array index 0 register PIO_INSTR_MEM0 applies similarly to other array indexes) + // + // Write-only access to instruction memory location 0 + // 0x0000ffff [15:0] : INSTR_MEM0 (0) + io_wo_32 instr_mem[PIO_INSTRUCTION_COUNT]; // 32 + + pio_sm_hw_t sm[NUM_PIO_STATE_MACHINES]; // 4 + + _REG_(PIO_INTR_OFFSET) // PIO_INTR + // Raw Interrupts + // 0x00000800 [11] : SM3 (0) + // 0x00000400 [10] : SM2 (0) + // 0x00000200 [9] : SM1 (0) + // 0x00000100 [8] : SM0 (0) + // 0x00000080 [7] : SM3_TXNFULL (0) + // 0x00000040 [6] : SM2_TXNFULL (0) + // 0x00000020 [5] : SM1_TXNFULL (0) + // 0x00000010 [4] : SM0_TXNFULL (0) + // 0x00000008 [3] : SM3_RXNEMPTY (0) + // 0x00000004 [2] : SM2_RXNEMPTY (0) + // 0x00000002 [1] : SM1_RXNEMPTY (0) + // 0x00000001 [0] : SM0_RXNEMPTY (0) + io_ro_32 intr; + + _REG_(PIO_IRQ0_INTE_OFFSET) // PIO_IRQ0_INTE + // Interrupt Enable for irq0 + // 0x00000800 [11] : SM3 (0) + // 0x00000400 [10] : SM2 (0) + // 0x00000200 [9] : SM1 (0) + // 0x00000100 [8] : SM0 (0) + // 0x00000080 [7] : SM3_TXNFULL (0) + // 0x00000040 [6] : SM2_TXNFULL (0) + // 0x00000020 [5] : SM1_TXNFULL (0) + // 0x00000010 [4] : SM0_TXNFULL (0) + // 0x00000008 [3] : SM3_RXNEMPTY (0) + // 0x00000004 [2] : SM2_RXNEMPTY (0) + // 0x00000002 [1] : SM1_RXNEMPTY (0) + // 0x00000001 [0] : SM0_RXNEMPTY (0) + io_rw_32 inte0; + + _REG_(PIO_IRQ0_INTF_OFFSET) // PIO_IRQ0_INTF + // Interrupt Force for irq0 + // 0x00000800 [11] : SM3 (0) + // 0x00000400 [10] : SM2 (0) + // 0x00000200 [9] : SM1 (0) + // 0x00000100 [8] : SM0 (0) + // 0x00000080 [7] : SM3_TXNFULL (0) + // 0x00000040 [6] : SM2_TXNFULL (0) + // 0x00000020 [5] : SM1_TXNFULL (0) + // 0x00000010 [4] : SM0_TXNFULL (0) + // 0x00000008 [3] : SM3_RXNEMPTY (0) + // 0x00000004 [2] : SM2_RXNEMPTY (0) + // 0x00000002 [1] : SM1_RXNEMPTY (0) + // 0x00000001 [0] : SM0_RXNEMPTY (0) + io_rw_32 intf0; + + _REG_(PIO_IRQ0_INTS_OFFSET) // PIO_IRQ0_INTS + // Interrupt status after masking & forcing for irq0 + // 0x00000800 [11] : SM3 (0) + // 0x00000400 [10] : SM2 (0) + // 0x00000200 [9] : SM1 (0) + // 0x00000100 [8] : SM0 (0) + // 0x00000080 [7] : SM3_TXNFULL (0) + // 0x00000040 [6] : SM2_TXNFULL (0) + // 0x00000020 [5] : SM1_TXNFULL (0) + // 0x00000010 [4] : SM0_TXNFULL (0) + // 0x00000008 [3] : SM3_RXNEMPTY (0) + // 0x00000004 [2] : SM2_RXNEMPTY (0) + // 0x00000002 [1] : SM1_RXNEMPTY (0) + // 0x00000001 [0] : SM0_RXNEMPTY (0) + io_ro_32 ints0; + + _REG_(PIO_IRQ1_INTE_OFFSET) // PIO_IRQ1_INTE + // Interrupt Enable for irq1 + // 0x00000800 [11] : SM3 (0) + // 0x00000400 [10] : SM2 (0) + // 0x00000200 [9] : SM1 (0) + // 0x00000100 [8] : SM0 (0) + // 0x00000080 [7] : SM3_TXNFULL (0) + // 0x00000040 [6] : SM2_TXNFULL (0) + // 0x00000020 [5] : SM1_TXNFULL (0) + // 0x00000010 [4] : SM0_TXNFULL (0) + // 0x00000008 [3] : SM3_RXNEMPTY (0) + // 0x00000004 [2] : SM2_RXNEMPTY (0) + // 0x00000002 [1] : SM1_RXNEMPTY (0) + // 0x00000001 [0] : SM0_RXNEMPTY (0) + io_rw_32 inte1; + + _REG_(PIO_IRQ1_INTF_OFFSET) // PIO_IRQ1_INTF + // Interrupt Force for irq1 + // 0x00000800 [11] : SM3 (0) + // 0x00000400 [10] : SM2 (0) + // 0x00000200 [9] : SM1 (0) + // 0x00000100 [8] : SM0 (0) + // 0x00000080 [7] : SM3_TXNFULL (0) + // 0x00000040 [6] : SM2_TXNFULL (0) + // 0x00000020 [5] : SM1_TXNFULL (0) + // 0x00000010 [4] : SM0_TXNFULL (0) + // 0x00000008 [3] : SM3_RXNEMPTY (0) + // 0x00000004 [2] : SM2_RXNEMPTY (0) + // 0x00000002 [1] : SM1_RXNEMPTY (0) + // 0x00000001 [0] : SM0_RXNEMPTY (0) + io_rw_32 intf1; + + _REG_(PIO_IRQ1_INTS_OFFSET) // PIO_IRQ1_INTS + // Interrupt status after masking & forcing for irq1 + // 0x00000800 [11] : SM3 (0) + // 0x00000400 [10] : SM2 (0) + // 0x00000200 [9] : SM1 (0) + // 0x00000100 [8] : SM0 (0) + // 0x00000080 [7] : SM3_TXNFULL (0) + // 0x00000040 [6] : SM2_TXNFULL (0) + // 0x00000020 [5] : SM1_TXNFULL (0) + // 0x00000010 [4] : SM0_TXNFULL (0) + // 0x00000008 [3] : SM3_RXNEMPTY (0) + // 0x00000004 [2] : SM2_RXNEMPTY (0) + // 0x00000002 [1] : SM1_RXNEMPTY (0) + // 0x00000001 [0] : SM0_RXNEMPTY (0) + io_ro_32 ints1; +} pio_hw_t; + +#define pio0_hw ((pio_hw_t *const)PIO0_BASE) +#define pio1_hw ((pio_hw_t *const)PIO1_BASE) + +static_assert( NUM_PIO_STATE_MACHINES == 4, ""); +static_assert( PIO_INSTRUCTION_COUNT == 32, ""); + +#endif diff --git a/arkanoid/pico/hardware/structs/pll.h b/arkanoid/pico/hardware/structs/pll.h new file mode 100644 index 0000000..8331052 --- /dev/null +++ b/arkanoid/pico/hardware/structs/pll.h @@ -0,0 +1,56 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_PLL_H +#define _HARDWARE_STRUCTS_PLL_H + +#include "../address_mapped.h" +#include "../regs/pll.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_pll +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/pll.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +/// \tag::pll_hw[] +typedef struct { + _REG_(PLL_CS_OFFSET) // PLL_CS + // Control and Status + // 0x80000000 [31] : LOCK (0): PLL is locked + // 0x00000100 [8] : BYPASS (0): Passes the reference clock to the output instead of the divided VCO + // 0x0000003f [5:0] : REFDIV (1): Divides the PLL input reference clock + io_rw_32 cs; + + _REG_(PLL_PWR_OFFSET) // PLL_PWR + // Controls the PLL power modes + // 0x00000020 [5] : VCOPD (1): PLL VCO powerdown + // 0x00000008 [3] : POSTDIVPD (1): PLL post divider powerdown + // 0x00000004 [2] : DSMPD (1): PLL DSM powerdown + // 0x00000001 [0] : PD (1): PLL powerdown + io_rw_32 pwr; + + _REG_(PLL_FBDIV_INT_OFFSET) // PLL_FBDIV_INT + // Feedback divisor + // 0x00000fff [11:0] : FBDIV_INT (0): see ctrl reg description for constraints + io_rw_32 fbdiv_int; + + _REG_(PLL_PRIM_OFFSET) // PLL_PRIM + // Controls the PLL post dividers for the primary output + // 0x00070000 [18:16] : POSTDIV1 (0x7): divide by 1-7 + // 0x00007000 [14:12] : POSTDIV2 (0x7): divide by 1-7 + io_rw_32 prim; +} pll_hw_t; + +#define pll_sys_hw ((pll_hw_t *const)PLL_SYS_BASE) +#define pll_usb_hw ((pll_hw_t *const)PLL_USB_BASE) +/// \end::pll_hw[] + +#endif diff --git a/arkanoid/pico/hardware/structs/psm.h b/arkanoid/pico/hardware/structs/psm.h new file mode 100644 index 0000000..d293a23 --- /dev/null +++ b/arkanoid/pico/hardware/structs/psm.h @@ -0,0 +1,111 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_PSM_H +#define _HARDWARE_STRUCTS_PSM_H + +#include "../address_mapped.h" +#include "../regs/psm.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_psm +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/psm.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(PSM_FRCE_ON_OFFSET) // PSM_FRCE_ON + // Force block out of reset (i + // 0x00010000 [16] : proc1 (0) + // 0x00008000 [15] : proc0 (0) + // 0x00004000 [14] : sio (0) + // 0x00002000 [13] : vreg_and_chip_reset (0) + // 0x00001000 [12] : xip (0) + // 0x00000800 [11] : sram5 (0) + // 0x00000400 [10] : sram4 (0) + // 0x00000200 [9] : sram3 (0) + // 0x00000100 [8] : sram2 (0) + // 0x00000080 [7] : sram1 (0) + // 0x00000040 [6] : sram0 (0) + // 0x00000020 [5] : rom (0) + // 0x00000010 [4] : busfabric (0) + // 0x00000008 [3] : resets (0) + // 0x00000004 [2] : clocks (0) + // 0x00000002 [1] : xosc (0) + // 0x00000001 [0] : rosc (0) + io_rw_32 frce_on; + + _REG_(PSM_FRCE_OFF_OFFSET) // PSM_FRCE_OFF + // Force into reset (i + // 0x00010000 [16] : proc1 (0) + // 0x00008000 [15] : proc0 (0) + // 0x00004000 [14] : sio (0) + // 0x00002000 [13] : vreg_and_chip_reset (0) + // 0x00001000 [12] : xip (0) + // 0x00000800 [11] : sram5 (0) + // 0x00000400 [10] : sram4 (0) + // 0x00000200 [9] : sram3 (0) + // 0x00000100 [8] : sram2 (0) + // 0x00000080 [7] : sram1 (0) + // 0x00000040 [6] : sram0 (0) + // 0x00000020 [5] : rom (0) + // 0x00000010 [4] : busfabric (0) + // 0x00000008 [3] : resets (0) + // 0x00000004 [2] : clocks (0) + // 0x00000002 [1] : xosc (0) + // 0x00000001 [0] : rosc (0) + io_rw_32 frce_off; + + _REG_(PSM_WDSEL_OFFSET) // PSM_WDSEL + // Set to 1 if this peripheral should be reset when the watchdog fires + // 0x00010000 [16] : proc1 (0) + // 0x00008000 [15] : proc0 (0) + // 0x00004000 [14] : sio (0) + // 0x00002000 [13] : vreg_and_chip_reset (0) + // 0x00001000 [12] : xip (0) + // 0x00000800 [11] : sram5 (0) + // 0x00000400 [10] : sram4 (0) + // 0x00000200 [9] : sram3 (0) + // 0x00000100 [8] : sram2 (0) + // 0x00000080 [7] : sram1 (0) + // 0x00000040 [6] : sram0 (0) + // 0x00000020 [5] : rom (0) + // 0x00000010 [4] : busfabric (0) + // 0x00000008 [3] : resets (0) + // 0x00000004 [2] : clocks (0) + // 0x00000002 [1] : xosc (0) + // 0x00000001 [0] : rosc (0) + io_rw_32 wdsel; + + _REG_(PSM_DONE_OFFSET) // PSM_DONE + // Indicates the peripheral's registers are ready to access + // 0x00010000 [16] : proc1 (0) + // 0x00008000 [15] : proc0 (0) + // 0x00004000 [14] : sio (0) + // 0x00002000 [13] : vreg_and_chip_reset (0) + // 0x00001000 [12] : xip (0) + // 0x00000800 [11] : sram5 (0) + // 0x00000400 [10] : sram4 (0) + // 0x00000200 [9] : sram3 (0) + // 0x00000100 [8] : sram2 (0) + // 0x00000080 [7] : sram1 (0) + // 0x00000040 [6] : sram0 (0) + // 0x00000020 [5] : rom (0) + // 0x00000010 [4] : busfabric (0) + // 0x00000008 [3] : resets (0) + // 0x00000004 [2] : clocks (0) + // 0x00000002 [1] : xosc (0) + // 0x00000001 [0] : rosc (0) + io_ro_32 done; +} psm_hw_t; + +#define psm_hw ((psm_hw_t *const)PSM_BASE) + +#endif diff --git a/arkanoid/pico/hardware/structs/pwm.h b/arkanoid/pico/hardware/structs/pwm.h new file mode 100644 index 0000000..18818f6 --- /dev/null +++ b/arkanoid/pico/hardware/structs/pwm.h @@ -0,0 +1,126 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_PWM_H +#define _HARDWARE_STRUCTS_PWM_H + +#include "../address_mapped.h" +#include "../regs/pwm.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_pwm +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/pwm.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct pwm_slice_hw { + _REG_(PWM_CH0_CSR_OFFSET) // PWM_CH0_CSR + // Control and status register + // 0x00000080 [7] : PH_ADV (0): Advance the phase of the counter by 1 count, while it is running + // 0x00000040 [6] : PH_RET (0): Retard the phase of the counter by 1 count, while it is running + // 0x00000030 [5:4] : DIVMODE (0) + // 0x00000008 [3] : B_INV (0): Invert output B + // 0x00000004 [2] : A_INV (0): Invert output A + // 0x00000002 [1] : PH_CORRECT (0): 1: Enable phase-correct modulation + // 0x00000001 [0] : EN (0): Enable the PWM channel + io_rw_32 csr; + + _REG_(PWM_CH0_DIV_OFFSET) // PWM_CH0_DIV + // INT and FRAC form a fixed-point fractional number + // 0x00000ff0 [11:4] : INT (1) + // 0x0000000f [3:0] : FRAC (0) + io_rw_32 div; + + _REG_(PWM_CH0_CTR_OFFSET) // PWM_CH0_CTR + // Direct access to the PWM counter + // 0x0000ffff [15:0] : CH0_CTR (0) + io_rw_32 ctr; + + _REG_(PWM_CH0_CC_OFFSET) // PWM_CH0_CC + // Counter compare values + // 0xffff0000 [31:16] : B (0) + // 0x0000ffff [15:0] : A (0) + io_rw_32 cc; + + _REG_(PWM_CH0_TOP_OFFSET) // PWM_CH0_TOP + // Counter wrap value + // 0x0000ffff [15:0] : CH0_TOP (0xffff) + io_rw_32 top; +} pwm_slice_hw_t; + +typedef struct { + pwm_slice_hw_t slice[NUM_PWM_SLICES]; // 8 + + _REG_(PWM_EN_OFFSET) // PWM_EN + // This register aliases the CSR_EN bits for all channels + // 0x00000080 [7] : CH7 (0) + // 0x00000040 [6] : CH6 (0) + // 0x00000020 [5] : CH5 (0) + // 0x00000010 [4] : CH4 (0) + // 0x00000008 [3] : CH3 (0) + // 0x00000004 [2] : CH2 (0) + // 0x00000002 [1] : CH1 (0) + // 0x00000001 [0] : CH0 (0) + io_rw_32 en; + + _REG_(PWM_INTR_OFFSET) // PWM_INTR + // Raw Interrupts + // 0x00000080 [7] : CH7 (0) + // 0x00000040 [6] : CH6 (0) + // 0x00000020 [5] : CH5 (0) + // 0x00000010 [4] : CH4 (0) + // 0x00000008 [3] : CH3 (0) + // 0x00000004 [2] : CH2 (0) + // 0x00000002 [1] : CH1 (0) + // 0x00000001 [0] : CH0 (0) + io_rw_32 intr; + + _REG_(PWM_INTE_OFFSET) // PWM_INTE + // Interrupt Enable + // 0x00000080 [7] : CH7 (0) + // 0x00000040 [6] : CH6 (0) + // 0x00000020 [5] : CH5 (0) + // 0x00000010 [4] : CH4 (0) + // 0x00000008 [3] : CH3 (0) + // 0x00000004 [2] : CH2 (0) + // 0x00000002 [1] : CH1 (0) + // 0x00000001 [0] : CH0 (0) + io_rw_32 inte; + + _REG_(PWM_INTF_OFFSET) // PWM_INTF + // Interrupt Force + // 0x00000080 [7] : CH7 (0) + // 0x00000040 [6] : CH6 (0) + // 0x00000020 [5] : CH5 (0) + // 0x00000010 [4] : CH4 (0) + // 0x00000008 [3] : CH3 (0) + // 0x00000004 [2] : CH2 (0) + // 0x00000002 [1] : CH1 (0) + // 0x00000001 [0] : CH0 (0) + io_rw_32 intf; + + _REG_(PWM_INTS_OFFSET) // PWM_INTS + // Interrupt status after masking & forcing + // 0x00000080 [7] : CH7 (0) + // 0x00000040 [6] : CH6 (0) + // 0x00000020 [5] : CH5 (0) + // 0x00000010 [4] : CH4 (0) + // 0x00000008 [3] : CH3 (0) + // 0x00000004 [2] : CH2 (0) + // 0x00000002 [1] : CH1 (0) + // 0x00000001 [0] : CH0 (0) + io_ro_32 ints; +} pwm_hw_t; + +#define pwm_hw ((pwm_hw_t *const)PWM_BASE) + +static_assert( NUM_PWM_SLICES == 8, ""); + +#endif diff --git a/arkanoid/pico/hardware/structs/resets.h b/arkanoid/pico/hardware/structs/resets.h new file mode 100644 index 0000000..2baeb51 --- /dev/null +++ b/arkanoid/pico/hardware/structs/resets.h @@ -0,0 +1,116 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_RESETS_H +#define _HARDWARE_STRUCTS_RESETS_H + +#include "../address_mapped.h" +#include "../regs/resets.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_resets +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/resets.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +/// \tag::resets_hw[] +typedef struct { + _REG_(RESETS_RESET_OFFSET) // RESETS_RESET + // Reset control + // 0x01000000 [24] : usbctrl (1) + // 0x00800000 [23] : uart1 (1) + // 0x00400000 [22] : uart0 (1) + // 0x00200000 [21] : timer (1) + // 0x00100000 [20] : tbman (1) + // 0x00080000 [19] : sysinfo (1) + // 0x00040000 [18] : syscfg (1) + // 0x00020000 [17] : spi1 (1) + // 0x00010000 [16] : spi0 (1) + // 0x00008000 [15] : rtc (1) + // 0x00004000 [14] : pwm (1) + // 0x00002000 [13] : pll_usb (1) + // 0x00001000 [12] : pll_sys (1) + // 0x00000800 [11] : pio1 (1) + // 0x00000400 [10] : pio0 (1) + // 0x00000200 [9] : pads_qspi (1) + // 0x00000100 [8] : pads_bank0 (1) + // 0x00000080 [7] : jtag (1) + // 0x00000040 [6] : io_qspi (1) + // 0x00000020 [5] : io_bank0 (1) + // 0x00000010 [4] : i2c1 (1) + // 0x00000008 [3] : i2c0 (1) + // 0x00000004 [2] : dma (1) + // 0x00000002 [1] : busctrl (1) + // 0x00000001 [0] : adc (1) + io_rw_32 reset; + + _REG_(RESETS_WDSEL_OFFSET) // RESETS_WDSEL + // Watchdog select + // 0x01000000 [24] : usbctrl (0) + // 0x00800000 [23] : uart1 (0) + // 0x00400000 [22] : uart0 (0) + // 0x00200000 [21] : timer (0) + // 0x00100000 [20] : tbman (0) + // 0x00080000 [19] : sysinfo (0) + // 0x00040000 [18] : syscfg (0) + // 0x00020000 [17] : spi1 (0) + // 0x00010000 [16] : spi0 (0) + // 0x00008000 [15] : rtc (0) + // 0x00004000 [14] : pwm (0) + // 0x00002000 [13] : pll_usb (0) + // 0x00001000 [12] : pll_sys (0) + // 0x00000800 [11] : pio1 (0) + // 0x00000400 [10] : pio0 (0) + // 0x00000200 [9] : pads_qspi (0) + // 0x00000100 [8] : pads_bank0 (0) + // 0x00000080 [7] : jtag (0) + // 0x00000040 [6] : io_qspi (0) + // 0x00000020 [5] : io_bank0 (0) + // 0x00000010 [4] : i2c1 (0) + // 0x00000008 [3] : i2c0 (0) + // 0x00000004 [2] : dma (0) + // 0x00000002 [1] : busctrl (0) + // 0x00000001 [0] : adc (0) + io_rw_32 wdsel; + + _REG_(RESETS_RESET_DONE_OFFSET) // RESETS_RESET_DONE + // Reset done + // 0x01000000 [24] : usbctrl (0) + // 0x00800000 [23] : uart1 (0) + // 0x00400000 [22] : uart0 (0) + // 0x00200000 [21] : timer (0) + // 0x00100000 [20] : tbman (0) + // 0x00080000 [19] : sysinfo (0) + // 0x00040000 [18] : syscfg (0) + // 0x00020000 [17] : spi1 (0) + // 0x00010000 [16] : spi0 (0) + // 0x00008000 [15] : rtc (0) + // 0x00004000 [14] : pwm (0) + // 0x00002000 [13] : pll_usb (0) + // 0x00001000 [12] : pll_sys (0) + // 0x00000800 [11] : pio1 (0) + // 0x00000400 [10] : pio0 (0) + // 0x00000200 [9] : pads_qspi (0) + // 0x00000100 [8] : pads_bank0 (0) + // 0x00000080 [7] : jtag (0) + // 0x00000040 [6] : io_qspi (0) + // 0x00000020 [5] : io_bank0 (0) + // 0x00000010 [4] : i2c1 (0) + // 0x00000008 [3] : i2c0 (0) + // 0x00000004 [2] : dma (0) + // 0x00000002 [1] : busctrl (0) + // 0x00000001 [0] : adc (0) + io_ro_32 reset_done; +} resets_hw_t; + +#define resets_hw ((resets_hw_t *const)RESETS_BASE) +/// \end::resets_hw[] + +#endif diff --git a/arkanoid/pico/hardware/structs/rosc.h b/arkanoid/pico/hardware/structs/rosc.h new file mode 100644 index 0000000..db9c4e1 --- /dev/null +++ b/arkanoid/pico/hardware/structs/rosc.h @@ -0,0 +1,86 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_ROSC_H +#define _HARDWARE_STRUCTS_ROSC_H + +#include "../address_mapped.h" +#include "../regs/rosc.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_rosc +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/rosc.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(ROSC_CTRL_OFFSET) // ROSC_CTRL + // Ring Oscillator control + // 0x00fff000 [23:12] : ENABLE (0): On power-up this field is initialised to ENABLE + // 0x00000fff [11:0] : FREQ_RANGE (0xaa0): Controls the number of delay stages in the ROSC ring + io_rw_32 ctrl; + + _REG_(ROSC_FREQA_OFFSET) // ROSC_FREQA + // The FREQA & FREQB registers control the frequency by controlling the drive strength of each stage + // 0xffff0000 [31:16] : PASSWD (0): Set to 0x9696 to apply the settings + // 0x00007000 [14:12] : DS3 (0): Stage 3 drive strength + // 0x00000700 [10:8] : DS2 (0): Stage 2 drive strength + // 0x00000070 [6:4] : DS1 (0): Stage 1 drive strength + // 0x00000007 [2:0] : DS0 (0): Stage 0 drive strength + io_rw_32 freqa; + + _REG_(ROSC_FREQB_OFFSET) // ROSC_FREQB + // For a detailed description see freqa register + // 0xffff0000 [31:16] : PASSWD (0): Set to 0x9696 to apply the settings + // 0x00007000 [14:12] : DS7 (0): Stage 7 drive strength + // 0x00000700 [10:8] : DS6 (0): Stage 6 drive strength + // 0x00000070 [6:4] : DS5 (0): Stage 5 drive strength + // 0x00000007 [2:0] : DS4 (0): Stage 4 drive strength + io_rw_32 freqb; + + _REG_(ROSC_DORMANT_OFFSET) // ROSC_DORMANT + // Ring Oscillator pause control + io_rw_32 dormant; + + _REG_(ROSC_DIV_OFFSET) // ROSC_DIV + // Controls the output divider + // 0x00000fff [11:0] : DIV (0): set to 0xaa0 + div where + io_rw_32 div; + + _REG_(ROSC_PHASE_OFFSET) // ROSC_PHASE + // Controls the phase shifted output + // 0x00000ff0 [11:4] : PASSWD (0): set to 0xaa + // 0x00000008 [3] : ENABLE (1): enable the phase-shifted output + // 0x00000004 [2] : FLIP (0): invert the phase-shifted output + // 0x00000003 [1:0] : SHIFT (0): phase shift the phase-shifted output by SHIFT input clocks + io_rw_32 phase; + + _REG_(ROSC_STATUS_OFFSET) // ROSC_STATUS + // Ring Oscillator Status + // 0x80000000 [31] : STABLE (0): Oscillator is running and stable + // 0x01000000 [24] : BADWRITE (0): An invalid value has been written to CTRL_ENABLE or CTRL_FREQ_RANGE or FREQA or... + // 0x00010000 [16] : DIV_RUNNING (0): post-divider is running + // 0x00001000 [12] : ENABLED (0): Oscillator is enabled but not necessarily running and stable + io_rw_32 status; + + _REG_(ROSC_RANDOMBIT_OFFSET) // ROSC_RANDOMBIT + // This just reads the state of the oscillator output so randomness is compromised if the ring oscillator is stopped or... + // 0x00000001 [0] : RANDOMBIT (1) + io_ro_32 randombit; + + _REG_(ROSC_COUNT_OFFSET) // ROSC_COUNT + // A down counter running at the ROSC frequency which counts to zero and stops + // 0x000000ff [7:0] : COUNT (0) + io_rw_32 count; +} rosc_hw_t; + +#define rosc_hw ((rosc_hw_t *const)ROSC_BASE) + +#endif diff --git a/arkanoid/pico/hardware/structs/rtc.h b/arkanoid/pico/hardware/structs/rtc.h new file mode 100644 index 0000000..b82b845 --- /dev/null +++ b/arkanoid/pico/hardware/structs/rtc.h @@ -0,0 +1,114 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_RTC_H +#define _HARDWARE_STRUCTS_RTC_H + +#include "../address_mapped.h" +#include "../regs/rtc.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_rtc +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/rtc.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(RTC_CLKDIV_M1_OFFSET) // RTC_CLKDIV_M1 + // Divider minus 1 for the 1 second counter + // 0x0000ffff [15:0] : CLKDIV_M1 (0) + io_rw_32 clkdiv_m1; + + _REG_(RTC_SETUP_0_OFFSET) // RTC_SETUP_0 + // RTC setup register 0 + // 0x00fff000 [23:12] : YEAR (0): Year + // 0x00000f00 [11:8] : MONTH (0): Month (1 + // 0x0000001f [4:0] : DAY (0): Day of the month (1 + io_rw_32 setup_0; + + _REG_(RTC_SETUP_1_OFFSET) // RTC_SETUP_1 + // RTC setup register 1 + // 0x07000000 [26:24] : DOTW (0): Day of the week: 1-Monday + // 0x001f0000 [20:16] : HOUR (0): Hours + // 0x00003f00 [13:8] : MIN (0): Minutes + // 0x0000003f [5:0] : SEC (0): Seconds + io_rw_32 setup_1; + + _REG_(RTC_CTRL_OFFSET) // RTC_CTRL + // RTC Control and status + // 0x00000100 [8] : FORCE_NOTLEAPYEAR (0): If set, leapyear is forced off + // 0x00000010 [4] : LOAD (0): Load RTC + // 0x00000002 [1] : RTC_ACTIVE (0): RTC enabled (running) + // 0x00000001 [0] : RTC_ENABLE (0): Enable RTC + io_rw_32 ctrl; + + _REG_(RTC_IRQ_SETUP_0_OFFSET) // RTC_IRQ_SETUP_0 + // Interrupt setup register 0 + // 0x20000000 [29] : MATCH_ACTIVE (0) + // 0x10000000 [28] : MATCH_ENA (0): Global match enable + // 0x04000000 [26] : YEAR_ENA (0): Enable year matching + // 0x02000000 [25] : MONTH_ENA (0): Enable month matching + // 0x01000000 [24] : DAY_ENA (0): Enable day matching + // 0x00fff000 [23:12] : YEAR (0): Year + // 0x00000f00 [11:8] : MONTH (0): Month (1 + // 0x0000001f [4:0] : DAY (0): Day of the month (1 + io_rw_32 irq_setup_0; + + _REG_(RTC_IRQ_SETUP_1_OFFSET) // RTC_IRQ_SETUP_1 + // Interrupt setup register 1 + // 0x80000000 [31] : DOTW_ENA (0): Enable day of the week matching + // 0x40000000 [30] : HOUR_ENA (0): Enable hour matching + // 0x20000000 [29] : MIN_ENA (0): Enable minute matching + // 0x10000000 [28] : SEC_ENA (0): Enable second matching + // 0x07000000 [26:24] : DOTW (0): Day of the week + // 0x001f0000 [20:16] : HOUR (0): Hours + // 0x00003f00 [13:8] : MIN (0): Minutes + // 0x0000003f [5:0] : SEC (0): Seconds + io_rw_32 irq_setup_1; + + _REG_(RTC_RTC_1_OFFSET) // RTC_RTC_1 + // RTC register 1 + // 0x00fff000 [23:12] : YEAR (0): Year + // 0x00000f00 [11:8] : MONTH (0): Month (1 + // 0x0000001f [4:0] : DAY (0): Day of the month (1 + io_ro_32 rtc_1; + + _REG_(RTC_RTC_0_OFFSET) // RTC_RTC_0 + // RTC register 0 + // 0x07000000 [26:24] : DOTW (0): Day of the week + // 0x001f0000 [20:16] : HOUR (0): Hours + // 0x00003f00 [13:8] : MIN (0): Minutes + // 0x0000003f [5:0] : SEC (0): Seconds + io_ro_32 rtc_0; + + _REG_(RTC_INTR_OFFSET) // RTC_INTR + // Raw Interrupts + // 0x00000001 [0] : RTC (0) + io_ro_32 intr; + + _REG_(RTC_INTE_OFFSET) // RTC_INTE + // Interrupt Enable + // 0x00000001 [0] : RTC (0) + io_rw_32 inte; + + _REG_(RTC_INTF_OFFSET) // RTC_INTF + // Interrupt Force + // 0x00000001 [0] : RTC (0) + io_rw_32 intf; + + _REG_(RTC_INTS_OFFSET) // RTC_INTS + // Interrupt status after masking & forcing + // 0x00000001 [0] : RTC (0) + io_ro_32 ints; +} rtc_hw_t; + +#define rtc_hw ((rtc_hw_t *const)RTC_BASE) + +#endif diff --git a/arkanoid/pico/hardware/structs/scb.h b/arkanoid/pico/hardware/structs/scb.h new file mode 100644 index 0000000..2590b70 --- /dev/null +++ b/arkanoid/pico/hardware/structs/scb.h @@ -0,0 +1,69 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_SCB_H +#define _HARDWARE_STRUCTS_SCB_H + +#include "../address_mapped.h" +#include "../regs/m0plus.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_m0plus +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/m0plus.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(M0PLUS_CPUID_OFFSET) // M0PLUS_CPUID + // Read the CPU ID Base Register to determine: the ID number of the processor core, the version number of the processor... + // 0xff000000 [31:24] : IMPLEMENTER (0x41): Implementor code: 0x41 = ARM + // 0x00f00000 [23:20] : VARIANT (0): Major revision number n in the rnpm revision status: + // 0x000f0000 [19:16] : ARCHITECTURE (0xc): Constant that defines the architecture of the processor: + // 0x0000fff0 [15:4] : PARTNO (0xc60): Number of processor within family: 0xC60 = Cortex-M0+ + // 0x0000000f [3:0] : REVISION (1): Minor revision number m in the rnpm revision status: + io_ro_32 cpuid; + + _REG_(M0PLUS_ICSR_OFFSET) // M0PLUS_ICSR + // Use the Interrupt Control State Register to set a pending Non-Maskable Interrupt (NMI), set or clear a pending... + // 0x80000000 [31] : NMIPENDSET (0): Setting this bit will activate an NMI + // 0x10000000 [28] : PENDSVSET (0): PendSV set-pending bit + // 0x08000000 [27] : PENDSVCLR (0): PendSV clear-pending bit + // 0x04000000 [26] : PENDSTSET (0): SysTick exception set-pending bit + // 0x02000000 [25] : PENDSTCLR (0): SysTick exception clear-pending bit + // 0x00800000 [23] : ISRPREEMPT (0): The system can only access this bit when the core is halted + // 0x00400000 [22] : ISRPENDING (0): External interrupt pending flag + // 0x001ff000 [20:12] : VECTPENDING (0): Indicates the exception number for the highest priority pending exception: 0 =... + // 0x000001ff [8:0] : VECTACTIVE (0): Active exception number field + io_rw_32 icsr; + + _REG_(M0PLUS_VTOR_OFFSET) // M0PLUS_VTOR + // The VTOR holds the vector table offset address + // 0xffffff00 [31:8] : TBLOFF (0): Bits [31:8] of the indicate the vector table offset address + io_rw_32 vtor; + + _REG_(M0PLUS_AIRCR_OFFSET) // M0PLUS_AIRCR + // Use the Application Interrupt and Reset Control Register to: determine data endianness, clear all active state... + // 0xffff0000 [31:16] : VECTKEY (0): Register key: + // 0x00008000 [15] : ENDIANESS (0): Data endianness implemented: + // 0x00000004 [2] : SYSRESETREQ (0): Writing 1 to this bit causes the SYSRESETREQ signal to the outer system to be... + // 0x00000002 [1] : VECTCLRACTIVE (0): Clears all active state information for fixed and configurable exceptions + io_rw_32 aircr; + + _REG_(M0PLUS_SCR_OFFSET) // M0PLUS_SCR + // System Control Register + // 0x00000010 [4] : SEVONPEND (0): Send Event on Pending bit: + // 0x00000004 [2] : SLEEPDEEP (0): Controls whether the processor uses sleep or deep sleep as its low power mode: + // 0x00000002 [1] : SLEEPONEXIT (0): Indicates sleep-on-exit when returning from Handler mode to Thread mode: + io_rw_32 scr; +} armv6m_scb_t; + +#define scb_hw ((armv6m_scb_t *const)(PPB_BASE + M0PLUS_CPUID_OFFSET)) + +#endif diff --git a/arkanoid/pico/hardware/structs/sio.h b/arkanoid/pico/hardware/structs/sio.h new file mode 100644 index 0000000..0d9e7c8 --- /dev/null +++ b/arkanoid/pico/hardware/structs/sio.h @@ -0,0 +1,176 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_SIO_H +#define _HARDWARE_STRUCTS_SIO_H + +#include "../address_mapped.h" +#include "../regs/sio.h" +#include "interp.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_sio +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/sio.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(SIO_CPUID_OFFSET) // SIO_CPUID + // Processor core identifier + io_ro_32 cpuid; + + _REG_(SIO_GPIO_IN_OFFSET) // SIO_GPIO_IN + // Input value for GPIO pins + // 0x3fffffff [29:0] : GPIO_IN (0): Input value for GPIO0 + io_ro_32 gpio_in; + + _REG_(SIO_GPIO_HI_IN_OFFSET) // SIO_GPIO_HI_IN + // Input value for QSPI pins + // 0x0000003f [5:0] : GPIO_HI_IN (0): Input value on QSPI IO in order 0 + io_ro_32 gpio_hi_in; + + uint32_t _pad0; + + _REG_(SIO_GPIO_OUT_OFFSET) // SIO_GPIO_OUT + // GPIO output value + // 0x3fffffff [29:0] : GPIO_OUT (0): Set output level (1/0 -> high/low) for GPIO0 + io_rw_32 gpio_out; + + _REG_(SIO_GPIO_OUT_SET_OFFSET) // SIO_GPIO_OUT_SET + // GPIO output value set + // 0x3fffffff [29:0] : GPIO_OUT_SET (0): Perform an atomic bit-set on GPIO_OUT, i + io_wo_32 gpio_set; + + _REG_(SIO_GPIO_OUT_CLR_OFFSET) // SIO_GPIO_OUT_CLR + // GPIO output value clear + // 0x3fffffff [29:0] : GPIO_OUT_CLR (0): Perform an atomic bit-clear on GPIO_OUT, i + io_wo_32 gpio_clr; + + _REG_(SIO_GPIO_OUT_XOR_OFFSET) // SIO_GPIO_OUT_XOR + // GPIO output value XOR + // 0x3fffffff [29:0] : GPIO_OUT_XOR (0): Perform an atomic bitwise XOR on GPIO_OUT, i + io_wo_32 gpio_togl; + + _REG_(SIO_GPIO_OE_OFFSET) // SIO_GPIO_OE + // GPIO output enable + // 0x3fffffff [29:0] : GPIO_OE (0): Set output enable (1/0 -> output/input) for GPIO0 + io_rw_32 gpio_oe; + + _REG_(SIO_GPIO_OE_SET_OFFSET) // SIO_GPIO_OE_SET + // GPIO output enable set + // 0x3fffffff [29:0] : GPIO_OE_SET (0): Perform an atomic bit-set on GPIO_OE, i + io_wo_32 gpio_oe_set; + + _REG_(SIO_GPIO_OE_CLR_OFFSET) // SIO_GPIO_OE_CLR + // GPIO output enable clear + // 0x3fffffff [29:0] : GPIO_OE_CLR (0): Perform an atomic bit-clear on GPIO_OE, i + io_wo_32 gpio_oe_clr; + + _REG_(SIO_GPIO_OE_XOR_OFFSET) // SIO_GPIO_OE_XOR + // GPIO output enable XOR + // 0x3fffffff [29:0] : GPIO_OE_XOR (0): Perform an atomic bitwise XOR on GPIO_OE, i + io_wo_32 gpio_oe_togl; + + _REG_(SIO_GPIO_HI_OUT_OFFSET) // SIO_GPIO_HI_OUT + // QSPI output value + // 0x0000003f [5:0] : GPIO_HI_OUT (0): Set output level (1/0 -> high/low) for QSPI IO0 + io_rw_32 gpio_hi_out; + + _REG_(SIO_GPIO_HI_OUT_SET_OFFSET) // SIO_GPIO_HI_OUT_SET + // QSPI output value set + // 0x0000003f [5:0] : GPIO_HI_OUT_SET (0): Perform an atomic bit-set on GPIO_HI_OUT, i + io_wo_32 gpio_hi_set; + + _REG_(SIO_GPIO_HI_OUT_CLR_OFFSET) // SIO_GPIO_HI_OUT_CLR + // QSPI output value clear + // 0x0000003f [5:0] : GPIO_HI_OUT_CLR (0): Perform an atomic bit-clear on GPIO_HI_OUT, i + io_wo_32 gpio_hi_clr; + + _REG_(SIO_GPIO_HI_OUT_XOR_OFFSET) // SIO_GPIO_HI_OUT_XOR + // QSPI output value XOR + // 0x0000003f [5:0] : GPIO_HI_OUT_XOR (0): Perform an atomic bitwise XOR on GPIO_HI_OUT, i + io_wo_32 gpio_hi_togl; + + _REG_(SIO_GPIO_HI_OE_OFFSET) // SIO_GPIO_HI_OE + // QSPI output enable + // 0x0000003f [5:0] : GPIO_HI_OE (0): Set output enable (1/0 -> output/input) for QSPI IO0 + io_rw_32 gpio_hi_oe; + + _REG_(SIO_GPIO_HI_OE_SET_OFFSET) // SIO_GPIO_HI_OE_SET + // QSPI output enable set + // 0x0000003f [5:0] : GPIO_HI_OE_SET (0): Perform an atomic bit-set on GPIO_HI_OE, i + io_wo_32 gpio_hi_oe_set; + + _REG_(SIO_GPIO_HI_OE_CLR_OFFSET) // SIO_GPIO_HI_OE_CLR + // QSPI output enable clear + // 0x0000003f [5:0] : GPIO_HI_OE_CLR (0): Perform an atomic bit-clear on GPIO_HI_OE, i + io_wo_32 gpio_hi_oe_clr; + + _REG_(SIO_GPIO_HI_OE_XOR_OFFSET) // SIO_GPIO_HI_OE_XOR + // QSPI output enable XOR + // 0x0000003f [5:0] : GPIO_HI_OE_XOR (0): Perform an atomic bitwise XOR on GPIO_HI_OE, i + io_wo_32 gpio_hi_oe_togl; + + _REG_(SIO_FIFO_ST_OFFSET) // SIO_FIFO_ST + // Status register for inter-core FIFOs (mailboxes) + // 0x00000008 [3] : ROE (0): Sticky flag indicating the RX FIFO was read when empty + // 0x00000004 [2] : WOF (0): Sticky flag indicating the TX FIFO was written when full + // 0x00000002 [1] : RDY (1): Value is 1 if this core's TX FIFO is not full (i + // 0x00000001 [0] : VLD (0): Value is 1 if this core's RX FIFO is not empty (i + io_rw_32 fifo_st; + + _REG_(SIO_FIFO_WR_OFFSET) // SIO_FIFO_WR + // Write access to this core's TX FIFO + io_wo_32 fifo_wr; + + _REG_(SIO_FIFO_RD_OFFSET) // SIO_FIFO_RD + // Read access to this core's RX FIFO + io_ro_32 fifo_rd; + + _REG_(SIO_SPINLOCK_ST_OFFSET) // SIO_SPINLOCK_ST + // Spinlock state + io_ro_32 spinlock_st; + + _REG_(SIO_DIV_UDIVIDEND_OFFSET) // SIO_DIV_UDIVIDEND + // Divider unsigned dividend + io_rw_32 div_udividend; + + _REG_(SIO_DIV_UDIVISOR_OFFSET) // SIO_DIV_UDIVISOR + // Divider unsigned divisor + io_rw_32 div_udivisor; + + _REG_(SIO_DIV_SDIVIDEND_OFFSET) // SIO_DIV_SDIVIDEND + // Divider signed dividend + io_rw_32 div_sdividend; + + _REG_(SIO_DIV_SDIVISOR_OFFSET) // SIO_DIV_SDIVISOR + // Divider signed divisor + io_rw_32 div_sdivisor; + + _REG_(SIO_DIV_QUOTIENT_OFFSET) // SIO_DIV_QUOTIENT + // Divider result quotient + io_rw_32 div_quotient; + + _REG_(SIO_DIV_REMAINDER_OFFSET) // SIO_DIV_REMAINDER + // Divider result remainder + io_rw_32 div_remainder; + + _REG_(SIO_DIV_CSR_OFFSET) // SIO_DIV_CSR + // Control and status register for divider + // 0x00000002 [1] : DIRTY (0): Changes to 1 when any register is written, and back to 0 when QUOTIENT is read + // 0x00000001 [0] : READY (1): Reads as 0 when a calculation is in progress, 1 otherwise + io_ro_32 div_csr; + uint32_t _pad1; + interp_hw_t interp[2]; +} sio_hw_t; + +#define sio_hw ((sio_hw_t *const)SIO_BASE) + +#endif diff --git a/arkanoid/pico/hardware/structs/spi.h b/arkanoid/pico/hardware/structs/spi.h new file mode 100644 index 0000000..c67813d --- /dev/null +++ b/arkanoid/pico/hardware/structs/spi.h @@ -0,0 +1,100 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_SPI_H +#define _HARDWARE_STRUCTS_SPI_H + +#include "../address_mapped.h" +#include "../regs/spi.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_spi +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/spi.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(SPI_SSPCR0_OFFSET) // SPI_SSPCR0 + // Control register 0, SSPCR0 on page 3-4 + // 0x0000ff00 [15:8] : SCR (0): Serial clock rate + // 0x00000080 [7] : SPH (0): SSPCLKOUT phase, applicable to Motorola SPI frame format only + // 0x00000040 [6] : SPO (0): SSPCLKOUT polarity, applicable to Motorola SPI frame format only + // 0x00000030 [5:4] : FRF (0): Frame format: 00 Motorola SPI frame format + // 0x0000000f [3:0] : DSS (0): Data Size Select: 0000 Reserved, undefined operation + io_rw_32 cr0; + + _REG_(SPI_SSPCR1_OFFSET) // SPI_SSPCR1 + // Control register 1, SSPCR1 on page 3-5 + // 0x00000008 [3] : SOD (0): Slave-mode output disable + // 0x00000004 [2] : MS (0): Master or slave mode select + // 0x00000002 [1] : SSE (0): Synchronous serial port enable: 0 SSP operation disabled + // 0x00000001 [0] : LBM (0): Loop back mode: 0 Normal serial port operation enabled + io_rw_32 cr1; + + _REG_(SPI_SSPDR_OFFSET) // SPI_SSPDR + // Data register, SSPDR on page 3-6 + // 0x0000ffff [15:0] : DATA (0): Transmit/Receive FIFO: Read Receive FIFO + io_rw_32 dr; + + _REG_(SPI_SSPSR_OFFSET) // SPI_SSPSR + // Status register, SSPSR on page 3-7 + // 0x00000010 [4] : BSY (0): PrimeCell SSP busy flag, RO: 0 SSP is idle + // 0x00000008 [3] : RFF (0): Receive FIFO full, RO: 0 Receive FIFO is not full + // 0x00000004 [2] : RNE (0): Receive FIFO not empty, RO: 0 Receive FIFO is empty + // 0x00000002 [1] : TNF (1): Transmit FIFO not full, RO: 0 Transmit FIFO is full + // 0x00000001 [0] : TFE (1): Transmit FIFO empty, RO: 0 Transmit FIFO is not empty + io_ro_32 sr; + + _REG_(SPI_SSPCPSR_OFFSET) // SPI_SSPCPSR + // Clock prescale register, SSPCPSR on page 3-8 + // 0x000000ff [7:0] : CPSDVSR (0): Clock prescale divisor + io_rw_32 cpsr; + + _REG_(SPI_SSPIMSC_OFFSET) // SPI_SSPIMSC + // Interrupt mask set or clear register, SSPIMSC on page 3-9 + // 0x00000008 [3] : TXIM (0): Transmit FIFO interrupt mask: 0 Transmit FIFO half empty or less condition interrupt is masked + // 0x00000004 [2] : RXIM (0): Receive FIFO interrupt mask: 0 Receive FIFO half full or less condition interrupt is masked + // 0x00000002 [1] : RTIM (0): Receive timeout interrupt mask: 0 Receive FIFO not empty and no read prior to timeout... + // 0x00000001 [0] : RORIM (0): Receive overrun interrupt mask: 0 Receive FIFO written to while full condition... + io_rw_32 imsc; + + _REG_(SPI_SSPRIS_OFFSET) // SPI_SSPRIS + // Raw interrupt status register, SSPRIS on page 3-10 + // 0x00000008 [3] : TXRIS (1): Gives the raw interrupt state, prior to masking, of the SSPTXINTR interrupt + // 0x00000004 [2] : RXRIS (0): Gives the raw interrupt state, prior to masking, of the SSPRXINTR interrupt + // 0x00000002 [1] : RTRIS (0): Gives the raw interrupt state, prior to masking, of the SSPRTINTR interrupt + // 0x00000001 [0] : RORRIS (0): Gives the raw interrupt state, prior to masking, of the SSPRORINTR interrupt + io_ro_32 ris; + + _REG_(SPI_SSPMIS_OFFSET) // SPI_SSPMIS + // Masked interrupt status register, SSPMIS on page 3-11 + // 0x00000008 [3] : TXMIS (0): Gives the transmit FIFO masked interrupt state, after masking, of the SSPTXINTR interrupt + // 0x00000004 [2] : RXMIS (0): Gives the receive FIFO masked interrupt state, after masking, of the SSPRXINTR interrupt + // 0x00000002 [1] : RTMIS (0): Gives the receive timeout masked interrupt state, after masking, of the SSPRTINTR interrupt + // 0x00000001 [0] : RORMIS (0): Gives the receive over run masked interrupt status, after masking, of the... + io_ro_32 mis; + + _REG_(SPI_SSPICR_OFFSET) // SPI_SSPICR + // Interrupt clear register, SSPICR on page 3-11 + // 0x00000002 [1] : RTIC (0): Clears the SSPRTINTR interrupt + // 0x00000001 [0] : RORIC (0): Clears the SSPRORINTR interrupt + io_rw_32 icr; + + _REG_(SPI_SSPDMACR_OFFSET) // SPI_SSPDMACR + // DMA control register, SSPDMACR on page 3-12 + // 0x00000002 [1] : TXDMAE (0): Transmit DMA Enable + // 0x00000001 [0] : RXDMAE (0): Receive DMA Enable + io_rw_32 dmacr; +} spi_hw_t; + +#define spi0_hw ((spi_hw_t *const)SPI0_BASE) +#define spi1_hw ((spi_hw_t *const)SPI1_BASE) + +#endif diff --git a/arkanoid/pico/hardware/structs/ssi.h b/arkanoid/pico/hardware/structs/ssi.h new file mode 100644 index 0000000..65bd27b --- /dev/null +++ b/arkanoid/pico/hardware/structs/ssi.h @@ -0,0 +1,210 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_SSI_H +#define _HARDWARE_STRUCTS_SSI_H + +#include "../address_mapped.h" +#include "../regs/ssi.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_ssi +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/ssi.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(SSI_CTRLR0_OFFSET) // SSI_CTRLR0 + // Control register 0 + // 0x01000000 [24] : SSTE (0): Slave select toggle enable + // 0x00600000 [22:21] : SPI_FRF (0): SPI frame format + // 0x001f0000 [20:16] : DFS_32 (0): Data frame size in 32b transfer mode + // 0x0000f000 [15:12] : CFS (0): Control frame size + // 0x00000800 [11] : SRL (0): Shift register loop (test mode) + // 0x00000400 [10] : SLV_OE (0): Slave output enable + // 0x00000300 [9:8] : TMOD (0): Transfer mode + // 0x00000080 [7] : SCPOL (0): Serial clock polarity + // 0x00000040 [6] : SCPH (0): Serial clock phase + // 0x00000030 [5:4] : FRF (0): Frame format + // 0x0000000f [3:0] : DFS (0): Data frame size + io_rw_32 ctrlr0; + + _REG_(SSI_CTRLR1_OFFSET) // SSI_CTRLR1 + // Master Control register 1 + // 0x0000ffff [15:0] : NDF (0): Number of data frames + io_rw_32 ctrlr1; + + _REG_(SSI_SSIENR_OFFSET) // SSI_SSIENR + // SSI Enable + // 0x00000001 [0] : SSI_EN (0): SSI enable + io_rw_32 ssienr; + + _REG_(SSI_MWCR_OFFSET) // SSI_MWCR + // Microwire Control + // 0x00000004 [2] : MHS (0): Microwire handshaking + // 0x00000002 [1] : MDD (0): Microwire control + // 0x00000001 [0] : MWMOD (0): Microwire transfer mode + io_rw_32 mwcr; + + _REG_(SSI_SER_OFFSET) // SSI_SER + // Slave enable + // 0x00000001 [0] : SER (0): For each bit: + io_rw_32 ser; + + _REG_(SSI_BAUDR_OFFSET) // SSI_BAUDR + // Baud rate + // 0x0000ffff [15:0] : SCKDV (0): SSI clock divider + io_rw_32 baudr; + + _REG_(SSI_TXFTLR_OFFSET) // SSI_TXFTLR + // TX FIFO threshold level + // 0x000000ff [7:0] : TFT (0): Transmit FIFO threshold + io_rw_32 txftlr; + + _REG_(SSI_RXFTLR_OFFSET) // SSI_RXFTLR + // RX FIFO threshold level + // 0x000000ff [7:0] : RFT (0): Receive FIFO threshold + io_rw_32 rxftlr; + + _REG_(SSI_TXFLR_OFFSET) // SSI_TXFLR + // TX FIFO level + // 0x000000ff [7:0] : TFTFL (0): Transmit FIFO level + io_ro_32 txflr; + + _REG_(SSI_RXFLR_OFFSET) // SSI_RXFLR + // RX FIFO level + // 0x000000ff [7:0] : RXTFL (0): Receive FIFO level + io_ro_32 rxflr; + + _REG_(SSI_SR_OFFSET) // SSI_SR + // Status register + // 0x00000040 [6] : DCOL (0): Data collision error + // 0x00000020 [5] : TXE (0): Transmission error + // 0x00000010 [4] : RFF (0): Receive FIFO full + // 0x00000008 [3] : RFNE (0): Receive FIFO not empty + // 0x00000004 [2] : TFE (0): Transmit FIFO empty + // 0x00000002 [1] : TFNF (0): Transmit FIFO not full + // 0x00000001 [0] : BUSY (0): SSI busy flag + io_ro_32 sr; + + _REG_(SSI_IMR_OFFSET) // SSI_IMR + // Interrupt mask + // 0x00000020 [5] : MSTIM (0): Multi-master contention interrupt mask + // 0x00000010 [4] : RXFIM (0): Receive FIFO full interrupt mask + // 0x00000008 [3] : RXOIM (0): Receive FIFO overflow interrupt mask + // 0x00000004 [2] : RXUIM (0): Receive FIFO underflow interrupt mask + // 0x00000002 [1] : TXOIM (0): Transmit FIFO overflow interrupt mask + // 0x00000001 [0] : TXEIM (0): Transmit FIFO empty interrupt mask + io_rw_32 imr; + + _REG_(SSI_ISR_OFFSET) // SSI_ISR + // Interrupt status + // 0x00000020 [5] : MSTIS (0): Multi-master contention interrupt status + // 0x00000010 [4] : RXFIS (0): Receive FIFO full interrupt status + // 0x00000008 [3] : RXOIS (0): Receive FIFO overflow interrupt status + // 0x00000004 [2] : RXUIS (0): Receive FIFO underflow interrupt status + // 0x00000002 [1] : TXOIS (0): Transmit FIFO overflow interrupt status + // 0x00000001 [0] : TXEIS (0): Transmit FIFO empty interrupt status + io_ro_32 isr; + + _REG_(SSI_RISR_OFFSET) // SSI_RISR + // Raw interrupt status + // 0x00000020 [5] : MSTIR (0): Multi-master contention raw interrupt status + // 0x00000010 [4] : RXFIR (0): Receive FIFO full raw interrupt status + // 0x00000008 [3] : RXOIR (0): Receive FIFO overflow raw interrupt status + // 0x00000004 [2] : RXUIR (0): Receive FIFO underflow raw interrupt status + // 0x00000002 [1] : TXOIR (0): Transmit FIFO overflow raw interrupt status + // 0x00000001 [0] : TXEIR (0): Transmit FIFO empty raw interrupt status + io_ro_32 risr; + + _REG_(SSI_TXOICR_OFFSET) // SSI_TXOICR + // TX FIFO overflow interrupt clear + // 0x00000001 [0] : TXOICR (0): Clear-on-read transmit FIFO overflow interrupt + io_ro_32 txoicr; + + _REG_(SSI_RXOICR_OFFSET) // SSI_RXOICR + // RX FIFO overflow interrupt clear + // 0x00000001 [0] : RXOICR (0): Clear-on-read receive FIFO overflow interrupt + io_ro_32 rxoicr; + + _REG_(SSI_RXUICR_OFFSET) // SSI_RXUICR + // RX FIFO underflow interrupt clear + // 0x00000001 [0] : RXUICR (0): Clear-on-read receive FIFO underflow interrupt + io_ro_32 rxuicr; + + _REG_(SSI_MSTICR_OFFSET) // SSI_MSTICR + // Multi-master interrupt clear + // 0x00000001 [0] : MSTICR (0): Clear-on-read multi-master contention interrupt + io_ro_32 msticr; + + _REG_(SSI_ICR_OFFSET) // SSI_ICR + // Interrupt clear + // 0x00000001 [0] : ICR (0): Clear-on-read all active interrupts + io_ro_32 icr; + + _REG_(SSI_DMACR_OFFSET) // SSI_DMACR + // DMA control + // 0x00000002 [1] : TDMAE (0): Transmit DMA enable + // 0x00000001 [0] : RDMAE (0): Receive DMA enable + io_rw_32 dmacr; + + _REG_(SSI_DMATDLR_OFFSET) // SSI_DMATDLR + // DMA TX data level + // 0x000000ff [7:0] : DMATDL (0): Transmit data watermark level + io_rw_32 dmatdlr; + + _REG_(SSI_DMARDLR_OFFSET) // SSI_DMARDLR + // DMA RX data level + // 0x000000ff [7:0] : DMARDL (0): Receive data watermark level (DMARDLR+1) + io_rw_32 dmardlr; + + _REG_(SSI_IDR_OFFSET) // SSI_IDR + // Identification register + // 0xffffffff [31:0] : IDCODE (0x51535049): Peripheral dentification code + io_ro_32 idr; + + _REG_(SSI_SSI_VERSION_ID_OFFSET) // SSI_SSI_VERSION_ID + // Version ID + // 0xffffffff [31:0] : SSI_COMP_VERSION (0x3430312a): SNPS component version (format X + io_ro_32 ssi_version_id; + + _REG_(SSI_DR0_OFFSET) // SSI_DR0 + // Data Register 0 (of 36) + // 0xffffffff [31:0] : DR (0): First data register of 36 + io_rw_32 dr0; + + uint32_t _pad0[35]; + + _REG_(SSI_RX_SAMPLE_DLY_OFFSET) // SSI_RX_SAMPLE_DLY + // RX sample delay + // 0x000000ff [7:0] : RSD (0): RXD sample delay (in SCLK cycles) + io_rw_32 rx_sample_dly; + + _REG_(SSI_SPI_CTRLR0_OFFSET) // SSI_SPI_CTRLR0 + // SPI control + // 0xff000000 [31:24] : XIP_CMD (0x3): SPI Command to send in XIP mode (INST_L = 8-bit) or to append to Address (INST_L = 0-bit) + // 0x00040000 [18] : SPI_RXDS_EN (0): Read data strobe enable + // 0x00020000 [17] : INST_DDR_EN (0): Instruction DDR transfer enable + // 0x00010000 [16] : SPI_DDR_EN (0): SPI DDR transfer enable + // 0x0000f800 [15:11] : WAIT_CYCLES (0): Wait cycles between control frame transmit and data reception (in SCLK cycles) + // 0x00000300 [9:8] : INST_L (0): Instruction length (0/4/8/16b) + // 0x0000003c [5:2] : ADDR_L (0): Address length (0b-60b in 4b increments) + // 0x00000003 [1:0] : TRANS_TYPE (0): Address and instruction transfer format + io_rw_32 spi_ctrlr0; + + _REG_(SSI_TXD_DRIVE_EDGE_OFFSET) // SSI_TXD_DRIVE_EDGE + // TX drive edge + // 0x000000ff [7:0] : TDE (0): TXD drive edge + io_rw_32 txd_drive_edge; +} ssi_hw_t; + +#define ssi_hw ((ssi_hw_t *const)XIP_SSI_BASE) + +#endif diff --git a/arkanoid/pico/hardware/structs/syscfg.h b/arkanoid/pico/hardware/structs/syscfg.h new file mode 100644 index 0000000..66fd464 --- /dev/null +++ b/arkanoid/pico/hardware/structs/syscfg.h @@ -0,0 +1,77 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_SYSCFG_H +#define _HARDWARE_STRUCTS_SYSCFG_H + +#include "../address_mapped.h" +#include "../regs/syscfg.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_syscfg +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/syscfg.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(SYSCFG_PROC0_NMI_MASK_OFFSET) // SYSCFG_PROC0_NMI_MASK + // Processor core 0 NMI source mask + io_rw_32 proc0_nmi_mask; + + _REG_(SYSCFG_PROC1_NMI_MASK_OFFSET) // SYSCFG_PROC1_NMI_MASK + // Processor core 1 NMI source mask + io_rw_32 proc1_nmi_mask; + + _REG_(SYSCFG_PROC_CONFIG_OFFSET) // SYSCFG_PROC_CONFIG + // Configuration for processors + // 0xf0000000 [31:28] : PROC1_DAP_INSTID (1): Configure proc1 DAP instance ID + // 0x0f000000 [27:24] : PROC0_DAP_INSTID (0): Configure proc0 DAP instance ID + // 0x00000002 [1] : PROC1_HALTED (0): Indication that proc1 has halted + // 0x00000001 [0] : PROC0_HALTED (0): Indication that proc0 has halted + io_rw_32 proc_config; + + _REG_(SYSCFG_PROC_IN_SYNC_BYPASS_OFFSET) // SYSCFG_PROC_IN_SYNC_BYPASS + // For each bit, if 1, bypass the input synchronizer between that GPIO + // 0x3fffffff [29:0] : PROC_IN_SYNC_BYPASS (0) + io_rw_32 proc_in_sync_bypass; + + _REG_(SYSCFG_PROC_IN_SYNC_BYPASS_HI_OFFSET) // SYSCFG_PROC_IN_SYNC_BYPASS_HI + // For each bit, if 1, bypass the input synchronizer between that GPIO + // 0x0000003f [5:0] : PROC_IN_SYNC_BYPASS_HI (0) + io_rw_32 proc_in_sync_bypass_hi; + + _REG_(SYSCFG_DBGFORCE_OFFSET) // SYSCFG_DBGFORCE + // Directly control the SWD debug port of either processor + // 0x00000080 [7] : PROC1_ATTACH (0): Attach processor 1 debug port to syscfg controls, and disconnect it from... + // 0x00000040 [6] : PROC1_SWCLK (1): Directly drive processor 1 SWCLK, if PROC1_ATTACH is set + // 0x00000020 [5] : PROC1_SWDI (1): Directly drive processor 1 SWDIO input, if PROC1_ATTACH is set + // 0x00000010 [4] : PROC1_SWDO (0): Observe the value of processor 1 SWDIO output + // 0x00000008 [3] : PROC0_ATTACH (0): Attach processor 0 debug port to syscfg controls, and disconnect it from... + // 0x00000004 [2] : PROC0_SWCLK (1): Directly drive processor 0 SWCLK, if PROC0_ATTACH is set + // 0x00000002 [1] : PROC0_SWDI (1): Directly drive processor 0 SWDIO input, if PROC0_ATTACH is set + // 0x00000001 [0] : PROC0_SWDO (0): Observe the value of processor 0 SWDIO output + io_rw_32 dbgforce; + + _REG_(SYSCFG_MEMPOWERDOWN_OFFSET) // SYSCFG_MEMPOWERDOWN + // Control power downs to memories + // 0x00000080 [7] : ROM (0) + // 0x00000040 [6] : USB (0) + // 0x00000020 [5] : SRAM5 (0) + // 0x00000010 [4] : SRAM4 (0) + // 0x00000008 [3] : SRAM3 (0) + // 0x00000004 [2] : SRAM2 (0) + // 0x00000002 [1] : SRAM1 (0) + // 0x00000001 [0] : SRAM0 (0) + io_rw_32 mempowerdown; +} syscfg_hw_t; + +#define syscfg_hw ((syscfg_hw_t *const)SYSCFG_BASE) + +#endif diff --git a/arkanoid/pico/hardware/structs/systick.h b/arkanoid/pico/hardware/structs/systick.h new file mode 100644 index 0000000..560617d --- /dev/null +++ b/arkanoid/pico/hardware/structs/systick.h @@ -0,0 +1,52 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_SYSTICK_H +#define _HARDWARE_STRUCTS_SYSTICK_H + +#include "../address_mapped.h" +#include "../regs/m0plus.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_m0plus +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/m0plus.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(M0PLUS_SYST_CSR_OFFSET) // M0PLUS_SYST_CSR + // Use the SysTick Control and Status Register to enable the SysTick features + // 0x00010000 [16] : COUNTFLAG (0): Returns 1 if timer counted to 0 since last time this was read + // 0x00000004 [2] : CLKSOURCE (0): SysTick clock source + // 0x00000002 [1] : TICKINT (0): Enables SysTick exception request: + // 0x00000001 [0] : ENABLE (0): Enable SysTick counter: + io_rw_32 csr; + + _REG_(M0PLUS_SYST_RVR_OFFSET) // M0PLUS_SYST_RVR + // Use the SysTick Reload Value Register to specify the start value to load into the current value register when the... + // 0x00ffffff [23:0] : RELOAD (0): Value to load into the SysTick Current Value Register when the counter reaches 0 + io_rw_32 rvr; + + _REG_(M0PLUS_SYST_CVR_OFFSET) // M0PLUS_SYST_CVR + // Use the SysTick Current Value Register to find the current value in the register + // 0x00ffffff [23:0] : CURRENT (0): Reads return the current value of the SysTick counter + io_rw_32 cvr; + + _REG_(M0PLUS_SYST_CALIB_OFFSET) // M0PLUS_SYST_CALIB + // Use the SysTick Calibration Value Register to enable software to scale to any required speed using divide and multiply + // 0x80000000 [31] : NOREF (0): If reads as 1, the Reference clock is not provided - the CLKSOURCE bit of the... + // 0x40000000 [30] : SKEW (0): If reads as 1, the calibration value for 10ms is inexact (due to clock frequency) + // 0x00ffffff [23:0] : TENMS (0): An optional Reload value to be used for 10ms (100Hz) timing, subject to system clock... + io_ro_32 calib; +} systick_hw_t; + +#define systick_hw ((systick_hw_t *const)(PPB_BASE + M0PLUS_SYST_CSR_OFFSET)) + +#endif diff --git a/arkanoid/pico/hardware/structs/timer.h b/arkanoid/pico/hardware/structs/timer.h new file mode 100644 index 0000000..7d4ea9c --- /dev/null +++ b/arkanoid/pico/hardware/structs/timer.h @@ -0,0 +1,107 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_TIMER_H +#define _HARDWARE_STRUCTS_TIMER_H + +#include "../address_mapped.h" +#include "../regs/timer.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_timer +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/timer.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(TIMER_TIMEHW_OFFSET) // TIMER_TIMEHW + // Write to bits 63:32 of time + io_wo_32 timehw; + + _REG_(TIMER_TIMELW_OFFSET) // TIMER_TIMELW + // Write to bits 31:0 of time + io_wo_32 timelw; + + _REG_(TIMER_TIMEHR_OFFSET) // TIMER_TIMEHR + // Read from bits 63:32 of time + io_ro_32 timehr; + + _REG_(TIMER_TIMELR_OFFSET) // TIMER_TIMELR + // Read from bits 31:0 of time + io_ro_32 timelr; + + _REG_(TIMER_ALARM0_OFFSET) // TIMER_ALARM0 + // (Description copied from array index 0 register TIMER_ALARM0 applies similarly to other array indexes) + // + // Arm alarm 0, and configure the time it will fire + io_rw_32 alarm[NUM_TIMERS]; // 4 + + _REG_(TIMER_ARMED_OFFSET) // TIMER_ARMED + // Indicates the armed/disarmed status of each alarm + // 0x0000000f [3:0] : ARMED (0) + io_rw_32 armed; + + _REG_(TIMER_TIMERAWH_OFFSET) // TIMER_TIMERAWH + // Raw read from bits 63:32 of time (no side effects) + io_ro_32 timerawh; + + _REG_(TIMER_TIMERAWL_OFFSET) // TIMER_TIMERAWL + // Raw read from bits 31:0 of time (no side effects) + io_ro_32 timerawl; + + _REG_(TIMER_DBGPAUSE_OFFSET) // TIMER_DBGPAUSE + // Set bits high to enable pause when the corresponding debug ports are active + // 0x00000004 [2] : DBG1 (1): Pause when processor 1 is in debug mode + // 0x00000002 [1] : DBG0 (1): Pause when processor 0 is in debug mode + io_rw_32 dbgpause; + + _REG_(TIMER_PAUSE_OFFSET) // TIMER_PAUSE + // Set high to pause the timer + // 0x00000001 [0] : PAUSE (0) + io_rw_32 pause; + + _REG_(TIMER_INTR_OFFSET) // TIMER_INTR + // Raw Interrupts + // 0x00000008 [3] : ALARM_3 (0) + // 0x00000004 [2] : ALARM_2 (0) + // 0x00000002 [1] : ALARM_1 (0) + // 0x00000001 [0] : ALARM_0 (0) + io_rw_32 intr; + + _REG_(TIMER_INTE_OFFSET) // TIMER_INTE + // Interrupt Enable + // 0x00000008 [3] : ALARM_3 (0) + // 0x00000004 [2] : ALARM_2 (0) + // 0x00000002 [1] : ALARM_1 (0) + // 0x00000001 [0] : ALARM_0 (0) + io_rw_32 inte; + + _REG_(TIMER_INTF_OFFSET) // TIMER_INTF + // Interrupt Force + // 0x00000008 [3] : ALARM_3 (0) + // 0x00000004 [2] : ALARM_2 (0) + // 0x00000002 [1] : ALARM_1 (0) + // 0x00000001 [0] : ALARM_0 (0) + io_rw_32 intf; + + _REG_(TIMER_INTS_OFFSET) // TIMER_INTS + // Interrupt status after masking & forcing + // 0x00000008 [3] : ALARM_3 (0) + // 0x00000004 [2] : ALARM_2 (0) + // 0x00000002 [1] : ALARM_1 (0) + // 0x00000001 [0] : ALARM_0 (0) + io_ro_32 ints; +} timer_hw_t; + +#define timer_hw ((timer_hw_t *const)TIMER_BASE) + +static_assert( NUM_TIMERS == 4, ""); + +#endif diff --git a/arkanoid/pico/hardware/structs/uart.h b/arkanoid/pico/hardware/structs/uart.h new file mode 100644 index 0000000..58918f8 --- /dev/null +++ b/arkanoid/pico/hardware/structs/uart.h @@ -0,0 +1,177 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_UART_H +#define _HARDWARE_STRUCTS_UART_H + +#include "../address_mapped.h" +#include "../regs/uart.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_uart +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/uart.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(UART_UARTDR_OFFSET) // UART_UARTDR + // Data Register, UARTDR + // 0x00000800 [11] : OE (0): Overrun error + // 0x00000400 [10] : BE (0): Break error + // 0x00000200 [9] : PE (0): Parity error + // 0x00000100 [8] : FE (0): Framing error + // 0x000000ff [7:0] : DATA (0): Receive (read) data character + io_rw_32 dr; + + _REG_(UART_UARTRSR_OFFSET) // UART_UARTRSR + // Receive Status Register/Error Clear Register, UARTRSR/UARTECR + // 0x00000008 [3] : OE (0): Overrun error + // 0x00000004 [2] : BE (0): Break error + // 0x00000002 [1] : PE (0): Parity error + // 0x00000001 [0] : FE (0): Framing error + io_rw_32 rsr; + + uint32_t _pad0[4]; + + _REG_(UART_UARTFR_OFFSET) // UART_UARTFR + // Flag Register, UARTFR + // 0x00000100 [8] : RI (0): Ring indicator + // 0x00000080 [7] : TXFE (1): Transmit FIFO empty + // 0x00000040 [6] : RXFF (0): Receive FIFO full + // 0x00000020 [5] : TXFF (0): Transmit FIFO full + // 0x00000010 [4] : RXFE (1): Receive FIFO empty + // 0x00000008 [3] : BUSY (0): UART busy + // 0x00000004 [2] : DCD (0): Data carrier detect + // 0x00000002 [1] : DSR (0): Data set ready + // 0x00000001 [0] : CTS (0): Clear to send + io_ro_32 fr; + + uint32_t _pad1; + + _REG_(UART_UARTILPR_OFFSET) // UART_UARTILPR + // IrDA Low-Power Counter Register, UARTILPR + // 0x000000ff [7:0] : ILPDVSR (0): 8-bit low-power divisor value + io_rw_32 ilpr; + + _REG_(UART_UARTIBRD_OFFSET) // UART_UARTIBRD + // Integer Baud Rate Register, UARTIBRD + // 0x0000ffff [15:0] : BAUD_DIVINT (0): The integer baud rate divisor + io_rw_32 ibrd; + + _REG_(UART_UARTFBRD_OFFSET) // UART_UARTFBRD + // Fractional Baud Rate Register, UARTFBRD + // 0x0000003f [5:0] : BAUD_DIVFRAC (0): The fractional baud rate divisor + io_rw_32 fbrd; + + _REG_(UART_UARTLCR_H_OFFSET) // UART_UARTLCR_H + // Line Control Register, UARTLCR_H + // 0x00000080 [7] : SPS (0): Stick parity select + // 0x00000060 [6:5] : WLEN (0): Word length + // 0x00000010 [4] : FEN (0): Enable FIFOs: 0 = FIFOs are disabled (character mode) that is, the FIFOs become... + // 0x00000008 [3] : STP2 (0): Two stop bits select + // 0x00000004 [2] : EPS (0): Even parity select + // 0x00000002 [1] : PEN (0): Parity enable: 0 = parity is disabled and no parity bit added to the data frame 1 =... + // 0x00000001 [0] : BRK (0): Send break + io_rw_32 lcr_h; + + _REG_(UART_UARTCR_OFFSET) // UART_UARTCR + // Control Register, UARTCR + // 0x00008000 [15] : CTSEN (0): CTS hardware flow control enable + // 0x00004000 [14] : RTSEN (0): RTS hardware flow control enable + // 0x00002000 [13] : OUT2 (0): This bit is the complement of the UART Out2 (nUARTOut2) modem status output + // 0x00001000 [12] : OUT1 (0): This bit is the complement of the UART Out1 (nUARTOut1) modem status output + // 0x00000800 [11] : RTS (0): Request to send + // 0x00000400 [10] : DTR (0): Data transmit ready + // 0x00000200 [9] : RXE (1): Receive enable + // 0x00000100 [8] : TXE (1): Transmit enable + // 0x00000080 [7] : LBE (0): Loopback enable + // 0x00000004 [2] : SIRLP (0): SIR low-power IrDA mode + // 0x00000002 [1] : SIREN (0): SIR enable: 0 = IrDA SIR ENDEC is disabled + // 0x00000001 [0] : UARTEN (0): UART enable: 0 = UART is disabled + io_rw_32 cr; + + _REG_(UART_UARTIFLS_OFFSET) // UART_UARTIFLS + // Interrupt FIFO Level Select Register, UARTIFLS + // 0x00000038 [5:3] : RXIFLSEL (0x2): Receive interrupt FIFO level select + // 0x00000007 [2:0] : TXIFLSEL (0x2): Transmit interrupt FIFO level select + io_rw_32 ifls; + + _REG_(UART_UARTIMSC_OFFSET) // UART_UARTIMSC + // Interrupt Mask Set/Clear Register, UARTIMSC + // 0x00000400 [10] : OEIM (0): Overrun error interrupt mask + // 0x00000200 [9] : BEIM (0): Break error interrupt mask + // 0x00000100 [8] : PEIM (0): Parity error interrupt mask + // 0x00000080 [7] : FEIM (0): Framing error interrupt mask + // 0x00000040 [6] : RTIM (0): Receive timeout interrupt mask + // 0x00000020 [5] : TXIM (0): Transmit interrupt mask + // 0x00000010 [4] : RXIM (0): Receive interrupt mask + // 0x00000008 [3] : DSRMIM (0): nUARTDSR modem interrupt mask + // 0x00000004 [2] : DCDMIM (0): nUARTDCD modem interrupt mask + // 0x00000002 [1] : CTSMIM (0): nUARTCTS modem interrupt mask + // 0x00000001 [0] : RIMIM (0): nUARTRI modem interrupt mask + io_rw_32 imsc; + + _REG_(UART_UARTRIS_OFFSET) // UART_UARTRIS + // Raw Interrupt Status Register, UARTRIS + // 0x00000400 [10] : OERIS (0): Overrun error interrupt status + // 0x00000200 [9] : BERIS (0): Break error interrupt status + // 0x00000100 [8] : PERIS (0): Parity error interrupt status + // 0x00000080 [7] : FERIS (0): Framing error interrupt status + // 0x00000040 [6] : RTRIS (0): Receive timeout interrupt status + // 0x00000020 [5] : TXRIS (0): Transmit interrupt status + // 0x00000010 [4] : RXRIS (0): Receive interrupt status + // 0x00000008 [3] : DSRRMIS (0): nUARTDSR modem interrupt status + // 0x00000004 [2] : DCDRMIS (0): nUARTDCD modem interrupt status + // 0x00000002 [1] : CTSRMIS (0): nUARTCTS modem interrupt status + // 0x00000001 [0] : RIRMIS (0): nUARTRI modem interrupt status + io_ro_32 ris; + + _REG_(UART_UARTMIS_OFFSET) // UART_UARTMIS + // Masked Interrupt Status Register, UARTMIS + // 0x00000400 [10] : OEMIS (0): Overrun error masked interrupt status + // 0x00000200 [9] : BEMIS (0): Break error masked interrupt status + // 0x00000100 [8] : PEMIS (0): Parity error masked interrupt status + // 0x00000080 [7] : FEMIS (0): Framing error masked interrupt status + // 0x00000040 [6] : RTMIS (0): Receive timeout masked interrupt status + // 0x00000020 [5] : TXMIS (0): Transmit masked interrupt status + // 0x00000010 [4] : RXMIS (0): Receive masked interrupt status + // 0x00000008 [3] : DSRMMIS (0): nUARTDSR modem masked interrupt status + // 0x00000004 [2] : DCDMMIS (0): nUARTDCD modem masked interrupt status + // 0x00000002 [1] : CTSMMIS (0): nUARTCTS modem masked interrupt status + // 0x00000001 [0] : RIMMIS (0): nUARTRI modem masked interrupt status + io_ro_32 mis; + + _REG_(UART_UARTICR_OFFSET) // UART_UARTICR + // Interrupt Clear Register, UARTICR + // 0x00000400 [10] : OEIC (0): Overrun error interrupt clear + // 0x00000200 [9] : BEIC (0): Break error interrupt clear + // 0x00000100 [8] : PEIC (0): Parity error interrupt clear + // 0x00000080 [7] : FEIC (0): Framing error interrupt clear + // 0x00000040 [6] : RTIC (0): Receive timeout interrupt clear + // 0x00000020 [5] : TXIC (0): Transmit interrupt clear + // 0x00000010 [4] : RXIC (0): Receive interrupt clear + // 0x00000008 [3] : DSRMIC (0): nUARTDSR modem interrupt clear + // 0x00000004 [2] : DCDMIC (0): nUARTDCD modem interrupt clear + // 0x00000002 [1] : CTSMIC (0): nUARTCTS modem interrupt clear + // 0x00000001 [0] : RIMIC (0): nUARTRI modem interrupt clear + io_rw_32 icr; + + _REG_(UART_UARTDMACR_OFFSET) // UART_UARTDMACR + // DMA Control Register, UARTDMACR + // 0x00000004 [2] : DMAONERR (0): DMA on error + // 0x00000002 [1] : TXDMAE (0): Transmit DMA enable + // 0x00000001 [0] : RXDMAE (0): Receive DMA enable + io_rw_32 dmacr; +} uart_hw_t; + +#define uart0_hw ((uart_hw_t *const)UART0_BASE) +#define uart1_hw ((uart_hw_t *const)UART1_BASE) + +#endif diff --git a/arkanoid/pico/hardware/structs/usb.h b/arkanoid/pico/hardware/structs/usb.h new file mode 100644 index 0000000..cb2f933 --- /dev/null +++ b/arkanoid/pico/hardware/structs/usb.h @@ -0,0 +1,578 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_USB_H +#define _HARDWARE_STRUCTS_USB_H + +#include "../address_mapped.h" +#include "../regs/usb.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_usb +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/usb.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +// 0-15 +#define USB_NUM_ENDPOINTS 16 + +// allow user to restrict number of endpoints available to save RAN +#ifndef USB_MAX_ENDPOINTS +#define USB_MAX_ENDPOINTS USB_NUM_ENDPOINTS +#endif + +// 1-15 +#define USB_HOST_INTERRUPT_ENDPOINTS (USB_NUM_ENDPOINTS - 1) + +// Endpoint buffer control bits +#define USB_BUF_CTRL_FULL 0x00008000u +#define USB_BUF_CTRL_LAST 0x00004000u +#define USB_BUF_CTRL_DATA0_PID 0x00000000u +#define USB_BUF_CTRL_DATA1_PID 0x00002000u +#define USB_BUF_CTRL_SEL 0x00001000u +#define USB_BUF_CTRL_STALL 0x00000800u +#define USB_BUF_CTRL_AVAIL 0x00000400u +#define USB_BUF_CTRL_LEN_MASK 0x000003FFu +#define USB_BUF_CTRL_LEN_LSB 0 + +// ep_inout_ctrl bits +#define EP_CTRL_ENABLE_BITS (1u << 31u) +#define EP_CTRL_DOUBLE_BUFFERED_BITS (1u << 30) +#define EP_CTRL_INTERRUPT_PER_BUFFER (1u << 29) +#define EP_CTRL_INTERRUPT_PER_DOUBLE_BUFFER (1u << 28) +#define EP_CTRL_INTERRUPT_ON_NAK (1u << 16) +#define EP_CTRL_INTERRUPT_ON_STALL (1u << 17) +#define EP_CTRL_BUFFER_TYPE_LSB 26u +#define EP_CTRL_HOST_INTERRUPT_INTERVAL_LSB 16u + +#define USB_DPRAM_SIZE 4096u + +// PICO_CONFIG: USB_DPRAM_MAX, Set amount of USB RAM used by USB system, min=0, max=4096, default=4096, group=hardware_usb +// Allow user to claim some of the USB RAM for themselves +#ifndef USB_DPRAM_MAX +#define USB_DPRAM_MAX USB_DPRAM_SIZE +#endif + +// Define maximum packet sizes +#define USB_MAX_ISO_PACKET_SIZE 1023 +#define USB_MAX_PACKET_SIZE 64 + +typedef struct { + // 4K of DPSRAM at beginning. Note this supports 8, 16, and 32 bit accesses + volatile uint8_t setup_packet[8]; // First 8 bytes are always for setup packets + + // Starts at ep1 + struct usb_device_dpram_ep_ctrl { + io_rw_32 in; + io_rw_32 out; + } ep_ctrl[USB_NUM_ENDPOINTS - 1]; + + // Starts at ep0 + struct usb_device_dpram_ep_buf_ctrl { + io_rw_32 in; + io_rw_32 out; + } ep_buf_ctrl[USB_NUM_ENDPOINTS]; + + // EP0 buffers are fixed. Assumes single buffered mode for EP0 + uint8_t ep0_buf_a[0x40]; + uint8_t ep0_buf_b[0x40]; + + // Rest of DPRAM can be carved up as needed + uint8_t epx_data[USB_DPRAM_MAX - 0x180]; +} usb_device_dpram_t; + +static_assert(sizeof(usb_device_dpram_t) == USB_DPRAM_MAX, ""); +static_assert(offsetof(usb_device_dpram_t, epx_data) == 0x180, ""); + +typedef struct { + // 4K of DPSRAM at beginning. Note this supports 8, 16, and 32 bit accesses + volatile uint8_t setup_packet[8]; // First 8 bytes are always for setup packets + + // Interrupt endpoint control 1 -> 15 + struct usb_host_dpram_ep_ctrl { + io_rw_32 ctrl; + io_rw_32 spare; + } int_ep_ctrl[USB_HOST_INTERRUPT_ENDPOINTS]; + + io_rw_32 epx_buf_ctrl; + io_rw_32 _spare0; + + // Interrupt endpoint buffer control + struct usb_host_dpram_ep_buf_ctrl { + io_rw_32 ctrl; + io_rw_32 spare; + } int_ep_buffer_ctrl[USB_HOST_INTERRUPT_ENDPOINTS]; + + io_rw_32 epx_ctrl; + + uint8_t _spare1[124]; + + // Should start at 0x180 + uint8_t epx_data[USB_DPRAM_MAX - 0x180]; +} usb_host_dpram_t; + +static_assert(sizeof(usb_host_dpram_t) == USB_DPRAM_MAX, ""); +static_assert(offsetof(usb_host_dpram_t, epx_data) == 0x180, ""); + +typedef struct { + _REG_(USB_ADDR_ENDP_OFFSET) // USB_ADDR_ENDP + // Device address and endpoint control + // 0x000f0000 [19:16] : ENDPOINT (0): Device endpoint to send data to + // 0x0000007f [6:0] : ADDRESS (0): In device mode, the address that the device should respond to + io_rw_32 dev_addr_ctrl; + + _REG_(USB_ADDR_ENDP1_OFFSET) // USB_ADDR_ENDP1 + // (Description copied from array index 0 register USB_ADDR_ENDP1 applies similarly to other array indexes) + // + // Interrupt endpoint 1 + // 0x04000000 [26] : INTEP_PREAMBLE (0): Interrupt EP requires preamble (is a low speed device on a full speed hub) + // 0x02000000 [25] : INTEP_DIR (0): Direction of the interrupt endpoint + // 0x000f0000 [19:16] : ENDPOINT (0): Endpoint number of the interrupt endpoint + // 0x0000007f [6:0] : ADDRESS (0): Device address + io_rw_32 int_ep_addr_ctrl[USB_HOST_INTERRUPT_ENDPOINTS]; // 15 + + _REG_(USB_MAIN_CTRL_OFFSET) // USB_MAIN_CTRL + // Main control register + // 0x80000000 [31] : SIM_TIMING (0): Reduced timings for simulation + // 0x00000002 [1] : HOST_NDEVICE (0): Device mode = 0, Host mode = 1 + // 0x00000001 [0] : CONTROLLER_EN (0): Enable controller + io_rw_32 main_ctrl; + + _REG_(USB_SOF_WR_OFFSET) // USB_SOF_WR + // Set the SOF (Start of Frame) frame number in the host controller + // 0x000007ff [10:0] : COUNT (0) + io_wo_32 sof_rw; + + _REG_(USB_SOF_RD_OFFSET) // USB_SOF_RD + // Read the last SOF (Start of Frame) frame number seen + // 0x000007ff [10:0] : COUNT (0) + io_ro_32 sof_rd; + + _REG_(USB_SIE_CTRL_OFFSET) // USB_SIE_CTRL + // SIE control register + // 0x80000000 [31] : EP0_INT_STALL (0): Device: Set bit in EP_STATUS_STALL_NAK when EP0 sends a STALL + // 0x40000000 [30] : EP0_DOUBLE_BUF (0): Device: EP0 single buffered = 0, double buffered = 1 + // 0x20000000 [29] : EP0_INT_1BUF (0): Device: Set bit in BUFF_STATUS for every buffer completed on EP0 + // 0x10000000 [28] : EP0_INT_2BUF (0): Device: Set bit in BUFF_STATUS for every 2 buffers completed on EP0 + // 0x08000000 [27] : EP0_INT_NAK (0): Device: Set bit in EP_STATUS_STALL_NAK when EP0 sends a NAK + // 0x04000000 [26] : DIRECT_EN (0): Direct bus drive enable + // 0x02000000 [25] : DIRECT_DP (0): Direct control of DP + // 0x01000000 [24] : DIRECT_DM (0): Direct control of DM + // 0x00040000 [18] : TRANSCEIVER_PD (0): Power down bus transceiver + // 0x00020000 [17] : RPU_OPT (0): Device: Pull-up strength (0=1K2, 1=2k3) + // 0x00010000 [16] : PULLUP_EN (0): Device: Enable pull up resistor + // 0x00008000 [15] : PULLDOWN_EN (0): Host: Enable pull down resistors + // 0x00002000 [13] : RESET_BUS (0): Host: Reset bus + // 0x00001000 [12] : RESUME (0): Device: Remote wakeup + // 0x00000800 [11] : VBUS_EN (0): Host: Enable VBUS + // 0x00000400 [10] : KEEP_ALIVE_EN (0): Host: Enable keep alive packet (for low speed bus) + // 0x00000200 [9] : SOF_EN (0): Host: Enable SOF generation (for full speed bus) + // 0x00000100 [8] : SOF_SYNC (0): Host: Delay packet(s) until after SOF + // 0x00000040 [6] : PREAMBLE_EN (0): Host: Preable enable for LS device on FS hub + // 0x00000010 [4] : STOP_TRANS (0): Host: Stop transaction + // 0x00000008 [3] : RECEIVE_DATA (0): Host: Receive transaction (IN to host) + // 0x00000004 [2] : SEND_DATA (0): Host: Send transaction (OUT from host) + // 0x00000002 [1] : SEND_SETUP (0): Host: Send Setup packet + // 0x00000001 [0] : START_TRANS (0): Host: Start transaction + io_rw_32 sie_ctrl; + + _REG_(USB_SIE_STATUS_OFFSET) // USB_SIE_STATUS + // SIE status register + // 0x80000000 [31] : DATA_SEQ_ERROR (0): Data Sequence Error + // 0x40000000 [30] : ACK_REC (0): ACK received + // 0x20000000 [29] : STALL_REC (0): Host: STALL received + // 0x10000000 [28] : NAK_REC (0): Host: NAK received + // 0x08000000 [27] : RX_TIMEOUT (0): RX timeout is raised by both the host and device if an ACK is not received in... + // 0x04000000 [26] : RX_OVERFLOW (0): RX overflow is raised by the Serial RX engine if the incoming data is too fast + // 0x02000000 [25] : BIT_STUFF_ERROR (0): Bit Stuff Error + // 0x01000000 [24] : CRC_ERROR (0): CRC Error + // 0x00080000 [19] : BUS_RESET (0): Device: bus reset received + // 0x00040000 [18] : TRANS_COMPLETE (0): Transaction complete + // 0x00020000 [17] : SETUP_REC (0): Device: Setup packet received + // 0x00010000 [16] : CONNECTED (0): Device: connected + // 0x00000800 [11] : RESUME (0): Host: Device has initiated a remote resume + // 0x00000400 [10] : VBUS_OVER_CURR (0): VBUS over current detected + // 0x00000300 [9:8] : SPEED (0): Host: device speed + // 0x00000010 [4] : SUSPENDED (0): Bus in suspended state + // 0x0000000c [3:2] : LINE_STATE (0): USB bus line state + // 0x00000001 [0] : VBUS_DETECTED (0): Device: VBUS Detected + io_rw_32 sie_status; + + _REG_(USB_INT_EP_CTRL_OFFSET) // USB_INT_EP_CTRL + // interrupt endpoint control register + // 0x0000fffe [15:1] : INT_EP_ACTIVE (0): Host: Enable interrupt endpoint 1 -> 15 + io_rw_32 int_ep_ctrl; + + _REG_(USB_BUFF_STATUS_OFFSET) // USB_BUFF_STATUS + // Buffer status register + // 0x80000000 [31] : EP15_OUT (0) + // 0x40000000 [30] : EP15_IN (0) + // 0x20000000 [29] : EP14_OUT (0) + // 0x10000000 [28] : EP14_IN (0) + // 0x08000000 [27] : EP13_OUT (0) + // 0x04000000 [26] : EP13_IN (0) + // 0x02000000 [25] : EP12_OUT (0) + // 0x01000000 [24] : EP12_IN (0) + // 0x00800000 [23] : EP11_OUT (0) + // 0x00400000 [22] : EP11_IN (0) + // 0x00200000 [21] : EP10_OUT (0) + // 0x00100000 [20] : EP10_IN (0) + // 0x00080000 [19] : EP9_OUT (0) + // 0x00040000 [18] : EP9_IN (0) + // 0x00020000 [17] : EP8_OUT (0) + // 0x00010000 [16] : EP8_IN (0) + // 0x00008000 [15] : EP7_OUT (0) + // 0x00004000 [14] : EP7_IN (0) + // 0x00002000 [13] : EP6_OUT (0) + // 0x00001000 [12] : EP6_IN (0) + // 0x00000800 [11] : EP5_OUT (0) + // 0x00000400 [10] : EP5_IN (0) + // 0x00000200 [9] : EP4_OUT (0) + // 0x00000100 [8] : EP4_IN (0) + // 0x00000080 [7] : EP3_OUT (0) + // 0x00000040 [6] : EP3_IN (0) + // 0x00000020 [5] : EP2_OUT (0) + // 0x00000010 [4] : EP2_IN (0) + // 0x00000008 [3] : EP1_OUT (0) + // 0x00000004 [2] : EP1_IN (0) + // 0x00000002 [1] : EP0_OUT (0) + // 0x00000001 [0] : EP0_IN (0) + io_rw_32 buf_status; + + _REG_(USB_BUFF_CPU_SHOULD_HANDLE_OFFSET) // USB_BUFF_CPU_SHOULD_HANDLE + // Which of the double buffers should be handled + // 0x80000000 [31] : EP15_OUT (0) + // 0x40000000 [30] : EP15_IN (0) + // 0x20000000 [29] : EP14_OUT (0) + // 0x10000000 [28] : EP14_IN (0) + // 0x08000000 [27] : EP13_OUT (0) + // 0x04000000 [26] : EP13_IN (0) + // 0x02000000 [25] : EP12_OUT (0) + // 0x01000000 [24] : EP12_IN (0) + // 0x00800000 [23] : EP11_OUT (0) + // 0x00400000 [22] : EP11_IN (0) + // 0x00200000 [21] : EP10_OUT (0) + // 0x00100000 [20] : EP10_IN (0) + // 0x00080000 [19] : EP9_OUT (0) + // 0x00040000 [18] : EP9_IN (0) + // 0x00020000 [17] : EP8_OUT (0) + // 0x00010000 [16] : EP8_IN (0) + // 0x00008000 [15] : EP7_OUT (0) + // 0x00004000 [14] : EP7_IN (0) + // 0x00002000 [13] : EP6_OUT (0) + // 0x00001000 [12] : EP6_IN (0) + // 0x00000800 [11] : EP5_OUT (0) + // 0x00000400 [10] : EP5_IN (0) + // 0x00000200 [9] : EP4_OUT (0) + // 0x00000100 [8] : EP4_IN (0) + // 0x00000080 [7] : EP3_OUT (0) + // 0x00000040 [6] : EP3_IN (0) + // 0x00000020 [5] : EP2_OUT (0) + // 0x00000010 [4] : EP2_IN (0) + // 0x00000008 [3] : EP1_OUT (0) + // 0x00000004 [2] : EP1_IN (0) + // 0x00000002 [1] : EP0_OUT (0) + // 0x00000001 [0] : EP0_IN (0) + io_ro_32 buf_cpu_should_handle; + + _REG_(USB_EP_ABORT_OFFSET) // USB_EP_ABORT + // Device only: Can be set to ignore the buffer control register for this endpoint in case you would like to revoke a buffer + // 0x80000000 [31] : EP15_OUT (0) + // 0x40000000 [30] : EP15_IN (0) + // 0x20000000 [29] : EP14_OUT (0) + // 0x10000000 [28] : EP14_IN (0) + // 0x08000000 [27] : EP13_OUT (0) + // 0x04000000 [26] : EP13_IN (0) + // 0x02000000 [25] : EP12_OUT (0) + // 0x01000000 [24] : EP12_IN (0) + // 0x00800000 [23] : EP11_OUT (0) + // 0x00400000 [22] : EP11_IN (0) + // 0x00200000 [21] : EP10_OUT (0) + // 0x00100000 [20] : EP10_IN (0) + // 0x00080000 [19] : EP9_OUT (0) + // 0x00040000 [18] : EP9_IN (0) + // 0x00020000 [17] : EP8_OUT (0) + // 0x00010000 [16] : EP8_IN (0) + // 0x00008000 [15] : EP7_OUT (0) + // 0x00004000 [14] : EP7_IN (0) + // 0x00002000 [13] : EP6_OUT (0) + // 0x00001000 [12] : EP6_IN (0) + // 0x00000800 [11] : EP5_OUT (0) + // 0x00000400 [10] : EP5_IN (0) + // 0x00000200 [9] : EP4_OUT (0) + // 0x00000100 [8] : EP4_IN (0) + // 0x00000080 [7] : EP3_OUT (0) + // 0x00000040 [6] : EP3_IN (0) + // 0x00000020 [5] : EP2_OUT (0) + // 0x00000010 [4] : EP2_IN (0) + // 0x00000008 [3] : EP1_OUT (0) + // 0x00000004 [2] : EP1_IN (0) + // 0x00000002 [1] : EP0_OUT (0) + // 0x00000001 [0] : EP0_IN (0) + io_rw_32 abort; + + _REG_(USB_EP_ABORT_DONE_OFFSET) // USB_EP_ABORT_DONE + // Device only: Used in conjunction with `EP_ABORT` + // 0x80000000 [31] : EP15_OUT (0) + // 0x40000000 [30] : EP15_IN (0) + // 0x20000000 [29] : EP14_OUT (0) + // 0x10000000 [28] : EP14_IN (0) + // 0x08000000 [27] : EP13_OUT (0) + // 0x04000000 [26] : EP13_IN (0) + // 0x02000000 [25] : EP12_OUT (0) + // 0x01000000 [24] : EP12_IN (0) + // 0x00800000 [23] : EP11_OUT (0) + // 0x00400000 [22] : EP11_IN (0) + // 0x00200000 [21] : EP10_OUT (0) + // 0x00100000 [20] : EP10_IN (0) + // 0x00080000 [19] : EP9_OUT (0) + // 0x00040000 [18] : EP9_IN (0) + // 0x00020000 [17] : EP8_OUT (0) + // 0x00010000 [16] : EP8_IN (0) + // 0x00008000 [15] : EP7_OUT (0) + // 0x00004000 [14] : EP7_IN (0) + // 0x00002000 [13] : EP6_OUT (0) + // 0x00001000 [12] : EP6_IN (0) + // 0x00000800 [11] : EP5_OUT (0) + // 0x00000400 [10] : EP5_IN (0) + // 0x00000200 [9] : EP4_OUT (0) + // 0x00000100 [8] : EP4_IN (0) + // 0x00000080 [7] : EP3_OUT (0) + // 0x00000040 [6] : EP3_IN (0) + // 0x00000020 [5] : EP2_OUT (0) + // 0x00000010 [4] : EP2_IN (0) + // 0x00000008 [3] : EP1_OUT (0) + // 0x00000004 [2] : EP1_IN (0) + // 0x00000002 [1] : EP0_OUT (0) + // 0x00000001 [0] : EP0_IN (0) + io_rw_32 abort_done; + + _REG_(USB_EP_STALL_ARM_OFFSET) // USB_EP_STALL_ARM + // Device: this bit must be set in conjunction with the `STALL` bit in the buffer control register to send a STALL on EP0 + // 0x00000002 [1] : EP0_OUT (0) + // 0x00000001 [0] : EP0_IN (0) + io_rw_32 ep_stall_arm; + + _REG_(USB_NAK_POLL_OFFSET) // USB_NAK_POLL + // Used by the host controller + // 0x03ff0000 [25:16] : DELAY_FS (0x10): NAK polling interval for a full speed device + // 0x000003ff [9:0] : DELAY_LS (0x10): NAK polling interval for a low speed device + io_rw_32 nak_poll; + + _REG_(USB_EP_STATUS_STALL_NAK_OFFSET) // USB_EP_STATUS_STALL_NAK + // Device: bits are set when the `IRQ_ON_NAK` or `IRQ_ON_STALL` bits are set + // 0x80000000 [31] : EP15_OUT (0) + // 0x40000000 [30] : EP15_IN (0) + // 0x20000000 [29] : EP14_OUT (0) + // 0x10000000 [28] : EP14_IN (0) + // 0x08000000 [27] : EP13_OUT (0) + // 0x04000000 [26] : EP13_IN (0) + // 0x02000000 [25] : EP12_OUT (0) + // 0x01000000 [24] : EP12_IN (0) + // 0x00800000 [23] : EP11_OUT (0) + // 0x00400000 [22] : EP11_IN (0) + // 0x00200000 [21] : EP10_OUT (0) + // 0x00100000 [20] : EP10_IN (0) + // 0x00080000 [19] : EP9_OUT (0) + // 0x00040000 [18] : EP9_IN (0) + // 0x00020000 [17] : EP8_OUT (0) + // 0x00010000 [16] : EP8_IN (0) + // 0x00008000 [15] : EP7_OUT (0) + // 0x00004000 [14] : EP7_IN (0) + // 0x00002000 [13] : EP6_OUT (0) + // 0x00001000 [12] : EP6_IN (0) + // 0x00000800 [11] : EP5_OUT (0) + // 0x00000400 [10] : EP5_IN (0) + // 0x00000200 [9] : EP4_OUT (0) + // 0x00000100 [8] : EP4_IN (0) + // 0x00000080 [7] : EP3_OUT (0) + // 0x00000040 [6] : EP3_IN (0) + // 0x00000020 [5] : EP2_OUT (0) + // 0x00000010 [4] : EP2_IN (0) + // 0x00000008 [3] : EP1_OUT (0) + // 0x00000004 [2] : EP1_IN (0) + // 0x00000002 [1] : EP0_OUT (0) + // 0x00000001 [0] : EP0_IN (0) + io_rw_32 ep_nak_stall_status; + + _REG_(USB_USB_MUXING_OFFSET) // USB_USB_MUXING + // Where to connect the USB controller + // 0x00000008 [3] : SOFTCON (0) + // 0x00000004 [2] : TO_DIGITAL_PAD (0) + // 0x00000002 [1] : TO_EXTPHY (0) + // 0x00000001 [0] : TO_PHY (0) + io_rw_32 muxing; + + _REG_(USB_USB_PWR_OFFSET) // USB_USB_PWR + // Overrides for the power signals in the event that the VBUS signals are not hooked up to GPIO + // 0x00000020 [5] : OVERCURR_DETECT_EN (0) + // 0x00000010 [4] : OVERCURR_DETECT (0) + // 0x00000008 [3] : VBUS_DETECT_OVERRIDE_EN (0) + // 0x00000004 [2] : VBUS_DETECT (0) + // 0x00000002 [1] : VBUS_EN_OVERRIDE_EN (0) + // 0x00000001 [0] : VBUS_EN (0) + io_rw_32 pwr; + + _REG_(USB_USBPHY_DIRECT_OFFSET) // USB_USBPHY_DIRECT + // This register allows for direct control of the USB phy + // 0x00400000 [22] : DM_OVV (0): DM over voltage + // 0x00200000 [21] : DP_OVV (0): DP over voltage + // 0x00100000 [20] : DM_OVCN (0): DM overcurrent + // 0x00080000 [19] : DP_OVCN (0): DP overcurrent + // 0x00040000 [18] : RX_DM (0): DPM pin state + // 0x00020000 [17] : RX_DP (0): DPP pin state + // 0x00010000 [16] : RX_DD (0): Differential RX + // 0x00008000 [15] : TX_DIFFMODE (0): TX_DIFFMODE=0: Single ended mode + // 0x00004000 [14] : TX_FSSLEW (0): TX_FSSLEW=0: Low speed slew rate + // 0x00002000 [13] : TX_PD (0): TX power down override (if override enable is set) + // 0x00001000 [12] : RX_PD (0): RX power down override (if override enable is set) + // 0x00000800 [11] : TX_DM (0): Output data + // 0x00000400 [10] : TX_DP (0): Output data + // 0x00000200 [9] : TX_DM_OE (0): Output enable + // 0x00000100 [8] : TX_DP_OE (0): Output enable + // 0x00000040 [6] : DM_PULLDN_EN (0): DM pull down enable + // 0x00000020 [5] : DM_PULLUP_EN (0): DM pull up enable + // 0x00000010 [4] : DM_PULLUP_HISEL (0): Enable the second DM pull up resistor + // 0x00000004 [2] : DP_PULLDN_EN (0): DP pull down enable + // 0x00000002 [1] : DP_PULLUP_EN (0): DP pull up enable + // 0x00000001 [0] : DP_PULLUP_HISEL (0): Enable the second DP pull up resistor + io_rw_32 phy_direct; + + _REG_(USB_USBPHY_DIRECT_OVERRIDE_OFFSET) // USB_USBPHY_DIRECT_OVERRIDE + // Override enable for each control in usbphy_direct + // 0x00008000 [15] : TX_DIFFMODE_OVERRIDE_EN (0) + // 0x00001000 [12] : DM_PULLUP_OVERRIDE_EN (0) + // 0x00000800 [11] : TX_FSSLEW_OVERRIDE_EN (0) + // 0x00000400 [10] : TX_PD_OVERRIDE_EN (0) + // 0x00000200 [9] : RX_PD_OVERRIDE_EN (0) + // 0x00000100 [8] : TX_DM_OVERRIDE_EN (0) + // 0x00000080 [7] : TX_DP_OVERRIDE_EN (0) + // 0x00000040 [6] : TX_DM_OE_OVERRIDE_EN (0) + // 0x00000020 [5] : TX_DP_OE_OVERRIDE_EN (0) + // 0x00000010 [4] : DM_PULLDN_EN_OVERRIDE_EN (0) + // 0x00000008 [3] : DP_PULLDN_EN_OVERRIDE_EN (0) + // 0x00000004 [2] : DP_PULLUP_EN_OVERRIDE_EN (0) + // 0x00000002 [1] : DM_PULLUP_HISEL_OVERRIDE_EN (0) + // 0x00000001 [0] : DP_PULLUP_HISEL_OVERRIDE_EN (0) + io_rw_32 phy_direct_override; + + _REG_(USB_USBPHY_TRIM_OFFSET) // USB_USBPHY_TRIM + // Used to adjust trim values of USB phy pull down resistors + // 0x00001f00 [12:8] : DM_PULLDN_TRIM (0x1f): Value to drive to USB PHY + // 0x0000001f [4:0] : DP_PULLDN_TRIM (0x1f): Value to drive to USB PHY + io_rw_32 phy_trim; + + uint32_t _pad0; + + _REG_(USB_INTR_OFFSET) // USB_INTR + // Raw Interrupts + // 0x00080000 [19] : EP_STALL_NAK (0): Raised when any bit in EP_STATUS_STALL_NAK is set + // 0x00040000 [18] : ABORT_DONE (0): Raised when any bit in ABORT_DONE is set + // 0x00020000 [17] : DEV_SOF (0): Set every time the device receives a SOF (Start of Frame) packet + // 0x00010000 [16] : SETUP_REQ (0): Device + // 0x00008000 [15] : DEV_RESUME_FROM_HOST (0): Set when the device receives a resume from the host + // 0x00004000 [14] : DEV_SUSPEND (0): Set when the device suspend state changes + // 0x00002000 [13] : DEV_CONN_DIS (0): Set when the device connection state changes + // 0x00001000 [12] : BUS_RESET (0): Source: SIE_STATUS + // 0x00000800 [11] : VBUS_DETECT (0): Source: SIE_STATUS + // 0x00000400 [10] : STALL (0): Source: SIE_STATUS + // 0x00000200 [9] : ERROR_CRC (0): Source: SIE_STATUS + // 0x00000100 [8] : ERROR_BIT_STUFF (0): Source: SIE_STATUS + // 0x00000080 [7] : ERROR_RX_OVERFLOW (0): Source: SIE_STATUS + // 0x00000040 [6] : ERROR_RX_TIMEOUT (0): Source: SIE_STATUS + // 0x00000020 [5] : ERROR_DATA_SEQ (0): Source: SIE_STATUS + // 0x00000010 [4] : BUFF_STATUS (0): Raised when any bit in BUFF_STATUS is set + // 0x00000008 [3] : TRANS_COMPLETE (0): Raised every time SIE_STATUS + // 0x00000004 [2] : HOST_SOF (0): Host: raised every time the host sends a SOF (Start of Frame) + // 0x00000002 [1] : HOST_RESUME (0): Host: raised when a device wakes up the host + // 0x00000001 [0] : HOST_CONN_DIS (0): Host: raised when a device is connected or disconnected (i + io_ro_32 intr; + + _REG_(USB_INTE_OFFSET) // USB_INTE + // Interrupt Enable + // 0x00080000 [19] : EP_STALL_NAK (0): Raised when any bit in EP_STATUS_STALL_NAK is set + // 0x00040000 [18] : ABORT_DONE (0): Raised when any bit in ABORT_DONE is set + // 0x00020000 [17] : DEV_SOF (0): Set every time the device receives a SOF (Start of Frame) packet + // 0x00010000 [16] : SETUP_REQ (0): Device + // 0x00008000 [15] : DEV_RESUME_FROM_HOST (0): Set when the device receives a resume from the host + // 0x00004000 [14] : DEV_SUSPEND (0): Set when the device suspend state changes + // 0x00002000 [13] : DEV_CONN_DIS (0): Set when the device connection state changes + // 0x00001000 [12] : BUS_RESET (0): Source: SIE_STATUS + // 0x00000800 [11] : VBUS_DETECT (0): Source: SIE_STATUS + // 0x00000400 [10] : STALL (0): Source: SIE_STATUS + // 0x00000200 [9] : ERROR_CRC (0): Source: SIE_STATUS + // 0x00000100 [8] : ERROR_BIT_STUFF (0): Source: SIE_STATUS + // 0x00000080 [7] : ERROR_RX_OVERFLOW (0): Source: SIE_STATUS + // 0x00000040 [6] : ERROR_RX_TIMEOUT (0): Source: SIE_STATUS + // 0x00000020 [5] : ERROR_DATA_SEQ (0): Source: SIE_STATUS + // 0x00000010 [4] : BUFF_STATUS (0): Raised when any bit in BUFF_STATUS is set + // 0x00000008 [3] : TRANS_COMPLETE (0): Raised every time SIE_STATUS + // 0x00000004 [2] : HOST_SOF (0): Host: raised every time the host sends a SOF (Start of Frame) + // 0x00000002 [1] : HOST_RESUME (0): Host: raised when a device wakes up the host + // 0x00000001 [0] : HOST_CONN_DIS (0): Host: raised when a device is connected or disconnected (i + io_rw_32 inte; + + _REG_(USB_INTF_OFFSET) // USB_INTF + // Interrupt Force + // 0x00080000 [19] : EP_STALL_NAK (0): Raised when any bit in EP_STATUS_STALL_NAK is set + // 0x00040000 [18] : ABORT_DONE (0): Raised when any bit in ABORT_DONE is set + // 0x00020000 [17] : DEV_SOF (0): Set every time the device receives a SOF (Start of Frame) packet + // 0x00010000 [16] : SETUP_REQ (0): Device + // 0x00008000 [15] : DEV_RESUME_FROM_HOST (0): Set when the device receives a resume from the host + // 0x00004000 [14] : DEV_SUSPEND (0): Set when the device suspend state changes + // 0x00002000 [13] : DEV_CONN_DIS (0): Set when the device connection state changes + // 0x00001000 [12] : BUS_RESET (0): Source: SIE_STATUS + // 0x00000800 [11] : VBUS_DETECT (0): Source: SIE_STATUS + // 0x00000400 [10] : STALL (0): Source: SIE_STATUS + // 0x00000200 [9] : ERROR_CRC (0): Source: SIE_STATUS + // 0x00000100 [8] : ERROR_BIT_STUFF (0): Source: SIE_STATUS + // 0x00000080 [7] : ERROR_RX_OVERFLOW (0): Source: SIE_STATUS + // 0x00000040 [6] : ERROR_RX_TIMEOUT (0): Source: SIE_STATUS + // 0x00000020 [5] : ERROR_DATA_SEQ (0): Source: SIE_STATUS + // 0x00000010 [4] : BUFF_STATUS (0): Raised when any bit in BUFF_STATUS is set + // 0x00000008 [3] : TRANS_COMPLETE (0): Raised every time SIE_STATUS + // 0x00000004 [2] : HOST_SOF (0): Host: raised every time the host sends a SOF (Start of Frame) + // 0x00000002 [1] : HOST_RESUME (0): Host: raised when a device wakes up the host + // 0x00000001 [0] : HOST_CONN_DIS (0): Host: raised when a device is connected or disconnected (i + io_rw_32 intf; + + _REG_(USB_INTS_OFFSET) // USB_INTS + // Interrupt status after masking & forcing + // 0x00080000 [19] : EP_STALL_NAK (0): Raised when any bit in EP_STATUS_STALL_NAK is set + // 0x00040000 [18] : ABORT_DONE (0): Raised when any bit in ABORT_DONE is set + // 0x00020000 [17] : DEV_SOF (0): Set every time the device receives a SOF (Start of Frame) packet + // 0x00010000 [16] : SETUP_REQ (0): Device + // 0x00008000 [15] : DEV_RESUME_FROM_HOST (0): Set when the device receives a resume from the host + // 0x00004000 [14] : DEV_SUSPEND (0): Set when the device suspend state changes + // 0x00002000 [13] : DEV_CONN_DIS (0): Set when the device connection state changes + // 0x00001000 [12] : BUS_RESET (0): Source: SIE_STATUS + // 0x00000800 [11] : VBUS_DETECT (0): Source: SIE_STATUS + // 0x00000400 [10] : STALL (0): Source: SIE_STATUS + // 0x00000200 [9] : ERROR_CRC (0): Source: SIE_STATUS + // 0x00000100 [8] : ERROR_BIT_STUFF (0): Source: SIE_STATUS + // 0x00000080 [7] : ERROR_RX_OVERFLOW (0): Source: SIE_STATUS + // 0x00000040 [6] : ERROR_RX_TIMEOUT (0): Source: SIE_STATUS + // 0x00000020 [5] : ERROR_DATA_SEQ (0): Source: SIE_STATUS + // 0x00000010 [4] : BUFF_STATUS (0): Raised when any bit in BUFF_STATUS is set + // 0x00000008 [3] : TRANS_COMPLETE (0): Raised every time SIE_STATUS + // 0x00000004 [2] : HOST_SOF (0): Host: raised every time the host sends a SOF (Start of Frame) + // 0x00000002 [1] : HOST_RESUME (0): Host: raised when a device wakes up the host + // 0x00000001 [0] : HOST_CONN_DIS (0): Host: raised when a device is connected or disconnected (i + io_ro_32 ints; +} usb_hw_t; + +#define usb_hw ((usb_hw_t *const)USBCTRL_REGS_BASE) + +#define usb_dpram ((usb_device_dpram_t *)USBCTRL_DPRAM_BASE) +#define usbh_dpram ((usb_host_dpram_t *)USBCTRL_DPRAM_BASE) + +static_assert( USB_HOST_INTERRUPT_ENDPOINTS == 15, ""); + +#endif diff --git a/arkanoid/pico/hardware/structs/vreg_and_chip_reset.h b/arkanoid/pico/hardware/structs/vreg_and_chip_reset.h new file mode 100644 index 0000000..216b9f0 --- /dev/null +++ b/arkanoid/pico/hardware/structs/vreg_and_chip_reset.h @@ -0,0 +1,49 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_VREG_AND_CHIP_RESET_H +#define _HARDWARE_STRUCTS_VREG_AND_CHIP_RESET_H + +#include "../address_mapped.h" +#include "../regs/vreg_and_chip_reset.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_vreg_and_chip_reset +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/vreg_and_chip_reset.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(VREG_AND_CHIP_RESET_VREG_OFFSET) // VREG_AND_CHIP_RESET_VREG + // Voltage regulator control and status + // 0x00001000 [12] : ROK (0): regulation status + // 0x000000f0 [7:4] : VSEL (0xb): output voltage select + // 0x00000002 [1] : HIZ (0): high impedance mode select + // 0x00000001 [0] : EN (1): enable + io_rw_32 vreg; + + _REG_(VREG_AND_CHIP_RESET_BOD_OFFSET) // VREG_AND_CHIP_RESET_BOD + // brown-out detection control + // 0x000000f0 [7:4] : VSEL (0x9): threshold select + // 0x00000001 [0] : EN (1): enable + io_rw_32 bod; + + _REG_(VREG_AND_CHIP_RESET_CHIP_RESET_OFFSET) // VREG_AND_CHIP_RESET_CHIP_RESET + // Chip reset control and status + // 0x01000000 [24] : PSM_RESTART_FLAG (0): This is set by psm_restart from the debugger + // 0x00100000 [20] : HAD_PSM_RESTART (0): Last reset was from the debug port + // 0x00010000 [16] : HAD_RUN (0): Last reset was from the RUN pin + // 0x00000100 [8] : HAD_POR (0): Last reset was from the power-on reset or brown-out detection blocks + io_rw_32 chip_reset; +} vreg_and_chip_reset_hw_t; + +#define vreg_and_chip_reset_hw ((vreg_and_chip_reset_hw_t *const)VREG_AND_CHIP_RESET_BASE) + +#endif diff --git a/arkanoid/pico/hardware/structs/watchdog.h b/arkanoid/pico/hardware/structs/watchdog.h new file mode 100644 index 0000000..28ece31 --- /dev/null +++ b/arkanoid/pico/hardware/structs/watchdog.h @@ -0,0 +1,62 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_WATCHDOG_H +#define _HARDWARE_STRUCTS_WATCHDOG_H + +#include "../address_mapped.h" +#include "../regs/watchdog.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_watchdog +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/watchdog.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(WATCHDOG_CTRL_OFFSET) // WATCHDOG_CTRL + // Watchdog control + // 0x80000000 [31] : TRIGGER (0): Trigger a watchdog reset + // 0x40000000 [30] : ENABLE (0): When not enabled the watchdog timer is paused + // 0x04000000 [26] : PAUSE_DBG1 (1): Pause the watchdog timer when processor 1 is in debug mode + // 0x02000000 [25] : PAUSE_DBG0 (1): Pause the watchdog timer when processor 0 is in debug mode + // 0x01000000 [24] : PAUSE_JTAG (1): Pause the watchdog timer when JTAG is accessing the bus fabric + // 0x00ffffff [23:0] : TIME (0): Indicates the number of ticks / 2 (see errata RP2040-E1) before a watchdog reset will... + io_rw_32 ctrl; + + _REG_(WATCHDOG_LOAD_OFFSET) // WATCHDOG_LOAD + // Load the watchdog timer + // 0x00ffffff [23:0] : LOAD (0) + io_wo_32 load; + + _REG_(WATCHDOG_REASON_OFFSET) // WATCHDOG_REASON + // Logs the reason for the last reset + // 0x00000002 [1] : FORCE (0) + // 0x00000001 [0] : TIMER (0) + io_ro_32 reason; + + _REG_(WATCHDOG_SCRATCH0_OFFSET) // WATCHDOG_SCRATCH0 + // (Description copied from array index 0 register WATCHDOG_SCRATCH0 applies similarly to other array indexes) + // + // Scratch register + io_rw_32 scratch[8]; + + _REG_(WATCHDOG_TICK_OFFSET) // WATCHDOG_TICK + // Controls the tick generator + // 0x000ff800 [19:11] : COUNT (0): Count down timer: the remaining number clk_tick cycles before the next tick is generated + // 0x00000400 [10] : RUNNING (0): Is the tick generator running? + // 0x00000200 [9] : ENABLE (1): start / stop tick generation + // 0x000001ff [8:0] : CYCLES (0): Total number of clk_tick cycles before the next tick + io_rw_32 tick; +} watchdog_hw_t; + +#define watchdog_hw ((watchdog_hw_t *const)WATCHDOG_BASE) + +#endif diff --git a/arkanoid/pico/hardware/structs/xip_ctrl.h b/arkanoid/pico/hardware/structs/xip_ctrl.h new file mode 100644 index 0000000..2a1de36 --- /dev/null +++ b/arkanoid/pico/hardware/structs/xip_ctrl.h @@ -0,0 +1,72 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_XIP_CTRL_H +#define _HARDWARE_STRUCTS_XIP_CTRL_H + +#include "../address_mapped.h" +#include "../regs/xip.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_xip +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/xip.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +typedef struct { + _REG_(XIP_CTRL_OFFSET) // XIP_CTRL + // Cache control + // 0x00000008 [3] : POWER_DOWN (0): When 1, the cache memories are powered down + // 0x00000002 [1] : ERR_BADWRITE (1): When 1, writes to any alias other than 0x0 (caching, allocating) + // 0x00000001 [0] : EN (1): When 1, enable the cache + io_rw_32 ctrl; + + _REG_(XIP_FLUSH_OFFSET) // XIP_FLUSH + // Cache Flush control + // 0x00000001 [0] : FLUSH (0): Write 1 to flush the cache + io_rw_32 flush; + + _REG_(XIP_STAT_OFFSET) // XIP_STAT + // Cache Status + // 0x00000004 [2] : FIFO_FULL (0): When 1, indicates the XIP streaming FIFO is completely full + // 0x00000002 [1] : FIFO_EMPTY (1): When 1, indicates the XIP streaming FIFO is completely empty + // 0x00000001 [0] : FLUSH_READY (0): Reads as 0 while a cache flush is in progress, and 1 otherwise + io_ro_32 stat; + + _REG_(XIP_CTR_HIT_OFFSET) // XIP_CTR_HIT + // Cache Hit counter + io_rw_32 ctr_hit; + + _REG_(XIP_CTR_ACC_OFFSET) // XIP_CTR_ACC + // Cache Access counter + io_rw_32 ctr_acc; + + _REG_(XIP_STREAM_ADDR_OFFSET) // XIP_STREAM_ADDR + // FIFO stream address + // 0xfffffffc [31:2] : STREAM_ADDR (0): The address of the next word to be streamed from flash to the streaming FIFO + io_rw_32 stream_addr; + + _REG_(XIP_STREAM_CTR_OFFSET) // XIP_STREAM_CTR + // FIFO stream control + // 0x003fffff [21:0] : STREAM_CTR (0): Write a nonzero value to start a streaming read + io_rw_32 stream_ctr; + + _REG_(XIP_STREAM_FIFO_OFFSET) // XIP_STREAM_FIFO + // FIFO stream data + io_ro_32 stream_fifo; +} xip_ctrl_hw_t; + +#define xip_ctrl_hw ((xip_ctrl_hw_t *const)XIP_CTRL_BASE) + +#define XIP_STAT_FIFO_FULL XIP_STAT_FIFO_FULL_BITS +#define XIP_STAT_FIFO_EMPTY XIP_STAT_FIFO_EMPTY_BITS +#define XIP_STAT_FLUSH_RDY XIP_STAT_FLUSH_READY_BITS + +#endif diff --git a/arkanoid/pico/hardware/structs/xosc.h b/arkanoid/pico/hardware/structs/xosc.h new file mode 100644 index 0000000..feb52a4 --- /dev/null +++ b/arkanoid/pico/hardware/structs/xosc.h @@ -0,0 +1,60 @@ +// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT + +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_STRUCTS_XOSC_H +#define _HARDWARE_STRUCTS_XOSC_H + +#include "../address_mapped.h" +#include "../regs/xosc.h" + +// Reference to datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf#tab-registerlist_xosc +// +// The _REG_ macro is intended to help make the register navigable in your IDE (for example, using the "Go to Definition" feature) +// _REG_(x) will link to the corresponding register in ../regs/xosc.h. +// +// Bit-field descriptions are of the form: +// BITMASK [BITRANGE]: FIELDNAME (RESETVALUE): DESCRIPTION + +/// \tag::xosc_hw[] +typedef struct { + _REG_(XOSC_CTRL_OFFSET) // XOSC_CTRL + // Crystal Oscillator Control + // 0x00fff000 [23:12] : ENABLE (0): On power-up this field is initialised to DISABLE and the chip runs from the ROSC + // 0x00000fff [11:0] : FREQ_RANGE (0): Frequency range + io_rw_32 ctrl; + + _REG_(XOSC_STATUS_OFFSET) // XOSC_STATUS + // Crystal Oscillator Status + // 0x80000000 [31] : STABLE (0): Oscillator is running and stable + // 0x01000000 [24] : BADWRITE (0): An invalid value has been written to CTRL_ENABLE or CTRL_FREQ_RANGE or DORMANT + // 0x00001000 [12] : ENABLED (0): Oscillator is enabled but not necessarily running and stable, resets to 0 + // 0x00000003 [1:0] : FREQ_RANGE (0): The current frequency range setting, always reads 0 + io_rw_32 status; + + _REG_(XOSC_DORMANT_OFFSET) // XOSC_DORMANT + // Crystal Oscillator pause control + io_rw_32 dormant; + + _REG_(XOSC_STARTUP_OFFSET) // XOSC_STARTUP + // Controls the startup delay + // 0x00100000 [20] : X4 (0): Multiplies the startup_delay by 4 + // 0x00003fff [13:0] : DELAY (0xc4): in multiples of 256*xtal_period + io_rw_32 startup; + + uint32_t _pad0[3]; + + _REG_(XOSC_COUNT_OFFSET) // XOSC_COUNT + // A down counter running at the xosc frequency which counts to zero and stops + // 0x000000ff [7:0] : COUNT (0) + io_rw_32 count; +} xosc_hw_t; + +#define xosc_hw ((xosc_hw_t *const)XOSC_BASE) +/// \end::xosc_hw[] + +#endif diff --git a/arkanoid/pico/hardware/sync.c b/arkanoid/pico/hardware/sync.c new file mode 100644 index 0000000..f926fa8 --- /dev/null +++ b/arkanoid/pico/hardware/sync.c @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "sync.h" +#include "claim.h" + +static_assert(PICO_SPINLOCK_ID_STRIPED_LAST >= PICO_SPINLOCK_ID_STRIPED_FIRST, ""); +static uint8_t striped_spin_lock_num = PICO_SPINLOCK_ID_STRIPED_FIRST; +static uint32_t claimed; + +static void check_lock_num(uint __unused lock_num) { + invalid_params_if(SYNC, lock_num >= 32); +} + +void spin_locks_reset(void) { + for (uint i = 0; i < NUM_SPIN_LOCKS; i++) { + spin_unlock_unsafe(spin_lock_instance(i)); + } +} + +spin_lock_t *spin_lock_init(uint lock_num) { + assert(lock_num < NUM_SPIN_LOCKS); + spin_lock_t *lock = spin_lock_instance(lock_num); + spin_unlock_unsafe(lock); + return lock; +} + +uint next_striped_spin_lock_num() { + uint rc = striped_spin_lock_num++; + if (striped_spin_lock_num > PICO_SPINLOCK_ID_STRIPED_LAST) { + striped_spin_lock_num = PICO_SPINLOCK_ID_STRIPED_FIRST; + } + return rc; +} + +void spin_lock_claim(uint lock_num) { + check_lock_num(lock_num); + hw_claim_or_assert((uint8_t *) &claimed, lock_num, "Spinlock %d is already claimed"); +} + +void spin_lock_claim_mask(uint32_t mask) { + for(uint i = 0; mask; i++, mask >>= 1u) { + if (mask & 1u) spin_lock_claim(i); + } +} + +void spin_lock_unclaim(uint lock_num) { + check_lock_num(lock_num); + spin_unlock_unsafe(spin_lock_instance(lock_num)); + hw_claim_clear((uint8_t *) &claimed, lock_num); +} + +int spin_lock_claim_unused(bool required) { + return hw_claim_unused_from_range((uint8_t*)&claimed, required, PICO_SPINLOCK_ID_CLAIM_FREE_FIRST, PICO_SPINLOCK_ID_CLAIM_FREE_LAST, "No spinlocks are available"); +} + +bool spin_lock_is_claimed(uint lock_num) { + check_lock_num(lock_num); + return hw_is_claimed((uint8_t *) &claimed, lock_num); +} + diff --git a/arkanoid/pico/hardware/sync.h b/arkanoid/pico/hardware/sync.h new file mode 100644 index 0000000..123da2e --- /dev/null +++ b/arkanoid/pico/hardware/sync.h @@ -0,0 +1,403 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_SYNC_H +#define _HARDWARE_SYNC_H + +#include "../pico.h" +#include "address_mapped.h" +#include "regs/sio.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file sync.h + * \defgroup hardware_sync hardware_sync + * + * Low level hardware spin locks, barrier and processor event APIs + * + * Spin Locks + * ---------- + * + * The RP2040 provides 32 hardware spin locks, which can be used to manage mutually-exclusive access to shared software + * and hardware resources. + * + * Generally each spin lock itself is a shared resource, + * i.e. the same hardware spin lock can be used by multiple higher level primitives (as long as the spin locks are neither held for long periods, nor + * held concurrently with other spin locks by the same core - which could lead to deadlock). A hardware spin lock that is exclusively owned can be used + * individually without more flexibility and without regard to other software. Note that no hardware spin lock may + * be acquired re-entrantly (i.e. hardware spin locks are not on their own safe for use by both thread code and IRQs) however the default spinlock related + * methods here (e.g. \ref spin_lock_blocking) always disable interrupts while the lock is held as use by IRQ handlers and user code is common/desirable, + * and spin locks are only expected to be held for brief periods. + * + * The SDK uses the following default spin lock assignments, classifying which spin locks are reserved for exclusive/special purposes + * vs those suitable for more general shared use: + * + * Number (ID) | Description + * :---------: | ----------- + * 0-13 | Currently reserved for exclusive use by the SDK and other libraries. If you use these spin locks, you risk breaking SDK or other library functionality. Each reserved spin lock used individually has its own PICO_SPINLOCK_ID so you can search for those. + * 14,15 | (\ref PICO_SPINLOCK_ID_OS1 and \ref PICO_SPINLOCK_ID_OS2). Currently reserved for exclusive use by an operating system (or other system level software) co-existing with the SDK. + * 16-23 | (\ref PICO_SPINLOCK_ID_STRIPED_FIRST - \ref PICO_SPINLOCK_ID_STRIPED_LAST). Spin locks from this range are assigned in a round-robin fashion via \ref next_striped_spin_lock_num(). These spin locks are shared, but assigning numbers from a range reduces the probability that two higher level locking primitives using _striped_ spin locks will actually be using the same spin lock. + * 24-31 | (\ref PICO_SPINLOCK_ID_CLAIM_FREE_FIRST - \ref PICO_SPINLOCK_ID_CLAIM_FREE_LAST). These are reserved for exclusive use and are allocated on a first come first served basis at runtime via \ref spin_lock_claim_unused() + */ + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_SYNC, Enable/disable assertions in the HW sync module, type=bool, default=0, group=hardware_sync +#ifndef PARAM_ASSERTIONS_ENABLED_SYNC +#define PARAM_ASSERTIONS_ENABLED_SYNC 0 +#endif + +/** \brief A spin lock identifier + * \ingroup hardware_sync + */ +typedef volatile uint32_t spin_lock_t; + +// PICO_CONFIG: PICO_SPINLOCK_ID_IRQ, Spinlock ID for IRQ protection, min=0, max=31, default=9, group=hardware_sync +#ifndef PICO_SPINLOCK_ID_IRQ +#define PICO_SPINLOCK_ID_IRQ 9 +#endif + +// PICO_CONFIG: PICO_SPINLOCK_ID_TIMER, Spinlock ID for Timer protection, min=0, max=31, default=10, group=hardware_sync +#ifndef PICO_SPINLOCK_ID_TIMER +#define PICO_SPINLOCK_ID_TIMER 10 +#endif + +// PICO_CONFIG: PICO_SPINLOCK_ID_HARDWARE_CLAIM, Spinlock ID for Hardware claim protection, min=0, max=31, default=11, group=hardware_sync +#ifndef PICO_SPINLOCK_ID_HARDWARE_CLAIM +#define PICO_SPINLOCK_ID_HARDWARE_CLAIM 11 +#endif + +// PICO_CONFIG: PICO_SPINLOCK_ID_OS1, First Spinlock ID reserved for use by low level OS style software, min=0, max=31, default=14, group=hardware_sync +#ifndef PICO_SPINLOCK_ID_OS1 +#define PICO_SPINLOCK_ID_OS1 14 +#endif + +// PICO_CONFIG: PICO_SPINLOCK_ID_OS2, Second Spinlock ID reserved for use by low level OS style software, min=0, max=31, default=15, group=hardware_sync +#ifndef PICO_SPINLOCK_ID_OS2 +#define PICO_SPINLOCK_ID_OS2 15 +#endif + +// PICO_CONFIG: PICO_SPINLOCK_ID_STRIPED_FIRST, Lowest Spinlock ID in the 'striped' range, min=0, max=31, default=16, group=hardware_sync +#ifndef PICO_SPINLOCK_ID_STRIPED_FIRST +#define PICO_SPINLOCK_ID_STRIPED_FIRST 16 +#endif + +// PICO_CONFIG: PICO_SPINLOCK_ID_STRIPED_LAST, Highest Spinlock ID in the 'striped' range, min=0, max=31, default=23, group=hardware_sync +#ifndef PICO_SPINLOCK_ID_STRIPED_LAST +#define PICO_SPINLOCK_ID_STRIPED_LAST 23 +#endif + +// PICO_CONFIG: PICO_SPINLOCK_ID_CLAIM_FREE_FIRST, Lowest Spinlock ID in the 'claim free' range, min=0, max=31, default=24, group=hardware_sync +#ifndef PICO_SPINLOCK_ID_CLAIM_FREE_FIRST +#define PICO_SPINLOCK_ID_CLAIM_FREE_FIRST 24 +#endif + +#ifdef PICO_SPINLOCK_ID_CLAIM_FREE_END +#warning PICO_SPINLOCK_ID_CLAIM_FREE_END has been renamed to PICO_SPINLOCK_ID_CLAIM_FREE_LAST +#endif + +// PICO_CONFIG: PICO_SPINLOCK_ID_CLAIM_FREE_LAST, Highest Spinlock ID in the 'claim free' range, min=0, max=31, default=31, group=hardware_sync +#ifndef PICO_SPINLOCK_ID_CLAIM_FREE_LAST +#define PICO_SPINLOCK_ID_CLAIM_FREE_LAST 31 +#endif + +/*! \brief Insert a SEV instruction in to the code path. + * \ingroup hardware_sync + + * The SEV (send event) instruction sends an event to both cores. + */ +__force_inline static void __sev(void) { + __asm volatile ("sev"); +} + +/*! \brief Insert a WFE instruction in to the code path. + * \ingroup hardware_sync + * + * The WFE (wait for event) instruction waits until one of a number of + * events occurs, including events signalled by the SEV instruction on either core. + */ +__force_inline static void __wfe(void) { + __asm volatile ("wfe"); +} + +/*! \brief Insert a WFI instruction in to the code path. + * \ingroup hardware_sync +* + * The WFI (wait for interrupt) instruction waits for a interrupt to wake up the core. + */ +__force_inline static void __wfi(void) { + __asm volatile ("wfi"); +} + +/*! \brief Insert a DMB instruction in to the code path. + * \ingroup hardware_sync + * + * The DMB (data memory barrier) acts as a memory barrier, all memory accesses prior to this + * instruction will be observed before any explicit access after the instruction. + */ +__force_inline static void __dmb(void) { + __asm volatile ("dmb" : : : "memory"); +} + +/*! \brief Insert a DSB instruction in to the code path. + * \ingroup hardware_sync + * + * The DSB (data synchronization barrier) acts as a special kind of data + * memory barrier (DMB). The DSB operation completes when all explicit memory + * accesses before this instruction complete. + */ +__force_inline static void __dsb(void) { + __asm volatile ("dsb" : : : "memory"); +} + +/*! \brief Insert a ISB instruction in to the code path. + * \ingroup hardware_sync + * + * ISB acts as an instruction synchronization barrier. It flushes the pipeline of the processor, + * so that all instructions following the ISB are fetched from cache or memory again, after + * the ISB instruction has been completed. + */ +__force_inline static void __isb(void) { + __asm volatile ("isb"); +} + +/*! \brief Acquire a memory fence + * \ingroup hardware_sync + */ +__force_inline static void __mem_fence_acquire(void) { + // the original code below makes it hard for us to be included from C++ via a header + // which itself is in an extern "C", so just use __dmb instead, which is what + // is required on Cortex M0+ + __dmb(); +//#ifndef __cplusplus +// atomic_thread_fence(memory_order_acquire); +//#else +// std::atomic_thread_fence(std::memory_order_acquire); +//#endif +} + +/*! \brief Release a memory fence + * \ingroup hardware_sync + * + */ +__force_inline static void __mem_fence_release(void) { + // the original code below makes it hard for us to be included from C++ via a header + // which itself is in an extern "C", so just use __dmb instead, which is what + // is required on Cortex M0+ + __dmb(); +//#ifndef __cplusplus +// atomic_thread_fence(memory_order_release); +//#else +// std::atomic_thread_fence(std::memory_order_release); +//#endif +} + +/*! \brief Save and disable interrupts + * \ingroup hardware_sync + * + * \return The prior interrupt enable status for restoration later via restore_interrupts() + */ +__force_inline static uint32_t save_and_disable_interrupts(void) { + uint32_t status; + __asm volatile ("mrs %0, PRIMASK" : "=r" (status)::); + __asm volatile ("cpsid i"); + return status; +} + +/*! \brief Restore interrupts to a specified state + * \ingroup hardware_sync + * + * \param status Previous interrupt status from save_and_disable_interrupts() + */ +__force_inline static void restore_interrupts(uint32_t status) { + __asm volatile ("msr PRIMASK,%0"::"r" (status) : ); +} + +/*! \brief Get HW Spinlock instance from number + * \ingroup hardware_sync + * + * \param lock_num Spinlock ID + * \return The spinlock instance + */ +__force_inline static spin_lock_t *spin_lock_instance(uint lock_num) { + invalid_params_if(SYNC, lock_num >= NUM_SPIN_LOCKS); + return (spin_lock_t *) (SIO_BASE + SIO_SPINLOCK0_OFFSET + lock_num * 4); +} + +/*! \brief Get HW Spinlock number from instance + * \ingroup hardware_sync + * + * \param lock The Spinlock instance + * \return The Spinlock ID + */ +__force_inline static uint spin_lock_get_num(spin_lock_t *lock) { + invalid_params_if(SYNC, (uint) lock < SIO_BASE + SIO_SPINLOCK0_OFFSET || + (uint) lock >= NUM_SPIN_LOCKS * sizeof(spin_lock_t) + SIO_BASE + SIO_SPINLOCK0_OFFSET || + ((uint) lock - SIO_BASE + SIO_SPINLOCK0_OFFSET) % sizeof(spin_lock_t) != 0); + return (uint) (lock - (spin_lock_t *) (SIO_BASE + SIO_SPINLOCK0_OFFSET)); +} + +/*! \brief Acquire a spin lock without disabling interrupts (hence unsafe) + * \ingroup hardware_sync + * + * \param lock Spinlock instance + */ +__force_inline static void spin_lock_unsafe_blocking(spin_lock_t *lock) { + // Note we don't do a wfe or anything, because by convention these spin_locks are VERY SHORT LIVED and NEVER BLOCK and run + // with INTERRUPTS disabled (to ensure that)... therefore nothing on our core could be blocking us, so we just need to wait on another core + // anyway which should be finished soon + while (__builtin_expect(!*lock, 0)); + __mem_fence_acquire(); +} + +/*! \brief Release a spin lock without re-enabling interrupts + * \ingroup hardware_sync + * + * \param lock Spinlock instance + */ +__force_inline static void spin_unlock_unsafe(spin_lock_t *lock) { + __mem_fence_release(); + *lock = 0; +} + +/*! \brief Acquire a spin lock safely + * \ingroup hardware_sync + * + * This function will disable interrupts prior to acquiring the spinlock + * + * \param lock Spinlock instance + * \return interrupt status to be used when unlocking, to restore to original state + */ +__force_inline static uint32_t spin_lock_blocking(spin_lock_t *lock) { + uint32_t save = save_and_disable_interrupts(); + spin_lock_unsafe_blocking(lock); + return save; +} + +/*! \brief Check to see if a spinlock is currently acquired elsewhere. + * \ingroup hardware_sync + * + * \param lock Spinlock instance + */ +inline static bool is_spin_locked(spin_lock_t *lock) { + check_hw_size(spin_lock_t, 4); + uint lock_num = spin_lock_get_num(lock); + return 0 != (*(io_ro_32 *) (SIO_BASE + SIO_SPINLOCK_ST_OFFSET) & (1u << lock_num)); +} + +/*! \brief Release a spin lock safely + * \ingroup hardware_sync + * + * This function will re-enable interrupts according to the parameters. + * + * \param lock Spinlock instance + * \param saved_irq Return value from the \ref spin_lock_blocking() function. + * \return interrupt status to be used when unlocking, to restore to original state + * + * \sa spin_lock_blocking() + */ +__force_inline static void spin_unlock(spin_lock_t *lock, uint32_t saved_irq) { + spin_unlock_unsafe(lock); + restore_interrupts(saved_irq); +} + +/*! \brief Get the current core number + * \ingroup hardware_sync + * + * \return The core number the call was made from + */ +__force_inline static uint get_core_num(void) { + return (*(uint32_t *) (SIO_BASE + SIO_CPUID_OFFSET)); +} + +/*! \brief Initialise a spin lock + * \ingroup hardware_sync + * + * The spin lock is initially unlocked + * + * \param lock_num The spin lock number + * \return The spin lock instance + */ +spin_lock_t *spin_lock_init(uint lock_num); + +/*! \brief Release all spin locks + * \ingroup hardware_sync + */ +void spin_locks_reset(void); + +/*! \brief Return a spin lock number from the _striped_ range + * \ingroup hardware_sync + * + * Returns a spin lock number in the range PICO_SPINLOCK_ID_STRIPED_FIRST to PICO_SPINLOCK_ID_STRIPED_LAST + * in a round robin fashion. This does not grant the caller exclusive access to the spin lock, so the caller + * must: + * + * -# Abide (with other callers) by the contract of only holding this spin lock briefly (and with IRQs disabled - the default via \ref spin_lock_blocking()), + * and not whilst holding other spin locks. + * -# Be OK with any contention caused by the - brief due to the above requirement - contention with other possible users of the spin lock. + * + * \return lock_num a spin lock number the caller may use (non exclusively) + * \see PICO_SPINLOCK_ID_STRIPED_FIRST + * \see PICO_SPINLOCK_ID_STRIPED_LAST + */ +uint next_striped_spin_lock_num(void); + +/*! \brief Mark a spin lock as used + * \ingroup hardware_sync + * + * Method for cooperative claiming of hardware. Will cause a panic if the spin lock + * is already claimed. Use of this method by libraries detects accidental + * configurations that would fail in unpredictable ways. + * + * \param lock_num the spin lock number + */ +void spin_lock_claim(uint lock_num); + +/*! \brief Mark multiple spin locks as used + * \ingroup hardware_sync + * + * Method for cooperative claiming of hardware. Will cause a panic if any of the spin locks + * are already claimed. Use of this method by libraries detects accidental + * configurations that would fail in unpredictable ways. + * + * \param lock_num_mask Bitfield of all required spin locks to claim (bit 0 == spin lock 0, bit 1 == spin lock 1 etc) + */ +void spin_lock_claim_mask(uint32_t lock_num_mask); + +/*! \brief Mark a spin lock as no longer used + * \ingroup hardware_sync + * + * Method for cooperative claiming of hardware. + * + * \param lock_num the spin lock number to release + */ +void spin_lock_unclaim(uint lock_num); + +/*! \brief Claim a free spin lock + * \ingroup hardware_sync + * + * \param required if true the function will panic if none are available + * \return the spin lock number or -1 if required was false, and none were free + */ +int spin_lock_claim_unused(bool required); + +/*! \brief Determine if a spin lock is claimed + * \ingroup hardware_sync + * + * \param lock_num the spin lock number + * \return true if claimed, false otherwise + * \see spin_lock_claim + * \see spin_lock_claim_mask + */ +bool spin_lock_is_claimed(uint lock_num); + +#define remove_volatile_cast(t, x) ({__mem_fence_acquire(); (t)(x); }) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/hardware/timer.c b/arkanoid/pico/hardware/timer.c new file mode 100644 index 0000000..f3b0608 --- /dev/null +++ b/arkanoid/pico/hardware/timer.c @@ -0,0 +1,230 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "timer.h" +#include "irq.h" +#include "sync.h" +#include "claim.h" + +check_hw_layout(timer_hw_t, ints, TIMER_INTS_OFFSET); + +static hardware_alarm_callback_t alarm_callbacks[NUM_TIMERS]; +static uint32_t target_hi[NUM_TIMERS]; +static uint8_t timer_callbacks_pending; + +static_assert(NUM_TIMERS <= 4, ""); +static uint8_t claimed; + +void hardware_alarm_claim(uint alarm_num) { + check_hardware_alarm_num_param(alarm_num); + hw_claim_or_assert(&claimed, alarm_num, "Hardware alarm %d already claimed"); +} + +void hardware_alarm_unclaim(uint alarm_num) { + check_hardware_alarm_num_param(alarm_num); + hw_claim_clear(&claimed, alarm_num); +} + +bool hardware_alarm_is_claimed(uint alarm_num) { + check_hardware_alarm_num_param(alarm_num); + return hw_is_claimed(&claimed, alarm_num); +} + +/// tag::time_us_64[] +uint64_t time_us_64() { + // Need to make sure that the upper 32 bits of the timer + // don't change, so read that first + uint32_t hi = timer_hw->timerawh; + uint32_t lo; + do { + // Read the lower 32 bits + lo = timer_hw->timerawl; + // Now read the upper 32 bits again and + // check that it hasn't incremented. If it has loop around + // and read the lower 32 bits again to get an accurate value + uint32_t next_hi = timer_hw->timerawh; + if (hi == next_hi) break; + hi = next_hi; + } while (true); + return ((uint64_t) hi << 32u) | lo; +} +/// end::time_us_64[] + +/// \tag::busy_wait[] +void busy_wait_us_32(uint32_t delay_us) { + if (0 <= (int32_t)delay_us) { + // we only allow 31 bits, otherwise we could have a race in the loop below with + // values very close to 2^32 + uint32_t start = timer_hw->timerawl; + while (timer_hw->timerawl - start < delay_us) { + tight_loop_contents(); + } + } else { + busy_wait_us(delay_us); + } +} + +void busy_wait_us(uint64_t delay_us) { + uint64_t base = time_us_64(); + uint64_t target = base + delay_us; + if (target < base) { + target = (uint64_t)-1; + } + absolute_time_t t; + update_us_since_boot(&t, target); + busy_wait_until(t); +} + +void busy_wait_ms(uint32_t delay_ms) +{ + if (delay_ms <= 0x7fffffffu / 1000) { + busy_wait_us_32(delay_ms * 1000); + } else { + busy_wait_us(delay_ms * 1000ull); + } +} + +void busy_wait_until(absolute_time_t t) { + uint64_t target = to_us_since_boot(t); + uint32_t hi_target = (uint32_t)(target >> 32u); + uint32_t hi = timer_hw->timerawh; + while (hi < hi_target) { + hi = timer_hw->timerawh; + tight_loop_contents(); + } + while (hi == hi_target && timer_hw->timerawl < (uint32_t) target) { + hi = timer_hw->timerawh; + tight_loop_contents(); + } +} +/// \end::busy_wait[] + +static inline uint harware_alarm_irq_number(uint alarm_num) { + return TIMER_IRQ_0 + alarm_num; +} + +static void hardware_alarm_irq_handler(void) { + // Determine which timer this IRQ is for + uint32_t ipsr; + __asm volatile ("mrs %0, ipsr" : "=r" (ipsr)::); + uint alarm_num = (ipsr & 0x3fu) - 16 - TIMER_IRQ_0; + check_hardware_alarm_num_param(alarm_num); + + hardware_alarm_callback_t callback = NULL; + + spin_lock_t *lock = spin_lock_instance(PICO_SPINLOCK_ID_TIMER); + uint32_t save = spin_lock_blocking(lock); + // Clear the timer IRQ (inside lock, because we check whether we have handled the IRQ yet in alarm_set by looking at the interrupt status + timer_hw->intr = 1u << alarm_num; + + // make sure the IRQ is still valid + if (timer_callbacks_pending & (1u << alarm_num)) { + // Now check whether we have a timer event to handle that isn't already obsolete (this could happen if we + // were already in the IRQ handler before someone else changed the timer setup + if (timer_hw->timerawh >= target_hi[alarm_num]) { + // we have reached the right high word as well as low word value + callback = alarm_callbacks[alarm_num]; + timer_callbacks_pending &= (uint8_t)~(1u << alarm_num); + } else { + // try again in 2^32 us + timer_hw->alarm[alarm_num] = timer_hw->alarm[alarm_num]; // re-arm the timer + } + } + + spin_unlock(lock, save); + + if (callback) { + callback(alarm_num); + } +} + +void hardware_alarm_set_callback(uint alarm_num, hardware_alarm_callback_t callback) { + // todo check current core owner + // note this should probably be subsumed by irq_set_exclusive_handler anyway, since that + // should disallow IRQ handlers on both cores + check_hardware_alarm_num_param(alarm_num); + uint irq_num = harware_alarm_irq_number(alarm_num); + spin_lock_t *lock = spin_lock_instance(PICO_SPINLOCK_ID_TIMER); + uint32_t save = spin_lock_blocking(lock); + if (callback) { + if (hardware_alarm_irq_handler != irq_get_vtable_handler(irq_num)) { + // note that set_exclusive will silently allow you to set the handler to the same thing + // since it is idempotent, which means we don't need to worry about locking ourselves + irq_set_exclusive_handler(irq_num, hardware_alarm_irq_handler); + irq_set_enabled(irq_num, true); + // Enable interrupt in block and at processor + hw_set_bits(&timer_hw->inte, 1u << alarm_num); + } + alarm_callbacks[alarm_num] = callback; + } else { + alarm_callbacks[alarm_num] = NULL; + timer_callbacks_pending &= (uint8_t)~(1u << alarm_num); + irq_remove_handler(irq_num, hardware_alarm_irq_handler); + irq_set_enabled(irq_num, false); + } + spin_unlock(lock, save); +} + +bool hardware_alarm_set_target(uint alarm_num, absolute_time_t target) { + bool missed; + uint64_t now = time_us_64(); + uint64_t t = to_us_since_boot(target); + if (now >= t) { + missed = true; + } else { + missed = false; + + // 1) actually set the hardware timer + spin_lock_t *lock = spin_lock_instance(PICO_SPINLOCK_ID_TIMER); + uint32_t save = spin_lock_blocking(lock); + uint8_t old_timer_callbacks_pending = timer_callbacks_pending; + timer_callbacks_pending |= (uint8_t)(1u << alarm_num); + timer_hw->intr = 1u << alarm_num; // clear any IRQ + timer_hw->alarm[alarm_num] = (uint32_t) t; + // Set the alarm. Writing time should arm it + target_hi[alarm_num] = (uint32_t)(t >> 32u); + + // 2) check for races + if (!(timer_hw->armed & 1u << alarm_num)) { + // not armed, so has already fired .. IRQ must be pending (we are still under lock) + assert(timer_hw->ints & 1u << alarm_num); + } else { + if (time_us_64() >= t) { + // we are already at or past the right time; there is no point in us racing against the IRQ + // we are about to generate. note however that, if there was already a timer pending before, + // then we still let the IRQ fire, as whatever it was, is not handled by our setting missed=true here + missed = true; + if (timer_callbacks_pending != old_timer_callbacks_pending) { + // disarm the timer + timer_hw->armed = 1u << alarm_num; + // clear the IRQ... + timer_hw->intr = 1u << alarm_num; + // ... including anything pending on the processor - perhaps unnecessary, but + // our timer flag says we aren't expecting anything. + irq_clear(harware_alarm_irq_number(alarm_num)); + // and clear our flag so that if the IRQ handler is already active (because it is on + // the other core) it will also skip doing anything + timer_callbacks_pending = old_timer_callbacks_pending; + } + } + } + spin_unlock(lock, save); + // note at this point any pending timer IRQ can likely run + } + return missed; +} + +void hardware_alarm_cancel(uint alarm_num) { + check_hardware_alarm_num_param(alarm_num); + + spin_lock_t *lock = spin_lock_instance(PICO_SPINLOCK_ID_TIMER); + uint32_t save = spin_lock_blocking(lock); + timer_hw->armed = 1u << alarm_num; + timer_callbacks_pending &= (uint8_t)~(1u << alarm_num); + spin_unlock(lock, save); +} + + diff --git a/arkanoid/pico/hardware/timer.h b/arkanoid/pico/hardware/timer.h new file mode 100644 index 0000000..e1227f3 --- /dev/null +++ b/arkanoid/pico/hardware/timer.h @@ -0,0 +1,198 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_TIMER_H +#define _HARDWARE_TIMER_H + +#include "../pico.h" +#include "structs/timer.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file timer.h + * \defgroup hardware_timer hardware_timer + * + * Low-level hardware timer API + * + * This API provides medium level access to the timer HW. + * See also \ref pico_time which provides higher levels functionality using the hardware timer. + * + * The timer peripheral on RP2040 supports the following features: + * - single 64-bit counter, incrementing once per microsecond + * - Latching two-stage read of counter, for race-free read over 32 bit bus + * - Four alarms: match on the lower 32 bits of counter, IRQ on match. + * + * By default the timer uses a one microsecond reference that is generated in the Watchdog (see Section 4.8.2) which is derived + * from the clk_ref. + * + * The timer has 4 alarms, and can output a separate interrupt for each alarm. The alarms match on the lower 32 bits of the 64 + * bit counter which means they can be fired a maximum of 2^32 microseconds into the future. This is equivalent to: + * - 2^32 ÷ 10^6: ~4295 seconds + * - 4295 ÷ 60: ~72 minutes + * + * The timer is expected to be used for short sleeps, if you want a longer alarm see the \ref hardware_rtc functions. + * + * \subsection timer_example Example + * \addtogroup hardware_timer + * + * \include hello_timer.c + * + * \see pico_time + */ + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_TIMER, Enable/disable assertions in the timer module, type=bool, default=0, group=hardware_timer +#ifndef PARAM_ASSERTIONS_ENABLED_TIMER +#define PARAM_ASSERTIONS_ENABLED_TIMER 0 +#endif + +static inline void check_hardware_alarm_num_param(__unused uint alarm_num) { + invalid_params_if(TIMER, alarm_num >= NUM_TIMERS); +} + +/*! \brief Return a 32 bit timestamp value in microseconds +* \ingroup hardware_timer +* +* Returns the low 32 bits of the hardware timer. +* \note This value wraps roughly every 1 hour 11 minutes and 35 seconds. +* +* \return the 32 bit timestamp +*/ +static inline uint32_t time_us_32(void) { + return timer_hw->timerawl; +} + +/*! \brief Return the current 64 bit timestamp value in microseconds +* \ingroup hardware_timer +* +* Returns the full 64 bits of the hardware timer. The \ref pico_time and other functions rely on the fact that this +* value monotonically increases from power up. As such it is expected that this value counts upwards and never wraps +* (we apologize for introducing a potential year 5851444 bug). +* +* \return the 64 bit timestamp +*/ +uint64_t time_us_64(void); + +/*! \brief Busy wait wasting cycles for the given (32 bit) number of microseconds + * \ingroup hardware_timer + * + * \param delay_us delay amount in microseconds + */ +void busy_wait_us_32(uint32_t delay_us); + +/*! \brief Busy wait wasting cycles for the given (64 bit) number of microseconds + * \ingroup hardware_timer + * + * \param delay_us delay amount in microseconds + */ +void busy_wait_us(uint64_t delay_us); + +/*! \brief Busy wait wasting cycles for the given number of milliseconds + * \ingroup hardware_timer + * + * \param delay_ms delay amount in milliseconds + */ +void busy_wait_ms(uint32_t delay_ms); + +/*! \brief Busy wait wasting cycles until after the specified timestamp + * \ingroup hardware_timer + * + * \param t Absolute time to wait until + */ +void busy_wait_until(absolute_time_t t); + +/*! \brief Check if the specified timestamp has been reached + * \ingroup hardware_timer + * + * \param t Absolute time to compare against current time + * \return true if it is now after the specified timestamp + */ +static inline bool time_reached(absolute_time_t t) { + uint64_t target = to_us_since_boot(t); + uint32_t hi_target = (uint32_t)(target >> 32u); + uint32_t hi = timer_hw->timerawh; + return (hi >= hi_target && (timer_hw->timerawl >= (uint32_t) target || hi != hi_target)); +} + +/*! Callback function type for hardware alarms + * \ingroup hardware_timer + * + * \param alarm_num the hardware alarm number + * \sa hardware_alarm_set_callback() + */ +typedef void (*hardware_alarm_callback_t)(uint alarm_num); + +/*! \brief cooperatively claim the use of this hardware alarm_num + * \ingroup hardware_timer + * + * This method hard asserts if the hardware alarm is currently claimed. + * + * \param alarm_num the hardware alarm to claim + * \sa hardware_claiming + */ +void hardware_alarm_claim(uint alarm_num); + +/*! \brief cooperatively release the claim on use of this hardware alarm_num + * \ingroup hardware_timer + * + * \param alarm_num the hardware alarm to unclaim + * \sa hardware_claiming + */ +void hardware_alarm_unclaim(uint alarm_num); + +/*! \brief Determine if a hardware alarm has been claimed + * \ingroup hardware_timer + * + * \param alarm_num the hardware alarm number + * \return true if claimed, false otherwise + * \see hardware_alarm_claim + */ +bool hardware_alarm_is_claimed(uint alarm_num); + +/*! \brief Enable/Disable a callback for a hardware timer on this core + * \ingroup hardware_timer + * + * This method enables/disables the alarm IRQ for the specified hardware alarm on the + * calling core, and set the specified callback to be associated with that alarm. + * + * This callback will be used for the timeout set via hardware_alarm_set_target + * + * \note This will install the handler on the current core if the IRQ handler isn't already set. + * Therefore the user has the opportunity to call this up from the core of their choice + * + * \param alarm_num the hardware alarm number + * \param callback the callback to install, or NULL to unset + * + * \sa hardware_alarm_set_target() + */ +void hardware_alarm_set_callback(uint alarm_num, hardware_alarm_callback_t callback); + +/** + * \brief Set the current target for the specified hardware alarm + * \ingroup hardware_timer + * + * This will replace any existing target + * + * @param alarm_num the hardware alarm number + * @param t the target timestamp + * @return true if the target was "missed"; i.e. it was in the past, or occurred before a future hardware timeout could be set + */ +bool hardware_alarm_set_target(uint alarm_num, absolute_time_t t); + +/** + * \brief Cancel an existing target (if any) for a given hardware_alarm + * \ingroup hardware_timer + * + * @param alarm_num + */ + +void hardware_alarm_cancel(uint alarm_num); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/arkanoid/pico/hardware/uart.c b/arkanoid/pico/hardware/uart.c new file mode 100644 index 0000000..9c28eb4 --- /dev/null +++ b/arkanoid/pico/hardware/uart.c @@ -0,0 +1,116 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "address_mapped.h" +#include "platform_defs.h" +#include "uart.h" + +#include "structs/uart.h" +#include "resets.h" +#include "clocks.h" +#include "timer.h" + +#include "assert.h" +#include "../pico.h" + +check_hw_layout(uart_hw_t, fr, UART_UARTFR_OFFSET); +check_hw_layout(uart_hw_t, dmacr, UART_UARTDMACR_OFFSET); + +#if PICO_UART_ENABLE_CRLF_SUPPORT +short uart_char_to_line_feed[NUM_UARTS]; +#endif + +/// \tag::uart_reset[] +static inline void uart_reset(uart_inst_t *uart) { + invalid_params_if(UART, uart != uart0 && uart != uart1); + reset_block(uart_get_index(uart) ? RESETS_RESET_UART1_BITS : RESETS_RESET_UART0_BITS); +} + +static inline void uart_unreset(uart_inst_t *uart) { + invalid_params_if(UART, uart != uart0 && uart != uart1); + unreset_block_wait(uart_get_index(uart) ? RESETS_RESET_UART1_BITS : RESETS_RESET_UART0_BITS); +} +/// \end::uart_reset[] + +/// \tag::uart_init[] +uint uart_init(uart_inst_t *uart, uint baudrate) { + invalid_params_if(UART, uart != uart0 && uart != uart1); + + if (clock_get_hz(clk_peri) == 0) + return 0; + + uart_reset(uart); + uart_unreset(uart); + +#if PICO_UART_ENABLE_CRLF_SUPPORT + uart_set_translate_crlf(uart, PICO_UART_DEFAULT_CRLF); +#endif + + // Any LCR writes need to take place before enabling the UART + uint baud = uart_set_baudrate(uart, baudrate); + uart_set_format(uart, 8, 1, UART_PARITY_NONE); + + // Enable the UART, both TX and RX + uart_get_hw(uart)->cr = UART_UARTCR_UARTEN_BITS | UART_UARTCR_TXE_BITS | UART_UARTCR_RXE_BITS; + // Enable FIFOs + hw_set_bits(&uart_get_hw(uart)->lcr_h, UART_UARTLCR_H_FEN_BITS); + // Always enable DREQ signals -- no harm in this if DMA is not listening + uart_get_hw(uart)->dmacr = UART_UARTDMACR_TXDMAE_BITS | UART_UARTDMACR_RXDMAE_BITS; + + return baud; +} +/// \end::uart_init[] + +void uart_deinit(uart_inst_t *uart) { + invalid_params_if(UART, uart != uart0 && uart != uart1); + uart_reset(uart); +} + +/// \tag::uart_set_baudrate[] +uint uart_set_baudrate(uart_inst_t *uart, uint baudrate) { + invalid_params_if(UART, baudrate == 0); + uint32_t baud_rate_div = (8 * clock_get_hz(clk_peri) / baudrate); + uint32_t baud_ibrd = baud_rate_div >> 7; + uint32_t baud_fbrd; + + if (baud_ibrd == 0) { + baud_ibrd = 1; + baud_fbrd = 0; + } else if (baud_ibrd >= 65535) { + baud_ibrd = 65535; + baud_fbrd = 0; + } else { + baud_fbrd = ((baud_rate_div & 0x7f) + 1) / 2; + } + + // Load PL011's baud divisor registers + uart_get_hw(uart)->ibrd = baud_ibrd; + uart_get_hw(uart)->fbrd = baud_fbrd; + + // PL011 needs a (dummy) line control register write to latch in the + // divisors. We don't want to actually change LCR contents here. + hw_set_bits(&uart_get_hw(uart)->lcr_h, 0); + + // See datasheet + return (4 * clock_get_hz(clk_peri)) / (64 * baud_ibrd + baud_fbrd); +} +/// \end::uart_set_baudrate[] + +void uart_set_translate_crlf(uart_inst_t *uart, bool crlf) { +#if PICO_UART_ENABLE_CRLF_SUPPORT + uart_char_to_line_feed[uart_get_index(uart)] = crlf ? '\n' : 0x100; +#else + panic_unsupported(); +#endif +} + +bool uart_is_readable_within_us(uart_inst_t *uart, uint32_t us) { + uint32_t t = time_us_32(); + do { + if (uart_is_readable(uart)) return true; + } while ((time_us_32() - t) <= us); + return false; +} diff --git a/arkanoid/pico/hardware/uart.h b/arkanoid/pico/hardware/uart.h new file mode 100644 index 0000000..d1fd217 --- /dev/null +++ b/arkanoid/pico/hardware/uart.h @@ -0,0 +1,453 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_UART_H +#define _HARDWARE_UART_H + +#include "../pico.h" +#include "structs/uart.h" +#include "regs/dreq.h" + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_UART, Enable/disable assertions in the UART module, type=bool, default=0, group=hardware_uart +#ifndef PARAM_ASSERTIONS_ENABLED_UART +#define PARAM_ASSERTIONS_ENABLED_UART 0 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +// PICO_CONFIG: PICO_UART_ENABLE_CRLF_SUPPORT, Enable/disable CR/LF translation support, type=bool, default=1, group=hardware_uart +#ifndef PICO_UART_ENABLE_CRLF_SUPPORT +#define PICO_UART_ENABLE_CRLF_SUPPORT 1 +#endif + +// PICO_CONFIG: PICO_UART_DEFAULT_CRLF, Enable/disable CR/LF translation on UART, type=bool, default=0, depends=PICO_UART_ENABLE_CRLF_SUPPORT, group=hardware_uart +#ifndef PICO_UART_DEFAULT_CRLF +#define PICO_UART_DEFAULT_CRLF 0 +#endif + +// PICO_CONFIG: PICO_DEFAULT_UART, Define the default UART used for printf etc, min=0, max=1, group=hardware_uart +// PICO_CONFIG: PICO_DEFAULT_UART_TX_PIN, Define the default UART TX pin, min=0, max=29, group=hardware_uart +// PICO_CONFIG: PICO_DEFAULT_UART_RX_PIN, Define the default UART RX pin, min=0, max=29, group=hardware_uart + +// PICO_CONFIG: PICO_DEFAULT_UART_BAUD_RATE, Define the default UART baudrate, max=921600, default=115200, group=hardware_uart +#ifndef PICO_DEFAULT_UART_BAUD_RATE +#define PICO_DEFAULT_UART_BAUD_RATE 115200 ///< Default baud rate +#endif + +/** \file uart.h + * \defgroup hardware_uart hardware_uart + * + * Hardware UART API + * + * RP2040 has 2 identical instances of a UART peripheral, based on the ARM PL011. Each UART can be connected to a number + * of GPIO pins as defined in the GPIO muxing. + * + * Only the TX, RX, RTS, and CTS signals are + * connected, meaning that the modem mode and IrDA mode of the PL011 are not supported. + * + * \subsection uart_example Example + * \addtogroup hardware_uart + * + * \code + * int main() { + * + * // Initialise UART 0 + * uart_init(uart0, 115200); + * + * // Set the GPIO pin mux to the UART - 0 is TX, 1 is RX + * gpio_set_function(0, GPIO_FUNC_UART); + * gpio_set_function(1, GPIO_FUNC_UART); + * + * uart_puts(uart0, "Hello world!"); + * } + * \endcode + */ + +// Currently always a pointer to hw but it might not be in the future +typedef struct uart_inst uart_inst_t; + +/** The UART identifiers for use in UART functions. + * + * e.g. uart_init(uart1, 48000) + * + * \ingroup hardware_uart + * @{ + */ +#define uart0 ((uart_inst_t * const)uart0_hw) ///< Identifier for UART instance 0 +#define uart1 ((uart_inst_t * const)uart1_hw) ///< Identifier for UART instance 1 + +/** @} */ + +#if !defined(PICO_DEFAULT_UART_INSTANCE) && defined(PICO_DEFAULT_UART) +#define PICO_DEFAULT_UART_INSTANCE (__CONCAT(uart,PICO_DEFAULT_UART)) +#endif + +#ifdef PICO_DEFAULT_UART_INSTANCE +#define uart_default PICO_DEFAULT_UART_INSTANCE +#endif + +/*! \brief Convert UART instance to hardware instance number + * \ingroup hardware_uart + * + * \param uart UART instance + * \return Number of UART, 0 or 1. + */ +static inline uint uart_get_index(uart_inst_t *uart) { + invalid_params_if(UART, uart != uart0 && uart != uart1); + return uart == uart1 ? 1 : 0; +} + +static inline uart_inst_t *uart_get_instance(uint instance) { + static_assert(NUM_UARTS == 2, ""); + invalid_params_if(UART, instance >= NUM_UARTS); + return instance ? uart1 : uart0; +} + +static inline uart_hw_t *uart_get_hw(uart_inst_t *uart) { + uart_get_index(uart); // check it is a hw uart + return (uart_hw_t *)uart; +} + +/** \brief UART Parity enumeration + * \ingroup hardware_uart + */ +typedef enum { + UART_PARITY_NONE, + UART_PARITY_EVEN, + UART_PARITY_ODD +} uart_parity_t; + +// ---------------------------------------------------------------------------- +// Setup + +/*! \brief Initialise a UART + * \ingroup hardware_uart + * + * Put the UART into a known state, and enable it. Must be called before other + * functions. + * + * \note There is no guarantee that the baudrate requested will be possible, the nearest will be chosen, + * and this function will return the configured baud rate. + * + * \param uart UART instance. \ref uart0 or \ref uart1 + * \param baudrate Baudrate of UART in Hz + * \return Actual set baudrate + */ +uint uart_init(uart_inst_t *uart, uint baudrate); + +/*! \brief DeInitialise a UART + * \ingroup hardware_uart + * + * Disable the UART if it is no longer used. Must be reinitialised before + * being used again. + * + * \param uart UART instance. \ref uart0 or \ref uart1 + */ +void uart_deinit(uart_inst_t *uart); + +/*! \brief Set UART baud rate + * \ingroup hardware_uart + * + * Set baud rate as close as possible to requested, and return actual rate selected. + * + * \param uart UART instance. \ref uart0 or \ref uart1 + * \param baudrate Baudrate in Hz + * \return Actual set baudrate + */ +uint uart_set_baudrate(uart_inst_t *uart, uint baudrate); + +/*! \brief Set UART flow control CTS/RTS + * \ingroup hardware_uart + * + * \param uart UART instance. \ref uart0 or \ref uart1 + * \param cts If true enable flow control of TX by clear-to-send input + * \param rts If true enable assertion of request-to-send output by RX flow control + */ +static inline void uart_set_hw_flow(uart_inst_t *uart, bool cts, bool rts) { + hw_write_masked(&uart_get_hw(uart)->cr, + (bool_to_bit(cts) << UART_UARTCR_CTSEN_LSB) | (bool_to_bit(rts) << UART_UARTCR_RTSEN_LSB), + UART_UARTCR_RTSEN_BITS | UART_UARTCR_CTSEN_BITS); +} + +/*! \brief Set UART data format + * \ingroup hardware_uart + * + * Configure the data format (bits etc() for the UART + * + * \param uart UART instance. \ref uart0 or \ref uart1 + * \param data_bits Number of bits of data. 5..8 + * \param stop_bits Number of stop bits 1..2 + * \param parity Parity option. + */ +static inline void uart_set_format(uart_inst_t *uart, uint data_bits, uint stop_bits, uart_parity_t parity) { + invalid_params_if(UART, data_bits < 5 || data_bits > 8); + invalid_params_if(UART, stop_bits != 1 && stop_bits != 2); + invalid_params_if(UART, parity != UART_PARITY_NONE && parity != UART_PARITY_EVEN && parity != UART_PARITY_ODD); + hw_write_masked(&uart_get_hw(uart)->lcr_h, + ((data_bits - 5u) << UART_UARTLCR_H_WLEN_LSB) | + ((stop_bits - 1u) << UART_UARTLCR_H_STP2_LSB) | + (bool_to_bit(parity != UART_PARITY_NONE) << UART_UARTLCR_H_PEN_LSB) | + (bool_to_bit(parity == UART_PARITY_EVEN) << UART_UARTLCR_H_EPS_LSB), + UART_UARTLCR_H_WLEN_BITS | + UART_UARTLCR_H_STP2_BITS | + UART_UARTLCR_H_PEN_BITS | + UART_UARTLCR_H_EPS_BITS); +} + +/*! \brief Setup UART interrupts + * \ingroup hardware_uart + * + * Enable the UART's interrupt output. An interrupt handler will need to be installed prior to calling + * this function. + * + * \param uart UART instance. \ref uart0 or \ref uart1 + * \param rx_has_data If true an interrupt will be fired when the RX FIFO contains data. + * \param tx_needs_data If true an interrupt will be fired when the TX FIFO needs data. + */ +static inline void uart_set_irq_enables(uart_inst_t *uart, bool rx_has_data, bool tx_needs_data) { + // Both UARTRXINTR (RX) and UARTRTINTR (RX timeout) interrupts are + // required for rx_has_data. RX asserts when >=4 characters are in the RX + // FIFO (for RXIFLSEL=0). RT asserts when there are >=1 characters and no + // more have been received for 32 bit periods. + uart_get_hw(uart)->imsc = (bool_to_bit(tx_needs_data) << UART_UARTIMSC_TXIM_LSB) | + (bool_to_bit(rx_has_data) << UART_UARTIMSC_RXIM_LSB) | + (bool_to_bit(rx_has_data) << UART_UARTIMSC_RTIM_LSB); + if (rx_has_data) { + // Set minimum threshold + hw_write_masked(&uart_get_hw(uart)->ifls, 0 << UART_UARTIFLS_RXIFLSEL_LSB, + UART_UARTIFLS_RXIFLSEL_BITS); + } + if (tx_needs_data) { + // Set maximum threshold + hw_write_masked(&uart_get_hw(uart)->ifls, 0 << UART_UARTIFLS_TXIFLSEL_LSB, + UART_UARTIFLS_TXIFLSEL_BITS); + } +} + +/*! \brief Test if specific UART is enabled + * \ingroup hardware_uart + * + * \param uart UART instance. \ref uart0 or \ref uart1 + * \return true if the UART is enabled + */ +static inline bool uart_is_enabled(uart_inst_t *uart) { + return !!(uart_get_hw(uart)->cr & UART_UARTCR_UARTEN_BITS); +} + +/*! \brief Enable/Disable the FIFOs on specified UART + * \ingroup hardware_uart + * + * \param uart UART instance. \ref uart0 or \ref uart1 + * \param enabled true to enable FIFO (default), false to disable + */ +static inline void uart_set_fifo_enabled(uart_inst_t *uart, bool enabled) { + hw_write_masked(&uart_get_hw(uart)->lcr_h, + (bool_to_bit(enabled) << UART_UARTLCR_H_FEN_LSB), + UART_UARTLCR_H_FEN_BITS); +} + + +// ---------------------------------------------------------------------------- +// Generic input/output + +/*! \brief Determine if space is available in the TX FIFO + * \ingroup hardware_uart + * + * \param uart UART instance. \ref uart0 or \ref uart1 + * \return false if no space available, true otherwise + */ +static inline bool uart_is_writable(uart_inst_t *uart) { + return !(uart_get_hw(uart)->fr & UART_UARTFR_TXFF_BITS); +} + +/*! \brief Wait for the UART TX fifo to be drained + * \ingroup hardware_uart + * + * \param uart UART instance. \ref uart0 or \ref uart1 + */ +static inline void uart_tx_wait_blocking(uart_inst_t *uart) { + while (uart_get_hw(uart)->fr & UART_UARTFR_BUSY_BITS) tight_loop_contents(); +} + +/*! \brief Determine whether data is waiting in the RX FIFO + * \ingroup hardware_uart + * + * \param uart UART instance. \ref uart0 or \ref uart1 + * \return 0 if no data available, otherwise the number of bytes, at least, that can be read + * + * \note HW limitations mean this function will return either 0 or 1. + */ +static inline bool uart_is_readable(uart_inst_t *uart) { + // PL011 doesn't expose levels directly, so return values are only 0 or 1 + return !(uart_get_hw(uart)->fr & UART_UARTFR_RXFE_BITS); +} + +/*! \brief Write to the UART for transmission. + * \ingroup hardware_uart + * + * This function will block until all the data has been sent to the UART + * + * \param uart UART instance. \ref uart0 or \ref uart1 + * \param src The bytes to send + * \param len The number of bytes to send + */ +static inline void uart_write_blocking(uart_inst_t *uart, const uint8_t *src, size_t len) { + for (size_t i = 0; i < len; ++i) { + while (!uart_is_writable(uart)) + tight_loop_contents(); + uart_get_hw(uart)->dr = *src++; + } +} + +/*! \brief Read from the UART + * \ingroup hardware_uart + * + * This function will block until all the data has been received from the UART + * + * \param uart UART instance. \ref uart0 or \ref uart1 + * \param dst Buffer to accept received bytes + * \param len The number of bytes to receive. + */ +static inline void uart_read_blocking(uart_inst_t *uart, uint8_t *dst, size_t len) { + for (size_t i = 0; i < len; ++i) { + while (!uart_is_readable(uart)) + tight_loop_contents(); + *dst++ = (uint8_t) uart_get_hw(uart)->dr; + } +} + +// ---------------------------------------------------------------------------- +// UART-specific operations and aliases + +/*! \brief Write single character to UART for transmission. + * \ingroup hardware_uart + * + * This function will block until the entire character has been sent + * + * \param uart UART instance. \ref uart0 or \ref uart1 + * \param c The character to send + */ +static inline void uart_putc_raw(uart_inst_t *uart, char c) { + uart_write_blocking(uart, (const uint8_t *) &c, 1); +} + +/*! \brief Write single character to UART for transmission, with optional CR/LF conversions + * \ingroup hardware_uart + * + * This function will block until the character has been sent + * + * \param uart UART instance. \ref uart0 or \ref uart1 + * \param c The character to send + */ +static inline void uart_putc(uart_inst_t *uart, char c) { +#if PICO_UART_ENABLE_CRLF_SUPPORT + extern short uart_char_to_line_feed[NUM_UARTS]; + if (uart_char_to_line_feed[uart_get_index(uart)] == c) + uart_putc_raw(uart, '\r'); +#endif + uart_putc_raw(uart, c); +} + +/*! \brief Write string to UART for transmission, doing any CR/LF conversions + * \ingroup hardware_uart + * + * This function will block until the entire string has been sent + * + * \param uart UART instance. \ref uart0 or \ref uart1 + * \param s The null terminated string to send + */ +static inline void uart_puts(uart_inst_t *uart, const char *s) { +#if PICO_UART_ENABLE_CRLF_SUPPORT + bool last_was_cr = false; + while (*s) { + // Don't add extra carriage returns if one is present + if (last_was_cr) + uart_putc_raw(uart, *s); + else + uart_putc(uart, *s); + last_was_cr = *s++ == '\r'; + } +#else + while (*s) + uart_putc(uart, *s++); +#endif +} + +/*! \brief Read a single character to UART + * \ingroup hardware_uart + * + * This function will block until the character has been read + * + * \param uart UART instance. \ref uart0 or \ref uart1 + * \return The character read. + */ +static inline char uart_getc(uart_inst_t *uart) { + char c; + uart_read_blocking(uart, (uint8_t *) &c, 1); + return c; +} + +/*! \brief Assert a break condition on the UART transmission. + * \ingroup hardware_uart + * + * \param uart UART instance. \ref uart0 or \ref uart1 + * \param en Assert break condition (TX held low) if true. Clear break condition if false. + */ +static inline void uart_set_break(uart_inst_t *uart, bool en) { + if (en) + hw_set_bits(&uart_get_hw(uart)->lcr_h, UART_UARTLCR_H_BRK_BITS); + else + hw_clear_bits(&uart_get_hw(uart)->lcr_h, UART_UARTLCR_H_BRK_BITS); +} + +/*! \brief Set CR/LF conversion on UART + * \ingroup hardware_uart + * + * \param uart UART instance. \ref uart0 or \ref uart1 + * \param translate If true, convert line feeds to carriage return on transmissions + */ +void uart_set_translate_crlf(uart_inst_t *uart, bool translate); + +/*! \brief Wait for the default UART's TX FIFO to be drained + * \ingroup hardware_uart + */ +static inline void uart_default_tx_wait_blocking(void) { +#ifdef uart_default + uart_tx_wait_blocking(uart_default); +#else + assert(false); +#endif +} + +/*! \brief Wait for up to a certain number of microseconds for the RX FIFO to be non empty + * \ingroup hardware_uart + * + * \param uart UART instance. \ref uart0 or \ref uart1 + * \param us the number of microseconds to wait at most (may be 0 for an instantaneous check) + * \return true if the RX FIFO became non empty before the timeout, false otherwise + */ +bool uart_is_readable_within_us(uart_inst_t *uart, uint32_t us); + +/*! \brief Return the DREQ to use for pacing transfers to/from a particular UART instance + * \ingroup hardware_uart + * + * \param uart UART instance. \ref uart0 or \ref uart1 + * \param is_tx true for sending data to the UART instance, false for receiving data from the UART instance + */ +static inline uint uart_get_dreq(uart_inst_t *uart, bool is_tx) { + static_assert(DREQ_UART0_RX == DREQ_UART0_TX + 1, ""); + static_assert(DREQ_UART1_RX == DREQ_UART1_TX + 1, ""); + static_assert(DREQ_UART1_TX == DREQ_UART0_TX + 2, ""); + return DREQ_UART0_TX + uart_get_index(uart) * 2 + !is_tx; +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/hardware/vreg.c b/arkanoid/pico/hardware/vreg.c new file mode 100644 index 0000000..76982ca --- /dev/null +++ b/arkanoid/pico/hardware/vreg.c @@ -0,0 +1,12 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "../pico.h" +#include "vreg.h" + +void vreg_set_voltage(enum vreg_voltage voltage) { + hw_write_masked(&vreg_and_chip_reset_hw->vreg, ((uint)voltage) << VREG_AND_CHIP_RESET_VREG_VSEL_LSB, VREG_AND_CHIP_RESET_VREG_VSEL_BITS); +} diff --git a/arkanoid/pico/hardware/vreg.h b/arkanoid/pico/hardware/vreg.h new file mode 100644 index 0000000..741ab9f --- /dev/null +++ b/arkanoid/pico/hardware/vreg.h @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_VREG_H_ +#define _HARDWARE_VREG_H_ + +#include "../pico.h" +#include "structs/vreg_and_chip_reset.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file vreg.h + * \defgroup hardware_vreg hardware_vreg + * + * Voltage Regulation API + * + */ + +/** Possible voltage values that can be applied to the regulator + */ +enum vreg_voltage { + VREG_VOLTAGE_0_85 = 0b0110, ///< 0.85v + VREG_VOLTAGE_0_90 = 0b0111, ///< 0.90v + VREG_VOLTAGE_0_95 = 0b1000, ///< 0.95v + VREG_VOLTAGE_1_00 = 0b1001, ///< 1.00v + VREG_VOLTAGE_1_05 = 0b1010, ///< 1.05v + VREG_VOLTAGE_1_10 = 0b1011, ///< 1.10v + VREG_VOLTAGE_1_15 = 0b1100, ///< 1.15v + VREG_VOLTAGE_1_20 = 0b1101, ///< 1.20v + VREG_VOLTAGE_1_25 = 0b1110, ///< 1.25v + VREG_VOLTAGE_1_30 = 0b1111, ///< 1.30v + + VREG_VOLTAGE_MIN = VREG_VOLTAGE_0_85, ///< Always the minimum possible voltage + VREG_VOLTAGE_DEFAULT = VREG_VOLTAGE_1_10, ///< Default voltage on power up. + VREG_VOLTAGE_MAX = VREG_VOLTAGE_1_30, ///< Always the maximum possible voltage +}; + + +/*! \brief Set voltage + * \ingroup hardware_vreg + * + * \param voltage The voltage (from enumeration \ref vreg_voltage) to apply to the voltage regulator + **/ +void vreg_set_voltage(enum vreg_voltage voltage); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/arkanoid/pico/hardware/watchdog.c b/arkanoid/pico/hardware/watchdog.c new file mode 100644 index 0000000..f1fc91e --- /dev/null +++ b/arkanoid/pico/hardware/watchdog.c @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <stdio.h> + +#include "watchdog.h" +#include "structs/watchdog.h" +#include "structs/psm.h" + +/// \tag::watchdog_start_tick[] +void watchdog_start_tick(uint cycles) { + // Important: This function also provides a tick reference to the timer + watchdog_hw->tick = cycles | WATCHDOG_TICK_ENABLE_BITS; +} +/// \end::watchdog_start_tick[] + +// Value to load when updating the watchdog + +// tag::watchdog_update[] +static uint32_t load_value; + +void watchdog_update(void) { + watchdog_hw->load = load_value; +} +// end::watchdog_update[] + +uint32_t watchdog_get_count(void) { + return (watchdog_hw->ctrl & WATCHDOG_CTRL_TIME_BITS) / 2 ; +} + +// tag::watchdog_enable[] +// Helper function used by both watchdog_enable and watchdog_reboot +void _watchdog_enable(uint32_t delay_ms, bool pause_on_debug) { + hw_clear_bits(&watchdog_hw->ctrl, WATCHDOG_CTRL_ENABLE_BITS); + + // Reset everything apart from ROSC and XOSC + hw_set_bits(&psm_hw->wdsel, PSM_WDSEL_BITS & ~(PSM_WDSEL_ROSC_BITS | PSM_WDSEL_XOSC_BITS)); + + uint32_t dbg_bits = WATCHDOG_CTRL_PAUSE_DBG0_BITS | + WATCHDOG_CTRL_PAUSE_DBG1_BITS | + WATCHDOG_CTRL_PAUSE_JTAG_BITS; + + if (pause_on_debug) { + hw_set_bits(&watchdog_hw->ctrl, dbg_bits); + } else { + hw_clear_bits(&watchdog_hw->ctrl, dbg_bits); + } + + if (!delay_ms) { + hw_set_bits(&watchdog_hw->ctrl, WATCHDOG_CTRL_TRIGGER_BITS); + } else { + // Note, we have x2 here as the watchdog HW currently decrements twice per tick + load_value = delay_ms * 1000 * 2; + + if (load_value > 0xffffffu) + load_value = 0xffffffu; + + watchdog_update(); + + hw_set_bits(&watchdog_hw->ctrl, WATCHDOG_CTRL_ENABLE_BITS); + } +} +// end::watchdog_enable[] + +#define WATCHDOG_NON_REBOOT_MAGIC 0x6ab73121 + +void watchdog_enable(uint32_t delay_ms, bool pause_on_debug) { + // update scratch[4] to distinguish from magic used for reboot to specific address, or 0 used to reboot + // into regular flash path + watchdog_hw->scratch[4] = WATCHDOG_NON_REBOOT_MAGIC; + _watchdog_enable(delay_ms, pause_on_debug); +} + +void watchdog_reboot(uint32_t pc, uint32_t sp, uint32_t delay_ms) { + check_hw_layout(watchdog_hw_t, scratch[7], WATCHDOG_SCRATCH7_OFFSET); + + // Clear enable before setting up scratch registers + hw_clear_bits(&watchdog_hw->ctrl, WATCHDOG_CTRL_ENABLE_BITS); + + if (pc) { + pc |= 1u; // thumb mode + watchdog_hw->scratch[4] = 0xb007c0d3; + watchdog_hw->scratch[5] = pc ^ -0xb007c0d3; + watchdog_hw->scratch[6] = sp; + watchdog_hw->scratch[7] = pc; +// printf("rebooting %08x/%08x in %dms...\n", (uint) pc, (uint) sp, (uint) delay_ms); + } else { + watchdog_hw->scratch[4] = 0; +// printf("rebooting (regular)) in %dms...\n", (uint) delay_ms); + } + + // Don't pause watchdog for debug + _watchdog_enable(delay_ms, 0); +} + +bool watchdog_caused_reboot(void) { + // If any reason bits are set this is true + return watchdog_hw->reason; +} + +bool watchdog_enable_caused_reboot(void) { + return watchdog_hw->reason && watchdog_hw->scratch[4] == WATCHDOG_NON_REBOOT_MAGIC; +} \ No newline at end of file diff --git a/arkanoid/pico/hardware/watchdog.h b/arkanoid/pico/hardware/watchdog.h new file mode 100644 index 0000000..28be52f --- /dev/null +++ b/arkanoid/pico/hardware/watchdog.h @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_WATCHDOG_H +#define _HARDWARE_WATCHDOG_H + +#include "../pico.h" +#include "structs/watchdog.h" + +/** \file watchdog.h + * \defgroup hardware_watchdog hardware_watchdog + * + * Hardware Watchdog Timer API + * + * Supporting functions for the Pico hardware watchdog timer. + * + * The RP2040 has a built in HW watchdog Timer. This is a countdown timer that can restart parts of the chip if it reaches zero. + * For example, this can be used to restart the processor if the software running on it gets stuck in an infinite loop + * or similar. The programmer has to periodically write a value to the watchdog to stop it reaching zero. + * + * \subsection watchdog_example Example + * \addtogroup hardware_watchdog + * \include hello_watchdog.c + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/*! \brief Define actions to perform at watchdog timeout + * \ingroup hardware_watchdog + * + * \note If \ref watchdog_start_tick value does not give a 1MHz clock to the watchdog system, then the \p delay_ms + * parameter will not be in microseconds. See the datasheet for more details. + * + * By default the SDK assumes a 12MHz XOSC and sets the \ref watchdog_start_tick appropriately. + * + * \param pc If Zero, a standard boot will be performed, if non-zero this is the program counter to jump to on reset. + * \param sp If \p pc is non-zero, this will be the stack pointer used. + * \param delay_ms Initial load value. Maximum value 0x7fffff, approximately 8.3s. + */ +void watchdog_reboot(uint32_t pc, uint32_t sp, uint32_t delay_ms); + +/*! \brief Start the watchdog tick + * \ingroup hardware_watchdog + * + * \param cycles This needs to be a divider that when applied to the XOSC input, produces a 1MHz clock. So if the XOSC is + * 12MHz, this will need to be 12. + */ +void watchdog_start_tick(uint cycles); + +/*! \brief Reload the watchdog counter with the amount of time set in watchdog_enable + * \ingroup hardware_watchdog + * + */ +void watchdog_update(void); + +/** + * \brief Enable the watchdog + * \ingroup hardware_watchdog + * + * \note If \ref watchdog_start_tick value does not give a 1MHz clock to the watchdog system, then the \p delay_ms + * parameter will not be in microseconds. See the datasheet for more details. + * + * By default the SDK assumes a 12MHz XOSC and sets the \ref watchdog_start_tick appropriately. + * + * This method sets a marker in the watchdog scratch register 4 that is checked by \ref watchdog_enable_caused_reboot. + * If the device is subsequently reset via a call to watchdog_reboot (including for example by dragging a UF2 + * onto the RPI-RP2), then this value will be cleared, and so \ref watchdog_enable_caused_reboot will + * return false. + * + * \param delay_ms Number of milliseconds before watchdog will reboot without watchdog_update being called. Maximum of 0x7fffff, which is approximately 8.3 seconds + * \param pause_on_debug If the watchdog should be paused when the debugger is stepping through code + */ +void watchdog_enable(uint32_t delay_ms, bool pause_on_debug); + +/** + * \brief Did the watchdog cause the last reboot? + * \ingroup hardware_watchdog + * + * @return true If the watchdog timer or a watchdog force caused the last reboot + * @return false If there has been no watchdog reboot since the last power on reset. A power on reset is typically caused by a power cycle or the run pin (reset button) being toggled. + */ +bool watchdog_caused_reboot(void); + +/** + * \brief Did watchdog_enable cause the last reboot? + * \ingroup hardware_watchdog + * + * Perform additional checking along with \ref watchdog_caused_reboot to determine if a watchdog timeout initiated by + * \ref watchdog_enable caused the last reboot. + * + * This method checks for a special value in watchdog scratch register 4 placed there by \ref watchdog_enable. + * This would not be present if a watchdog reset is initiated by \ref watchdog_reboot or by the RP2040 bootrom + * (e.g. dragging a UF2 onto the RPI-RP2 drive). + * + * @return true If the watchdog timer or a watchdog force caused (see \reg watchdog_caused_reboot) the last reboot + * and the watchdog reboot happened after \ref watchdog_enable was called + * @return false If there has been no watchdog reboot since the last power on reset, or the watchdog reboot was not caused + * by a watchdog timeout after \ref watchdog_enable was called. + * A power on reset is typically caused by a power cycle or the run pin (reset button) being toggled. + */ +bool watchdog_enable_caused_reboot(void); + +/** + * @brief Returns the number of microseconds before the watchdog will reboot the chip. + * \ingroup hardware_watchdog + * + * @return The number of microseconds before the watchdog will reboot the chip. + */ +uint32_t watchdog_get_count(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/hardware/xosc.c b/arkanoid/pico/hardware/xosc.c new file mode 100644 index 0000000..0b83ba0 --- /dev/null +++ b/arkanoid/pico/hardware/xosc.c @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "../pico.h" + +// For MHZ definitions etc +#include "clocks.h" + +#include "platform_defs.h" +#include "regs/xosc.h" +#include "xosc.h" + +#if XOSC_MHZ < 1 || XOSC_MHZ > 50 +#error XOSC_MHZ must be in the range 1-50 +#endif + +#define STARTUP_DELAY (((((XOSC_MHZ * MHZ) / 1000) + 128) / 256) * PICO_XOSC_STARTUP_DELAY_MULTIPLIER) + +// The DELAY field in xosc_hw->startup is 14 bits wide. +#if STARTUP_DELAY >= (1 << 13) +#error PICO_XOSC_STARTUP_DELAY_MULTIPLIER is too large: XOSC STARTUP.DELAY must be < 8192 +#endif + +void xosc_init(void) { + // Assumes 1-15 MHz input, checked above. + xosc_hw->ctrl = XOSC_CTRL_FREQ_RANGE_VALUE_1_15MHZ; + + // Set xosc startup delay + xosc_hw->startup = STARTUP_DELAY; + + // Set the enable bit now that we have set freq range and startup delay + hw_set_bits(&xosc_hw->ctrl, XOSC_CTRL_ENABLE_VALUE_ENABLE << XOSC_CTRL_ENABLE_LSB); + + // Wait for XOSC to be stable + while(!(xosc_hw->status & XOSC_STATUS_STABLE_BITS)); +} + +void xosc_disable(void) { + uint32_t tmp = xosc_hw->ctrl; + tmp &= (~XOSC_CTRL_ENABLE_BITS); + tmp |= (XOSC_CTRL_ENABLE_VALUE_DISABLE << XOSC_CTRL_ENABLE_LSB); + xosc_hw->ctrl = tmp; + // Wait for stable to go away + while(xosc_hw->status & XOSC_STATUS_STABLE_BITS); +} + +void xosc_dormant(void) { + // WARNING: This stops the xosc until woken up by an irq + xosc_hw->dormant = XOSC_DORMANT_VALUE_DORMANT; + // Wait for it to become stable once woken up + while(!(xosc_hw->status & XOSC_STATUS_STABLE_BITS)); +} diff --git a/arkanoid/pico/hardware/xosc.h b/arkanoid/pico/hardware/xosc.h new file mode 100644 index 0000000..2a77581 --- /dev/null +++ b/arkanoid/pico/hardware/xosc.h @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _HARDWARE_XOSC_H_ +#define _HARDWARE_XOSC_H_ + +#include "../pico.h" +#include "structs/xosc.h" + + +// Allow lengthening startup delay to accommodate slow-starting oscillators + +// PICO_CONFIG: PICO_XOSC_STARTUP_DELAY_MULTIPLIER, Multiplier to lengthen xosc startup delay to accommodate slow-starting oscillators, type=int, min=1, default=1, group=hardware_xosc +#ifndef PICO_XOSC_STARTUP_DELAY_MULTIPLIER +#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 1 +#endif + + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file xosc.h + * \defgroup hardware_xosc hardware_xosc + * + * Crystal Oscillator (XOSC) API + */ + +/*! \brief Initialise the crystal oscillator system + * \ingroup hardware_xosc + * + * This function will block until the crystal oscillator has stabilised. + **/ +void xosc_init(void); + +/*! \brief Disable the Crystal oscillator + * \ingroup hardware_xosc + * + * Turns off the crystal oscillator source, and waits for it to become unstable + **/ +void xosc_disable(void); + +/*! \brief Set the crystal oscillator system to dormant + * \ingroup hardware_xosc + * + * Turns off the crystal oscillator until it is woken by an interrupt. This will block and hence + * the entire system will stop, until an interrupt wakes it up. This function will + * continue to block until the oscillator becomes stable after its wakeup. + **/ +void xosc_dormant(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/junk/assert.h b/arkanoid/pico/junk/assert.h new file mode 100644 index 0000000..8910ebd --- /dev/null +++ b/arkanoid/pico/junk/assert.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_ASSERT_H +#define _PICO_ASSERT_H + +#include <stdbool.h> + +#ifdef __cplusplus + +#include <cassert> + +extern "C" { +#else +#include <assert.h> +#endif + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLE_ALL, Global assert enable, type=bool, default=0, group=pico_base +// PICO_CONFIG: PARAM_ASSERTIONS_DISABLE_ALL, Global assert disable, type=bool, default=0, group=pico_base + +#ifndef PARAM_ASSERTIONS_ENABLE_ALL +#define PARAM_ASSERTIONS_ENABLE_ALL 0 +#endif + +#ifndef PARAM_ASSERTIONS_DISABLE_ALL +#define PARAM_ASSERTIONS_DISABLE_ALL 0 +#endif + +#define PARAM_ASSERTIONS_ENABLED(x) ((PARAM_ASSERTIONS_ENABLED_ ## x || PARAM_ASSERTIONS_ENABLE_ALL) && !PARAM_ASSERTIONS_DISABLE_ALL) + +#define invalid_params_if(x, test) ({if (PARAM_ASSERTIONS_ENABLED(x)) assert(!(test));}) +#define valid_params_if(x, test) ({if (PARAM_ASSERTIONS_ENABLED(x)) assert(test);}) +#define hard_assert_if(x, test) ({if (PARAM_ASSERTIONS_ENABLED(x)) hard_assert(!(test));}) + +#ifdef NDEBUG +extern void hard_assertion_failure(void); +static inline void hard_assert(bool condition, ...) { + if (!condition) + hard_assertion_failure(); +} +#else +#define hard_assert assert +#endif + +#ifdef __cplusplus +} +#endif +#endif diff --git a/arkanoid/pico/junk/config.h b/arkanoid/pico/junk/config.h new file mode 100644 index 0000000..fbe9c54 --- /dev/null +++ b/arkanoid/pico/junk/config.h @@ -0,0 +1,131 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef PICO_CONFIG_H_ +#define PICO_CONFIG_H_ + +// ----------------------------------------------------- +// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLY CODE SO +// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES +// OR USE #ifndef __ASSEMBLER__ guards +// ------------- + +// PICO_CONFIG_HEADER_FILES and then PICO_SDK_<PLATFORM>_CONFIG_INCLUDE_FILES +// entries are dumped in order at build time into this generated header + +#define RASPBERRYPI_PICO + +// --- UART --- +#ifndef PICO_DEFAULT_UART +#define PICO_DEFAULT_UART 0 +#endif +#ifndef PICO_DEFAULT_UART_TX_PIN +#define PICO_DEFAULT_UART_TX_PIN 0 +#endif +#ifndef PICO_DEFAULT_UART_RX_PIN +#define PICO_DEFAULT_UART_RX_PIN 1 +#endif + +// --- LED --- +#ifndef PICO_DEFAULT_LED_PIN +#define PICO_DEFAULT_LED_PIN 25 +#endif +// no PICO_DEFAULT_WS2812_PIN + +// --- I2C --- +#ifndef PICO_DEFAULT_I2C +#define PICO_DEFAULT_I2C 0 +#endif +#ifndef PICO_DEFAULT_I2C_SDA_PIN +#define PICO_DEFAULT_I2C_SDA_PIN 4 +#endif +#ifndef PICO_DEFAULT_I2C_SCL_PIN +#define PICO_DEFAULT_I2C_SCL_PIN 5 +#endif + +// --- SPI --- +#ifndef PICO_DEFAULT_SPI +#define PICO_DEFAULT_SPI 0 +#endif +#ifndef PICO_DEFAULT_SPI_SCK_PIN +#define PICO_DEFAULT_SPI_SCK_PIN 18 +#endif +#ifndef PICO_DEFAULT_SPI_TX_PIN +#define PICO_DEFAULT_SPI_TX_PIN 19 +#endif +#ifndef PICO_DEFAULT_SPI_RX_PIN +#define PICO_DEFAULT_SPI_RX_PIN 16 +#endif +#ifndef PICO_DEFAULT_SPI_CSN_PIN +#define PICO_DEFAULT_SPI_CSN_PIN 17 +#endif + +// --- FLASH --- + +#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1 + +#ifndef PICO_FLASH_SPI_CLKDIV +#define PICO_FLASH_SPI_CLKDIV 2 +#endif + +#ifndef PICO_FLASH_SIZE_BYTES +#define PICO_FLASH_SIZE_BYTES (2 * 1024 * 1024) +#endif + +// Drive high to force power supply into PWM mode (lower ripple on 3V3 at light loads) +#define PICO_SMPS_MODE_PIN 23 + +#ifndef PICO_RP2040_B0_SUPPORTED +#define PICO_RP2040_B0_SUPPORTED 1 +#endif + + +#if LIB_CMSIS_CORE +// PICO_CONFIG: PICO_CMSIS_RENAME_EXCEPTIONS, Whether to rename SDK exceptions such as isr_nmi to their CMSIS equivalent i.e. NMI_Handler, type=bool, default=1, group=cmsis_core + +// Note that since this header is included at the config stage, if you wish to override this you should do so via build compiler define +#ifndef PICO_CMSIS_RENAME_EXCEPTIONS +#define PICO_CMSIS_RENAME_EXCEPTIONS 1 +#endif + +#if PICO_CMSIS_RENAME_EXCEPTIONS +#define isr_nmi NMI_Handler +#define isr_hardfault HardFault_Handler +#define isr_svcall SVC_Handler +#define isr_pendsv PendSV_Handler +#define isr_systick SysTick_Handler +#define isr_irq0 TIMER_IRQ_0_Handler +#define isr_irq1 TIMER_IRQ_1_Handler +#define isr_irq2 TIMER_IRQ_2_Handler +#define isr_irq3 TIMER_IRQ_3_Handler +#define isr_irq4 PWM_IRQ_WRAP_Handler +#define isr_irq5 USBCTRL_IRQ_Handler +#define isr_irq6 XIP_IRQ_Handler +#define isr_irq7 PIO0_IRQ_0_Handler +#define isr_irq8 PIO0_IRQ_1_Handler +#define isr_irq9 PIO1_IRQ_0_Handler +#define isr_irq10 PIO1_IRQ_1_Handler +#define isr_irq11 DMA_IRQ_0_Handler +#define isr_irq12 DMA_IRQ_1_Handler +#define isr_irq13 IO_IRQ_BANK0_Handler +#define isr_irq14 IO_IRQ_QSPI_Handler +#define isr_irq15 SIO_IRQ_PROC0_Handler +#define isr_irq16 SIO_IRQ_PROC1_Handler +#define isr_irq17 CLOCKS_IRQ_Handler +#define isr_irq18 SPI0_IRQ_Handler +#define isr_irq19 SPI1_IRQ_Handler +#define isr_irq20 UART0_IRQ_Handler +#define isr_irq21 UART1_IRQ_Handler +#define isr_irq22 ADC_IRQ_FIFO_Handler +#define isr_irq23 I2C0_IRQ_Handler +#define isr_irq24 I2C1_IRQ_Handler +#define isr_irq25 RTC_IRQ_Handler +#endif + +#endif + + +#endif \ No newline at end of file diff --git a/arkanoid/pico/junk/error.h b/arkanoid/pico/junk/error.h new file mode 100644 index 0000000..fadb45e --- /dev/null +++ b/arkanoid/pico/junk/error.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_ERROR_H +#define _PICO_ERROR_H + +#ifndef __ASSEMBLER__ + +/*! + * Common return codes from pico_sdk methods that return a status + */ +enum { + PICO_OK = 0, + PICO_ERROR_NONE = 0, + PICO_ERROR_TIMEOUT = -1, + PICO_ERROR_GENERIC = -2, + PICO_ERROR_NO_DATA = -3, +}; + +#endif // !__ASSEMBLER__ + +#endif \ No newline at end of file diff --git a/arkanoid/pico/junk/types.h b/arkanoid/pico/junk/types.h new file mode 100644 index 0000000..d052052 --- /dev/null +++ b/arkanoid/pico/junk/types.h @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_TYPES_H +#define _PICO_TYPES_H + +#ifndef __ASSEMBLER__ + +#include "assert.h" + +#include <stdint.h> +#include <stdbool.h> +#include <stddef.h> + +typedef unsigned int uint; + +/*! \typedef absolute_time_t + \brief An opaque 64 bit timestamp in microseconds + + The type is used instead of a raw uint64_t to prevent accidentally passing relative times or times in the wrong + time units where an absolute time is required. It is equivalent to uint64_t in release builds. + + \see to_us_since_boot() + \see update_us_since_boot() + \ingroup timestamp +*/ +#ifdef NDEBUG +typedef uint64_t absolute_time_t; +#else +typedef struct { + uint64_t _private_us_since_boot; +} absolute_time_t; +#endif + +/*! fn to_us_since_boot + * \brief convert an absolute_time_t into a number of microseconds since boot. + * \param t the absolute time to convert + * \return a number of microseconds since boot, equivalent to t + * \ingroup timestamp + */ +static inline uint64_t to_us_since_boot(absolute_time_t t) { +#ifdef NDEBUG + return t; +#else + return t._private_us_since_boot; +#endif +} + +/*! fn update_us_since_boot + * \brief update an absolute_time_t value to represent a given number of microseconds since boot + * \param t the absolute time value to update + * \param us_since_boot the number of microseconds since boot to represent. Note this should be representable + * as a signed 64 bit integer + * \ingroup timestamp + */ +static inline void update_us_since_boot(absolute_time_t *t, uint64_t us_since_boot) { +#ifdef NDEBUG + *t = us_since_boot; +#else + assert(us_since_boot <= INT64_MAX); + t->_private_us_since_boot = us_since_boot; +#endif +} + +#ifdef NDEBUG +#define ABSOLUTE_TIME_INITIALIZED_VAR(name, value) name = value +#else +#define ABSOLUTE_TIME_INITIALIZED_VAR(name, value) name = {value} +#endif + +/** \struct datetime_t + * \ingroup util_datetime + * \brief Structure containing date and time information + * + * When setting an RTC alarm, set a field to -1 tells + * the RTC to not match on this field + */ +typedef struct { + int16_t year; ///< 0..4095 + int8_t month; ///< 1..12, 1 is January + int8_t day; ///< 1..28,29,30,31 depending on month + int8_t dotw; ///< 0..6, 0 is Sunday + int8_t hour; ///< 0..23 + int8_t min; ///< 0..59 + int8_t sec; ///< 0..59 +} datetime_t; + +#define bool_to_bit(x) ((uint)!!(x)) + +#endif +#endif diff --git a/arkanoid/pico/junk/version.h b/arkanoid/pico/junk/version.h new file mode 100644 index 0000000..08fbfb5 --- /dev/null +++ b/arkanoid/pico/junk/version.h @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +// --------------------------------------- +// THIS FILE IS AUTOGENERATED; DO NOT EDIT +// --------------------------------------- + +#ifndef _PICO_VERSION_H +#define _PICO_VERSION_H + +#define PICO_SDK_VERSION_MAJOR ${PICO_SDK_VERSION_MAJOR} +#define PICO_SDK_VERSION_MINOR ${PICO_SDK_VERSION_MINOR} +#define PICO_SDK_VERSION_REVISION ${PICO_SDK_VERSION_REVISION} +#define PICO_SDK_VERSION_STRING "${PICO_SDK_VERSION_STRING}" + +#endif diff --git a/arkanoid/pico/lock_core.c b/arkanoid/pico/lock_core.c new file mode 100644 index 0000000..80a8343 --- /dev/null +++ b/arkanoid/pico/lock_core.c @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "lock_core.h" + +void lock_init(lock_core_t *core, uint lock_num) { + valid_params_if(LOCK_CORE, lock_num < NUM_SPIN_LOCKS); + core->spin_lock = spin_lock_instance(lock_num); +} + diff --git a/arkanoid/pico/lock_core.h b/arkanoid/pico/lock_core.h new file mode 100644 index 0000000..f91b711 --- /dev/null +++ b/arkanoid/pico/lock_core.h @@ -0,0 +1,197 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_LOCK_CORE_H +#define _PICO_LOCK_CORE_H + +#include "pico.h" +#include "time.h" +#include "hardware/sync.h" + +/** \file lock_core.h + * \defgroup lock_core lock_core + * \ingroup pico_sync + * \brief base synchronization/lock primitive support + * + * Most of the pico_sync locking primitives contain a lock_core_t structure member. This currently just holds a spin + * lock which is used only to protect the contents of the rest of the structure as part of implementing the synchronization + * primitive. As such, the spin_lock member of lock core is never still held on return from any function for the primitive. + * + * \ref critical_section is an exceptional case in that it does not have a lock_core_t and simply wraps a spin lock, providing + * methods to lock and unlock said spin lock. + * + * lock_core based structures work by locking the spin lock, checking state, and then deciding whether they additionally need to block + * or notify when the spin lock is released. In the blocking case, they will wake up again in the future, and try the process again. + * + * By default the SDK just uses the processors' events via SEV and WEV for notification and blocking as these are sufficient for + * cross core, and notification from interrupt handlers. However macros are defined in this file that abstract the wait + * and notify mechanisms to allow the SDK locking functions to effectively be used within an RTOS or other environment. + * + * When implementing an RTOS, it is desirable for the SDK synchronization primitives that wait, to block the calling task (and immediately yield), + * and those that notify, to wake a blocked task which isn't on processor. At least the wait macro implementation needs to be atomic with the protecting + * spin_lock unlock from the callers point of view; i.e. the task should unlock the spin lock when it starts its wait. Such implementation is + * up to the RTOS integration, however the macros are defined such that such operations are always combined into a single call + * (so they can be perfomed atomically) even though the default implementation does not need this, as a WFE which starts + * following the corresponding SEV is not missed. + */ + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_LOCK_CORE, Enable/disable assertions in the lock core, type=bool, default=0, group=pico_sync +#ifndef PARAM_ASSERTIONS_ENABLED_LOCK_CORE +#define PARAM_ASSERTIONS_ENABLED_LOCK_CORE 0 +#endif + +/** \file lock_core.h + * \ingroup lock_core + * + * Base implementation for locking primitives protected by a spin lock. The spin lock is only used to protect + * access to the remaining lock state (in primitives using lock_core); it is never left locked outside + * of the function implementations + */ +struct lock_core { + // spin lock protecting this lock's state + spin_lock_t *spin_lock; + + // note any lock members in containing structures need not be volatile; + // they are protected by memory/compiler barriers when gaining and release spin locks +}; + +typedef struct lock_core lock_core_t; + +/*! \brief Initialise a lock structure + * \ingroup lock_core + * + * Inititalize a lock structure, providing the spin lock number to use for protecting internal state. + * + * \param core Pointer to the lock_core to initialize + * \param lock_num Spin lock number to use for the lock. As the spin lock is only used internally to the locking primitive + * method implementations, this does not need to be globally unique, however could suffer contention + */ +void lock_init(lock_core_t *core, uint lock_num); + +#ifndef lock_owner_id_t +/*! \brief type to use to store the 'owner' of a lock. + * \ingroup lock_core + * By default this is int8_t as it only needs to store the core number or -1, however it may be + * overridden if a larger type is required (e.g. for an RTOS task id) + */ +#define lock_owner_id_t int8_t +#endif + +#ifndef LOCK_INVALID_OWNER_ID +/*! \brief marker value to use for a lock_owner_id_t which does not refer to any valid owner + * \ingroup lock_core + */ +#define LOCK_INVALID_OWNER_ID ((lock_owner_id_t)-1) +#endif + +#ifndef lock_get_caller_owner_id +/*! \brief return the owner id for the caller + * \ingroup lock_core + * By default this returns the calling core number, but may be overridden (e.g. to return an RTOS task id) + */ +#define lock_get_caller_owner_id() ((lock_owner_id_t)get_core_num()) +#ifndef lock_is_owner_id_valid +#define lock_is_owner_id_valid(id) ((id)>=0) +#endif +#endif + +#ifndef lock_is_owner_id_valid +#define lock_is_owner_id_valid(id) ((id) != LOCK_INVALID_OWNER_ID) +#endif + +#ifndef lock_internal_spin_unlock_with_wait +/*! \brief Atomically unlock the lock's spin lock, and wait for a notification. + * \ingroup lock_core + * + * _Atomic_ here refers to the fact that it should not be possible for a concurrent lock_internal_spin_unlock_with_notify + * to insert itself between the spin unlock and this wait in a way that the wait does not see the notification (i.e. causing + * a missed notification). In other words this method should always wake up in response to a lock_internal_spin_unlock_with_notify + * for the same lock, which completes after this call starts. + * + * In an ideal implementation, this method would return exactly after the corresponding lock_internal_spin_unlock_with_notify + * has subsequently been called on the same lock instance, however this method is free to return at _any_ point before that; + * this macro is _always_ used in a loop which locks the spin lock, checks the internal locking primitive state and then + * waits again if the calling thread should not proceed. + * + * By default this macro simply unlocks the spin lock, and then performs a WFE, but may be overridden + * (e.g. to actually block the RTOS task). + * + * \param lock the lock_core for the primitive which needs to block + * \param save the uint32_t value that should be passed to spin_unlock when the spin lock is unlocked. (i.e. the `PRIMASK` + * state when the spin lock was acquire + */ +#define lock_internal_spin_unlock_with_wait(lock, save) spin_unlock((lock)->spin_lock, save), __wfe() +#endif + +#ifndef lock_internal_spin_unlock_with_notify +/*! \brief Atomically unlock the lock's spin lock, and send a notification + * \ingroup lock_core + * + * _Atomic_ here refers to the fact that it should not be possible for this notification to happen during a + * lock_internal_spin_unlock_with_wait in a way that that wait does not see the notification (i.e. causing + * a missed notification). In other words this method should always wake up any lock_internal_spin_unlock_with_wait + * which started before this call completes. + * + * In an ideal implementation, this method would wake up only the corresponding lock_internal_spin_unlock_with_wait + * that has been called on the same lock instance, however it is free to wake up any of them, as they will check + * their condition and then re-wait if necessary/ + * + * By default this macro simply unlocks the spin lock, and then performs a SEV, but may be overridden + * (e.g. to actually un-block RTOS task(s)). + * + * \param lock the lock_core for the primitive which needs to block + * \param save the uint32_t value that should be passed to spin_unlock when the spin lock is unlocked. (i.e. the PRIMASK + * state when the spin lock was acquire) + */ +#define lock_internal_spin_unlock_with_notify(lock, save) spin_unlock((lock)->spin_lock, save), __sev() +#endif + +#ifndef lock_internal_spin_unlock_with_best_effort_wait_or_timeout +/*! \brief Atomically unlock the lock's spin lock, and wait for a notification or a timeout + * \ingroup lock_core + * + * _Atomic_ here refers to the fact that it should not be possible for a concurrent lock_internal_spin_unlock_with_notify + * to insert itself between the spin unlock and this wait in a way that the wait does not see the notification (i.e. causing + * a missed notification). In other words this method should always wake up in response to a lock_internal_spin_unlock_with_notify + * for the same lock, which completes after this call starts. + * + * In an ideal implementation, this method would return exactly after the corresponding lock_internal_spin_unlock_with_notify + * has subsequently been called on the same lock instance or the timeout has been reached, however this method is free to return + * at _any_ point before that; this macro is _always_ used in a loop which locks the spin lock, checks the internal locking + * primitive state and then waits again if the calling thread should not proceed. + * + * By default this simply unlocks the spin lock, and then calls \ref best_effort_wfe_or_timeout + * but may be overridden (e.g. to actually block the RTOS task with a timeout). + * + * \param lock the lock_core for the primitive which needs to block + * \param save the uint32_t value that should be passed to spin_unlock when the spin lock is unlocked. (i.e. the PRIMASK + * state when the spin lock was acquire) + * \param until the \ref absolute_time_t value + * \return true if the timeout has been reached + */ +#define lock_internal_spin_unlock_with_best_effort_wait_or_timeout(lock, save, until) ({ \ + spin_unlock((lock)->spin_lock, save); \ + best_effort_wfe_or_timeout(until); \ +}) +#endif + +#ifndef sync_internal_yield_until_before +/*! \brief yield to other processing until some time before the requested time + * \ingroup lock_core + * + * This method is provided for cases where the caller has no useful work to do + * until the specified time. + * + * By default this method does nothing, however it can be overridden (for example by an + * RTOS which is able to block the current task until the scheduler tick before + * the given time) + * + * \param until the \ref absolute_time_t value + */ +#define sync_internal_yield_until_before(until) ((void)0) +#endif + +#endif diff --git a/arkanoid/pico/malloc.h b/arkanoid/pico/malloc.h new file mode 100644 index 0000000..b4ae2b6 --- /dev/null +++ b/arkanoid/pico/malloc.h @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_MALLOC_H +#define _PICO_MALLOC_H + +/** \file malloc.h +* \defgroup pico_malloc pico_malloc +* +* Multi-core safety for malloc, calloc and free +* +* This library does not provide any additional functions +*/ + +// PICO_CONFIG: PICO_USE_MALLOC_MUTEX, Whether to protect malloc etc with a mutex, type=bool, default=1 with pico_multicore, 0 otherwise, group=pico_malloc +#if LIB_PICO_MULTICORE && !defined(PICO_USE_MALLOC_MUTEX) +#define PICO_USE_MALLOC_MUTEX 1 +#endif + +// PICO_CONFIG: PICO_MALLOC_PANIC, Enable/disable panic when an allocation failure occurs, type=bool, default=1, group=pico_malloc +#ifndef PICO_MALLOC_PANIC +#define PICO_MALLOC_PANIC 1 +#endif + +// PICO_CONFIG: PICO_DEBUG_MALLOC, Enable/disable debug printf from malloc, type=bool, default=0, group=pico_malloc +#ifndef PICO_DEBUG_MALLOC +#define PICO_DEBUG_MALLOC 0 +#endif + +// PICO_CONFIG: PICO_DEBUG_MALLOC_LOW_WATER, Define the lower bound for allocation addresses to be printed by PICO_DEBUG_MALLOC, min=0, default=0, group=pico_malloc +#ifndef PICO_DEBUG_MALLOC_LOW_WATER +#define PICO_DEBUG_MALLOC_LOW_WATER 0 +#endif + +#endif \ No newline at end of file diff --git a/arkanoid/pico/memmap_default.ld b/arkanoid/pico/memmap_default.ld new file mode 100644 index 0000000..1bfd652 --- /dev/null +++ b/arkanoid/pico/memmap_default.ld @@ -0,0 +1,252 @@ +/* Based on GCC ARM embedded samples. + Defines the following symbols for use by code: + __exidx_start + __exidx_end + __etext + __data_start__ + __preinit_array_start + __preinit_array_end + __init_array_start + __init_array_end + __fini_array_start + __fini_array_end + __data_end__ + __bss_start__ + __bss_end__ + __end__ + end + __HeapLimit + __StackLimit + __StackTop + __stack (== StackTop) +*/ + +MEMORY +{ + FLASH(rx) : ORIGIN = 0x10000000, LENGTH = 2048k + RAM(rwx) : ORIGIN = 0x20000000, LENGTH = 256k + SCRATCH_X(rwx) : ORIGIN = 0x20040000, LENGTH = 4k + SCRATCH_Y(rwx) : ORIGIN = 0x20041000, LENGTH = 4k +} + +ENTRY(_entry_point) + +SECTIONS +{ + /* Second stage bootloader is prepended to the image. It must be 256 bytes big + and checksummed. It is usually built by the boot_stage2 target + in the Raspberry Pi Pico SDK + */ + + .flash_begin : { + __flash_binary_start = .; + } > FLASH + + .boot2 : { + __boot2_start__ = .; + *(.boot2*) + __boot2_end__ = .; + } > FLASH + + ASSERT(__boot2_end__ - __boot2_start__ == 256, + "ERROR: Pico second stage bootloader must be 256 bytes in size") + + /* The second stage will always enter the image at the start of .text. + The debugger will use the ELF entry point, which is the _entry_point + symbol if present, otherwise defaults to start of .text. + This can be used to transfer control back to the bootrom on debugger + launches only, to perform proper flash setup. + */ + + .text : { + __logical_binary_start = .; + KEEP (*(.vectors)) + KEEP (*(.binary_info_header)) + __binary_info_header_end = .; + KEEP (*(.reset)) + /* TODO revisit this now memset/memcpy/float in ROM */ + /* bit of a hack right now to exclude all floating point and time critical (e.g. memset, memcpy) code from + * FLASH ... we will include any thing excluded here in .data below by default */ + *(.init) + *(EXCLUDE_FILE(*libgcc.a: *libc.a:*lib_a-mem*.o *libm.a:) .text*) + *(.fini) + /* Pull all c'tors into .text */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + /* Followed by destructors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + + *(.eh_frame*) + . = ALIGN(4); + } > FLASH + + .rodata : { + *(EXCLUDE_FILE(*libgcc.a: *libc.a:*lib_a-mem*.o *libm.a:) .rodata*) + . = ALIGN(4); + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.flashdata*))) + . = ALIGN(4); + } > FLASH + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > FLASH + + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > FLASH + __exidx_end = .; + + /* Machine inspectable binary information */ + . = ALIGN(4); + __binary_info_start = .; + .binary_info : + { + KEEP(*(.binary_info.keep.*)) + *(.binary_info.*) + } > FLASH + __binary_info_end = .; + . = ALIGN(4); + + /* End of .text-like segments */ + __etext = .; + + .ram_vector_table (COPY): { + *(.ram_vector_table) + } > RAM + + .data : { + __data_start__ = .; + *(vtable) + + *(.time_critical*) + + /* remaining .text and .rodata; i.e. stuff we exclude above because we want it in RAM */ + *(.text*) + . = ALIGN(4); + *(.rodata*) + . = ALIGN(4); + + *(.data*) + + . = ALIGN(4); + *(.after_data.*) + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__mutex_array_start = .); + KEEP(*(SORT(.mutex_array.*))) + KEEP(*(.mutex_array)) + PROVIDE_HIDDEN (__mutex_array_end = .); + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(SORT(.preinit_array.*))) + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + *(SORT(.fini_array.*)) + *(.fini_array) + PROVIDE_HIDDEN (__fini_array_end = .); + + *(.jcr) + . = ALIGN(4); + /* All data end */ + __data_end__ = .; + } > RAM AT> FLASH + + .uninitialized_data (COPY): { + . = ALIGN(4); + *(.uninitialized_data*) + } > RAM + + /* Start and end symbols must be word-aligned */ + .scratch_x : { + __scratch_x_start__ = .; + *(.scratch_x.*) + . = ALIGN(4); + __scratch_x_end__ = .; + } > SCRATCH_X AT > FLASH + __scratch_x_source__ = LOADADDR(.scratch_x); + + .scratch_y : { + __scratch_y_start__ = .; + *(.scratch_y.*) + . = ALIGN(4); + __scratch_y_end__ = .; + } > SCRATCH_Y AT > FLASH + __scratch_y_source__ = LOADADDR(.scratch_y); + + .bss : { + . = ALIGN(4); + __bss_start__ = .; + *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.bss*))) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + } > RAM + + .heap (COPY): + { + __end__ = .; + end = __end__; + *(.heap*) + __HeapLimit = .; + } > RAM + + /* .stack*_dummy section doesn't contains any symbols. It is only + * used for linker to calculate size of stack sections, and assign + * values to stack symbols later + * + * stack1 section may be empty/missing if platform_launch_core1 is not used */ + + /* by default we put core 0 stack at the end of scratch Y, so that if core 1 + * stack is not used then all of SCRATCH_X is free. + */ + .stack1_dummy (COPY): + { + *(.stack1*) + } > SCRATCH_X + .stack_dummy (COPY): + { + *(.stack*) + } > SCRATCH_Y + + .flash_end : { + __flash_binary_end = .; + } > FLASH + + /* stack limit is poorly named, but historically is maximum heap ptr */ + __StackLimit = ORIGIN(RAM) + LENGTH(RAM); + __StackOneTop = ORIGIN(SCRATCH_X) + LENGTH(SCRATCH_X); + __StackTop = ORIGIN(SCRATCH_Y) + LENGTH(SCRATCH_Y); + __StackOneBottom = __StackOneTop - SIZEOF(.stack1_dummy); + __StackBottom = __StackTop - SIZEOF(.stack_dummy); + PROVIDE(__stack = __StackTop); + + /* Check if data + heap + stack exceeds RAM limit */ + ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed") + + ASSERT( __binary_info_header_end - __logical_binary_start <= 256, "Binary info must be in first 256 bytes of the binary") + /* todo assert on extra code */ +} + diff --git a/arkanoid/pico/multicore.c b/arkanoid/pico/multicore.c new file mode 100644 index 0000000..7dbecdc --- /dev/null +++ b/arkanoid/pico/multicore.c @@ -0,0 +1,269 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "multicore.h" +#include "hardware/sync.h" +#include "hardware/irq.h" +#include "hardware/structs/scb.h" +#include "hardware/structs/sio.h" +#include "hardware/regs/psm.h" +#include "hardware/claim.h" +#if PICO_USE_STACK_GUARDS +#include "runtime.h" +#endif + +static inline void multicore_fifo_push_blocking_inline(uint32_t data) { + // We wait for the fifo to have some space + while (!multicore_fifo_wready()) + tight_loop_contents(); + + sio_hw->fifo_wr = data; + + // Fire off an event to the other core + __sev(); +} + +void multicore_fifo_push_blocking(uint32_t data) { + multicore_fifo_push_blocking_inline(data); +} + +bool multicore_fifo_push_timeout_us(uint32_t data, uint64_t timeout_us) { + absolute_time_t end_time = make_timeout_time_us(timeout_us); + // We wait for the fifo to have some space + while (!multicore_fifo_wready()) { + tight_loop_contents(); + if (time_reached(end_time)) return false; + } + + sio_hw->fifo_wr = data; + + // Fire off an event to the other core + __sev(); + return true; +} + +static inline uint32_t multicore_fifo_pop_blocking_inline(void) { + // If nothing there yet, we wait for an event first, + // to try and avoid too much busy waiting + while (!multicore_fifo_rvalid()) + __wfe(); + + return sio_hw->fifo_rd; +} + +uint32_t multicore_fifo_pop_blocking() { + return multicore_fifo_pop_blocking_inline(); +} + +bool multicore_fifo_pop_timeout_us(uint64_t timeout_us, uint32_t *out) { + absolute_time_t end_time = make_timeout_time_us(timeout_us); + // If nothing there yet, we wait for an event first, + // to try and avoid too much busy waiting + while (!multicore_fifo_rvalid()) { + __wfe(); + if (time_reached(end_time)) return false; + } + + *out = sio_hw->fifo_rd; + return true; +} + +// Default stack for core1 ... if multicore_launch_core1 is not included then .stack1 section will be garbage collected +static uint32_t __attribute__((section(".stack1"))) core1_stack[PICO_CORE1_STACK_SIZE / sizeof(uint32_t)]; + +static void __attribute__ ((naked)) core1_trampoline(void) { + __asm("pop {r0, r1, pc}"); +} + +int core1_wrapper(int (*entry)(void), void *stack_base) { +#if PICO_USE_STACK_GUARDS + // install core1 stack guard + runtime_install_stack_guard(stack_base); +#else + __unused void *ignore = stack_base; +#endif + irq_init_priorities(); + return (*entry)(); +} + +void multicore_reset_core1() { + // Use atomic aliases just in case core 1 is also manipulating some PSM state + io_rw_32 *power_off = (io_rw_32 *) (PSM_BASE + PSM_FRCE_OFF_OFFSET); + io_rw_32 *power_off_set = hw_set_alias(power_off); + io_rw_32 *power_off_clr = hw_clear_alias(power_off); + + // Hard-reset core 1. + // Reading back confirms the core 1 reset is in the correct state, but also + // forces APB IO bridges to fence on any internal store buffering + *power_off_set = PSM_FRCE_OFF_PROC1_BITS; + while (!(*power_off & PSM_FRCE_OFF_PROC1_BITS)) tight_loop_contents(); + + // Bring core 1 back out of reset. It will drain its own mailbox FIFO, then push + // a 0 to our mailbox to tell us it has done this. + *power_off_clr = PSM_FRCE_OFF_PROC1_BITS; +} + +void multicore_launch_core1_with_stack(void (*entry)(void), uint32_t *stack_bottom, size_t stack_size_bytes) { + assert(!(stack_size_bytes & 3u)); + uint32_t *stack_ptr = stack_bottom + stack_size_bytes / sizeof(uint32_t); + // push 2 values onto top of stack for core1_trampoline + stack_ptr -= 3; + stack_ptr[0] = (uintptr_t) entry; + stack_ptr[1] = (uintptr_t) stack_bottom; + stack_ptr[2] = (uintptr_t) core1_wrapper; + multicore_launch_core1_raw(core1_trampoline, stack_ptr, scb_hw->vtor); +} + +void multicore_launch_core1(void (*entry)(void)) { + extern uint32_t __StackOneBottom; + uint32_t *stack_limit = (uint32_t *) &__StackOneBottom; + // hack to reference core1_stack although that pointer is wrong.... core1_stack should always be <= stack_limit, if not boom! + uint32_t *stack = core1_stack <= stack_limit ? stack_limit : (uint32_t *) -1; + multicore_launch_core1_with_stack(entry, stack, sizeof(core1_stack)); +} + +void multicore_launch_core1_raw(void (*entry)(void), uint32_t *sp, uint32_t vector_table) { + // Allow for the fact that the caller may have already enabled the FIFO IRQ for their + // own purposes (expecting FIFO content after core 1 is launched). We must disable + // the IRQ during the handshake, then restore afterwards. + bool enabled = irq_is_enabled(SIO_IRQ_PROC0); + irq_set_enabled(SIO_IRQ_PROC0, false); + + // Values to be sent in order over the FIFO from core 0 to core 1 + // + // vector_table is value for VTOR register + // sp is initial stack pointer (SP) + // entry is the initial program counter (PC) (don't forget to set the thumb bit!) + const uint32_t cmd_sequence[] = + {0, 0, 1, (uintptr_t) vector_table, (uintptr_t) sp, (uintptr_t) entry}; + + uint seq = 0; + do { + uint cmd = cmd_sequence[seq]; + // Always drain the READ FIFO (from core 1) before sending a 0 + if (!cmd) { + multicore_fifo_drain(); + // Execute a SEV as core 1 may be waiting for FIFO space via WFE + __sev(); + } + multicore_fifo_push_blocking(cmd); + uint32_t response = multicore_fifo_pop_blocking(); + // Move to next state on correct response (echo-d value) otherwise start over + seq = cmd == response ? seq + 1 : 0; + } while (seq < count_of(cmd_sequence)); + + irq_set_enabled(SIO_IRQ_PROC0, enabled); +} + +#define LOCKOUT_MAGIC_START 0x73a8831eu +#define LOCKOUT_MAGIC_END (~LOCKOUT_MAGIC_START) + +static_assert(SIO_IRQ_PROC1 == SIO_IRQ_PROC0 + 1, ""); + +static mutex_t lockout_mutex; +static bool lockout_in_progress; + +// note this method is in RAM because lockout is used when writing to flash +// it only makes inline calls +static void __isr __not_in_flash_func(multicore_lockout_handler)(void) { + multicore_fifo_clear_irq(); + while (multicore_fifo_rvalid()) { + if (sio_hw->fifo_rd == LOCKOUT_MAGIC_START) { + uint32_t save = save_and_disable_interrupts(); + multicore_fifo_push_blocking_inline(LOCKOUT_MAGIC_START); + while (multicore_fifo_pop_blocking_inline() != LOCKOUT_MAGIC_END) { + tight_loop_contents(); // not tight but endless potentially + } + restore_interrupts(save); + multicore_fifo_push_blocking_inline(LOCKOUT_MAGIC_END); + } + } +} + +static void check_lockout_mutex_init(void) { + // use known available lock - we only need it briefly + uint32_t save = hw_claim_lock(); + if (!mutex_is_initialized(&lockout_mutex)) { + mutex_init(&lockout_mutex); + } + hw_claim_unlock(save); +} + +void multicore_lockout_victim_init() { + check_lockout_mutex_init(); + uint core_num = get_core_num(); + irq_set_exclusive_handler(SIO_IRQ_PROC0 + core_num, multicore_lockout_handler); + irq_set_enabled(SIO_IRQ_PROC0 + core_num, true); +} + +static bool multicore_lockout_handshake(uint32_t magic, absolute_time_t until) { + uint irq_num = SIO_IRQ_PROC0 + get_core_num(); + bool enabled = irq_is_enabled(irq_num); + if (enabled) irq_set_enabled(irq_num, false); + bool rc = false; + do { + int64_t next_timeout_us = absolute_time_diff_us(get_absolute_time(), until); + if (next_timeout_us < 0) { + break; + } + multicore_fifo_push_timeout_us(magic, (uint64_t)next_timeout_us); + next_timeout_us = absolute_time_diff_us(get_absolute_time(), until); + if (next_timeout_us < 0) { + break; + } + uint32_t word = 0; + if (!multicore_fifo_pop_timeout_us((uint64_t)next_timeout_us, &word)) { + break; + } + if (word == magic) { + rc = true; + } + } while (!rc); + if (enabled) irq_set_enabled(irq_num, true); + return rc; +} + +static bool multicore_lockout_start_block_until(absolute_time_t until) { + check_lockout_mutex_init(); + if (!mutex_enter_block_until(&lockout_mutex, until)) { + return false; + } + hard_assert(!lockout_in_progress); + bool rc = multicore_lockout_handshake(LOCKOUT_MAGIC_START, until); + lockout_in_progress = rc; + mutex_exit(&lockout_mutex); + return rc; +} + +bool multicore_lockout_start_timeout_us(uint64_t timeout_us) { + return multicore_lockout_start_block_until(make_timeout_time_us(timeout_us)); +} + +void multicore_lockout_start_blocking() { + multicore_lockout_start_block_until(at_the_end_of_time); +} + +static bool multicore_lockout_end_block_until(absolute_time_t until) { + assert(mutex_is_initialized(&lockout_mutex)); + if (!mutex_enter_block_until(&lockout_mutex, until)) { + return false; + } + assert(lockout_in_progress); + bool rc = multicore_lockout_handshake(LOCKOUT_MAGIC_END, until); + if (rc) { + lockout_in_progress = false; + } + mutex_exit(&lockout_mutex); + return rc; +} + +bool multicore_lockout_end_timeout_us(uint64_t timeout_us) { + return multicore_lockout_end_block_until(make_timeout_time_us(timeout_us)); +} + +void multicore_lockout_end_blocking() { + multicore_lockout_end_block_until(at_the_end_of_time); +} diff --git a/arkanoid/pico/multicore.h b/arkanoid/pico/multicore.h new file mode 100644 index 0000000..f5b48ae --- /dev/null +++ b/arkanoid/pico/multicore.h @@ -0,0 +1,310 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_MULTICORE_H +#define _PICO_MULTICORE_H + +#include "junk/types.h" +#include "sync.h" +#include "hardware/structs/sio.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file multicore.h + * \defgroup pico_multicore pico_multicore + * Adds support for running code on the second processor core (core 1) + * + * \subsection multicore_example Example + * \addtogroup pico_multicore + * \include multicore.c +*/ + +// PICO_CONFIG: PICO_CORE1_STACK_SIZE, Stack size for core 1, min=0x100, max=0x10000, default=PICO_STACK_SIZE (0x800), group=pico_multicore +#ifndef PICO_CORE1_STACK_SIZE +#ifdef PICO_STACK_SIZE +#define PICO_CORE1_STACK_SIZE PICO_STACK_SIZE +#else +#define PICO_CORE1_STACK_SIZE 0x800 +#endif +#endif + +/*! \brief Reset core 1 + * \ingroup pico_multicore + * + * This function can be used to reset core 1 into its initial state (ready for launching code against via \ref multicore_launch_core1 and similar methods) + * + * \note this function should only be called from core 0 + */ +void multicore_reset_core1(void); + +/*! \brief Run code on core 1 + * \ingroup pico_multicore + * + * Wake up (a previously reset) core 1 and enter the given function on core 1 using the default core 1 stack (below core 0 stack). + * + * core 1 must previously have been reset either as a result of a system reset or by calling \ref multicore_reset_core1 + * + * core 1 will use the same vector table as core 0 + * + * \param entry Function entry point + * \see multicore_reset_core1 + */ +void multicore_launch_core1(void (*entry)(void)); + +/*! \brief Launch code on core 1 with stack + * \ingroup pico_multicore + * + * Wake up (a previously reset) core 1 and enter the given function on core 1 using the passed stack for core 1 + * + * core 1 must previously have been reset either as a result of a system reset or by calling \ref multicore_reset_core1 + * + * core 1 will use the same vector table as core 0 + * + * \param entry Function entry point + * \param stack_bottom The bottom (lowest address) of the stack + * \param stack_size_bytes The size of the stack in bytes (must be a multiple of 4) + * \see multicore_reset_core1 + */ +void multicore_launch_core1_with_stack(void (*entry)(void), uint32_t *stack_bottom, size_t stack_size_bytes); + +/*! \brief Launch code on core 1 with no stack protection + * \ingroup pico_multicore + * + * Wake up (a previously reset) core 1 and start it executing with a specific entry point, stack pointer + * and vector table. + * + * This is a low level function that does not provide a stack guard even if USE_STACK_GUARDS is defined + * + * core 1 must previously have been reset either as a result of a system reset or by calling \ref multicore_reset_core1 + * + * \param entry Function entry point + * \param sp Pointer to the top of the core 1 stack + * \param vector_table address of the vector table to use for core 1 + * \see multicore_reset_core1 + */ +void multicore_launch_core1_raw(void (*entry)(void), uint32_t *sp, uint32_t vector_table); + +/*! + * \defgroup multicore_fifo fifo + * \ingroup pico_multicore + * \brief Functions for the inter-core FIFOs + * + * The RP2040 contains two FIFOs for passing data, messages or ordered events between the two cores. Each FIFO is 32 bits + * wide, and 8 entries deep. One of the FIFOs can only be written by core 0, and read by core 1. The other can only be written + * by core 1, and read by core 0. + * + * \note The inter-core FIFOs are a very precious resource and are frequently used for SDK functionality (e.g. during + * core 1 launch or by the \ref multicore_lockout functions). Additionally they are often required for the exclusive use + * of an RTOS (e.g. FreeRTOS SMP). For these reasons it is suggested that you do not use the FIFO for your own purposes + * unless none of the above concerns apply; the majority of cases for transferring data between cores can be eqaully + * well handled by using a \ref queue + */ + +/*! \brief Check the read FIFO to see if there is data available (sent by the other core) + * \ingroup multicore_fifo + * + * See the note in the \ref multicore_fifo section for considerations regarding use of the inter-core FIFOs + * + * \return true if the FIFO has data in it, false otherwise + */ +static inline bool multicore_fifo_rvalid(void) { + return !!(sio_hw->fifo_st & SIO_FIFO_ST_VLD_BITS); +} + +/*! \brief Check the write FIFO to see if it has space for more data + * \ingroup multicore_fifo + * + * See the note in the \ref multicore_fifo section for considerations regarding use of the inter-core FIFOs + * + * @return true if the FIFO has room for more data, false otherwise + */ +static inline bool multicore_fifo_wready(void) { + return !!(sio_hw->fifo_st & SIO_FIFO_ST_RDY_BITS); +} + +/*! \brief Push data on to the write FIFO (data to the other core). + * \ingroup multicore_fifo + * + * This function will block until there is space for the data to be sent. + * Use multicore_fifo_wready() to check if it is possible to write to the + * FIFO if you don't want to block. + * + * See the note in the \ref multicore_fifo section for considerations regarding use of the inter-core FIFOs + * + * \param data A 32 bit value to push on to the FIFO + */ +void multicore_fifo_push_blocking(uint32_t data); + +/*! \brief Push data on to the write FIFO (data to the other core) with timeout. + * \ingroup multicore_fifo + * + * This function will block until there is space for the data to be sent + * or the timeout is reached + * + * \param data A 32 bit value to push on to the FIFO + * \param timeout_us the timeout in microseconds + * \return true if the data was pushed, false if the timeout occurred before data could be pushed + */ +bool multicore_fifo_push_timeout_us(uint32_t data, uint64_t timeout_us); + +/*! \brief Pop data from the read FIFO (data from the other core). + * \ingroup multicore_fifo + * + * This function will block until there is data ready to be read + * Use multicore_fifo_rvalid() to check if data is ready to be read if you don't + * want to block. + * + * See the note in the \ref multicore_fifo section for considerations regarding use of the inter-core FIFOs + * + * \return 32 bit data from the read FIFO. + */ +uint32_t multicore_fifo_pop_blocking(void); + +/*! \brief Pop data from the read FIFO (data from the other core) with timeout. + * \ingroup multicore_fifo + * + * This function will block until there is data ready to be read or the timeout is reached + * + * See the note in the \ref multicore_fifo section for considerations regarding use of the inter-core FIFOs + * + * \param timeout_us the timeout in microseconds + * \param out the location to store the popped data if available + * \return true if the data was popped and a value copied into `out`, false if the timeout occurred before data could be popped + */ +bool multicore_fifo_pop_timeout_us(uint64_t timeout_us, uint32_t *out); + +/*! \brief Discard any data in the read FIFO + * \ingroup multicore_fifo + * + * See the note in the \ref multicore_fifo section for considerations regarding use of the inter-core FIFOs + */ +static inline void multicore_fifo_drain(void) { + while (multicore_fifo_rvalid()) + (void) sio_hw->fifo_rd; +} + +/*! \brief Clear FIFO interrupt + * \ingroup multicore_fifo + * + * Note that this only clears an interrupt that was caused by the ROE or WOF flags. + * To clear the VLD flag you need to use one of the 'pop' or 'drain' functions. + * + * See the note in the \ref multicore_fifo section for considerations regarding use of the inter-core FIFOs + * + * \see multicore_fifo_get_status +*/ +static inline void multicore_fifo_clear_irq(void) { + // Write any value to clear the error flags + sio_hw->fifo_st = 0xff; +} + +/*! \brief Get FIFO statuses + * \ingroup multicore_fifo + * + * \return The statuses as a bitfield + * + * Bit | Description + * ----|------------ + * 3 | Sticky flag indicating the RX FIFO was read when empty (ROE). This read was ignored by the FIFO. + * 2 | Sticky flag indicating the TX FIFO was written when full (WOF). This write was ignored by the FIFO. + * 1 | Value is 1 if this core’s TX FIFO is not full (i.e. if FIFO_WR is ready for more data) + * 0 | Value is 1 if this core’s RX FIFO is not empty (i.e. if FIFO_RD is valid) + * + * See the note in the \ref multicore_fifo section for considerations regarding use of the inter-core FIFOs + * +*/ +static inline uint32_t multicore_fifo_get_status(void) { + return sio_hw->fifo_st; +} + +/*! + * \defgroup multicore_lockout lockout + * \ingroup pico_multicore + * \brief Functions to enable one core to force the other core to pause execution in a known state. + * + * Sometimes it is useful to enter a critical section on both cores at once. On a single + * core system a critical section can trivially be entered by disabling interrupts, however on a multi-core + * system that is not sufficient, and unless the other core is polling in some way, then it will need to be interrupted + * in order to cooperatively enter a blocked state. + * + * These "lockout" functions use the inter core FIFOs to cause an interrupt on one core from the other, and manage + * waiting for the other core to enter the "locked out" state. + * + * The usage is that the "victim" core ... i.e the core that can be "locked out" by the other core calls + * \ref multicore_lockout_victim_init to hook the FIFO interrupt. Note that either or both cores may do this. + * + * \note When "locked out" the victim core is paused (it is actually executing a tight loop with code in RAM) and has interrupts disabled. + * This makes the lockout functions suitable for use by code that wants to write to flash (at which point no code may be executing + * from flash) + * + * The core which wishes to lockout the other core calls \ref multicore_lockout_start_blocking or + * \ref multicore_lockout_start_timeout_us to interrupt the other "victim" core and wait for it to be in a + * "locked out" state. Once the lockout is no longer needed it calls \ref multicore_lockout_end_blocking or + * \ref multicore_lockout_end_timeout_us to release the lockout and wait for confirmation. + * + * \note Because multicore lockout uses the intercore FIFOs, the FIFOs <b>cannot</b> be used for any other purpose + */ + +/*! \brief Initialize the current core such that it can be a "victim" of lockout (i.e. forced to pause in a known state by the other core) + * \ingroup multicore_lockout + * + * This code hooks the intercore FIFO IRQ, and the FIFO may not be used for any other purpose after this. + */ +void multicore_lockout_victim_init(void); + +/*! \brief Request the other core to pause in a known state and wait for it to do so + * \ingroup multicore_lockout + * + * The other (victim) core must have previously executed \ref multicore_lockout_victim_init() + * + * \note multicore_lockout_start_ functions are not nestable, and must be paired with a call to a corresponding + * \ref multicore_lockout_end_blocking + */ +void multicore_lockout_start_blocking(void); + +/*! \brief Request the other core to pause in a known state and wait up to a time limit for it to do so + * \ingroup multicore_lockout + * + * The other core must have previously executed \ref multicore_lockout_victim_init() + * + * \note multicore_lockout_start_ functions are not nestable, and must be paired with a call to a corresponding + * \ref multicore_lockout_end_blocking + * + * \param timeout_us the timeout in microseconds + * \return true if the other core entered the locked out state within the timeout, false otherwise + */ +bool multicore_lockout_start_timeout_us(uint64_t timeout_us); + +/*! \brief Release the other core from a locked out state amd wait for it to acknowledge + * \ingroup multicore_lockout + * + * \note The other core must previously have been "locked out" by calling a `multicore_lockout_start_` function + * from this core + */ +void multicore_lockout_end_blocking(void); + +/*! \brief Release the other core from a locked out state amd wait up to a time limit for it to acknowledge + * \ingroup multicore_lockout + * + * The other core must previously have been "locked out" by calling a `multicore_lockout_start_` function + * from this core + * + * \note be very careful using small timeout values, as a timeout here will leave the "lockout" functionality + * in a bad state. It is probably preferable to use \ref multicore_lockout_end_blocking anyway as if you have + * already waited for the victim core to enter the lockout state, then the victim core will be ready to exit + * the lockout state very quickly. + * + * \param timeout_us the timeout in microseconds + * \return true if the other core successfully exited locked out state within the timeout, false otherwise + */ +bool multicore_lockout_end_timeout_us(uint64_t timeout_us); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/arkanoid/pico/mutex.c b/arkanoid/pico/mutex.c new file mode 100644 index 0000000..5e8ccee --- /dev/null +++ b/arkanoid/pico/mutex.c @@ -0,0 +1,184 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "mutex.h" +#include "time.h" + +void mutex_init(mutex_t *mtx) { + lock_init(&mtx->core, next_striped_spin_lock_num()); + mtx->owner = LOCK_INVALID_OWNER_ID; +#if PICO_MUTEX_ENABLE_SDK120_COMPATIBILITY + mtx->recursive = false; +#endif + __mem_fence_release(); +} + +void recursive_mutex_init(recursive_mutex_t *mtx) { + lock_init(&mtx->core, next_striped_spin_lock_num()); + mtx->owner = LOCK_INVALID_OWNER_ID; + mtx->enter_count = 0; +#if PICO_MUTEX_ENABLE_SDK120_COMPATIBILITY + mtx->recursive = true; +#endif + __mem_fence_release(); +} + +void __time_critical_func(mutex_enter_blocking)(mutex_t *mtx) { +#if PICO_MUTEX_ENABLE_SDK120_COMPATIBILITY + if (mtx->recursive) { + recursive_mutex_enter_blocking(mtx); + return; + } +#endif + lock_owner_id_t caller = lock_get_caller_owner_id(); + do { + uint32_t save = spin_lock_blocking(mtx->core.spin_lock); + if (!lock_is_owner_id_valid(mtx->owner)) { + mtx->owner = caller; + spin_unlock(mtx->core.spin_lock, save); + break; + } + lock_internal_spin_unlock_with_wait(&mtx->core, save); + } while (true); +} + +void __time_critical_func(recursive_mutex_enter_blocking)(recursive_mutex_t *mtx) { + lock_owner_id_t caller = lock_get_caller_owner_id(); + do { + uint32_t save = spin_lock_blocking(mtx->core.spin_lock); + if (mtx->owner == caller || !lock_is_owner_id_valid(mtx->owner)) { + mtx->owner = caller; + uint __unused total = ++mtx->enter_count; + spin_unlock(mtx->core.spin_lock, save); + assert(total); // check for overflow + return; + } else { + lock_internal_spin_unlock_with_wait(&mtx->core, save); + } + } while (true); +} + +bool __time_critical_func(mutex_try_enter)(mutex_t *mtx, uint32_t *owner_out) { +#if PICO_MUTEX_ENABLE_SDK120_COMPATIBILITY + if (mtx->recursive) { + return recursive_mutex_try_enter(mtx, owner_out); + } +#endif + bool entered; + uint32_t save = spin_lock_blocking(mtx->core.spin_lock); + if (!lock_is_owner_id_valid(mtx->owner)) { + mtx->owner = lock_get_caller_owner_id(); + entered = true; + } else { + if (owner_out) *owner_out = (uint32_t) mtx->owner; + entered = false; + } + spin_unlock(mtx->core.spin_lock, save); + return entered; +} + +bool __time_critical_func(recursive_mutex_try_enter)(recursive_mutex_t *mtx, uint32_t *owner_out) { + bool entered; + lock_owner_id_t caller = lock_get_caller_owner_id(); + uint32_t save = spin_lock_blocking(mtx->core.spin_lock); + if (!lock_is_owner_id_valid(mtx->owner) || mtx->owner == caller) { + mtx->owner = caller; + uint __unused total = ++mtx->enter_count; + assert(total); // check for overflow + entered = true; + } else { + if (owner_out) *owner_out = (uint32_t) mtx->owner; + entered = false; + } + spin_unlock(mtx->core.spin_lock, save); + return entered; +} + +bool __time_critical_func(mutex_enter_timeout_ms)(mutex_t *mtx, uint32_t timeout_ms) { + return mutex_enter_block_until(mtx, make_timeout_time_ms(timeout_ms)); +} + +bool __time_critical_func(recursive_mutex_enter_timeout_ms)(recursive_mutex_t *mtx, uint32_t timeout_ms) { + return recursive_mutex_enter_block_until(mtx, make_timeout_time_ms(timeout_ms)); +} + +bool __time_critical_func(mutex_enter_timeout_us)(mutex_t *mtx, uint32_t timeout_us) { + return mutex_enter_block_until(mtx, make_timeout_time_us(timeout_us)); +} + +bool __time_critical_func(recursive_mutex_enter_timeout_us)(recursive_mutex_t *mtx, uint32_t timeout_us) { + return recursive_mutex_enter_block_until(mtx, make_timeout_time_us(timeout_us)); +} + +bool __time_critical_func(mutex_enter_block_until)(mutex_t *mtx, absolute_time_t until) { +#if PICO_MUTEX_ENABLE_SDK120_COMPATIBILITY + if (mtx->recursive) { + return recursive_mutex_enter_block_until(mtx, until); + } +#endif + assert(mtx->core.spin_lock); + lock_owner_id_t caller = lock_get_caller_owner_id(); + do { + uint32_t save = spin_lock_blocking(mtx->core.spin_lock); + if (!lock_is_owner_id_valid(mtx->owner)) { + mtx->owner = caller; + spin_unlock(mtx->core.spin_lock, save); + return true; + } else { + if (lock_internal_spin_unlock_with_best_effort_wait_or_timeout(&mtx->core, save, until)) { + // timed out + return false; + } + // not timed out; spin lock already unlocked, so loop again + } + } while (true); +} + +bool __time_critical_func(recursive_mutex_enter_block_until)(recursive_mutex_t *mtx, absolute_time_t until) { + assert(mtx->core.spin_lock); + lock_owner_id_t caller = lock_get_caller_owner_id(); + do { + uint32_t save = spin_lock_blocking(mtx->core.spin_lock); + if (!lock_is_owner_id_valid(mtx->owner) || mtx->owner == caller) { + mtx->owner = caller; + uint __unused total = ++mtx->enter_count; + spin_unlock(mtx->core.spin_lock, save); + assert(total); // check for overflow + return true; + } else { + if (lock_internal_spin_unlock_with_best_effort_wait_or_timeout(&mtx->core, save, until)) { + // timed out + return false; + } + // not timed out; spin lock already unlocked, so loop again + } + } while (true); +} + +void __time_critical_func(mutex_exit)(mutex_t *mtx) { +#if PICO_MUTEX_ENABLE_SDK120_COMPATIBILITY + if (mtx->recursive) { + recursive_mutex_exit(mtx); + return; + } +#endif + uint32_t save = spin_lock_blocking(mtx->core.spin_lock); + assert(lock_is_owner_id_valid(mtx->owner)); + mtx->owner = LOCK_INVALID_OWNER_ID; + lock_internal_spin_unlock_with_notify(&mtx->core, save); +} + +void __time_critical_func(recursive_mutex_exit)(recursive_mutex_t *mtx) { + uint32_t save = spin_lock_blocking(mtx->core.spin_lock); + assert(lock_is_owner_id_valid(mtx->owner)); + assert(mtx->enter_count); + if (!--mtx->enter_count) { + mtx->owner = LOCK_INVALID_OWNER_ID; + lock_internal_spin_unlock_with_notify(&mtx->core, save); + } else { + spin_unlock(mtx->core.spin_lock, save); + } +} \ No newline at end of file diff --git a/arkanoid/pico/mutex.h b/arkanoid/pico/mutex.h new file mode 100644 index 0000000..abb36d7 --- /dev/null +++ b/arkanoid/pico/mutex.h @@ -0,0 +1,297 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PLATFORM_MUTEX_H +#define _PLATFORM_MUTEX_H + +#include "lock_core.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file mutex.h + * \defgroup mutex mutex + * \ingroup pico_sync + * \brief Mutex API for non IRQ mutual exclusion between cores + * + * Mutexes are application level locks usually used protecting data structures that might be used by + * multiple threads of execution. Unlike critical sections, the mutex protected code is not necessarily + * required/expected to complete quickly, as no other sytem wide locks are held on account of an acquired mutex. + * + * When acquired, the mutex has an owner (see \ref lock_get_caller_owner_id) which with the plain SDK is just + * the acquiring core, but in an RTOS it could be a task, or an IRQ handler context. + * + * Two variants of mutex are provided; \ref mutex_t (and associated mutex_ functions) is a regular mutex that cannot + * be acquired recursively by the same owner (a deadlock will occur if you try). \ref recursive_mutex_t + * (and associated recursive_mutex_ functions) is a recursive mutex that can be recursively obtained by + * the same caller, at the expense of some more overhead when acquiring and releasing. + * + * It is generally a bad idea to call blocking mutex_ or recursive_mutex_ functions from within an IRQ handler. + * It is valid to call \ref mutex_try_enter or \ref recursive_mutex_try_enter from within an IRQ handler, if the operation + * that would be conducted under lock can be skipped if the mutex is locked (at least by the same owner). + * + * NOTE: For backwards compatibility with version 1.2.0 of the SDK, if the define + * PICO_MUTEX_ENABLE_SDK120_COMPATIBILITY is set to 1, then the the regular mutex_ functions + * may also be used for recursive mutexes. This flag will be removed in a future version of the SDK. + * + * See \ref critical_section.h for protecting access between multiple cores AND IRQ handlers + */ + +/*! \brief recursive mutex instance + * \ingroup mutex + */ +typedef struct __packed_aligned { + lock_core_t core; + lock_owner_id_t owner; //! owner id LOCK_INVALID_OWNER_ID for unowned + uint8_t enter_count; //! ownership count +#if PICO_MUTEX_ENABLE_SDK120_COMPATIBILITY + bool recursive; +#endif +} recursive_mutex_t; + +/*! \brief regular (non recursive) mutex instance + * \ingroup mutex + */ +#if !PICO_MUTEX_ENABLE_SDK120_COMPATIBILITY +typedef struct __packed_aligned mutex { + lock_core_t core; + lock_owner_id_t owner; //! owner id LOCK_INVALID_OWNER_ID for unowned +} mutex_t; +#else +typedef recursive_mutex_t mutex_t; // they are one and the same when backwards compatible with SDK1.2.0 +#endif + +/*! \brief Initialise a mutex structure + * \ingroup mutex + * + * \param mtx Pointer to mutex structure + */ +void mutex_init(mutex_t *mtx); + +/*! \brief Initialise a recursive mutex structure + * \ingroup mutex + * + * A recursive mutex may be entered in a nested fashion by the same owner + * + * \param mtx Pointer to recursive mutex structure + */ +void recursive_mutex_init(recursive_mutex_t *mtx); + +/*! \brief Take ownership of a mutex + * \ingroup mutex + * + * This function will block until the caller can be granted ownership of the mutex. + * On return the caller owns the mutex + * + * \param mtx Pointer to mutex structure + */ +void mutex_enter_blocking(mutex_t *mtx); + +/*! \brief Take ownership of a recursive mutex + * \ingroup mutex + * + * This function will block until the caller can be granted ownership of the mutex. + * On return the caller owns the mutex + * + * \param mtx Pointer to recursive mutex structure + */ +void recursive_mutex_enter_blocking(recursive_mutex_t *mtx); + +/*! \brief Attempt to take ownership of a mutex + * \ingroup mutex + * + * If the mutex wasn't owned, this will claim the mutex for the caller and return true. + * Otherwise (if the mutex was already owned) this will return false and the + * caller will NOT own the mutex. + * + * \param mtx Pointer to mutex structure + * \param owner_out If mutex was already owned, and this pointer is non-zero, it will be filled in with the owner id of the current owner of the mutex + * \return true if mutex now owned, false otherwise + */ +bool mutex_try_enter(mutex_t *mtx, uint32_t *owner_out); + +/*! \brief Attempt to take ownership of a recursive mutex + * \ingroup mutex + * + * If the mutex wasn't owned or was owned by the caller, this will claim the mutex and return true. + * Otherwise (if the mutex was already owned by another owner) this will return false and the + * caller will NOT own the mutex. + * + * \param mtx Pointer to recursive mutex structure + * \param owner_out If mutex was already owned by another owner, and this pointer is non-zero, + * it will be filled in with the owner id of the current owner of the mutex + * \return true if the recursive mutex (now) owned, false otherwise + */ +bool recursive_mutex_try_enter(recursive_mutex_t *mtx, uint32_t *owner_out); + +/*! \brief Wait for mutex with timeout + * \ingroup mutex + * + * Wait for up to the specific time to take ownership of the mutex. If the caller + * can be granted ownership of the mutex before the timeout expires, then true will be returned + * and the caller will own the mutex, otherwise false will be returned and the caller will NOT own the mutex. + * + * \param mtx Pointer to mutex structure + * \param timeout_ms The timeout in milliseconds. + * \return true if mutex now owned, false if timeout occurred before ownership could be granted + */ +bool mutex_enter_timeout_ms(mutex_t *mtx, uint32_t timeout_ms); + +/*! \brief Wait for recursive mutex with timeout + * \ingroup mutex + * + * Wait for up to the specific time to take ownership of the recursive mutex. If the caller + * already has ownership of the mutex or can be granted ownership of the mutex before the timeout expires, + * then true will be returned and the caller will own the mutex, otherwise false will be returned and the caller + * will NOT own the mutex. + * + * \param mtx Pointer to recursive mutex structure + * \param timeout_ms The timeout in milliseconds. + * \return true if the recursive mutex (now) owned, false if timeout occurred before ownership could be granted + */ +bool recursive_mutex_enter_timeout_ms(recursive_mutex_t *mtx, uint32_t timeout_ms); + +/*! \brief Wait for mutex with timeout + * \ingroup mutex + * + * Wait for up to the specific time to take ownership of the mutex. If the caller + * can be granted ownership of the mutex before the timeout expires, then true will be returned + * and the caller will own the mutex, otherwise false will be returned and the caller + * will NOT own the mutex. + * + * \param mtx Pointer to mutex structure + * \param timeout_us The timeout in microseconds. + * \return true if mutex now owned, false if timeout occurred before ownership could be granted + */ +bool mutex_enter_timeout_us(mutex_t *mtx, uint32_t timeout_us); + +/*! \brief Wait for recursive mutex with timeout + * \ingroup mutex + * + * Wait for up to the specific time to take ownership of the recursive mutex. If the caller + * already has ownership of the mutex or can be granted ownership of the mutex before the timeout expires, + * then true will be returned and the caller will own the mutex, otherwise false will be returned and the caller + * will NOT own the mutex. + * + * \param mtx Pointer to mutex structure + * \param timeout_us The timeout in microseconds. + * \return true if the recursive mutex (now) owned, false if timeout occurred before ownership could be granted + */ +bool recursive_mutex_enter_timeout_us(recursive_mutex_t *mtx, uint32_t timeout_us); + +/*! \brief Wait for mutex until a specific time + * \ingroup mutex + * + * Wait until the specific time to take ownership of the mutex. If the caller + * can be granted ownership of the mutex before the timeout expires, then true will be returned + * and the caller will own the mutex, otherwise false will be returned and the caller + * will NOT own the mutex. + * + * \param mtx Pointer to mutex structure + * \param until The time after which to return if the caller cannot be granted ownership of the mutex + * \return true if mutex now owned, false if timeout occurred before ownership could be granted + */ +bool mutex_enter_block_until(mutex_t *mtx, absolute_time_t until); + +/*! \brief Wait for mutex until a specific time + * \ingroup mutex + * + * Wait until the specific time to take ownership of the mutex. If the caller + * already has ownership of the mutex or can be granted ownership of the mutex before the timeout expires, + * then true will be returned and the caller will own the mutex, otherwise false will be returned and the caller + * will NOT own the mutex. + * + * \param mtx Pointer to recursive mutex structure + * \param until The time after which to return if the caller cannot be granted ownership of the mutex + * \return true if the recursive mutex (now) owned, false if timeout occurred before ownership could be granted + */ +bool recursive_mutex_enter_block_until(recursive_mutex_t *mtx, absolute_time_t until); + +/*! \brief Release ownership of a mutex + * \ingroup mutex + * + * \param mtx Pointer to mutex structure + */ +void mutex_exit(mutex_t *mtx); + +/*! \brief Release ownership of a recursive mutex + * \ingroup mutex + * + * \param mtx Pointer to recursive mutex structure + */ +void recursive_mutex_exit(recursive_mutex_t *mtx); + +/*! \brief Test for mutex initialized state + * \ingroup mutex + * + * \param mtx Pointer to mutex structure + * \return true if the mutex is initialized, false otherwise + */ +static inline bool mutex_is_initialized(mutex_t *mtx) { + return mtx->core.spin_lock != 0; +} + +/*! \brief Test for recursive mutex initialized state + * \ingroup mutex + * + * \param mtx Pointer to recursive mutex structure + * \return true if the recursive mutex is initialized, false otherwise + */ +static inline bool recursive_mutex_is_initialized(recursive_mutex_t *mtx) { + return mtx->core.spin_lock != 0; +} + +/*! \brief Helper macro for static definition of mutexes + * \ingroup mutex + * + * A mutex defined as follows: + * + * ```c + * auto_init_mutex(my_mutex); + * ``` + * + * Is equivalent to doing + * + * ```c + * static mutex_t my_mutex; + * + * void my_init_function() { + * mutex_init(&my_mutex); + * } + * ``` + * + * But the initialization of the mutex is performed automatically during runtime initialization + */ +#define auto_init_mutex(name) static __attribute__((section(".mutex_array"))) mutex_t name + +/*! \brief Helper macro for static definition of recursive mutexes + * \ingroup mutex + * + * A recursive mutex defined as follows: + * + * ```c + * auto_init_recursive_mutex(my_recursive_mutex); + * ``` + * + * Is equivalent to doing + * + * ```c + * static recursive_mutex_t my_recursive_mutex; + * + * void my_init_function() { + * recursive_mutex_init(&my_recursive_mutex); + * } + * ``` + * + * But the initialization of the mutex is performed automatically during runtime initialization + */ +#define auto_init_recursive_mutex(name) static __attribute__((section(".mutex_array"))) recursive_mutex_t name = { .core.spin_lock = (spin_lock_t *)1 /* marker for runtime_init */ } + +#ifdef __cplusplus +} +#endif +#endif diff --git a/arkanoid/pico/pheap.c b/arkanoid/pico/pheap.c new file mode 100644 index 0000000..4528f50 --- /dev/null +++ b/arkanoid/pico/pheap.c @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <stdio.h> +#include <stdlib.h> +#include "pheap.h" + +pheap_t *ph_create(uint max_nodes, pheap_comparator comparator, void *user_data) { + invalid_params_if(PHEAP, !max_nodes || max_nodes >= (1u << (8 * sizeof(pheap_node_id_t)))); + pheap_t *heap = calloc(1, sizeof(pheap_t)); + heap->nodes = calloc(max_nodes, sizeof(pheap_node_t)); + ph_post_alloc_init(heap, max_nodes, comparator, user_data); + return heap; +} + +void ph_post_alloc_init(pheap_t *heap, uint max_nodes, pheap_comparator comparator, void *user_data) { + invalid_params_if(PHEAP, !max_nodes || max_nodes >= (1u << (8 * sizeof(pheap_node_id_t)))); + heap->max_nodes = (pheap_node_id_t) max_nodes; + heap->comparator = comparator; + heap->user_data = user_data; + ph_clear(heap); +} + +void ph_clear(pheap_t *heap) { + heap->root_id = 0; + heap->free_head_id = 1; + heap->free_tail_id = heap->max_nodes; + for(pheap_node_id_t i = 1; i < heap->max_nodes; i++) { + ph_get_node(heap, i)->sibling = (pheap_node_id_t)(i + 1); + } + ph_get_node(heap, heap->max_nodes)->sibling = 0; +} + +void ph_destroy(pheap_t *heap) { + free(heap->nodes); + free(heap); +} + +pheap_node_id_t ph_merge_two_pass(pheap_t *heap, pheap_node_id_t id) { + if (!id || !ph_get_node(heap, id)->sibling) { + return id; + } else { + pheap_node_id_t a, b, new_node; + a = id; + b = ph_get_node(heap, id)->sibling; + new_node = ph_get_node(heap, b)->sibling; + ph_get_node(heap, a)->sibling = ph_get_node(heap, b)->sibling = 0; + return ph_merge_nodes(heap, ph_merge_nodes(heap, a, b), ph_merge_two_pass(heap, new_node)); + } +} + +static pheap_node_id_t ph_remove_any_head(pheap_t *heap, pheap_node_id_t root_id, bool free) { + assert(root_id); +// printf("Removing head %d (parent %d sibling %d)\n", root_id, ph_get_node(heap, root_id)->parent, ph_get_node(heap, root_id)->sibling); + assert(!ph_get_node(heap, root_id)->sibling); + assert(!ph_get_node(heap, root_id)->parent); + pheap_node_id_t new_root_id = ph_merge_two_pass(heap, ph_get_node(heap, root_id)->child); + if (free) { + if (heap->free_tail_id) { + ph_get_node(heap, heap->free_tail_id)->sibling = root_id; + } + heap->free_tail_id = root_id; + } + if (new_root_id) ph_get_node(heap, new_root_id)->parent = 0; + ph_get_node(heap, root_id)->sibling = 0; + return new_root_id; +} + +pheap_node_id_t ph_remove_head(pheap_t *heap, bool free) { + pheap_node_id_t old_root_id = ph_peek_head(heap); + heap->root_id = ph_remove_any_head(heap, old_root_id, free); + return old_root_id; +} + +bool ph_remove_and_free_node(pheap_t *heap, pheap_node_id_t id) { + // 1) trivial cases + if (!id) return false; + if (id == heap->root_id) { + ph_remove_and_free_head(heap); + return true; + } + // 2) unlink the node from the tree + pheap_node_t *node = ph_get_node(heap, id); + if (!node->parent) return false; // not in tree + pheap_node_t *parent = ph_get_node(heap, node->parent); + if (parent->child == id) { + parent->child = node->sibling; + } else { + pheap_node_id_t prev_sibling_id = parent->child; + bool __unused found = false; + do { + pheap_node_t *prev_sibling = ph_get_node(heap, prev_sibling_id); + if (prev_sibling->sibling == id) { + prev_sibling->sibling = node->sibling; + found = true; + break; + } + prev_sibling_id = prev_sibling->sibling; + } while (prev_sibling_id); + assert(found); + } + node->sibling = node->parent = 0; +// ph_dump(heap, NULL, NULL); + // 3) remove it from the head of its own subtree + pheap_node_id_t new_sub_tree = ph_remove_any_head(heap, id, true); + assert(new_sub_tree != heap->root_id); + heap->root_id = ph_merge_nodes(heap, heap->root_id, new_sub_tree); + return true; +} + +static uint ph_dump_node(pheap_t *heap, pheap_node_id_t id, void (*dump_key)(pheap_node_id_t, void *), void *user_data, uint indent) { + uint count = 0; + if (id) { + count++; + for (uint i = 0; i < indent * 2; i++) { + putchar(' '); + } + pheap_node_t *node = ph_get_node(heap, id); + printf("%d (c=%d s=%d p=%d) ", id, node->child, node->sibling, node->parent); + if (dump_key) dump_key(id, user_data); + printf("\n"); + count += ph_dump_node(heap, node->child, dump_key, user_data, indent + 1); + count += ph_dump_node(heap, node->sibling, dump_key, user_data, indent); + } + return count; +} + +void ph_dump(pheap_t *heap, void (*dump_key)(pheap_node_id_t, void *), void *user_data) { + uint count = ph_dump_node(heap, heap->root_id, dump_key, user_data, 0); + printf("node_count %d\n", count); +} \ No newline at end of file diff --git a/arkanoid/pico/pheap.h b/arkanoid/pico/pheap.h new file mode 100644 index 0000000..25351b4 --- /dev/null +++ b/arkanoid/pico/pheap.h @@ -0,0 +1,291 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_UTIL_PHEAP_H +#define _PICO_UTIL_PHEAP_H + +#include "pico.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_PHEAP, Enable/disable assertions in the pheap module, type=bool, default=0, group=pico_util +#ifndef PARAM_ASSERTIONS_ENABLED_PHEAP +#define PARAM_ASSERTIONS_ENABLED_PHEAP 0 +#endif + +/** + * \file pheap.h + * \defgroup util_pheap pheap + * Pairing Heap Implementation + * \ingroup pico_util + * + * pheap defines a simple pairing heap. the implementation simply tracks array indexes, it is up to + * the user to provide storage for heap entries and a comparison function. + * + * NOTE: this class is not safe for concurrent usage. It should be externally protected. Furthermore + * if used concurrently, the caller needs to protect around their use of the returned id. + * for example, ph_remove_and_free_head returns the id of an element that is no longer in the heap. + * + * The user can still use this to look at the data in their companion array, however obviously further operations + * on the heap may cause them to overwrite that data as the id may be reused on subsequent operations + * + */ +// PICO_CONFIG: PICO_PHEAP_MAX_ENTRIES, Maximum number of entries in the pheap, min=1, max=65534, default=255, group=pico_util +#ifndef PICO_PHEAP_MAX_ENTRIES +#define PICO_PHEAP_MAX_ENTRIES 255 +#endif + +// public heap_node ids are numbered from 1 (0 means none) +#if PICO_PHEAP_MAX_ENTRIES < 256 +typedef uint8_t pheap_node_id_t; +#elif PICO_PHEAP_MAX_ENTRIES < 65535 +typedef uint16_t pheap_node_id_t; +#else +#error invalid PICO_PHEAP_MAX_ENTRIES +#endif + +typedef struct pheap_node { + pheap_node_id_t child, sibling, parent; +} pheap_node_t; + +/** + * A user comparator function for nodes in a pairing heap. + * + * \return true if a < b in natural order. Note this relative ordering must be stable from call to call. + */ +typedef bool (*pheap_comparator)(void *user_data, pheap_node_id_t a, pheap_node_id_t b); + +typedef struct pheap { + pheap_node_t *nodes; + pheap_comparator comparator; + void *user_data; + pheap_node_id_t max_nodes; + pheap_node_id_t root_id; + // we remove from head and add to tail to stop reusing the same ids + pheap_node_id_t free_head_id; + pheap_node_id_t free_tail_id; +} pheap_t; + +/** + * Create a pairing heap, which effectively maintains an efficient sorted ordering + * of nodes. The heap itself stores no user per-node state, it is expected + * that the user maintains a companion array. A comparator function must + * be provided so that the heap implementation can determine the relative ordering of nodes + * + * \param max_nodes the maximum number of nodes that may be in the heap (this is bounded by + * PICO_PHEAP_MAX_ENTRIES which defaults to 255 to be able to store indexes + * in a single byte). + * \param comparator the node comparison function + * \param user_data a user data pointer associated with the heap that is provided in callbacks + * \return a newly allocated and initialized heap + */ +pheap_t *ph_create(uint max_nodes, pheap_comparator comparator, void *user_data); + +/** + * Removes all nodes from the pairing heap + * \param heap the heap + */ +void ph_clear(pheap_t *heap); + +/** + * De-allocates a pairing heap + * + * Note this method must *ONLY* be called on heaps created by ph_create() + * \param heap the heap + */ +void ph_destroy(pheap_t *heap); + +// internal method +static inline pheap_node_t *ph_get_node(pheap_t *heap, pheap_node_id_t id) { + assert(id && id <= heap->max_nodes); + return heap->nodes + id - 1; +} + +// internal method +static void ph_add_child_node(pheap_t *heap, pheap_node_id_t parent_id, pheap_node_id_t child_id) { + pheap_node_t *n = ph_get_node(heap, parent_id); + assert(parent_id); + assert(child_id); + assert(parent_id != child_id); + pheap_node_t *c = ph_get_node(heap, child_id); + c->parent = parent_id; + if (!n->child) { + n->child = child_id; + } else { + c->sibling = n->child; + n->child = child_id; + } +} + +// internal method +static pheap_node_id_t ph_merge_nodes(pheap_t *heap, pheap_node_id_t a, pheap_node_id_t b) { + if (!a) return b; + if (!b) return a; + if (heap->comparator(heap->user_data, a, b)) { + ph_add_child_node(heap, a, b); + return a; + } else { + ph_add_child_node(heap, b, a); + return b; + } +} + +/** + * Allocate a new node from the unused space in the heap + * + * \param heap the heap + * \return an identifier for the node, or 0 if the heap is full + */ +static inline pheap_node_id_t ph_new_node(pheap_t *heap) { + if (!heap->free_head_id) return 0; + pheap_node_id_t id = heap->free_head_id; + pheap_node_t *hn = ph_get_node(heap, id); + heap->free_head_id = hn->sibling; + if (!heap->free_head_id) heap->free_tail_id = 0; + hn->child = hn->sibling = hn->parent = 0; + return id; +} + +/** + * Inserts a node into the heap. + * + * This method inserts a node (previously allocated by ph_new_node()) + * into the heap, determining the correct order by calling + * the heap's comparator + * + * \param heap the heap + * \param id the id of the node to insert + * \return the id of the new head of the pairing heap (i.e. node that compares first) + */ +static inline pheap_node_id_t ph_insert_node(pheap_t *heap, pheap_node_id_t id) { + assert(id); + pheap_node_t *hn = ph_get_node(heap, id); + hn->child = hn->sibling = hn->parent = 0; + heap->root_id = ph_merge_nodes(heap, heap->root_id, id); + return heap->root_id; +} + +/** + * Returns the head node in the heap, i.e. the node + * which compares first, but without removing it from the heap. + * + * \param heap the heap + * \return the current head node id + */ +static inline pheap_node_id_t ph_peek_head(pheap_t *heap) { + return heap->root_id; +} + +/** + * Remove the head node from the pairing heap. This head node is + * the node which compares first in the logical ordering provided + * by the comparator. + * + * Note that in the case of free == true, the returned id is no longer + * allocated and may be re-used by future node allocations, so the caller + * should retrieve any per node state from the companion array before modifying + * the heap further. + * + * @param heap the heap + * @param free true if the id is also to be freed; false if not - useful if the caller + * may wish to re-insert an item with the same id) + * @return the old head node id. + */ +pheap_node_id_t ph_remove_head(pheap_t *heap, bool free); + +/** + * Remove the head node from the pairing heap. This head node is + * the node which compares first in the logical ordering provided + * by the comparator. + * + * Note that the returned id will be freed, and thus may be re-used by future node allocations, + * so the caller should retrieve any per node state from the companion array before modifying + * the heap further. + * + * @param heap the heap + * @return the old head node id. + */ +static inline pheap_node_id_t ph_remove_and_free_head(pheap_t *heap) { + return ph_remove_head(heap, true); +} + +/** + * Remove and free an arbitrary node from the pairing heap. This is a more + * costly operation than removing the head via ph_remove_and_free_head() + * + * @param heap the heap + * @param id the id of the node to free + * @return true if the the node was in the heap, false otherwise + */ +bool ph_remove_and_free_node(pheap_t *heap, pheap_node_id_t id); + +/** + * Determine if the heap contains a given node. Note containment refers + * to whether the node is inserted (ph_insert_node()) vs allocated (ph_new_node()) + * + * @param heap the heap + * @param id the id of the node + * @return true if the heap contains a node with the given id, false otherwise. + */ +static inline bool ph_contains_node(pheap_t *heap, pheap_node_id_t id) { + return id == heap->root_id || ph_get_node(heap, id)->parent; +} + + +/** + * Free a node that is not currently in the heap, but has been allocated + * + * @param heap the heap + * @param id the id of the node + */ +static inline void ph_free_node(pheap_t *heap, pheap_node_id_t id) { + assert(id && !ph_contains_node(heap, id)); + if (heap->free_tail_id) { + ph_get_node(heap, heap->free_tail_id)->sibling = id; + } + heap->free_tail_id = id; +} + +/** + * Print a representation of the heap for debugging + * + * @param heap the heap + * @param dump_key a method to print a node value + * @param user_data the user data to pass to the dump_key method + */ +void ph_dump(pheap_t *heap, void (*dump_key)(pheap_node_id_t id, void *user_data), void *user_data); + +/** + * Initialize a statically allocated heap (ph_create() using the C heap). + * The heap member `nodes` must be allocated of size max_nodes. + * + * @param heap the heap + * @param max_nodes the max number of nodes in the heap (matching the size of the heap's nodes array) + * @param comparator the comparator for the heap + * @param user_data the user data for the heap. + */ +void ph_post_alloc_init(pheap_t *heap, uint max_nodes, pheap_comparator comparator, void *user_data); + +/** + * Define a statically allocated pairing heap. This must be initialized + * by ph_post_alloc_init + */ +#define PHEAP_DEFINE_STATIC(name, _max_nodes) \ + static_assert(_max_nodes && _max_nodes < (1u << (8 * sizeof(pheap_node_id_t))), ""); \ + static pheap_node_t name ## _nodes[_max_nodes]; \ + static pheap_t name = { \ + .nodes = name ## _nodes, \ + .max_nodes = _max_nodes \ + }; + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/pico.h b/arkanoid/pico/pico.h new file mode 100644 index 0000000..7b62222 --- /dev/null +++ b/arkanoid/pico/pico.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef PICO_H_ +#define PICO_H_ + +/** \file pico.h + * \defgroup pico_base pico_base + * + * Core types and macros for the Raspberry Pi Pico SDK. This header is intended to be included by all source code + * as it includes configuration headers and overrides in the correct order + * + * This header may be included by assembly code +*/ + +#include "junk/types.h" +#include "junk/version.h" +#include "junk/config.h" +#include "platform.h" +#include "junk/error.h" + +#endif diff --git a/arkanoid/pico/pico4ml/screen.c b/arkanoid/pico/pico4ml/screen.c new file mode 100644 index 0000000..e57ed7a --- /dev/null +++ b/arkanoid/pico/pico4ml/screen.c @@ -0,0 +1,270 @@ +#include "screen.h" +#define DELAY 0x80 + + +int EPD_RST_PIN = 7; +int EPD_DC_PIN = 9; +int EPD_CS_PIN = 13; +int EPD_CLK_PIN = 10; +int EPD_MOSI_PIN = 11; + +// based on Adafruit ST7735 library for Arduino +static const uint8_t + init_cmds1[] = { // Init for 7735R, part 1 (red or green tab) + 15, // 15 commands in list: + ST7735_SWRESET, DELAY, // 1: Software reset, 0 args, w/delay + 150, // 150 ms delay + ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, 0 args, w/delay + 255, // 500 ms delay + ST7735_FRMCTR1, 3 , // 3: Frame rate ctrl - normal mode, 3 args: + 0x01, 0x2C, 0x2D, // Rate = fosc/(1x2+40) * (LINE+2C+2D) + ST7735_FRMCTR2, 3 , // 4: Frame rate control - idle mode, 3 args: + 0x01, 0x2C, 0x2D, // Rate = fosc/(1x2+40) * (LINE+2C+2D) + ST7735_FRMCTR3, 6 , // 5: Frame rate ctrl - partial mode, 6 args: + 0x01, 0x2C, 0x2D, // Dot inversion mode + 0x01, 0x2C, 0x2D, // Line inversion mode + ST7735_INVCTR , 1 , // 6: Display inversion ctrl, 1 arg, no delay: + 0x07, // No inversion + ST7735_PWCTR1 , 3 , // 7: Power control, 3 args, no delay: + 0xA2, + 0x02, // -4.6V + 0x84, // AUTO mode + ST7735_PWCTR2 , 1 , // 8: Power control, 1 arg, no delay: + 0xC5, // VGH25 = 2.4C VGSEL = -10 VGH = 3 * AVDD + ST7735_PWCTR3 , 2 , // 9: Power control, 2 args, no delay: + 0x0A, // Opamp current small + 0x00, // Boost frequency + ST7735_PWCTR4 , 2 , // 10: Power control, 2 args, no delay: + 0x8A, // BCLK/2, Opamp current small & Medium low + 0x2A, + ST7735_PWCTR5 , 2 , // 11: Power control, 2 args, no delay: + 0x8A, 0xEE, + ST7735_VMCTR1 , 1 , // 12: Power control, 1 arg, no delay: + 0x0E, + ST7735_INVOFF , 0 , // 13: Don't invert display, no args, no delay + ST7735_MADCTL , 1 , // 14: Memory access control (directions), 1 arg: + ST7735_ROTATION, // row addr/col addr, bottom to top refresh + ST7735_COLMOD , 1 , // 15: set color mode, 1 arg, no delay: + 0x05 }, // 16-bit color + +#if (defined(ST7735_IS_128X128) || defined(ST7735_IS_160X128)) + init_cmds2[] = { // Init for 7735R, part 2 (1.44" display) + 2, // 2 commands in list: + ST7735_CASET , 4 , // 1: Column addr set, 4 args, no delay: + 0x00, 0x00, // XSTART = 0 + 0x00, 0x7F, // XEND = 127 + ST7735_RASET , 4 , // 2: Row addr set, 4 args, no delay: + 0x00, 0x00, // XSTART = 0 + 0x00, 0x7F }, // XEND = 127 +#endif // ST7735_IS_128X128 + +#ifdef ST7735_IS_160X80 + init_cmds2[] = { // Init for 7735S, part 2 (160x80 display) + 3, // 3 commands in list: + ST7735_CASET , 4 , // 1: Column addr set, 4 args, no delay: + 0x00, 0x00, // XSTART = 0 + 0x00, 0x4F, // XEND = 79 + ST7735_RASET , 4 , // 2: Row addr set, 4 args, no delay: + 0x00, 0x00, // XSTART = 0 + 0x00, 0x9F , // XEND = 159 + }, // 3: Invert colors +#endif + + init_cmds3[] = { // Init for 7735R, part 3 (red or green tab) + 4, // 4 commands in list: + ST7735_GMCTRP1, 16 , // 1: Magical unicorn dust, 16 args, no delay: + 0x02, 0x1c, 0x07, 0x12, + 0x37, 0x32, 0x29, 0x2d, + 0x29, 0x25, 0x2B, 0x39, + 0x00, 0x01, 0x03, 0x10, + ST7735_GMCTRN1, 16 , // 2: Sparkles and rainbows, 16 args, no delay: + 0x03, 0x1d, 0x07, 0x06, + 0x2E, 0x2C, 0x29, 0x2D, + 0x2E, 0x2E, 0x37, 0x3F, + 0x00, 0x00, 0x02, 0x10, + ST7735_NORON , DELAY, // 3: Normal display on, no args, w/delay + 10, // 10 ms delay + ST7735_DISPON , DELAY, // 4: Main screen turn on, no args w/delay + 100 }; // 100 ms delay + +static void ST7735_Select() { + // HAL_GPIO_WritePin(ST7735_CS_GPIO_Port, ST7735_CS_Pin, GPIO_PIN_RESET); + gpio_put(EPD_CS_PIN, 0); +} + +void ST7735_Unselect() { + //HAL_GPIO_WritePin(ST7735_CS_GPIO_Port, ST7735_CS_Pin, GPIO_PIN_SET); + gpio_put(EPD_CS_PIN, 1); +} + +static void ST7735_Reset() { + gpio_put(EPD_RST_PIN, 0); + sleep_ms(5); + gpio_put(EPD_RST_PIN, 1); +} + +static void ST7735_WriteCommand(uint8_t cmd) { + //HAL_GPIO_WritePin(ST7735_DC_GPIO_Port, ST7735_DC_Pin, GPIO_PIN_RESET); + gpio_put(EPD_DC_PIN, 0); + spi_write_blocking(spi1, &cmd, sizeof(cmd)); + // HAL_SPI_Transmit(&ST7735_spi1, &cmd, sizeof(cmd), HAL_MAX_DELAY); +} + +static void ST7735_WriteData(uint8_t* buff, size_t buff_size) { + //HAL_GPIO_WritePin(ST7735_DC_GPIO_Port, ST7735_DC_Pin, GPIO_PIN_SET); + gpio_put(EPD_DC_PIN, 1); + spi_write_blocking(spi1, buff, buff_size); + // HAL_SPI_Transmit(&ST7735_spi1, buff, buff_size, HAL_MAX_DELAY); +} + +static void ST7735_ExecuteCommandList(const uint8_t *addr) { + uint8_t numCommands, numArgs; + uint16_t ms; + + numCommands = *addr++; + while(numCommands--) { + uint8_t cmd = *addr++; + ST7735_WriteCommand(cmd); + + numArgs = *addr++; + // If high bit set, delay follows args + ms = numArgs & DELAY; + numArgs &= ~DELAY; + if(numArgs) { + ST7735_WriteData((uint8_t*)addr, numArgs); + addr += numArgs; + } + + if(ms) { + ms = *addr++; + if(ms == 255) ms = 500; + sleep_ms(ms); + } + } +} + +static void ST7735_SetAddressWindow(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1) { + // column address set + ST7735_WriteCommand(ST7735_CASET); + uint8_t data[] = { 0x00, x0 + ST7735_XSTART, 0x00, x1 + ST7735_XSTART }; + ST7735_WriteData(data, sizeof(data)); + + // row address set + ST7735_WriteCommand(ST7735_RASET); + data[1] = y0 + ST7735_YSTART; + data[3] = y1 + ST7735_YSTART; + ST7735_WriteData(data, sizeof(data)); + + // write to RAM + ST7735_WriteCommand(ST7735_RAMWR); +} + +void ST7735_Init() { + spi_init(spi1, 12000 * 1000); + gpio_set_function(EPD_CLK_PIN, GPIO_FUNC_SPI); + gpio_set_function(EPD_MOSI_PIN, GPIO_FUNC_SPI); + + // GPIO Config + gpio_init(EPD_RST_PIN); + gpio_set_dir(EPD_RST_PIN, GPIO_OUT); + gpio_init(EPD_DC_PIN); + gpio_set_dir(EPD_DC_PIN, GPIO_OUT); + gpio_init(EPD_CS_PIN); + gpio_set_dir(EPD_CS_PIN, GPIO_OUT); + + gpio_put(EPD_CS_PIN, 1); + + + ST7735_Select(); + ST7735_Reset(); + ST7735_ExecuteCommandList(init_cmds1); + ST7735_ExecuteCommandList(init_cmds2); + ST7735_ExecuteCommandList(init_cmds3); + ST7735_Unselect(); +} + +void ST7735_DrawPixel(uint16_t x, uint16_t y, uint16_t color) { + if((x >= ST7735_WIDTH) || (y >= ST7735_HEIGHT)) + return; + + ST7735_Select(); + + ST7735_SetAddressWindow(x, y, x+1, y+1); + uint8_t data[] = { color >> 8, color & 0xFF }; + ST7735_WriteData(data, sizeof(data)); + + ST7735_Unselect(); +} + +void ST7735_FillRectangle(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color) { + // clipping + if((x >= ST7735_WIDTH) || (y >= ST7735_HEIGHT)) return; + if((x + w - 1) >= ST7735_WIDTH) w = ST7735_WIDTH - x; + if((y + h - 1) >= ST7735_HEIGHT) h = ST7735_HEIGHT - y; + + ST7735_Select(); + ST7735_SetAddressWindow(x, y, x+w-1, y+h-1); + + uint8_t data[] = { color >> 8, color & 0xFF }; + //HAL_GPIO_WritePin(ST7735_DC_GPIO_Port, ST7735_DC_Pin, GPIO_PIN_SET); + + gpio_put(EPD_DC_PIN, 1); + for(y = h; y > 0; y--) { + for(x = w; x > 0; x--) { + // HAL_SPI_Transmit(&ST7735_spi1, data, sizeof(data), HAL_MAX_DELAY); + spi_write_blocking(spi1, data, sizeof(data)); + } + } + + ST7735_Unselect(); +} + +void ST7735_FillScreen(uint16_t color) { + ST7735_FillRectangle(0, 0, ST7735_WIDTH, ST7735_HEIGHT, color); +} + +void ST7735_DrawImage(uint16_t x, uint16_t y, uint16_t w, uint16_t h, const uint8_t* data) { + ST7735_Select(); + ST7735_SetAddressWindow(x, y, x+w-1, y+h-1); + ST7735_WriteData((uint8_t*)data, sizeof(uint16_t)*w*h); + ST7735_Unselect(); +} + +void ST7735_InvertColors(bool invert) { + ST7735_Select(); + ST7735_WriteCommand(invert ? ST7735_INVON : ST7735_INVOFF); + ST7735_Unselect(); +} + +void ST7735_WriteString(uint16_t x, uint16_t y, const uint8_t *font, const char* str, uint16_t color, uint16_t bgcolor) { + ST7735_Select(); + + while(*str) { + uint32_t fx, fy, b; + + // We are now trying to draw a transposed font the correct way round. Suffer. + ST7735_SetAddressWindow(x, y, x+3, y+5); + + for(fy = 0; fy < 6; fy++) { + for(fx = 0; fx < 4; fx++) { + // First line of the font. + int font_start_offset = ((*str) - 32); + b = font[font_start_offset + ((3 - fx) * 95)]; // Add 95 for each x-offset + + // Shift by y-value + if((b << fy) & 0b100000) { + uint8_t data[] = { color >> 8, color & 0xFF }; + ST7735_WriteData(data, sizeof(data)); + } else { + uint8_t data[] = { bgcolor >> 8, bgcolor & 0xFF }; + ST7735_WriteData(data, sizeof(data)); + } + } + } + + x += 5; + str++; + } + + ST7735_Unselect(); +} \ No newline at end of file diff --git a/arkanoid/pico/pico4ml/screen.h b/arkanoid/pico/pico4ml/screen.h new file mode 100644 index 0000000..849a9cd --- /dev/null +++ b/arkanoid/pico/pico4ml/screen.h @@ -0,0 +1,136 @@ +#ifndef __ST7735_H__ +#define __ST7735_H__ + +#include <stdbool.h> +#include "../stdlib.h" +#include "../hardware/spi.h" + +extern int EPD_RST_PIN; +extern int EPD_DC_PIN; +extern int EPD_CS_PIN; +extern int EPD_CLK_PIN; +extern int EPD_MOSI_PIN; + +#define ST7735_MADCTL_MY 0x80 +#define ST7735_MADCTL_MX 0x40 +#define ST7735_MADCTL_MV 0x20 +#define ST7735_MADCTL_ML 0x10 +#define ST7735_MADCTL_RGB 0x00 +#define ST7735_MADCTL_BGR 0x08 +#define ST7735_MADCTL_MH 0x04 +#define ST7735_RES_Pin GPIO_PIN_7 +#define ST7735_RES_GPIO_Port GPIOC +#define ST7735_CS_Pin GPIO_PIN_6 +#define ST7735_CS_GPIO_Port GPIOB +#define ST7735_DC_Pin GPIO_PIN_9 +#define ST7735_DC_GPIO_Port GPIOA + +// mini 160x80 display (it's unlikely you want the default orientation) + +#define ST7735_IS_160X80 1 +#define ST7735_XSTART 24 +#define ST7735_YSTART 0 +#define ST7735_WIDTH 80 +#define ST7735_HEIGHT 160 +//#define ST7735_ROTATION (ST7735_MADCTL_MX | ST7735_MADCTL_MY | ST7735_MADCTL_BGR) +#define ST7735_ROTATION ( ST7735_MADCTL_BGR) + +// mini 160x80, rotate left +/* +#define ST7735_IS_160X80 1 +#define ST7735_XSTART 1 +#define ST7735_YSTART 26 +#define ST7735_WIDTH 160 +#define ST7735_HEIGHT 80 +#define ST7735_ROTATION (ST7735_MADCTL_MX | ST7735_MADCTL_MV | ST7735_MADCTL_BGR) +*/ + +// mini 160x80, rotate right +/* +#define ST7735_IS_160X80 1 +#define ST7735_XSTART 0 +#define ST7735_YSTART 24 +#define ST7735_WIDTH 160 +#define ST7735_HEIGHT 80 +#define ST7735_ROTATION (ST7735_MADCTL_MY | ST7735_MADCTL_MV | ST7735_MADCTL_BGR) +*/ +/****************************/ + +#define ST7735_NOP 0x00 +#define ST7735_SWRESET 0x01 +#define ST7735_RDDID 0x04 +#define ST7735_RDDST 0x09 + +#define ST7735_SLPIN 0x10 +#define ST7735_SLPOUT 0x11 +#define ST7735_PTLON 0x12 +#define ST7735_NORON 0x13 + +#define ST7735_INVOFF 0x20 +#define ST7735_INVON 0x21 +#define ST7735_DISPOFF 0x28 +#define ST7735_DISPON 0x29 +#define ST7735_CASET 0x2A +#define ST7735_RASET 0x2B +#define ST7735_RAMWR 0x2C +#define ST7735_RAMRD 0x2E + +#define ST7735_PTLAR 0x30 +#define ST7735_COLMOD 0x3A +#define ST7735_MADCTL 0x36 + +#define ST7735_FRMCTR1 0xB1 +#define ST7735_FRMCTR2 0xB2 +#define ST7735_FRMCTR3 0xB3 +#define ST7735_INVCTR 0xB4 +#define ST7735_DISSET5 0xB6 + +#define ST7735_PWCTR1 0xC0 +#define ST7735_PWCTR2 0xC1 +#define ST7735_PWCTR3 0xC2 +#define ST7735_PWCTR4 0xC3 +#define ST7735_PWCTR5 0xC4 +#define ST7735_VMCTR1 0xC5 + +#define ST7735_RDID1 0xDA +#define ST7735_RDID2 0xDB +#define ST7735_RDID3 0xDC +#define ST7735_RDID4 0xDD + +#define ST7735_PWCTR6 0xFC + +#define ST7735_GMCTRP1 0xE0 +#define ST7735_GMCTRN1 0xE1 + +// Color definitions +#define ST7735_BLACK 0x0000 +#define ST7735_BLUE 0x001F +#define ST7735_RED 0xF800 +#define ST7735_GREEN 0x07E0 +#define ST7735_CYAN 0x07FF +#define ST7735_MAGENTA 0xF81F +#define ST7735_YELLOW 0xFFE0 +#define ST7735_WHITE 0xFFFF +#define ST7735_COLOR565(r, g, b) (((r & 0xF8) << 8) | ((g & 0xFC) << 3) | ((b & 0xF8) >> 3)) + +#ifdef __cplusplus +extern "C" { +#endif +// call before initializing any SPI devices +void ST7735_Unselect(); + +void ST7735_Init(void); +void ST7735_DrawPixel(uint16_t x, uint16_t y, uint16_t color); +void ST7735_FillRectangle(uint16_t x, uint16_t y, uint16_t w, uint16_t h, + uint16_t color); +void ST7735_FillScreen(uint16_t color); +void ST7735_DrawImage(uint16_t x, uint16_t y, uint16_t w, uint16_t h, + const uint8_t *data); +void ST7735_InvertColors(bool invert); +void ST7735_WriteString(uint16_t x, uint16_t y, const uint8_t *font, const char* str, uint16_t color, uint16_t bgcolor); + +#ifdef __cplusplus +} +#endif + +#endif // __ST7735_H__ diff --git a/arkanoid/pico/pico_bootsel_via_double_reset.c b/arkanoid/pico/pico_bootsel_via_double_reset.c new file mode 100644 index 0000000..7321f2d --- /dev/null +++ b/arkanoid/pico/pico_bootsel_via_double_reset.c @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "pico.h" +#include "time.h" +#include "bootrom.h" +#include "binary_info.h" + +// PICO_CONFIG: PICO_BOOTSEL_VIA_DOUBLE_RESET_TIMEOUT_MS, Window of opportunity for a second press of a reset button to enter BOOTSEL mode (milliseconds), type=int, default=200, group=pico_bootsel_via_double_reset +#ifndef PICO_BOOTSEL_VIA_DOUBLE_RESET_TIMEOUT_MS +#define PICO_BOOTSEL_VIA_DOUBLE_RESET_TIMEOUT_MS 200 +#endif + +// PICO_CONFIG: PICO_BOOTSEL_VIA_DOUBLE_RESET_ACTIVITY_LED, Optionally define a pin to use as bootloader activity LED when BOOTSEL mode is entered via reset double tap, type=int, min=0, max=29, group=pico_bootsel_via_double_reset + +// PICO_CONFIG: PICO_BOOTSEL_VIA_DOUBLE_RESET_INTERFACE_DISABLE_MASK, Optionally disable either the mass storage interface (bit 0) or the PICOBOOT interface (bit 1) when entering BOOTSEL mode via double reset, type=int, min=0, max=3, default=0, group=pico_bootsel_via_double_reset +#ifndef PICO_BOOTSEL_VIA_DOUBLE_RESET_INTERFACE_DISABLE_MASK +#define PICO_BOOTSEL_VIA_DOUBLE_RESET_INTERFACE_DISABLE_MASK 0u +#endif + +/** \defgroup pico_bootsel_via_double_reset pico_bootsel_via_double_reset + * + * When the 'pico_bootsel_via_double_reset' library is linked, a function is + * injected before main() which will detect when the system has been reset + * twice in quick succession, and enter the USB ROM bootloader (BOOTSEL mode) + * when this happens. This allows a double tap of a reset button on a + * development board to be used to enter the ROM bootloader, provided this + * library is always linked. + */ + +#if !PICO_NO_BI_BOOTSEL_VIA_DOUBLE_RESET +bi_decl(bi_program_feature("double reset -> BOOTSEL")); +#endif + +// Doesn't make any sense for a RAM only binary +#if !PICO_NO_FLASH +static const uint32_t magic_token[] = { + 0xf01681de, 0xbd729b29, 0xd359be7a, +}; + +static uint32_t __uninitialized_ram(magic_location)[count_of(magic_token)]; + +/* Check for double reset and enter BOOTSEL mode if detected + * + * This function is registered to run automatically before main(). The + * algorithm is: + * + * 1. Check for magic token in memory; enter BOOTSEL mode if found. + * 2. Initialise that memory with that magic token. + * 3. Do nothing for a short while (few hundred ms). + * 4. Clear the magic token. + * 5. Continue with normal boot. + * + * Resetting the device twice quickly will interrupt step 3, leaving the token + * in place so that the second boot will go to the bootloader. + */ +static void __attribute__((constructor)) boot_double_tap_check(void) { + for (uint i = 0; i < count_of(magic_token); i++) { + if (magic_location[i] != magic_token[i]) { + // Arm, wait, then disarm and continue booting + for (i = 0; i < count_of(magic_token); i++) { + magic_location[i] = magic_token[i]; + } + busy_wait_us(PICO_BOOTSEL_VIA_DOUBLE_RESET_TIMEOUT_MS * 1000); + magic_location[0] = 0; + return; + } + } + // Detected a double reset, so enter USB bootloader + magic_location[0] = 0; +#ifdef PICO_BOOTSEL_VIA_DOUBLE_RESET_ACTIVITY_LED + const uint32_t led_mask = 1u << PICO_BOOTSEL_VIA_DOUBLE_RESET_ACTIVITY_LED; +#else + const uint32_t led_mask = 0u; +#endif + reset_usb_boot( + led_mask, + PICO_BOOTSEL_VIA_DOUBLE_RESET_INTERFACE_DISABLE_MASK + ); +} + +#endif diff --git a/arkanoid/pico/pico_malloc.c b/arkanoid/pico/pico_malloc.c new file mode 100644 index 0000000..8a3118c --- /dev/null +++ b/arkanoid/pico/pico_malloc.c @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <stdlib.h> +#include <stdio.h> +#include "pico.h" +#include "malloc.h" + +#if PICO_USE_MALLOC_MUTEX +#include "mutex.h" +auto_init_mutex(malloc_mutex); +#endif + +extern void *__real_malloc(size_t size); +extern void *__real_calloc(size_t count, size_t size); +extern void __real_free(void *mem); + +extern char __StackLimit; /* Set by linker. */ + +static inline void check_alloc(__unused void *mem, __unused uint size) { +#if PICO_MALLOC_PANIC + if (!mem || (((char *)mem) + size) > &__StackLimit) { + panic("Out of memory"); + } +#endif +} + +void *__wrap_malloc(size_t size) { +#if PICO_USE_MALLOC_MUTEX + mutex_enter_blocking(&malloc_mutex); +#endif + void *rc = __real_malloc(size); +#if PICO_USE_MALLOC_MUTEX + mutex_exit(&malloc_mutex); +#endif +#if PICO_DEBUG_MALLOC + if (!rc || ((uint8_t *)rc) + size > (uint8_t*)PICO_DEBUG_MALLOC_LOW_WATER) { + printf("malloc %d %p->%p\n", (uint) size, rc, ((uint8_t *) rc) + size); + } +#endif + check_alloc(rc, size); + return rc; +} + +void *__wrap_calloc(size_t count, size_t size) { +#if PICO_USE_MALLOC_MUTEX + mutex_enter_blocking(&malloc_mutex); +#endif + void *rc = __real_calloc(count, size); +#if PICO_USE_MALLOC_MUTEX + mutex_exit(&malloc_mutex); +#endif +#if PICO_DEBUG_MALLOC + if (!rc || ((uint8_t *)rc) + size > (uint8_t*)PICO_DEBUG_MALLOC_LOW_WATER) { + printf("calloc %d %p->%p\n", (uint) (count * size), rc, ((uint8_t *) rc) + size); + } +#endif + check_alloc(rc, size); + return rc; +} + +void __wrap_free(void *mem) { +#if PICO_USE_MALLOC_MUTEX + mutex_enter_blocking(&malloc_mutex); +#endif + __real_free(mem); +#if PICO_USE_MALLOC_MUTEX + mutex_exit(&malloc_mutex); +#endif +} diff --git a/arkanoid/pico/platform.c b/arkanoid/pico/platform.c new file mode 100644 index 0000000..9bbcf26 --- /dev/null +++ b/arkanoid/pico/platform.c @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "pico.h" +#include "hardware/address_mapped.h" +#include "hardware/regs/tbman.h" +#include "hardware/regs/sysinfo.h" + +// Note we leave the FPGA check in by default so that we can run bug repro +// binaries coming in from the wild on the FPGA platform. It takes up around +// 48 bytes if you include all the calls, so you can pass PICO_NO_FPGA_CHECK=1 +// to remove it. The FPGA check is used to skip initialisation of hardware +// (mainly clock generators and oscillators) that aren't present on FPGA. + +#if !PICO_NO_FPGA_CHECK +// Inline stub provided in header if this code is unused (so folding can be +// done in each TU instead of relying on LTO) +bool running_on_fpga() { + return !!((*(io_ro_32 *)TBMAN_BASE) & TBMAN_PLATFORM_FPGA_BITS); +} +#endif + +#define MANUFACTURER_RPI 0x927 +#define PART_RP2 0x2 + +uint8_t rp2040_chip_version() { + // First register of sysinfo is chip id + uint32_t chip_id = *((io_ro_32*)(SYSINFO_BASE + SYSINFO_CHIP_ID_OFFSET)); + uint32_t __unused manufacturer = chip_id & SYSINFO_CHIP_ID_MANUFACTURER_BITS; + uint32_t __unused part = (chip_id & SYSINFO_CHIP_ID_PART_BITS) >> SYSINFO_CHIP_ID_PART_LSB; + assert(manufacturer == MANUFACTURER_RPI); + assert(part == PART_RP2); + // Version 1 == B0/B1 + uint version = (chip_id & SYSINFO_CHIP_ID_REVISION_BITS) >> SYSINFO_CHIP_ID_REVISION_LSB; + return (uint8_t)version; +} \ No newline at end of file diff --git a/arkanoid/pico/platform.h b/arkanoid/pico/platform.h new file mode 100644 index 0000000..791cab8 --- /dev/null +++ b/arkanoid/pico/platform.h @@ -0,0 +1,411 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_PLATFORM_H_ +#define _PICO_PLATFORM_H_ + +/** \file platform.h + * \defgroup pico_platform pico_platform + * + * Macros and definitions (and functions when included by non assembly code) for the RP2 family device / architecture + * to provide a common abstraction over low level compiler / platform specifics. + * + * This header may be included by assembly code + */ + +#include "hardware/platform_defs.h" + +// Marker for builds targeting the RP2040 +#define PICO_RP2040 1 + +// PICO_CONFIG: PICO_STACK_SIZE, Stack Size, min=0x100, default=0x800, advanced=true, group=pico_platform +#ifndef PICO_STACK_SIZE +#define PICO_STACK_SIZE _u(0x800) +#endif + +// PICO_CONFIG: PICO_HEAP_SIZE, Heap size to reserve, min=0x100, default=0x800, advanced=true, group=pico_platform +#ifndef PICO_HEAP_SIZE +#define PICO_HEAP_SIZE _u(0x800) +#endif + +// PICO_CONFIG: PICO_NO_RAM_VECTOR_TABLE, Enable/disable the RAM vector table, type=bool, default=0, advanced=true, group=pico_platform +#ifndef PICO_NO_RAM_VECTOR_TABLE +#define PICO_NO_RAM_VECTOR_TABLE 0 +#endif + +// PICO_CONFIG: PICO_RP2040_B0_SUPPORTED, Whether to include any specific software support for RP2040 B0 revision, type=bool, default=1, advanced=true, group=pico_platform +#ifndef PICO_RP2040_B0_SUPPORTED +#define PICO_RP2040_B0_SUPPORTED 1 +#endif + +// PICO_CONFIG: PICO_FLOAT_SUPPORT_ROM_V1, Include float support code for RP2040 B0 when that chip revision is supported , type=bool, default=1, advanced=true, group=pico_platform +#ifndef PICO_FLOAT_SUPPORT_ROM_V1 +#define PICO_FLOAT_SUPPORT_ROM_V1 1 +#endif + +// PICO_CONFIG: PICO_DOUBLE_SUPPORT_ROM_V1, Include double support code for RP2040 B0 when that chip revision is supported , type=bool, default=1, advanced=true, group=pico_platform +#ifndef PICO_DOUBLE_SUPPORT_ROM_V1 +#define PICO_DOUBLE_SUPPORT_ROM_V1 1 +#endif + + +// PICO_CONFIG: PICO_RP2040_B1_SUPPORTED, Whether to include any specific software support for RP2040 B1 revision, type=bool, default=1, advanced=true, group=pico_platform +#ifndef PICO_RP2040_B1_SUPPORTED +#define PICO_RP2040_B1_SUPPORTED 1 +#endif + +// PICO_CONFIG: PICO_RP2040_B2_SUPPORTED, Whether to include any specific software support for RP2040 B2 revision, type=bool, default=1, advanced=true, group=pico_platform +#ifndef PICO_RP2040_B2_SUPPORTED +#define PICO_RP2040_B2_SUPPORTED 1 +#endif + +// --- remainder of file is not included by assembly code --- + +#ifndef __ASSEMBLER__ + +#include <sys/cdefs.h> +#include "junk/types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/*! \brief Marker for an interrupt handler + * \ingroup pico_platform + * For example an IRQ handler function called my_interrupt_handler: + * + * void __isr my_interrupt_handler(void) { + */ +#define __isr + +/*! \brief Section attribute macro for placement in RAM after the `.data` section + * \ingroup pico_platform + * + * For example a 400 element `uint32_t` array placed after the .data section + * + * uint32_t __after_data("my_group_name") a_big_array[400]; + * + * The section attribute is `.after_data.<group>` + * + * \param group a string suffix to use in the section name to distinguish groups that can be linker + * garbage-collected independently + */ +#define __after_data(group) __attribute__((section(".after_data." group))) + +/*! \brief Section attribute macro for placement not in flash (i.e in RAM) + * \ingroup pico_platform + * + * For example a 3 element `uint32_t` array placed in RAM (even though it is `static const`) + * + * static const uint32_t __not_in_flash("my_group_name") an_array[3]; + * + * The section attribute is `.time_critical.<group>` + * + * \param group a string suffix to use in the section name to distinguish groups that can be linker + * garbage-collected independently + */ +#define __not_in_flash(group) __attribute__((section(".time_critical." group))) + +/*! \brief Section attribute macro for placement in the SRAM bank 4 (known as "scratch X") + * \ingroup pico_platform + * + * Scratch X is commonly used for critical data and functions accessed only by one core (when only + * one core is accessing the RAM bank, there is no opportunity for stalls) + * + * For example a `uint32_t` variable placed in "scratch X" + * + * uint32_t __scratch_x("my_group_name") foo = 23; + * + * The section attribute is `.scratch_x.<group>` + * + * \param group a string suffix to use in the section name to distinguish groups that can be linker + * garbage-collected independently + */ +#define __scratch_x(group) __attribute__((section(".scratch_x." group))) + +/*! \brief Section attribute macro for placement in the SRAM bank 5 (known as "scratch Y") + * \ingroup pico_platform + * + * Scratch Y is commonly used for critical data and functions accessed only by one core (when only + * one core is accessing the RAM bank, there is no opportunity for stalls) + * + * For example a `uint32_t` variable placed in "scratch Y" + * + * uint32_t __scratch_y("my_group_name") foo = 23; + * + * The section attribute is `.scratch_y.<group>` + * + * \param group a string suffix to use in the section name to distinguish groups that can be linker + * garbage-collected independently + */ +#define __scratch_y(group) __attribute__((section(".scratch_y." group))) + +/*! \brief Section attribute macro for data that is to be left uninitialized + * \ingroup pico_platform + * + * Data marked this way will retain its value across a reset (normally uninitialized data - in the .bss + * section) is initialized to zero during runtime initialization + * + * For example a `uint32_t` foo that will retain its value if the program is restarted by reset. + * + * uint32_t __uninitialized_ram("my_group_name") foo; + * + * The section attribute is `.uninitialized_ram.<group>` + * + * \param group a string suffix to use in the section name to distinguish groups that can be linker + * garbage-collected independently + */ +#define __uninitialized_ram(group) __attribute__((section(".uninitialized_ram." #group))) group + +/*! \brief Section attribute macro for placement in flash even in a COPY_TO_RAM binary + * \ingroup pico_platform + * + * For example a `uint32_t` variable explicitly placed in flash (it will hard fault if you attempt to write it!) + * + * uint32_t __in_flash("my_group_name") foo = 23; + * + * The section attribute is `.flashdata.<group>` + * + * \param group a string suffix to use in the section name to distinguish groups that can be linker + * garbage-collected independently + */ +#define __in_flash(group) __attribute__((section(".flashdata" group))) + +/*! \brief Indicates a function should not be stored in flash + * \ingroup pico_platform + * + * Decorates a function name, such that the function will execute from RAM (assuming it is not inlined + * into a flash function by the compiler) + * + * For example a function called my_func taking an int parameter: + * + * void __not_in_flash_func(my_func)(int some_arg) { + * + * The function is placed in the `.time_critical.<func_name>` linker section + * + * \see __no_inline_not_in_flash_func + */ +#define __not_in_flash_func(func_name) __not_in_flash(__STRING(func_name)) func_name + +/*! \brief Indicates a function is time/latency critical and should not run from flash + * \ingroup pico_platform + * + * Decorates a function name, such that the function will execute from RAM (assuming it is not inlined + * into a flash function by the compiler) to avoid possible flash latency. Currently this macro is identical + * in implementation to `__not_in_flash_func`, however the semantics are distinct and a `__time_critical_func` + * may in the future be treated more specially to reduce the overhead when calling such function from a flash + * function. + * + * For example a function called my_func taking an int parameter: + * + * void __time_critical(my_func)(int some_arg) { + * + * The function is placed in the `.time_critical.<func_name>` linker section + * + * \see __not_in_flash_func + */ +#define __time_critical_func(func_name) __not_in_flash_func(func_name) + +/*! \brief Indicate a function should not be stored in flash and should not be inlined + * \ingroup pico_platform + * + * Decorates a function name, such that the function will execute from RAM, explicitly marking it as + * noinline to prevent it being inlined into a flash function by the compiler + * + * For example a function called my_func taking an int parameter: + * + * void __no_inline_not_in_flash_func(my_func)(int some_arg) { + * + * The function is placed in the `.time_critical.<func_name>` linker section + */ +#define __no_inline_not_in_flash_func(func_name) __noinline __not_in_flash_func(func_name) + +#define __packed_aligned __packed __aligned(4) + +/*! \brief Attribute to force inlining of a function regardless of optimization level + * \ingroup pico_platform + * + * For example my_function here will always be inlined: + * + * int __force_inline my_function(int x) { + * + */ +#if defined(__GNUC__) && __GNUC__ <= 7 +#define __force_inline inline __always_inline +#else +#define __force_inline __always_inline +#endif + +/*! \brief Macro to determine the number of elements in an array + * \ingroup pico_platform + */ +#ifndef count_of +#define count_of(a) (sizeof(a)/sizeof((a)[0])) +#endif + +/*! \brief Macro to return the maximum of two comparable values + * \ingroup pico_platform + */ +#ifndef MAX +#define MAX(a, b) ((a)>(b)?(a):(b)) +#endif + +/*! \brief Macro to return the minimum of two comparable values + * \ingroup pico_platform + */ +#ifndef MIN +#define MIN(a, b) ((b)>(a)?(a):(b)) +#endif + +/*! \brief Execute a breakpoint instruction + * \ingroup pico_platform + */ +static inline void __breakpoint(void) { + __asm__("bkpt #0"); +} + +/*! \brief Ensure that the compiler does not move memory access across this method call + * \ingroup pico_platform + * + * For example in the following code: + * + * *some_memory_location = var_a; + * __compiler_memory_barrier(); + * uint32_t var_b = *some_other_memory_location + * + * The compiler will not move the load from `some_other_memory_location` above the memory barrier (which it otherwise + * might - even above the memory store!) + */ +__force_inline static void __compiler_memory_barrier(void) { + __asm__ volatile ("" : : : "memory"); +} + +/*! \brief Macro for converting memory addresses to 32 bit addresses suitable for DMA + * \ingroup pico_platform + * + * This is just a cast to `uintptr_t` on the RP2040, however you may want to use this when developing code + * that also runs in "host" mode. If the host mode is 64 bit and you are embedding data pointers + * in other data (e.g. DMA chaining), then there is a need in "host" mode to convert a 64 bit native + * pointer to a 32 bit value for storage, which can be done using this macro. + */ +#define host_safe_hw_ptr(x) ((uintptr_t)(x)) +#define native_safe_hw_ptr(x) host_safe_hw_ptr(x) + + +/*! \brief Panics with the message "Unsupported" + * \ingroup pico_platform + * \see panic + */ +void __attribute__((noreturn)) panic_unsupported(void); + +/*! \brief Displays a panic message and halts execution + * \ingroup pico_platform + * + * An attempt is made to output the message to all registered STDOUT drivers + * after which this method executes a BKPT instruction. + * + * @param fmt format string (printf-like) + * @param ... printf-like arguments + */ +void __attribute__((noreturn)) panic(const char *fmt, ...); + +// PICO_CONFIG: PICO_NO_FPGA_CHECK, Remove the FPGA platform check for small code size reduction, type=bool, default=0, advanced=true, group=pico_runtime +#ifndef PICO_NO_FPGA_CHECK +#define PICO_NO_FPGA_CHECK 0 +#endif + +#if PICO_NO_FPGA_CHECK +static inline bool running_on_fpga(void) {return false;} +#else +bool running_on_fpga(void); +#endif + +/*! \brief Returns the RP2040 chip revision number + * \ingroup pico_platform + * @return the RP2040 chip revision number (1 for B0/B1, 2 for B2) + */ +uint8_t rp2040_chip_version(void); + +/*! \brief Returns the RP2040 rom version number + * \ingroup pico_platform + * @return the RP2040 rom version number (1 for RP2040-B0, 2 for RP2040-B1, 3 for RP2040-B2) + */ +static inline uint8_t rp2040_rom_version(void) { + return *(uint8_t*)0x13; +} + +/*! \brief No-op function for the body of tight loops + * \ingroup pico_platform + * + * Np-op function intended to be called by any tight hardware polling loop. Using this ubiquitously + * makes it much easier to find tight loops, but also in the future \#ifdef-ed support for lockup + * debugging might be added + */ +static __force_inline void tight_loop_contents(void) {} + +/*! \brief Multiply two integers using an assembly `MUL` instruction + * \ingroup pico_platform + * + * This multiplies a by b using multiply instruction using the ARM mul instruction regardless of values (the compiler + * might otherwise choose to perform shifts/adds), i.e. this is a 1 cycle operation. + * + * \param a the first operand + * \param b the second operand + * \return a * b + */ +__force_inline static int32_t __mul_instruction(int32_t a, int32_t b) { + asm ("mul %0, %1" : "+l" (a) : "l" (b) : ); + return a; +} + +/*! \brief multiply two integer values using the fastest method possible + * \ingroup pico_platform + * + * Efficiently multiplies value a by possibly constant value b. + * + * If b is known to be constant and not zero or a power of 2, then a mul instruction is used rather than gcc's default + * which is often a slow combination of shifts and adds. If b is a power of 2 then a single shift is of course preferable + * and will be used + * + * \param a the first operand + * \param b the second operand + * \return a * b + */ +#define __fast_mul(a, b) __builtin_choose_expr(__builtin_constant_p(b) && !__builtin_constant_p(a), \ +(__builtin_popcount(b) >= 2 ? __mul_instruction(a,b) : (a)*(b)), \ +(a)*(b)) + +/*! \brief Utility macro to assert two types are equivalent. + * \ingroup pico_platform + * + * This macro can be useful in other macros along with `typeof` to assert that two parameters are of equivalent type + * (or that a single parameter is of an expected type) + */ +#define __check_type_compatible(type_a, type_b) static_assert(__builtin_types_compatible_p(type_a, type_b), __STRING(type_a) " is not compatible with " __STRING(type_b)); + +/*! \brief Get the current exception level on this core + * \ingroup pico_platform + * + * \return the exception number if the CPU is handling an exception, or 0 otherwise + */ +uint __get_current_exception(void); + +#define WRAPPER_FUNC(x) __wrap_ ## x +#define REAL_FUNC(x) __real_ ## x + +#ifdef __cplusplus +} +#endif + +#else // __ASSEMBLER__ + +#define WRAPPER_FUNC_NAME(x) __wrap_##x +#define SECTION_NAME(x) .text.##x +#define RAM_SECTION_NAME(x) .time_critical.##x + +#endif // !__ASSEMBLER__ + +#endif diff --git a/arkanoid/pico/queue.c b/arkanoid/pico/queue.c new file mode 100644 index 0000000..485e250 --- /dev/null +++ b/arkanoid/pico/queue.c @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <stdlib.h> +#include <string.h> +#include "queue.h" + +void queue_init_with_spinlock(queue_t *q, uint element_size, uint element_count, uint spinlock_num) { + lock_init(&q->core, spinlock_num); + q->data = (uint8_t *)calloc(element_count + 1, element_size); + q->element_count = (uint16_t)element_count; + q->element_size = (uint16_t)element_size; + q->wptr = 0; + q->rptr = 0; +} + +void queue_free(queue_t *q) { + free(q->data); +} + +static inline void *element_ptr(queue_t *q, uint index) { + assert(index <= q->element_count); + return q->data + index * q->element_size; +} + +static inline uint16_t inc_index(queue_t *q, uint16_t index) { + if (++index > q->element_count) { // > because we have element_count + 1 elements + index = 0; + } + +#if PICO_QUEUE_MAX_LEVEL + uint16_t level = queue_get_level_unsafe(q); + if (level > q->max_level) { + q->max_level = level; + } +#endif + + return index; +} + +static bool queue_add_internal(queue_t *q, const void *data, bool block) { + do { + uint32_t save = spin_lock_blocking(q->core.spin_lock); + if (queue_get_level_unsafe(q) != q->element_count) { + memcpy(element_ptr(q, q->wptr), data, q->element_size); + q->wptr = inc_index(q, q->wptr); + lock_internal_spin_unlock_with_notify(&q->core, save); + return true; + } + if (block) { + lock_internal_spin_unlock_with_wait(&q->core, save); + } else { + spin_unlock(q->core.spin_lock, save); + return false; + } + } while (true); +} + +static bool queue_remove_internal(queue_t *q, void *data, bool block) { + do { + uint32_t save = spin_lock_blocking(q->core.spin_lock); + if (queue_get_level_unsafe(q) != 0) { + memcpy(data, element_ptr(q, q->rptr), q->element_size); + q->rptr = inc_index(q, q->rptr); + lock_internal_spin_unlock_with_notify(&q->core, save); + return true; + } + if (block) { + lock_internal_spin_unlock_with_wait(&q->core, save); + } else { + spin_unlock(q->core.spin_lock, save); + return false; + } + } while (true); +} + +static bool queue_peek_internal(queue_t *q, void *data, bool block) { + do { + uint32_t save = spin_lock_blocking(q->core.spin_lock); + if (queue_get_level_unsafe(q) != 0) { + memcpy(data, element_ptr(q, q->rptr), q->element_size); + lock_internal_spin_unlock_with_notify(&q->core, save); + return true; + } + if (block) { + lock_internal_spin_unlock_with_wait(&q->core, save); + } else { + spin_unlock(q->core.spin_lock, save); + return false; + } + } while (true); +} + +bool queue_try_add(queue_t *q, const void *data) { + return queue_add_internal(q, data, false); +} + +bool queue_try_remove(queue_t *q, void *data) { + return queue_remove_internal(q, data, false); +} + +bool queue_try_peek(queue_t *q, void *data) { + return queue_peek_internal(q, data, false); +} + +void queue_add_blocking(queue_t *q, const void *data) { + queue_add_internal(q, data, true); +} + +void queue_remove_blocking(queue_t *q, void *data) { + queue_remove_internal(q, data, true); +} + +void queue_peek_blocking(queue_t *q, void *data) { + queue_peek_internal(q, data, true); +} diff --git a/arkanoid/pico/queue.h b/arkanoid/pico/queue.h new file mode 100644 index 0000000..4117e41 --- /dev/null +++ b/arkanoid/pico/queue.h @@ -0,0 +1,227 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _UTIL_QUEUE_H +#define _UTIL_QUEUE_H + +#include "pico.h" +#include "hardware/sync.h" + +// PICO_CONFIG: PICO_QUEUE_MAX_LEVEL, Maintain a field for the highest level that has been reached by a queue, type=bool, default=0, advanced=true, group=queue +#ifndef PICO_QUEUE_MAX_LEVEL +#define PICO_QUEUE_MAX_LEVEL 0 +#endif + +/** \file queue.h + * \defgroup queue queue + * Multi-core and IRQ safe queue implementation. + * + * Note that this queue stores values of a specified size, and pushed values are copied into the queue + * \ingroup pico_util + */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "lock_core.h" + +typedef struct { + lock_core_t core; + uint8_t *data; + uint16_t wptr; + uint16_t rptr; + uint16_t element_size; + uint16_t element_count; +#if PICO_QUEUE_MAX_LEVEL + uint16_t max_level; +#endif +} queue_t; + +/*! \brief Initialise a queue with a specific spinlock for concurrency protection + * \ingroup queue + * + * \param q Pointer to a queue_t structure, used as a handle + * \param element_size Size of each value in the queue + * \param element_count Maximum number of entries in the queue + * \param spinlock_num The spin ID used to protect the queue + */ +void queue_init_with_spinlock(queue_t *q, uint element_size, uint element_count, uint spinlock_num); + +/*! \brief Initialise a queue, allocating a (possibly shared) spinlock + * \ingroup queue + * + * \param q Pointer to a queue_t structure, used as a handle + * \param element_size Size of each value in the queue + * \param element_count Maximum number of entries in the queue + */ +static inline void queue_init(queue_t *q, uint element_size, uint element_count) { + return queue_init_with_spinlock(q, element_size, element_count, next_striped_spin_lock_num()); +} + +/*! \brief Destroy the specified queue. + * \ingroup queue + * + * \param q Pointer to a queue_t structure, used as a handle + * + * Does not deallocate the queue_t structure itself. + */ +void queue_free(queue_t *q); + +/*! \brief Unsafe check of level of the specified queue. + * \ingroup queue + * + * \param q Pointer to a queue_t structure, used as a handle + * \return Number of entries in the queue + * + * This does not use the spinlock, so may return incorrect results if the + * spin lock is not externally locked + */ +static inline uint queue_get_level_unsafe(queue_t *q) { + int32_t rc = (int32_t)q->wptr - (int32_t)q->rptr; + if (rc < 0) { + rc += q->element_count + 1; + } + return (uint)rc; +} + +/*! \brief Check of level of the specified queue. + * \ingroup queue + * + * \param q Pointer to a queue_t structure, used as a handle + * \return Number of entries in the queue + */ +static inline uint queue_get_level(queue_t *q) { + uint32_t save = spin_lock_blocking(q->core.spin_lock); + uint level = queue_get_level_unsafe(q); + spin_unlock(q->core.spin_lock, save); + return level; +} + +/*! \brief Returns the highest level reached by the specified queue since it was created + * or since the max level was reset + * \ingroup queue + * + * \param q Pointer to a queue_t structure, used as a handle + * \return Maximum level of the queue + */ +#if PICO_QUEUE_MAX_LEVEL +static inline uint queue_get_max_level(queue_t *q) { + return q->max_level; +} +#endif + +/*! \brief Reset the highest level reached of the specified queue. + * \ingroup queue + * + * \param q Pointer to a queue_t structure, used as a handle + */ +#if PICO_QUEUE_MAX_LEVEL +static inline void queue_reset_max_level(queue_t *q) { + uint32_t save = spin_lock_blocking(q->core.spin_lock); + q->max_level = queue_get_level_unsafe(q); + spin_unlock(q->core.spin_lock, save); +} +#endif + +/*! \brief Check if queue is empty + * \ingroup queue + * + * \param q Pointer to a queue_t structure, used as a handle + * \return true if queue is empty, false otherwise + * + * This function is interrupt and multicore safe. + */ +static inline bool queue_is_empty(queue_t *q) { + return queue_get_level(q) == 0; +} + +/*! \brief Check if queue is full + * \ingroup queue + * + * \param q Pointer to a queue_t structure, used as a handle + * \return true if queue is full, false otherwise + * + * This function is interrupt and multicore safe. + */ +static inline bool queue_is_full(queue_t *q) { + return queue_get_level(q) == q->element_count; +} + +// nonblocking queue access functions: + +/*! \brief Non-blocking add value queue if not full + * \ingroup queue + * + * \param q Pointer to a queue_t structure, used as a handle + * \param data Pointer to value to be copied into the queue + * \return true if the value was added + * + * If the queue is full this function will return immediately with false, otherwise + * the data is copied into a new value added to the queue, and this function will return true. + */ +bool queue_try_add(queue_t *q, const void *data); + +/*! \brief Non-blocking removal of entry from the queue if non empty + * \ingroup queue + * + * \param q Pointer to a queue_t structure, used as a handle + * \param data Pointer to the location to receive the removed value + * \return true if a value was removed + * + * If the queue is not empty function will copy the removed value into the location provided and return + * immediately with true, otherwise the function will return immediately with false. + */ +bool queue_try_remove(queue_t *q, void *data); + +/*! \brief Non-blocking peek at the next item to be removed from the queue + * \ingroup queue + * + * \param q Pointer to a queue_t structure, used as a handle + * \param data Pointer to the location to receive the peeked value + * \return true if there was a value to peek + * + * If the queue is not empty this function will return immediately with true with the peeked entry + * copied into the location specified by the data parameter, otherwise the function will return false. + */ +bool queue_try_peek(queue_t *q, void *data); + +// blocking queue access functions: + +/*! \brief Blocking add of value to queue + * \ingroup queue + * + * \param q Pointer to a queue_t structure, used as a handle + * \param data Pointer to value to be copied into the queue + * + * If the queue is full this function will block, until a removal happens on the queue + */ +void queue_add_blocking(queue_t *q, const void *data); + +/*! \brief Blocking remove entry from queue + * \ingroup queue + * + * \param q Pointer to a queue_t structure, used as a handle + * \param data Pointer to the location to receive the removed value + * + * If the queue is empty this function will block until a value is added. + */ +void queue_remove_blocking(queue_t *q, void *data); + +/*! \brief Blocking peek at next value to be removed from queue + * \ingroup queue + * + * \param q Pointer to a queue_t structure, used as a handle + * \param data Pointer to the location to receive the peeked value + * + * If the queue is empty function will block until a value is added + */ +void queue_peek_blocking(queue_t *q, void *data); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/arkanoid/pico/reset_interface.c b/arkanoid/pico/reset_interface.c new file mode 100644 index 0000000..b56ed98 --- /dev/null +++ b/arkanoid/pico/reset_interface.c @@ -0,0 +1,112 @@ +/** + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +#include "tinyusb/tusb.h" + +#include "bootrom.h" + +#if PICO_STDIO_USB_ENABLE_RESET_VIA_VENDOR_INTERFACE && !(PICO_STDIO_USB_RESET_INTERFACE_SUPPORT_RESET_TO_BOOTSEL || PICO_STDIO_USB_RESET_INTERFACE_SUPPORT_RESET_TO_FLASH_BOOT) +#warning PICO_STDIO_USB_ENABLE_RESET_VIA_VENDOR_INTERFACE has been selected but neither PICO_STDIO_USB_RESET_INTERFACE_SUPPORT_RESET_TO_BOOTSEL nor PICO_STDIO_USB_RESET_INTERFACE_SUPPORT_RESET_TO_FLASH_BOOT have been selected. +#endif + +#if PICO_STDIO_USB_ENABLE_RESET_VIA_VENDOR_INTERFACE +#include "reset_interface.h" +#include "hardware/watchdog.h" +#include "tinyusb/usbd_pvt.h" + +static uint8_t itf_num; + +static void resetd_init(void) { +} + +static void resetd_reset(uint8_t __unused rhport) { + itf_num = 0; +} + +static uint16_t resetd_open(uint8_t __unused rhport, tusb_desc_interface_t const *itf_desc, uint16_t max_len) { + TU_VERIFY(TUSB_CLASS_VENDOR_SPECIFIC == itf_desc->bInterfaceClass && + RESET_INTERFACE_SUBCLASS == itf_desc->bInterfaceSubClass && + RESET_INTERFACE_PROTOCOL == itf_desc->bInterfaceProtocol, 0); + + uint16_t const drv_len = sizeof(tusb_desc_interface_t); + TU_VERIFY(max_len >= drv_len, 0); + + itf_num = itf_desc->bInterfaceNumber; + return drv_len; +} + +// Support for parameterized reset via vendor interface control request +static bool resetd_control_xfer_cb(uint8_t __unused rhport, uint8_t stage, tusb_control_request_t const * request) { + // nothing to do with DATA & ACK stage + if (stage != CONTROL_STAGE_SETUP) return true; + + if (request->wIndex == itf_num) { + +#if PICO_STDIO_USB_RESET_INTERFACE_SUPPORT_RESET_TO_BOOTSEL + if (request->bRequest == RESET_REQUEST_BOOTSEL) { +#ifdef PICO_STDIO_USB_RESET_BOOTSEL_ACTIVITY_LED + uint gpio_mask = 1u << PICO_STDIO_USB_RESET_BOOTSEL_ACTIVITY_LED; +#else + uint gpio_mask = 0u; +#endif +#if !PICO_STDIO_USB_RESET_BOOTSEL_FIXED_ACTIVITY_LED + if (request->wValue & 0x100) { + gpio_mask = 1u << (request->wValue >> 9u); + } +#endif + reset_usb_boot(gpio_mask, (request->wValue & 0x7f) | PICO_STDIO_USB_RESET_BOOTSEL_INTERFACE_DISABLE_MASK); + // does not return, otherwise we'd return true + } +#endif + +#if PICO_STDIO_USB_RESET_INTERFACE_SUPPORT_RESET_TO_FLASH_BOOT + if (request->bRequest == RESET_REQUEST_FLASH) { + watchdog_reboot(0, 0, PICO_STDIO_USB_RESET_RESET_TO_FLASH_DELAY_MS); + return true; + } +#endif + + } + return false; +} + +static bool resetd_xfer_cb(uint8_t __unused rhport, uint8_t __unused ep_addr, xfer_result_t __unused result, uint32_t __unused xferred_bytes) { + return true; +} + +static usbd_class_driver_t const _resetd_driver = +{ +#if CFG_TUSB_DEBUG >= 2 + .name = "RESET", +#endif + .init = resetd_init, + .reset = resetd_reset, + .open = resetd_open, + .control_xfer_cb = resetd_control_xfer_cb, + .xfer_cb = resetd_xfer_cb, + .sof = NULL +}; + +// Implement callback to add our custom driver +usbd_class_driver_t const *usbd_app_driver_get_cb(uint8_t *driver_count) { + *driver_count = 1; + return &_resetd_driver; +} +#endif + +#if PICO_STDIO_USB_ENABLE_RESET_VIA_BAUD_RATE +// Support for default BOOTSEL reset by changing baud rate +void tud_cdc_line_coding_cb(__unused uint8_t itf, cdc_line_coding_t const* p_line_coding) { + if (p_line_coding->bit_rate == PICO_STDIO_USB_RESET_MAGIC_BAUD_RATE) { +#ifdef PICO_STDIO_USB_RESET_BOOTSEL_ACTIVITY_LED + const uint gpio_mask = 1u << PICO_STDIO_USB_RESET_BOOTSEL_ACTIVITY_LED; +#else + const uint gpio_mask = 0u; +#endif + reset_usb_boot(gpio_mask, PICO_STDIO_USB_RESET_BOOTSEL_INTERFACE_DISABLE_MASK); + } +} +#endif + diff --git a/arkanoid/pico/reset_interface.h b/arkanoid/pico/reset_interface.h new file mode 100644 index 0000000..b81587a --- /dev/null +++ b/arkanoid/pico/reset_interface.h @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_STDIO_USB_RESET_INTERFACE_H +#define _PICO_STDIO_USB_RESET_INTERFACE_H + +// definitions have been moved here +#include "usb_reset_interface.h" + +#endif \ No newline at end of file diff --git a/arkanoid/pico/runtime.c b/arkanoid/pico/runtime.c new file mode 100644 index 0000000..09c9999 --- /dev/null +++ b/arkanoid/pico/runtime.c @@ -0,0 +1,289 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <stdio.h> +#include <stdarg.h> +#include "pico.h" + +#include "hardware/regs/m0plus.h" +#include "hardware/regs/resets.h" +#include "hardware/structs/mpu.h" +#include "hardware/structs/scb.h" +#include "hardware/structs/padsbank0.h" + +#include "hardware/clocks.h" +#include "hardware/irq.h" +#include "hardware/resets.h" + +#include "mutex.h" +#include "time.h" + +#if LIB_PICO_PRINTF_PICO +#include "printf.h" +#else +#define weak_raw_printf printf +#define weak_raw_vprintf vprintf +#endif + +#if PICO_ENTER_USB_BOOT_ON_EXIT +#include "bootrom.h" +#endif + +extern char __StackLimit; /* Set by linker. */ + +uint32_t __attribute__((section(".ram_vector_table"))) ram_vector_table[48]; + +// this is called for each thread since they have their own MPU +void runtime_install_stack_guard(void *stack_bottom) { + // this is called b4 runtime_init is complete, so beware printf or assert + + // make sure no one is using the MPU yet + if (mpu_hw->ctrl) { + // Note that it would be tempting to change this to a panic, but it happens so early, printing is not a good idea + __breakpoint(); + } + + uintptr_t addr = (uintptr_t) stack_bottom; + // the minimum we can protect is 32 bytes on a 32 byte boundary, so round up which will + // just shorten the valid stack range a tad + addr = (addr + 31u) & ~31u; + + // mask is 1 bit per 32 bytes of the 256 byte range... clear the bit for the segment we want + uint32_t subregion_select = 0xffu ^ (1u << ((addr >> 5u) & 7u)); + mpu_hw->ctrl = 5; // enable mpu with background default map + mpu_hw->rbar = (addr & (uint)~0xff) | 0x8 | 0; + mpu_hw->rasr = 1 // enable region + | (0x7 << 1) // size 2^(7 + 1) = 256 + | (subregion_select << 8) + | 0x10000000; // XN = disable instruction fetch; no other bits means no permissions +} + +void runtime_init(void) { + // Reset all peripherals to put system into a known state, + // - except for QSPI pads and the XIP IO bank, as this is fatal if running from flash + // - and the PLLs, as this is fatal if clock muxing has not been reset on this boot + // - and USB, syscfg, as this disturbs USB-to-SWD on core 1 + reset_block(~( + RESETS_RESET_IO_QSPI_BITS | + RESETS_RESET_PADS_QSPI_BITS | + RESETS_RESET_PLL_USB_BITS | + RESETS_RESET_USBCTRL_BITS | + RESETS_RESET_SYSCFG_BITS | + RESETS_RESET_PLL_SYS_BITS + )); + + // Remove reset from peripherals which are clocked only by clk_sys and + // clk_ref. Other peripherals stay in reset until we've configured clocks. + unreset_block_wait(RESETS_RESET_BITS & ~( + RESETS_RESET_ADC_BITS | + RESETS_RESET_RTC_BITS | + RESETS_RESET_SPI0_BITS | + RESETS_RESET_SPI1_BITS | + RESETS_RESET_UART0_BITS | + RESETS_RESET_UART1_BITS | + RESETS_RESET_USBCTRL_BITS + )); + + // pre-init runs really early since we need it even for memcpy and divide! + // (basically anything in aeabi that uses bootrom) + + // Start and end points of the constructor list, + // defined by the linker script. + extern void (*__preinit_array_start)(void); + extern void (*__preinit_array_end)(void); + + // Call each function in the list. + // We have to take the address of the symbols, as __preinit_array_start *is* + // the first function pointer, not the address of it. + for (void (**p)(void) = &__preinit_array_start; p < &__preinit_array_end; ++p) { + (*p)(); + } + + // After calling preinit we have enough runtime to do the exciting maths + // in clocks_init + clocks_init(); + + // Peripheral clocks should now all be running + unreset_block_wait(RESETS_RESET_BITS); + +#if !PICO_IE_26_29_UNCHANGED_ON_RESET + // after resetting BANK0 we should disable IE on 26-29 + hw_clear_alias(padsbank0_hw)->io[26] = hw_clear_alias(padsbank0_hw)->io[27] = + hw_clear_alias(padsbank0_hw)->io[28] = hw_clear_alias(padsbank0_hw)->io[29] = PADS_BANK0_GPIO0_IE_BITS; +#endif + + // this is an array of either mutex_t or recursive_mutex_t (i.e. not necessarily the same size) + // however each starts with a lock_core_t, and the spin_lock is initialized to address 1 for a recursive + // spinlock and 0 for a regular one. + + static_assert(!(sizeof(mutex_t)&3), ""); + static_assert(!(sizeof(recursive_mutex_t)&3), ""); + static_assert(!offsetof(mutex_t, core), ""); + static_assert(!offsetof(recursive_mutex_t, core), ""); + extern lock_core_t __mutex_array_start; + extern lock_core_t __mutex_array_end; + + for (lock_core_t *l = &__mutex_array_start; l < &__mutex_array_end; ) { + if (l->spin_lock) { + assert(1 == (uintptr_t)l->spin_lock); // indicator for a recursive mutex + recursive_mutex_t *rm = (recursive_mutex_t *)l; + recursive_mutex_init(rm); + l = &rm[1].core; // next + } else { + mutex_t *m = (mutex_t *)l; + mutex_init(m); + l = &m[1].core; // next + } + } + +#if !(PICO_NO_RAM_VECTOR_TABLE || PICO_NO_FLASH) + __builtin_memcpy(ram_vector_table, (uint32_t *) scb_hw->vtor, sizeof(ram_vector_table)); + scb_hw->vtor = (uintptr_t) ram_vector_table; +#endif + +#ifndef NDEBUG + if (__get_current_exception()) { + // crap; started in exception handler + __asm ("bkpt #0"); + } +#endif + +#if PICO_USE_STACK_GUARDS + // install core0 stack guard + extern char __StackBottom; + runtime_install_stack_guard(&__StackBottom); +#endif + + spin_locks_reset(); + irq_init_priorities(); + alarm_pool_init_default(); + + // Start and end points of the constructor list, + // defined by the linker script. + extern void (*__init_array_start)(void); + extern void (*__init_array_end)(void); + + // Call each function in the list. + // We have to take the address of the symbols, as __init_array_start *is* + // the first function pointer, not the address of it. + for (void (**p)(void) = &__init_array_start; p < &__init_array_end; ++p) { + (*p)(); + } + +} + +void _exit(__unused int status) { +#if PICO_ENTER_USB_BOOT_ON_EXIT + reset_usb_boot(0,0); +#else + while (1) { + __breakpoint(); + } +#endif +} + +void *_sbrk(int incr) { + extern char end; /* Set by linker. */ + static char *heap_end; + char *prev_heap_end; + + if (heap_end == 0) + heap_end = &end; + + prev_heap_end = heap_end; + char *next_heap_end = heap_end + incr; + + if (__builtin_expect(next_heap_end > (&__StackLimit), false)) { +#if PICO_USE_OPTIMISTIC_SBRK + if (heap_end == &__StackLimit) { +// errno = ENOMEM; + return (char *) -1; + } + next_heap_end = &__StackLimit; +#else + return (char *) -1; +#endif + } + + heap_end = next_heap_end; + return (void *) prev_heap_end; +} + +// exit is not useful... no desire to pull in __call_exitprocs +void exit(int status) { + _exit(status); +} + +// incorrect warning from GCC 6 +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wsuggest-attribute=format" +void __assert_func(const char *file, int line, const char *func, const char *failedexpr) { + weak_raw_printf("assertion \"%s\" failed: file \"%s\", line %d%s%s\n", + failedexpr, file, line, func ? ", function: " : "", + func ? func : ""); + + _exit(1); +} + +#pragma GCC diagnostic pop + +void __attribute__((noreturn)) panic_unsupported() { + panic("not supported"); +} + +// PICO_CONFIG: PICO_PANIC_FUNCTION, Name of a function to use in place of the stock panic function or empty string to simply breakpoint on panic, group=pico_runtime +// note the default is not "panic" it is undefined +#ifdef PICO_PANIC_FUNCTION +#define PICO_PANIC_FUNCTION_EMPTY (__CONCAT(PICO_PANIC_FUNCTION, 1) == 1) +#if !PICO_PANIC_FUNCTION_EMPTY +extern void __attribute__((noreturn)) __printflike(1, 0) PICO_PANIC_FUNCTION(__unused const char *fmt, ...); +#endif +// Use a forwarding method here as it is a little simpler than renaming the symbol as it is used from assembler +void __attribute__((naked, noreturn)) __printflike(1, 0) panic(__unused const char *fmt, ...) { + // if you get an undefined reference here, you didn't define your PICO_PANIC_FUNCTION! + __asm ( + "push {lr}\n" +#if !PICO_PANIC_FUNCTION_EMPTY + "bl " __XSTRING(PICO_PANIC_FUNCTION) "\n" +#endif + "bkpt #0\n" + "1: b 1b\n" // loop for ever as we are no return + : + : + : + ); +} +#else +// todo consider making this try harder to output if we panic early +// right now, print mutex may be uninitialised (in which case it deadlocks - although after printing "PANIC") +// more importantly there may be no stdout/UART initialized yet +// todo we may want to think about where we print panic messages to; writing to USB appears to work +// though it doesn't seem like we can expect it to... fine for now +void __attribute__((noreturn)) __printflike(1, 0) panic(const char *fmt, ...) { + puts("\n*** PANIC ***\n"); + if (fmt) { +#if LIB_PICO_PRINTF_NONE + puts(fmt); +#else + va_list args; + va_start(args, fmt); +#if PICO_PRINTF_ALWAYS_INCLUDED + vprintf(fmt, args); +#else + weak_raw_vprintf(fmt, args); +#endif + va_end(args); + puts("\n"); +#endif + } + + _exit(1); +} +#endif + +void hard_assertion_failure(void) { + panic("Hard assert"); +} diff --git a/arkanoid/pico/runtime.h b/arkanoid/pico/runtime.h new file mode 100644 index 0000000..752ec6c --- /dev/null +++ b/arkanoid/pico/runtime.h @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_RUNTIME_H +#define _PICO_RUNTIME_H + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file runtime.h +* \defgroup pico_runtime pico_runtime +* Aggregate runtime support including @ref pico_bit_ops, @ref pico_divider, @ref pico_double, @ref pico_int64_ops, @ref pico_float, @ref pico_malloc, @ref pico_mem_ops and @ref pico_standard_link +*/ + + +void runtime_install_stack_guard(void *stack_bottom); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/arkanoid/pico/sem.c b/arkanoid/pico/sem.c new file mode 100644 index 0000000..34b3b24 --- /dev/null +++ b/arkanoid/pico/sem.c @@ -0,0 +1,79 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "sem.h" +#include "time.h" + +void sem_init(semaphore_t *sem, int16_t initial_permits, int16_t max_permits) { + lock_init(&sem->core, next_striped_spin_lock_num()); + sem->permits = initial_permits; + sem->max_permits = max_permits; + __mem_fence_release(); +} + +int __time_critical_func(sem_available)(semaphore_t *sem) { + return *(volatile typeof(sem->permits) *) &sem->permits; +} + +void __time_critical_func(sem_acquire_blocking)(semaphore_t *sem) { + do { + uint32_t save = spin_lock_blocking(sem->core.spin_lock); + if (sem->permits > 0) { + sem->permits--; + lock_internal_spin_unlock_with_notify(&sem->core, save); + break; + } + lock_internal_spin_unlock_with_wait(&sem->core, save); + } while (true); +} + +bool __time_critical_func(sem_acquire_timeout_ms)(semaphore_t *sem, uint32_t timeout_ms) { + return sem_acquire_block_until(sem, make_timeout_time_ms(timeout_ms)); +} + +bool __time_critical_func(sem_acquire_timeout_us)(semaphore_t *sem, uint32_t timeout_us) { + return sem_acquire_block_until(sem, make_timeout_time_us(timeout_us)); +} + +bool __time_critical_func(sem_acquire_block_until)(semaphore_t *sem, absolute_time_t until) { + do { + uint32_t save = spin_lock_blocking(sem->core.spin_lock); + if (sem->permits > 0) { + sem->permits--; + lock_internal_spin_unlock_with_notify(&sem->core, save); + return true; + } + if (lock_internal_spin_unlock_with_best_effort_wait_or_timeout(&sem->core, save, until)) { + return false; + } + } while (true); +} + +// todo this should really have a blocking variant for when permits are maxed out +bool __time_critical_func(sem_release)(semaphore_t *sem) { + uint32_t save = spin_lock_blocking(sem->core.spin_lock); + int32_t count = sem->permits; + if (count < sem->max_permits) { + sem->permits = (int16_t)(count + 1); + lock_internal_spin_unlock_with_notify(&sem->core, save); + return true; + } else { + spin_unlock(sem->core.spin_lock, save); + return false; + } +} + +void __time_critical_func(sem_reset)(semaphore_t *sem, int16_t permits) { + assert(permits >= 0 && permits <= sem->max_permits); + uint32_t save = spin_lock_blocking(sem->core.spin_lock); + if (permits > sem->permits) { + sem->permits = permits; + lock_internal_spin_unlock_with_notify(&sem->core, save); + } else { + sem->permits = permits; + spin_unlock(sem->core.spin_lock, save); + } +} diff --git a/arkanoid/pico/sem.h b/arkanoid/pico/sem.h new file mode 100644 index 0000000..446aa5e --- /dev/null +++ b/arkanoid/pico/sem.h @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PLATFORM_SEM_H +#define _PLATFORM_SEM_H + +#include "lock_core.h" + +/** \file sem.h + * \defgroup sem sem + * \ingroup pico_sync + * \brief Semaphore API for restricting access to a resource + * + * A semaphore holds a number of available permits. `sem_acquire` methods will acquire a permit if available + * (reducing the available count by 1) or block if the number of available permits is 0. + * \ref sem_release() increases the number of available permits by one potentially unblocking a `sem_acquire` method. + * + * Note that \ref sem_release() may be called an arbitrary number of times, however the number of available + * permits is capped to the max_permit value specified during semaphore initialization. + * + * Although these semaphore related functions can be used from IRQ handlers, it is obviously preferable to only + * release semaphores from within an IRQ handler (i.e. avoid blocking) + */ + +#ifdef __cplusplus +extern "C" { +#endif +typedef struct __packed_aligned semaphore { + struct lock_core core; + int16_t permits; + int16_t max_permits; +} semaphore_t; + + +/*! \brief Initialise a semaphore structure + * \ingroup sem + * + * \param sem Pointer to semaphore structure + * \param initial_permits How many permits are initially acquired + * \param max_permits Total number of permits allowed for this semaphore + */ +void sem_init(semaphore_t *sem, int16_t initial_permits, int16_t max_permits); + +/*! \brief Return number of available permits on the semaphore + * \ingroup sem + * + * \param sem Pointer to semaphore structure + * \return The number of permits available on the semaphore. + */ +int sem_available(semaphore_t *sem); + +/*! \brief Release a permit on a semaphore + * \ingroup sem + * + * Increases the number of permits by one (unless the number of permits is already at the maximum). + * A blocked `sem_acquire` will be released if the number of permits is increased. + * + * \param sem Pointer to semaphore structure + * \return true if the number of permits available was increased. + */ +bool sem_release(semaphore_t *sem); + +/*! \brief Reset semaphore to a specific number of available permits + * \ingroup sem + * + * Reset value should be from 0 to the max_permits specified in the init function + * + * \param sem Pointer to semaphore structure + * \param permits the new number of available permits + */ +void sem_reset(semaphore_t *sem, int16_t permits); + +/*! \brief Acquire a permit from the semaphore + * \ingroup sem + * + * This function will block and wait if no permits are available. + * + * \param sem Pointer to semaphore structure + */ +void sem_acquire_blocking(semaphore_t *sem); + +/*! \brief Acquire a permit from a semaphore, with timeout + * \ingroup sem + * + * This function will block and wait if no permits are available, until the + * defined timeout has been reached. If the timeout is reached the function will + * return false, otherwise it will return true. + * + * \param sem Pointer to semaphore structure + * \param timeout_ms Time to wait to acquire the semaphore, in milliseconds. + * \return false if timeout reached, true if permit was acquired. + */ +bool sem_acquire_timeout_ms(semaphore_t *sem, uint32_t timeout_ms); + +/*! \brief Acquire a permit from a semaphore, with timeout + * \ingroup sem + * + * This function will block and wait if no permits are available, until the + * defined timeout has been reached. If the timeout is reached the function will + * return false, otherwise it will return true. + * + * \param sem Pointer to semaphore structure + * \param timeout_us Time to wait to acquire the semaphore, in microseconds. + * \return false if timeout reached, true if permit was acquired. + */ +bool sem_acquire_timeout_us(semaphore_t *sem, uint32_t timeout_us); + +/*! \brief Wait to acquire a permit from a semaphore until a specific time + * \ingroup sem + * + * This function will block and wait if no permits are available, until the + * specified timeout time. If the timeout is reached the function will + * return false, otherwise it will return true. + * + * \param sem Pointer to semaphore structure + * \param until The time after which to return if the sem is not available. + * \return true if permit was acquired, false if the until time was reached before + * acquiring. + */ +bool sem_acquire_block_until(semaphore_t *sem, absolute_time_t until); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/arkanoid/pico/sf_table.h b/arkanoid/pico/sf_table.h new file mode 100644 index 0000000..4eb4b1c --- /dev/null +++ b/arkanoid/pico/sf_table.h @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_SF_TABLE_H +#define _PICO_SF_TABLE_H + +// NOTE THESE FUNCTION IMPLEMENTATIONS MATCH THE BEHAVIOR DESCRIBED IN THE BOOTROM SECTION OF THE RP2040 DATASHEET + +#define SF_TABLE_FADD 0x00 +#define SF_TABLE_FSUB 0x04 +#define SF_TABLE_FMUL 0x08 +#define SF_TABLE_FDIV 0x0c +#define SF_TABLE_FCMP_FAST 0x10 +#define SF_TABLE_FCMP_FAST_FLAGS 0x14 +#define SF_TABLE_FSQRT 0x18 +#define SF_TABLE_FLOAT2INT 0x1c +#define SF_TABLE_FLOAT2FIX 0x20 +#define SF_TABLE_FLOAT2UINT 0x24 +#define SF_TABLE_FLOAT2UFIX 0x28 +#define SF_TABLE_INT2FLOAT 0x2c +#define SF_TABLE_FIX2FLOAT 0x30 +#define SF_TABLE_UINT2FLOAT 0x34 +#define SF_TABLE_UFIX2FLOAT 0x38 +#define SF_TABLE_FCOS 0x3c +#define SF_TABLE_FSIN 0x40 +#define SF_TABLE_FTAN 0x44 +#define SF_TABLE_V3_FSINCOS 0x48 +#define SF_TABLE_FEXP 0x4c +#define SF_TABLE_FLN 0x50 + +#define SF_TABLE_V1_SIZE 0x54 + +#define SF_TABLE_FCMP_BASIC 0x54 +#define SF_TABLE_FATAN2 0x58 +#define SF_TABLE_INT642FLOAT 0x5c +#define SF_TABLE_FIX642FLOAT 0x60 +#define SF_TABLE_UINT642FLOAT 0x64 +#define SF_TABLE_UFIX642FLOAT 0x68 +#define SF_TABLE_FLOAT2INT64 0x6c +#define SF_TABLE_FLOAT2FIX64 0x70 +#define SF_TABLE_FLOAT2UINT64 0x74 +#define SF_TABLE_FLOAT2UFIX64 0x78 +#define SF_TABLE_FLOAT2DOUBLE 0x7c + +#define SF_TABLE_V2_SIZE 0x80 + +#endif diff --git a/arkanoid/pico/stdio.c b/arkanoid/pico/stdio.c new file mode 100644 index 0000000..39fdd78 --- /dev/null +++ b/arkanoid/pico/stdio.c @@ -0,0 +1,346 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <string.h> +#include <stdio.h> +#include <stdarg.h> + +#include "pico.h" +#include "mutex.h" +#if LIB_PICO_PRINTF_PICO +#include "printf.h" +#endif +#include "stdio.h" +#include "driver.h" +#include "time.h" + +#if LIB_PICO_STDIO_UART +#include "stdio_uart.h" +#endif + +#if LIB_PICO_STDIO_USB +#include "stdio_usb.h" +#endif + +#if LIB_PICO_STDIO_SEMIHOSTING +#include "stdio_semihosting.h" +#endif + +static stdio_driver_t *drivers; +static stdio_driver_t *filter; + +#if PICO_STDOUT_MUTEX +auto_init_mutex(print_mutex); + +bool stdout_serialize_begin(void) { + lock_owner_id_t caller = lock_get_caller_owner_id(); + // not using lock_owner_id_t to avoid backwards incompatibility change to mutex_try_enter API + static_assert(sizeof(lock_owner_id_t) <= 4, ""); + uint32_t owner; + if (!mutex_try_enter(&print_mutex, &owner)) { + if (owner == (uint32_t)caller) { + return false; + } + // we are not a nested call, so lets wait + mutex_enter_blocking(&print_mutex); + } + return true; +} + +void stdout_serialize_end(void) { + mutex_exit(&print_mutex); +} + +#else +static bool stdout_serialize_begin(void) { + return true; +} +static void stdout_serialize_end(void) { +} +#endif +static void stdio_out_chars_no_crlf(stdio_driver_t *driver, const char *s, int len) { + driver->out_chars(s, len); +} + +static void stdio_out_chars_crlf(stdio_driver_t *driver, const char *s, int len) { +#if PICO_STDIO_ENABLE_CRLF_SUPPORT + if (!driver->crlf_enabled) { + driver->out_chars(s, len); + return; + } + int first_of_chunk = 0; + static const char crlf_str[] = {'\r', '\n'}; + for (int i = 0; i < len; i++) { + bool prev_char_was_cr = i > 0 ? s[i - 1] == '\r' : driver->last_ended_with_cr; + if (s[i] == '\n' && !prev_char_was_cr) { + if (i > first_of_chunk) { + driver->out_chars(&s[first_of_chunk], i - first_of_chunk); + } + driver->out_chars(crlf_str, 2); + first_of_chunk = i + 1; + } + } + if (first_of_chunk < len) { + driver->out_chars(&s[first_of_chunk], len - first_of_chunk); + } + if (len > 0) { + driver->last_ended_with_cr = s[len - 1] == '\r'; + } +#else + driver->out_chars(s, len); +#endif +} + +static bool stdio_put_string(const char *s, int len, bool newline, bool no_cr) { + bool serialized = stdout_serialize_begin(); + if (!serialized) { +#if PICO_STDIO_IGNORE_NESTED_STDOUT + return false; +#endif + } + if (len == -1) len = (int)strlen(s); + void (*out_func)(stdio_driver_t *, const char *, int) = no_cr ? stdio_out_chars_no_crlf : stdio_out_chars_crlf; + for (stdio_driver_t *driver = drivers; driver; driver = driver->next) { + if (!driver->out_chars) continue; + if (filter && filter != driver) continue; + out_func(driver, s, len); + if (newline) { + const char c = '\n'; + out_func(driver, &c, 1); + } + } + if (serialized) { + stdout_serialize_end(); + } + return len; +} + +static int stdio_get_until(char *buf, int len, absolute_time_t until) { + do { + // todo round robin might be nice on each call, but then again hopefully + // no source will starve the others + for (stdio_driver_t *driver = drivers; driver; driver = driver->next) { + if (filter && filter != driver) continue; + if (driver->in_chars) { + int read = driver->in_chars(buf, len); + if (read > 0) { + return read; + } + } + } + // we sleep here in case the in_chars methods acquire mutexes or disable IRQs and + // potentially starve out what they are waiting on (have seen this with USB) + busy_wait_us(1); + } while (!time_reached(until)); + return PICO_ERROR_TIMEOUT; +} + +int WRAPPER_FUNC(putchar)(int c) { + char cc = (char)c; + stdio_put_string(&cc, 1, false, false); + return c; +} + +int WRAPPER_FUNC(puts)(const char *s) { + int len = (int)strlen(s); + stdio_put_string(s, len, true, false); + stdio_flush(); + return len; +} + +int putchar_raw(int c) { + char cc = (char)c; + stdio_put_string(&cc, 1, false, true); + return c; +} + +int puts_raw(const char *s) { + int len = (int)strlen(s); + stdio_put_string(s, len, true, true); + stdio_flush(); + return len; +} + +int _read(int handle, char *buffer, int length) { + if (handle == 0) { + return stdio_get_until(buffer, length, at_the_end_of_time); + } + return -1; +} + +int _write(int handle, char *buffer, int length) { + if (handle == 1) { + stdio_put_string(buffer, length, false, false); + return length; + } + return -1; +} + +void stdio_set_driver_enabled(stdio_driver_t *driver, bool enable) { + stdio_driver_t *prev = drivers; + for (stdio_driver_t *d = drivers; d; d = d->next) { + if (d == driver) { + if (!enable) { + prev->next = d->next; + driver->next = NULL; + } + return; + } + prev = d; + } + if (enable) { + if (prev) prev->next = driver; + else drivers = driver; + } +} + +void stdio_flush() { + for (stdio_driver_t *d = drivers; d; d = d->next) { + if (d->out_flush) d->out_flush(); + } +} + +typedef struct stdio_stack_buffer { + int used; + char buf[PICO_STDIO_STACK_BUFFER_SIZE]; +} stdio_stack_buffer_t; + +static void stdio_stack_buffer_flush(stdio_stack_buffer_t *buffer) { + if (buffer->used) { + for (stdio_driver_t *d = drivers; d; d = d->next) { + if (!d->out_chars) continue; + if (filter && filter != d) continue; + stdio_out_chars_crlf(d, buffer->buf, buffer->used); + } + buffer->used = 0; + } +} + +static void stdio_buffered_printer(char c, void *arg) { + stdio_stack_buffer_t *buffer = (stdio_stack_buffer_t *)arg; + if (buffer->used == PICO_STDIO_STACK_BUFFER_SIZE) { + stdio_stack_buffer_flush(buffer); + } + buffer->buf[buffer->used++] = c; +} + +int WRAPPER_FUNC(vprintf)(const char *format, va_list va) { + bool serialzed = stdout_serialize_begin(); + if (!serialzed) { +#if PICO_STDIO_IGNORE_NESTED_STDOUT + return 0; +#endif + } + int ret; +#if LIB_PICO_PRINTF_PICO + struct stdio_stack_buffer buffer = {.used = 0}; + ret = vfctprintf(stdio_buffered_printer, &buffer, format, va); + stdio_stack_buffer_flush(&buffer); + stdio_flush(); +#elif LIB_PICO_PRINTF_NONE + extern void printf_none_assert(); + printf_none_assert(); +#else + extern int REAL_FUNC(vprintf)(const char *format, va_list va); + ret = REAL_FUNC(vprintf)(format, va); +#endif + if (serialzed) { + stdout_serialize_end(); + } + return ret; +} + +int __printflike(1, 0) WRAPPER_FUNC(printf)(const char* format, ...) +{ + va_list va; + va_start(va, format); + int ret = vprintf(format, va); + va_end(va); + return ret; +} + +// TODO added + +int WRAPPER_FUNC(vscanf)(const char *format, va_list va) { + /* + bool serialzed = stdin_serialize_begin(); + if (!serialzed) { +#if PICO_STDIO_IGNORE_NESTED_STDOUT + return 0; +#endif + } + */ + + while (true) { + printf("lol\n"); + } + int ret; + extern int REAL_FUNC(vscanf)(const char *format, va_list va); + ret = REAL_FUNC(vscanf)(format, va); + return ret; +} + +int __printflike(1, 0) WRAPPER_FUNC(scanf)(const char* format, ...) +{ + while (true) { + printf("lol\n"); + } + + va_list va; + va_start(va, format); + int ret = vscanf(format, va); + va_end(va); + return ret; +} + +// TODO added end + +void stdio_init_all(void) { + // todo add explicit custom, or registered although you can call stdio_enable_driver explicitly anyway + // These are well known ones +#if LIB_PICO_STDIO_UART + stdio_uart_init(); +#endif + +#if LIB_PICO_STDIO_SEMIHOSTING + stdio_semihosting_init(); +#endif + +#if LIB_PICO_STDIO_USB + stdio_usb_init(); +#endif +} + +int WRAPPER_FUNC(getchar)(void) { + char buf[1]; + int len = stdio_get_until(buf, 1, at_the_end_of_time); + if (len < 0) return len; + assert(len == 1); + return (uint8_t)buf[0]; +} + +int getchar_timeout_us(uint32_t timeout_us) { + char buf[1]; + int rc = stdio_get_until(buf, sizeof(buf), make_timeout_time_us(timeout_us)); + if (rc < 0) return rc; + assert(rc); + return (uint8_t)buf[0]; +} + +void stdio_filter_driver(stdio_driver_t *driver) { + filter = driver; +} + +void stdio_set_translate_crlf(stdio_driver_t *driver, bool enabled) { +#if PICO_STDIO_ENABLE_CRLF_SUPPORT + if (enabled && !driver->crlf_enabled) { + driver->last_ended_with_cr = false; + } + driver->crlf_enabled = enabled; +#else + panic_unsupported(); +#endif +} diff --git a/arkanoid/pico/stdio.h b/arkanoid/pico/stdio.h new file mode 100644 index 0000000..e44c01d --- /dev/null +++ b/arkanoid/pico/stdio.h @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_STDIO_H +#define _PICO_STDIO_H + +/** \file stdio.h +* \defgroup pico_stdio pico_stdio +* Customized stdio support allowing for input and output from UART, USB, semi-hosting etc. +* +* Note the API for adding additional input output devices is not yet considered stable +*/ + +#include "pico.h" + +// PICO_CONFIG: PICO_STDOUT_MUTEX, Enable/disable mutex around stdout, type=bool, default=1, group=pico_stdio +#ifndef PICO_STDOUT_MUTEX +#define PICO_STDOUT_MUTEX 1 +#endif + +// PICO_CONFIG: PICO_STDIO_ENABLE_CRLF_SUPPORT, Enable/disable CR/LF output conversion support, type=bool, default=1, group=pico_stdio +#ifndef PICO_STDIO_ENABLE_CRLF_SUPPORT +#define PICO_STDIO_ENABLE_CRLF_SUPPORT 1 +#endif + +// PICO_CONFIG: PICO_STDIO_DEFAULT_CRLF, Default for CR/LF conversion enabled on all stdio outputs, type=bool, default=1, depends=PICO_STDIO_ENABLE_CRLF_SUPPORT, group=pico_stdio +#ifndef PICO_STDIO_DEFAULT_CRLF +#define PICO_STDIO_DEFAULT_CRLF 1 +#endif + +// PICO_CONFIG: PICO_STDIO_STACK_BUFFER_SIZE, Define printf buffer size (on stack)... this is just a working buffer not a max output size, min=0, max=512, default=128, group=pico_stdio +#ifndef PICO_STDIO_STACK_BUFFER_SIZE +#define PICO_STDIO_STACK_BUFFER_SIZE 128 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +typedef struct stdio_driver stdio_driver_t; + +/*! \brief Initialize all of the present standard stdio types that are linked into the binary. + * \ingroup pico_stdio + * + * Call this method once you have set up your clocks to enable the stdio support for UART, USB + * and semihosting based on the presence of the respective libraries in the binary. + * + * When stdio_usb is configured, this method can be optionally made to block, waiting for a connection + * via the variables specified in \ref stdio_usb_init (i.e. \ref PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS) + * + * \see stdio_uart, stdio_usb, stdio_semihosting + */ +void stdio_init_all(void); + +/*! \brief Initialize all of the present standard stdio types that are linked into the binary. + * \ingroup pico_stdio + * + * Call this method once you have set up your clocks to enable the stdio support for UART, USB + * and semihosting based on the presence of the respective libraries in the binary. + * + * \see stdio_uart, stdio_usb, stdio_semihosting + */ +void stdio_flush(void); + +/*! \brief Return a character from stdin if there is one available within a timeout + * \ingroup pico_stdio + * + * \param timeout_us the timeout in microseconds, or 0 to not wait for a character if none available. + * \return the character from 0-255 or PICO_ERROR_TIMEOUT if timeout occurs + */ +int getchar_timeout_us(uint32_t timeout_us); + +/*! \brief Adds or removes a driver from the list of active drivers used for input/output + * \ingroup pico_stdio + * + * \note this method should always be called on an initialized driver and is not re-entrant + * \param driver the driver + * \param enabled true to add, false to remove + */ +void stdio_set_driver_enabled(stdio_driver_t *driver, bool enabled); + +/*! \brief Control limiting of output to a single driver + * \ingroup pico_stdio + * + * \note this method should always be called on an initialized driver + * + * \param driver if non-null then output only that driver will be used for input/output (assuming it is in the list of enabled drivers). + * if NULL then all enabled drivers will be used + */ +void stdio_filter_driver(stdio_driver_t *driver); + +/*! \brief control conversion of line feeds to carriage return on transmissions + * \ingroup pico_stdio + * + * \note this method should always be called on an initialized driver + * + * \param driver the driver + * \param translate If true, convert line feeds to carriage return on transmissions + */ +void stdio_set_translate_crlf(stdio_driver_t *driver, bool translate); + +/*! \brief putchar variant that skips any CR/LF conversion if enabled + * \ingroup pico_stdio + */ +int putchar_raw(int c); + +/*! \brief puts variant that skips any CR/LF conversion if enabled + * \ingroup pico_stdio + */ +int puts_raw(const char *s); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/stdio_semihosting.c b/arkanoid/pico/stdio_semihosting.c new file mode 100644 index 0000000..55133b1 --- /dev/null +++ b/arkanoid/pico/stdio_semihosting.c @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "driver.h" +#include "stdio_semihosting.h" +#include "binary_info.h" + +//static void __attribute__((naked)) semihosting_puts(const char *s) { +// __asm ( +// +// "mov r1, r0\n" +// "mov r0, #4\n" +// "bkpt 0xab\n" +// "bx lr\n" +// ); +//} + +static void __attribute__((naked)) semihosting_putc(__unused const char *c) { + __asm ( + + "mov r1, r0\n" + "mov r0, #3\n" + "bkpt 0xab\n" + "bx lr\n" + ); +} + + +static void stdio_semihosting_out_chars(const char *buf, int length) { + for (int i = 0; i < length; i++) { + semihosting_putc(&buf[i]); + } +} + +stdio_driver_t stdio_semihosting = { + .out_chars = stdio_semihosting_out_chars, +#if PICO_STDIO_ENABLE_CRLF_SUPPORT + .crlf_enabled = PICO_STDIO_SEMIHOSTING_DEFAULT_CRLF +#endif +}; + +void stdio_semihosting_init() { +#if !PICO_NO_BI_STDIO_SEMIHOSTING + bi_decl_if_func_used(bi_program_feature("semihosting stdout")); +#endif + stdio_set_driver_enabled(&stdio_semihosting, true); +} + diff --git a/arkanoid/pico/stdio_semihosting.h b/arkanoid/pico/stdio_semihosting.h new file mode 100644 index 0000000..a659998 --- /dev/null +++ b/arkanoid/pico/stdio_semihosting.h @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_STDIO_SEMIHOSTING_H +#define _PICO_STDIO_SEMIHOSTING_H + +#include "stdio.h" + +/** \brief Experimental support for stdout using RAM semihosting + * \defgroup pico_stdio_semihosting pico_stdio_semihosting + * \ingroup pico_stdio + * + * Linking this library or calling `pico_enable_stdio_semihosting(TARGET)` in the CMake (which + * achieves the same thing) will add semihosting to the drivers used for standard output + */ + +// PICO_CONFIG: PICO_STDIO_SEMIHOSTING_DEFAULT_CRLF, Default state of CR/LF translation for semihosting output, type=bool, default=PICO_STDIO_DEFAULT_CRLF, group=pico_stdio_semihosting +#ifndef PICO_STDIO_SEMIHOSTING_DEFAULT_CRLF +#define PICO_STDIO_SEMIHOSTING_DEFAULT_CRLF PICO_STDIO_DEFAULT_CRLF +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +extern stdio_driver_t stdio_semihosting; + +/*! \brief Explicitly initialize stdout over semihosting and add it to the current set of stdout targets + * \ingroup pico_stdio_semihosting + * + * \note this method is automatically called by \ref stdio_init_all() if `pico_stdio_semihosting` is included in the build + */ +void stdio_semihosting_init(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/stdio_uart.c b/arkanoid/pico/stdio_uart.c new file mode 100644 index 0000000..c4f9880 --- /dev/null +++ b/arkanoid/pico/stdio_uart.c @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "driver.h" +#include "stdio_uart.h" +#include "binary_info.h" +#include "hardware/gpio.h" + +static uart_inst_t *uart_instance; + +#if PICO_NO_BI_STDIO_UART +#define stdio_bi_decl_if_func_used(x) +#else +#define stdio_bi_decl_if_func_used bi_decl_if_func_used +#endif + +void stdio_uart_init() { +#ifdef uart_default + int tx_pin = -1; + int rx_pin = -1; +#ifdef PICO_DEFAULT_UART_TX_PIN + tx_pin = PICO_DEFAULT_UART_TX_PIN; +#ifdef PICO_DEFAULT_UART_RX_PIN + rx_pin = PICO_DEFAULT_UART_RX_PIN; + stdio_bi_decl_if_func_used(bi_program_feature("UART stdin / stdout")); + bi_decl_if_func_used(bi_2pins_with_func(PICO_DEFAULT_UART_RX_PIN, PICO_DEFAULT_UART_TX_PIN, GPIO_FUNC_UART)); +#else + stdio_bi_decl_if_func_used(bi_program_feature("UART stdout")); + bi_decl_if_func_used(bi_1pin_with_func(PICO_DEFAULT_UART_TX_PIN, GPIO_FUNC_UART)); +#endif +#elif defined(PICO_DEFAULT_UART_RX_PIN) + rx_pin = PICO_DEFAULT_UART_RX_PIN; + stdio_bi_decl_if_func_used(bi_program_feature("UART stdin")); + bi_decl_if_func_used(bi_1pin_with_func(PICO_DEFAULT_UART_RX_PIN, GPIO_FUNC_UART)); +#endif +#if !defined(PICO_DEFAULT_UART_BAUD_RATE) + panic("UART baud rate undefined"); +#else + stdio_uart_init_full(uart_default, PICO_DEFAULT_UART_BAUD_RATE, tx_pin, rx_pin); +#endif +#endif +} + +void stdout_uart_init() { +#if defined(uart_default) && defined(PICO_DEFAULT_UART_TX_PIN) + bi_decl_if_func_used(bi_1pin_with_func(PICO_DEFAULT_UART_TX_PIN, GPIO_FUNC_UART)); +#if !defined(PICO_DEFAULT_UART_BAUD_RATE) + panic("UART baud rate undefined"); +#else + stdio_bi_decl_if_func_used(bi_program_feature("UART stdout")); + stdio_uart_init_full(uart_default, PICO_DEFAULT_UART_BAUD_RATE, PICO_DEFAULT_UART_TX_PIN, -1); +#endif +#endif +} + +void stdin_uart_init() { +#if defined(uart_default) && defined(PICO_DEFAULT_UART_RX_PIN) + bi_decl_if_func_used(bi_1pin_with_func(PICO_DEFAULT_UART_RX_PIN, GPIO_FUNC_UART)); +#if !defined(PICO_DEFAULT_UART_BAUD_RATE) + panic("UART baud rate undefined"); +#else + stdio_bi_decl_if_func_used(bi_program_feature("UART stdin")); + stdio_uart_init_full(uart_default, PICO_DEFAULT_UART_BAUD_RATE, -1, PICO_DEFAULT_UART_RX_PIN); +#endif +#endif +} + +void stdio_uart_init_full(struct uart_inst *uart, uint baud_rate, int tx_pin, int rx_pin) { + uart_instance = uart; + uart_init(uart_instance, baud_rate); + if (tx_pin >= 0) gpio_set_function((uint)tx_pin, GPIO_FUNC_UART); + if (rx_pin >= 0) gpio_set_function((uint)rx_pin, GPIO_FUNC_UART); + stdio_set_driver_enabled(&stdio_uart, true); +} + +static void stdio_uart_out_chars(const char *buf, int length) { + for (int i = 0; i <length; i++) { + uart_putc(uart_instance, buf[i]); + } +} + +int stdio_uart_in_chars(char *buf, int length) { + int i=0; + while (i<length && uart_is_readable(uart_instance)) { + buf[i++] = uart_getc(uart_instance); + } + return i ? i : PICO_ERROR_NO_DATA; +} + +stdio_driver_t stdio_uart = { + .out_chars = stdio_uart_out_chars, + .in_chars = stdio_uart_in_chars, +#if PICO_STDIO_ENABLE_CRLF_SUPPORT + .crlf_enabled = PICO_STDIO_UART_DEFAULT_CRLF +#endif +}; diff --git a/arkanoid/pico/stdio_uart.h b/arkanoid/pico/stdio_uart.h new file mode 100644 index 0000000..0d5c2f0 --- /dev/null +++ b/arkanoid/pico/stdio_uart.h @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_STDIO_UART_H +#define _PICO_STDIO_UART_H + +#include "stdio.h" +#include "hardware/uart.h" + +/** \brief Support for stdin/stdout using UART + * \defgroup pico_stdio_uart pico_stdio_uart + * \ingroup pico_stdio + * + * Linking this library or calling `pico_enable_stdio_uart(TARGET)` in the CMake (which + * achieves the same thing) will add UART to the drivers used for standard output + */ + +// PICO_CONFIG: PICO_STDIO_UART_DEFAULT_CRLF, Default state of CR/LF translation for UART output, type=bool, default=PICO_STDIO_DEFAULT_CRLF, group=pico_stdio_uart +#ifndef PICO_STDIO_UART_DEFAULT_CRLF +#define PICO_STDIO_UART_DEFAULT_CRLF PICO_STDIO_DEFAULT_CRLF +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +extern stdio_driver_t stdio_uart; + +/*! \brief Explicitly initialize stdin/stdout over UART and add it to the current set of stdin/stdout drivers + * \ingroup pico_stdio_uart + * + * This method sets up PICO_DEFAULT_UART_TX_PIN for UART output (if defined), PICO_DEFAULT_UART_RX_PIN for input (if defined) + * and configures the baud rate as PICO_DEFAULT_UART_BAUD_RATE. + * + * \note this method is automatically called by \ref stdio_init_all() if `pico_stdio_uart` is included in the build + */ +void stdio_uart_init(void); + +/*! \brief Explicitly initialize stdout only (no stdin) over UART and add it to the current set of stdout drivers + * \ingroup pico_stdio_uart + * + * This method sets up PICO_DEFAULT_UART_TX_PIN for UART output (if defined) , and configures the baud rate as PICO_DEFAULT_UART_BAUD_RATE + */ +void stdout_uart_init(void); + +/*! \brief Explicitly initialize stdin only (no stdout) over UART and add it to the current set of stdin drivers + * \ingroup pico_stdio_uart + * + * This method sets up PICO_DEFAULT_UART_RX_PIN for UART input (if defined) , and configures the baud rate as PICO_DEFAULT_UART_BAUD_RATE + */ +void stdin_uart_init(void); + +/*! \brief Perform custom initialization initialize stdin/stdout over UART and add it to the current set of stdin/stdout drivers + * \ingroup pico_stdio_uart + * + * \param uart the uart instance to use, \ref uart0 or \ref uart1 + * \param baud_rate the baud rate in Hz + * \param tx_pin the UART pin to use for stdout (or -1 for no stdout) + * \param rx_pin the UART pin to use for stdin (or -1 for no stdin) + */ +void stdio_uart_init_full(uart_inst_t *uart, uint baud_rate, int tx_pin, int rx_pin); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/stdio_usb.c b/arkanoid/pico/stdio_usb.c new file mode 100644 index 0000000..a81600b --- /dev/null +++ b/arkanoid/pico/stdio_usb.c @@ -0,0 +1,135 @@ +/** + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#if !defined(LIB_TINYUSB_HOST) && !defined(LIB_TINYUSB_DEVICE) +#include "tinyusb/tusb.h" + +#include "time.h" +#include "driver.h" +#include "binary_info.h" +#include "mutex.h" +#include "hardware/irq.h" + +static_assert(PICO_STDIO_USB_LOW_PRIORITY_IRQ > RTC_IRQ, ""); // note RTC_IRQ is currently the last one +static mutex_t stdio_usb_mutex; + +static void low_priority_worker_irq(void) { + // if the mutex is already owned, then we are in user code + // in this file which will do a tud_task itself, so we'll just do nothing + // until the next tick; we won't starve + if (mutex_try_enter(&stdio_usb_mutex, NULL)) { + tud_task(); + mutex_exit(&stdio_usb_mutex); + } +} + +static int64_t timer_task(__unused alarm_id_t id, __unused void *user_data) { + irq_set_pending(PICO_STDIO_USB_LOW_PRIORITY_IRQ); + return PICO_STDIO_USB_TASK_INTERVAL_US; +} + +static void stdio_usb_out_chars(const char *buf, int length) { + static uint64_t last_avail_time; + uint32_t owner; + if (!mutex_try_enter(&stdio_usb_mutex, &owner)) { + if (owner == get_core_num()) return; // would deadlock otherwise + mutex_enter_blocking(&stdio_usb_mutex); + } + if (tud_cdc_connected()) { + for (int i = 0; i < length;) { + int n = length - i; + int avail = (int) tud_cdc_write_available(); + if (n > avail) n = avail; + if (n) { + int n2 = (int) tud_cdc_write(buf + i, (uint32_t)n); + tud_task(); + tud_cdc_write_flush(); + i += n2; + last_avail_time = time_us_64(); + } else { + tud_task(); + tud_cdc_write_flush(); + if (!tud_cdc_connected() || + (!tud_cdc_write_available() && time_us_64() > last_avail_time + PICO_STDIO_USB_STDOUT_TIMEOUT_US)) { + break; + } + } + } + } else { + // reset our timeout + last_avail_time = 0; + } + mutex_exit(&stdio_usb_mutex); +} + +int stdio_usb_in_chars(char *buf, int length) { + uint32_t owner; + if (!mutex_try_enter(&stdio_usb_mutex, &owner)) { + if (owner == get_core_num()) return PICO_ERROR_NO_DATA; // would deadlock otherwise + mutex_enter_blocking(&stdio_usb_mutex); + } + int rc = PICO_ERROR_NO_DATA; + if (tud_cdc_connected() && tud_cdc_available()) { + int count = (int) tud_cdc_read(buf, (uint32_t) length); + rc = count ? count : PICO_ERROR_NO_DATA; + } + mutex_exit(&stdio_usb_mutex); + return rc; +} + +stdio_driver_t stdio_usb = { + .out_chars = stdio_usb_out_chars, + .in_chars = stdio_usb_in_chars, +#if PICO_STDIO_ENABLE_CRLF_SUPPORT + .crlf_enabled = PICO_STDIO_USB_DEFAULT_CRLF +#endif +}; + +bool stdio_usb_init(void) { +#if !PICO_NO_BI_STDIO_USB + bi_decl_if_func_used(bi_program_feature("USB stdin / stdout")); +#endif + + // initialize TinyUSB + tusb_init(); + + irq_set_exclusive_handler(PICO_STDIO_USB_LOW_PRIORITY_IRQ, low_priority_worker_irq); + irq_set_enabled(PICO_STDIO_USB_LOW_PRIORITY_IRQ, true); + + mutex_init(&stdio_usb_mutex); + bool rc = add_alarm_in_us(PICO_STDIO_USB_TASK_INTERVAL_US, timer_task, NULL, true); + if (rc) { + stdio_set_driver_enabled(&stdio_usb, true); +#if PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS +#if PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS > 0 + absolute_time_t until = make_timeout_time_ms(PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS); +#else + absolute_time_t until = at_the_end_of_time; +#endif + do { + if (stdio_usb_connected()) { +#if PICO_STDIO_USB_POST_CONNECT_WAIT_DELAY_MS != 0 + sleep_ms(PICO_STDIO_USB_POST_CONNECT_WAIT_DELAY_MS); +#endif + break; + } + sleep_ms(10); + } while (!time_reached(until)); +#endif + } + return rc; +} + +bool stdio_usb_connected(void) { + return tud_cdc_connected(); +} +#else +#include "stdio_usb.h" +#warning stdio USB was configured, but is being disabled as TinyUSB is explicitly linked +bool stdio_usb_init(void) { + return false; +} +#endif diff --git a/arkanoid/pico/stdio_usb.h b/arkanoid/pico/stdio_usb.h new file mode 100644 index 0000000..86169ae --- /dev/null +++ b/arkanoid/pico/stdio_usb.h @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_STDIO_USB_H +#define _PICO_STDIO_USB_H + +#include "stdio.h" + +/** \brief Support for stdin/stdout over USB serial (CDC) + * \defgroup pico_stdio_usb pico_stdio_usb + * \ingroup pico_stdio + * + * Linking this library or calling `pico_enable_stdio_usb(TARGET)` in the CMake (which + * achieves the same thing) will add USB CDC to the drivers used for standard output + * + * Note this library is a developer convenience. It is not applicable in all cases; for one it takes full control of the USB device precluding your + * use of the USB in device or host mode. For this reason, this library will automatically disengage if you try to using it alongside \ref tinyusb_device or + * \ref tinyusb_host. It also takes control of a lower level IRQ and sets up a periodic background task. + * + * This library also includes (by default) functionality to enable the RP2040 to be reset over the USB interface. + */ + +// PICO_CONFIG: PICO_STDIO_USB_DEFAULT_CRLF, Default state of CR/LF translation for USB output, type=bool, default=PICO_STDIO_DEFAULT_CRLF, group=pico_stdio_usb +#ifndef PICO_STDIO_USB_DEFAULT_CRLF +#define PICO_STDIO_USB_DEFAULT_CRLF PICO_STDIO_DEFAULT_CRLF +#endif + +// PICO_CONFIG: PICO_STDIO_USB_STDOUT_TIMEOUT_US, Number of microseconds to be blocked trying to write USB output before assuming the host has disappeared and discarding data, default=500000, group=pico_stdio_usb +#ifndef PICO_STDIO_USB_STDOUT_TIMEOUT_US +#define PICO_STDIO_USB_STDOUT_TIMEOUT_US 500000 +#endif + +// todo perhaps unnecessarily frequent? +// PICO_CONFIG: PICO_STDIO_USB_TASK_INTERVAL_US, Period of microseconds between calling tud_task in the background, default=1000, advanced=true, group=pico_stdio_usb +#ifndef PICO_STDIO_USB_TASK_INTERVAL_US +#define PICO_STDIO_USB_TASK_INTERVAL_US 1000 +#endif + +// PICO_CONFIG: PICO_STDIO_USB_LOW_PRIORITY_IRQ, low priority (non hardware) IRQ number to claim for tud_task() background execution, default=31, advanced=true, group=pico_stdio_usb +#ifndef PICO_STDIO_USB_LOW_PRIORITY_IRQ +#define PICO_STDIO_USB_LOW_PRIORITY_IRQ 31 +#endif + +// PICO_CONFIG: PICO_STDIO_USB_ENABLE_RESET_VIA_BAUD_RATE, Enable/disable resetting into BOOTSEL mode if the host sets the baud rate to a magic value (PICO_STDIO_USB_RESET_MAGIC_BAUD_RATE), type=bool, default=1, group=pico_stdio_usb +#ifndef PICO_STDIO_USB_ENABLE_RESET_VIA_BAUD_RATE +#define PICO_STDIO_USB_ENABLE_RESET_VIA_BAUD_RATE 1 +#endif + +// PICO_CONFIG: PICO_STDIO_USB_RESET_MAGIC_BAUD_RATE, baud rate that if selected causes a reset into BOOTSEL mode (if PICO_STDIO_USB_ENABLE_RESET_VIA_BAUD_RATE is set), default=1200, group=pico_stdio_usb +#ifndef PICO_STDIO_USB_RESET_MAGIC_BAUD_RATE +#define PICO_STDIO_USB_RESET_MAGIC_BAUD_RATE 1200 +#endif + +// PICO_CONFIG: PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS, Maximum number of milliseconds to wait during initialization for a CDC connection from the host (negative means indefinite) during initialization, default=0, group=pico_stdio_usb +#ifndef PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS +#define PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS 0 +#endif + +// PICO_CONFIG: PICO_STDIO_USB_POST_CONNECT_WAIT_DELAY_MS, Number of extra milliseconds to wait when using PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS after a host CDC connection is detected (some host terminals seem to sometimes lose transmissions sent right after connection), default=50, group=pico_stdio_usb +#ifndef PICO_STDIO_USB_POST_CONNECT_WAIT_DELAY_MS +#define PICO_STDIO_USB_POST_CONNECT_WAIT_DELAY_MS 50 +#endif + +// PICO_CONFIG: PICO_STDIO_USB_RESET_BOOTSEL_ACTIVITY_LED, Optionally define a pin to use as bootloader activity LED when BOOTSEL mode is entered via USB (either VIA_BAUD_RATE or VIA_VENDOR_INTERFACE), type=int, min=0, max=29, group=pico_stdio_usb + +// PICO_CONFIG: PICO_STDIO_USB_RESET_BOOTSEL_FIXED_ACTIVITY_LED, Whether the pin specified by PICO_STDIO_USB_RESET_BOOTSEL_ACTIVITY_LED is fixed or can be modified by picotool over the VENDOR USB interface, type=bool, default=0, group=pico_stdio_usb +#ifndef PICO_STDIO_USB_RESET_BOOTSEL_FIXED_ACTIVITY_LED +#define PICO_STDIO_USB_RESET_BOOTSEL_FIXED_ACTIVITY_LED 0 +#endif + +// Any modes disabled here can't be re-enabled by picotool via VENDOR_INTERFACE. +// PICO_CONFIG: PICO_STDIO_USB_RESET_BOOTSEL_INTERFACE_DISABLE_MASK, Optionally disable either the mass storage interface (bit 0) or the PICOBOOT interface (bit 1) when entering BOOTSEL mode via USB (either VIA_BAUD_RATE or VIA_VENDOR_INTERFACE), type=int, min=0, max=3, default=0, group=pico_stdio_usb +#ifndef PICO_STDIO_USB_RESET_BOOTSEL_INTERFACE_DISABLE_MASK +#define PICO_STDIO_USB_RESET_BOOTSEL_INTERFACE_DISABLE_MASK 0u +#endif + +// PICO_CONFIG: PICO_STDIO_USB_ENABLE_RESET_VIA_VENDOR_INTERFACE, Enable/disable resetting into BOOTSEL mode via an additional VENDOR USB interface - enables picotool based reset, type=bool, default=1, group=pico_stdio_usb +#ifndef PICO_STDIO_USB_ENABLE_RESET_VIA_VENDOR_INTERFACE +#define PICO_STDIO_USB_ENABLE_RESET_VIA_VENDOR_INTERFACE 1 +#endif + +// PICO_CONFIG: PICO_STDIO_USB_RESET_INTERFACE_SUPPORT_RESET_TO_BOOTSEL, If vendor reset interface is included allow rebooting to BOOTSEL mode, type=bool, default=1, group=pico_stdio_usb +#ifndef PICO_STDIO_USB_RESET_INTERFACE_SUPPORT_RESET_TO_BOOTSEL +#define PICO_STDIO_USB_RESET_INTERFACE_SUPPORT_RESET_TO_BOOTSEL 1 +#endif + +// PICO_CONFIG: PICO_STDIO_USB_RESET_INTERFACE_SUPPORT_RESET_TO_FLASH_BOOT, If vendor reset interface is included allow rebooting with regular flash boot, type=bool, default=1, group=pico_stdio_usb +#ifndef PICO_STDIO_USB_RESET_INTERFACE_SUPPORT_RESET_TO_FLASH_BOOT +#define PICO_STDIO_USB_RESET_INTERFACE_SUPPORT_RESET_TO_FLASH_BOOT 1 +#endif + +// PICO_CONFIG: PICO_STDIO_USB_RESET_RESET_TO_FLASH_DELAY_MS, delays in ms before rebooting via regular flash boot, default=100, group=pico_stdio_usb +#ifndef PICO_STDIO_USB_RESET_RESET_TO_FLASH_DELAY_MS +#define PICO_STDIO_USB_RESET_RESET_TO_FLASH_DELAY_MS 100 +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +extern stdio_driver_t stdio_usb; + +/*! \brief Explicitly initialize USB stdio and add it to the current set of stdin drivers + * \ingroup pico_stdio_usb + * + * \ref PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS can be set to cause this method to wait for a CDC connection + * from the host before returning, which is useful if you don't want any initial stdout output to be discarded + * before the connection is established. + * + * \return true if the USB CDC was initialized, false if an error occurred + */ +bool stdio_usb_init(void); + +/*! \brief Check if there is an active stdio CDC connection to a host + * \ingroup pico_stdio_usb + * + * \return true if stdio is connected over CDC + */ +bool stdio_usb_connected(void); +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/stdio_usb_descriptors.c b/arkanoid/pico/stdio_usb_descriptors.c new file mode 100644 index 0000000..43a00fc --- /dev/null +++ b/arkanoid/pico/stdio_usb_descriptors.c @@ -0,0 +1,151 @@ +/* + * This file is based on a file originally part of the + * MicroPython project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * Copyright (c) 2019 Damien P. George + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#if !defined(LIB_TINYUSB_HOST) && !defined(LIB_TINYUSB_DEVICE) + +#include "tinyusb/tusb.h" +#include "reset_interface.h" +#include "unique_id.h" + +#define USBD_VID (0x2E8A) // Raspberry Pi +#define USBD_PID (0x000a) // Raspberry Pi Pico SDK CDC + +#define TUD_RPI_RESET_DESC_LEN 9 +#if !PICO_STDIO_USB_ENABLE_RESET_VIA_VENDOR_INTERFACE +#define USBD_DESC_LEN (TUD_CONFIG_DESC_LEN + TUD_CDC_DESC_LEN) +#else +#define USBD_DESC_LEN (TUD_CONFIG_DESC_LEN + TUD_CDC_DESC_LEN + TUD_RPI_RESET_DESC_LEN) +#endif +#define USBD_MAX_POWER_MA (250) + +#define USBD_ITF_CDC (0) // needs 2 interfaces +#if !PICO_STDIO_USB_ENABLE_RESET_VIA_VENDOR_INTERFACE +#define USBD_ITF_MAX (2) +#else +#define USBD_ITF_RPI_RESET (2) +#define USBD_ITF_MAX (3) +#endif + +#define USBD_CDC_EP_CMD (0x81) +#define USBD_CDC_EP_OUT (0x02) +#define USBD_CDC_EP_IN (0x82) +#define USBD_CDC_CMD_MAX_SIZE (8) +#define USBD_CDC_IN_OUT_MAX_SIZE (64) + +#define USBD_STR_0 (0x00) +#define USBD_STR_MANUF (0x01) +#define USBD_STR_PRODUCT (0x02) +#define USBD_STR_SERIAL (0x03) +#define USBD_STR_CDC (0x04) +#define USBD_STR_RPI_RESET (0x05) + +// Note: descriptors returned from callbacks must exist long enough for transfer to complete + +static const tusb_desc_device_t usbd_desc_device = { + .bLength = sizeof(tusb_desc_device_t), + .bDescriptorType = TUSB_DESC_DEVICE, + .bcdUSB = 0x0200, + .bDeviceClass = TUSB_CLASS_MISC, + .bDeviceSubClass = MISC_SUBCLASS_COMMON, + .bDeviceProtocol = MISC_PROTOCOL_IAD, + .bMaxPacketSize0 = CFG_TUD_ENDPOINT0_SIZE, + .idVendor = USBD_VID, + .idProduct = USBD_PID, + .bcdDevice = 0x0100, + .iManufacturer = USBD_STR_MANUF, + .iProduct = USBD_STR_PRODUCT, + .iSerialNumber = USBD_STR_SERIAL, + .bNumConfigurations = 1, +}; + +#define TUD_RPI_RESET_DESCRIPTOR(_itfnum, _stridx) \ + /* Interface */\ + 9, TUSB_DESC_INTERFACE, _itfnum, 0, 0, TUSB_CLASS_VENDOR_SPECIFIC, RESET_INTERFACE_SUBCLASS, RESET_INTERFACE_PROTOCOL, _stridx, + +static const uint8_t usbd_desc_cfg[USBD_DESC_LEN] = { + TUD_CONFIG_DESCRIPTOR(1, USBD_ITF_MAX, USBD_STR_0, USBD_DESC_LEN, + 0, USBD_MAX_POWER_MA), + + TUD_CDC_DESCRIPTOR(USBD_ITF_CDC, USBD_STR_CDC, USBD_CDC_EP_CMD, + USBD_CDC_CMD_MAX_SIZE, USBD_CDC_EP_OUT, USBD_CDC_EP_IN, USBD_CDC_IN_OUT_MAX_SIZE), + +#if PICO_STDIO_USB_ENABLE_RESET_VIA_VENDOR_INTERFACE + TUD_RPI_RESET_DESCRIPTOR(USBD_ITF_RPI_RESET, USBD_STR_RPI_RESET) +#endif +}; + +static char usbd_serial_str[PICO_UNIQUE_BOARD_ID_SIZE_BYTES * 2 + 1]; + +static const char *const usbd_desc_str[] = { + [USBD_STR_MANUF] = "Raspberry Pi", + [USBD_STR_PRODUCT] = "Pico", + [USBD_STR_SERIAL] = usbd_serial_str, + [USBD_STR_CDC] = "Board CDC", +#if PICO_STDIO_USB_ENABLE_RESET_VIA_VENDOR_INTERFACE + [USBD_STR_RPI_RESET] = "Reset", +#endif +}; + +const uint8_t *tud_descriptor_device_cb(void) { + return (const uint8_t *)&usbd_desc_device; +} + +const uint8_t *tud_descriptor_configuration_cb(__unused uint8_t index) { + return usbd_desc_cfg; +} + +const uint16_t *tud_descriptor_string_cb(uint8_t index, __unused uint16_t langid) { + #define DESC_STR_MAX (20) + static uint16_t desc_str[DESC_STR_MAX]; + + // Assign the SN using the unique flash id + if (!usbd_serial_str[0]) { + pico_get_unique_board_id_string(usbd_serial_str, sizeof(usbd_serial_str)); + } + + uint8_t len; + if (index == 0) { + desc_str[1] = 0x0409; // supported language is English + len = 1; + } else { + if (index >= sizeof(usbd_desc_str) / sizeof(usbd_desc_str[0])) { + return NULL; + } + const char *str = usbd_desc_str[index]; + for (len = 0; len < DESC_STR_MAX - 1 && str[len]; ++len) { + desc_str[1 + len] = str[len]; + } + } + + // first byte is length (including header), second byte is string type + desc_str[0] = (uint16_t) ((TUSB_DESC_STRING << 8) | (2 * len + 2)); + + return desc_str; +} + +#endif diff --git a/arkanoid/pico/stdlib.c b/arkanoid/pico/stdlib.c new file mode 100644 index 0000000..05b937a --- /dev/null +++ b/arkanoid/pico/stdlib.c @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "stdlib.h" +#include "hardware/pll.h" +#include "hardware/clocks.h" +#if LIB_PICO_STDIO_UART +#include "stdio_uart.h" +#else +#include "binary_info.h" +#endif + +// everything running off the USB oscillator +void set_sys_clock_48mhz() { + if (!running_on_fpga()) { + // Change clk_sys to be 48MHz. The simplest way is to take this from PLL_USB + // which has a source frequency of 48MHz + clock_configure(clk_sys, + CLOCKS_CLK_SYS_CTRL_SRC_VALUE_CLKSRC_CLK_SYS_AUX, + CLOCKS_CLK_SYS_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB, + 48 * MHZ, + 48 * MHZ); + + // Turn off PLL sys for good measure + pll_deinit(pll_sys); + + // CLK peri is clocked from clk_sys so need to change clk_peri's freq + clock_configure(clk_peri, + 0, + CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_CLK_SYS, + 48 * MHZ, + 48 * MHZ); + } +} + +void set_sys_clock_pll(uint32_t vco_freq, uint post_div1, uint post_div2) { + if (!running_on_fpga()) { + clock_configure(clk_sys, + CLOCKS_CLK_SYS_CTRL_SRC_VALUE_CLKSRC_CLK_SYS_AUX, + CLOCKS_CLK_SYS_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB, + 48 * MHZ, + 48 * MHZ); + + pll_init(pll_sys, 1, vco_freq, post_div1, post_div2); + uint32_t freq = vco_freq / (post_div1 * post_div2); + + // Configure clocks + // CLK_REF = XOSC (12MHz) / 1 = 12MHz + clock_configure(clk_ref, + CLOCKS_CLK_REF_CTRL_SRC_VALUE_XOSC_CLKSRC, + 0, // No aux mux + 12 * MHZ, + 12 * MHZ); + + // CLK SYS = PLL SYS (125MHz) / 1 = 125MHz + clock_configure(clk_sys, + CLOCKS_CLK_SYS_CTRL_SRC_VALUE_CLKSRC_CLK_SYS_AUX, + CLOCKS_CLK_SYS_CTRL_AUXSRC_VALUE_CLKSRC_PLL_SYS, + freq, freq); + + clock_configure(clk_peri, + 0, // Only AUX mux on ADC + CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_CLKSRC_PLL_USB, + 48 * MHZ, + 48 * MHZ); + } +} + +bool check_sys_clock_khz(uint32_t freq_khz, uint *vco_out, uint *postdiv1_out, uint *postdiv_out) { + uint crystal_freq_khz = clock_get_hz(clk_ref) / 1000; + for (uint fbdiv = 320; fbdiv >= 16; fbdiv--) { + uint vco = fbdiv * crystal_freq_khz; + if (vco < 400000 || vco > 1600000) continue; + for (uint postdiv1 = 7; postdiv1 >= 1; postdiv1--) { + for (uint postdiv2 = postdiv1; postdiv2 >= 1; postdiv2--) { + uint out = vco / (postdiv1 * postdiv2); + if (out == freq_khz && !(vco % (postdiv1 * postdiv2))) { + *vco_out = vco * 1000; + *postdiv1_out = postdiv1; + *postdiv_out = postdiv2; + return true; + } + } + } + } + return false; +} + +void setup_default_uart() { +#if LIB_PICO_STDIO_UART + stdio_uart_init(); +#elif defined(PICO_DEFAULT_UART_BAUD_RATE) && defined(PICO_DEFAULT_UART_TX_PIN) && defined(PICO_DEFAULT_UART_RX_PIN) + // this is mostly for backwards compatibility - stdio_uart_init is a bit more nuanced, and usually likely to be present + uart_init(uart_default, PICO_DEFAULT_UART_BAUD_RATE); + if (PICO_DEFAULT_UART_TX_PIN >= 0) + gpio_set_function(PICO_DEFAULT_UART_TX_PIN, GPIO_FUNC_UART); + if (PICO_DEFAULT_UART_RX_PIN >= 0) + gpio_set_function(PICO_DEFAULT_UART_RX_PIN, GPIO_FUNC_UART); + bi_decl_if_func_used(bi_2pins_with_func(PICO_DEFAULT_UART_RX_PIN, PICO_DEFAULT_UART_TX_PIN, GPIO_FUNC_UART)); +#endif +} diff --git a/arkanoid/pico/stdlib.h b/arkanoid/pico/stdlib.h new file mode 100644 index 0000000..e8b346d --- /dev/null +++ b/arkanoid/pico/stdlib.h @@ -0,0 +1,140 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_STDLIB_H +#define _PICO_STDLIB_H + +#include "pico.h" +#include "stdio.h" +#include "time.h" +#include "hardware/gpio.h" +#include "hardware/uart.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file stdlib.h + * \defgroup pico_stdlib pico_stdlib + * + * Aggregation of a core subset of Raspberry Pi Pico SDK libraries used by most executables along with some additional + * utility methods. Including pico_stdlib gives you everything you need to get a basic program running + * which prints to stdout or flashes a LED + * + * This library aggregates: + * - @ref hardware_uart + * - @ref hardware_gpio + * - @ref pico_binary_info + * - @ref pico_runtime + * - @ref pico_platform + * - @ref pico_printf + * - @ref pico_stdio + * - @ref pico_standard_link + * - @ref pico_util + * + * There are some basic default values used by these functions that will default to + * usable values, however, they can be customised in a board definition header via + * config.h or similar + */ + +// Note PICO_STDIO_UART, PICO_STDIO_USB, PICO_STDIO_SEMIHOSTING are set by the +// respective INTERFACE libraries, so these defines are set if the library +// is included for the target executable + +#if LIB_PICO_STDIO_UART +#include "stdio_uart.h" +#endif + +#if LIB_PICO_STDIO_USB +#include "stdio_usb.h" +#endif + +#if LIB_PICO_STDIO_SEMIHOSTING +#include "stdio_semihosting.h" +#endif + +// PICO_CONFIG: PICO_DEFAULT_LED_PIN, Optionally define a pin that drives a regular LED on the board, group=pico_stdlib + +// PICO_CONFIG: PICO_DEFAULT_LED_PIN_INVERTED, 1 if LED is inverted or 0 if not, type=int, default=0, group=pico_stdlib +#ifndef PICO_DEFAULT_LED_PIN_INVERTED +#define PICO_DEFAULT_LED_PIN_INVERTED 0 +#endif + +// PICO_CONFIG: PICO_DEFAULT_WS2812_PIN, Optionally define a pin that controls data to a WS2812 compatible LED on the board, group=pico_stdlib +// PICO_CONFIG: PICO_DEFAULT_WS2812_POWER_PIN, Optionally define a pin that controls power to a WS2812 compatible LED on the board, group=pico_stdlib + +/*! \brief Set up the default UART and assign it to the default GPIO's + * \ingroup pico_stdlib + * + * By default this will use UART 0, with TX to pin GPIO 0, + * RX to pin GPIO 1, and the baudrate to 115200 + * + * Calling this method also initializes stdin/stdout over UART if the + * @ref pico_stdio_uart library is linked. + * + * Defaults can be changed using configuration defines, + * PICO_DEFAULT_UART_INSTANCE, + * PICO_DEFAULT_UART_BAUD_RATE + * PICO_DEFAULT_UART_TX_PIN + * PICO_DEFAULT_UART_RX_PIN + */ +void setup_default_uart(void); + +/*! \brief Initialise the system clock to 48MHz + * \ingroup pico_stdlib + * + * Set the system clock to 48MHz, and set the peripheral clock to match. + */ +void set_sys_clock_48mhz(void); + +/*! \brief Initialise the system clock + * \ingroup pico_stdlib + * + * \param vco_freq The voltage controller oscillator frequency to be used by the SYS PLL + * \param post_div1 The first post divider for the SYS PLL + * \param post_div2 The second post divider for the SYS PLL. + * + * See the PLL documentation in the datasheet for details of driving the PLLs. + */ +void set_sys_clock_pll(uint32_t vco_freq, uint post_div1, uint post_div2); + +/*! \brief Check if a given system clock frequency is valid/attainable + * \ingroup pico_stdlib + * + * \param freq_khz Requested frequency + * \param vco_freq_out On success, the voltage controller oscillator frequeucny to be used by the SYS PLL + * \param post_div1_out On success, The first post divider for the SYS PLL + * \param post_div2_out On success, The second post divider for the SYS PLL. + * @return true if the frequency is possible and the output parameters have been written. + */ +bool check_sys_clock_khz(uint32_t freq_khz, uint *vco_freq_out, uint *post_div1_out, uint *post_div2_out); + +/*! \brief Attempt to set a system clock frequency in khz + * \ingroup pico_stdlib + * + * Note that not all clock frequencies are possible; it is preferred that you + * use src/rp2_common/hardware_clocks/scripts/vcocalc.py to calculate the parameters + * for use with set_sys_clock_pll + * + * \param freq_khz Requested frequency + * \param required if true then this function will assert if the frequency is not attainable. + * \return true if the clock was configured + */ +static inline bool set_sys_clock_khz(uint32_t freq_khz, bool required) { + uint vco, postdiv1, postdiv2; + if (check_sys_clock_khz(freq_khz, &vco, &postdiv1, &postdiv2)) { + set_sys_clock_pll(vco, postdiv1, postdiv2); + return true; + } else if (required) { + panic("System clock of %u kHz cannot be exactly achieved", freq_khz); + } + return false; +} + +#ifdef __cplusplus +} +#endif +#endif diff --git a/arkanoid/pico/structure.h b/arkanoid/pico/structure.h new file mode 100644 index 0000000..49d2fd6 --- /dev/null +++ b/arkanoid/pico/structure.h @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_BINARY_INFO_STRUCTURE_H +#define _PICO_BINARY_INFO_STRUCTURE_H + +// NOTE: This file may be included by non SDK code, so does not use SDK includes + +// NOTE: ALL CHANGES MUST BE BACKWARDS COMPATIBLE + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> + +#ifndef __packed +#define __packed __attribute__((packed)) +#endif + +typedef struct _binary_info_core binary_info_t; + +#define BINARY_INFO_TYPE_RAW_DATA 1 +#define BINARY_INFO_TYPE_SIZED_DATA 2 +#define BINARY_INFO_TYPE_BINARY_INFO_LIST_ZERO_TERMINATED 3 +#define BINARY_INFO_TYPE_BSON 4 +#define BINARY_INFO_TYPE_ID_AND_INT 5 +#define BINARY_INFO_TYPE_ID_AND_STRING 6 +// traditional block device +#define BINARY_INFO_TYPE_BLOCK_DEVICE 7 +#define BINARY_INFO_TYPE_PINS_WITH_FUNC 8 +#define BINARY_INFO_TYPE_PINS_WITH_NAME 9 +#define BINARY_INFO_TYPE_PINS_WITH_NAMES 9 +#define BINARY_INFO_TYPE_NAMED_GROUP 10 + +// note plan is to reserve c1 = 0->31 for "collision tags"; i.e. +// for which you should always use random IDs with the binary_info, +// giving you 4 + 8 + 32 = 44 bits to avoid collisions +#define BINARY_INFO_MAKE_TAG(c1, c2) ((((uint)c2&0xffu)<<8u)|((uint)c1&0xffu)) + +// Raspberry Pi defined. do not use +#define BINARY_INFO_TAG_RASPBERRY_PI BINARY_INFO_MAKE_TAG('R','P') + +#define BINARY_INFO_ID_RP_PROGRAM_NAME 0x02031c86 +#define BINARY_INFO_ID_RP_PROGRAM_VERSION_STRING 0x11a9bc3a +#define BINARY_INFO_ID_RP_PROGRAM_BUILD_DATE_STRING 0x9da22254 +#define BINARY_INFO_ID_RP_BINARY_END 0x68f465de +#define BINARY_INFO_ID_RP_PROGRAM_URL 0x1856239a +#define BINARY_INFO_ID_RP_PROGRAM_DESCRIPTION 0xb6a07c19 +#define BINARY_INFO_ID_RP_PROGRAM_FEATURE 0xa1f4b453 +#define BINARY_INFO_ID_RP_PROGRAM_BUILD_ATTRIBUTE 0x4275f0d3 +#define BINARY_INFO_ID_RP_SDK_VERSION 0x5360b3ab +#define BINARY_INFO_ID_RP_PICO_BOARD 0xb63cffbb +#define BINARY_INFO_ID_RP_BOOT2_NAME 0x7f8882e1 + +#if PICO_ON_DEVICE +#define bi_ptr_of(x) x * +#else +#define bi_ptr_of(x) uint32_t +#endif +typedef struct __packed _binary_info_core { + uint16_t type; + uint16_t tag; +} binary_info_core_t; + +typedef struct __packed _binary_info_raw_data { + struct _binary_info_core core; + uint8_t bytes[1]; +} binary_info_raw_data_t; + +typedef struct __packed _binary_info_sized_data { + struct _binary_info_core core; + uint32_t length; + uint8_t bytes[1]; +} binary_info_sized_data_t; + +typedef struct __packed _binary_info_list_zero_terminated { + struct _binary_info_core core; + bi_ptr_of(binary_info_t) list; +} binary_info_list_zero_terminated_t; + +typedef struct __packed _binary_info_id_and_int { + struct _binary_info_core core; + uint32_t id; + int32_t value; +} binary_info_id_and_int_t; + +typedef struct __packed _binary_info_id_and_string { + struct _binary_info_core core; + uint32_t id; + bi_ptr_of(const char) value; +} binary_info_id_and_string_t; + +typedef struct __packed _binary_info_block_device { + struct _binary_info_core core; + bi_ptr_of(const char) name; // optional static name (independent of what is formatted) + uint32_t address; + uint32_t size; + bi_ptr_of(binary_info_t) extra; // additional info + uint16_t flags; +} binary_info_block_device_t; + +#define BI_PINS_ENCODING_RANGE 1 +#define BI_PINS_ENCODING_MULTI 2 + +typedef struct __packed _binary_info_pins_with_func { + struct _binary_info_core core; + // p4_5 : p3_5 : p2_5 : p1_5 : p0_5 : func_4 : 001_3 //individual pins p0,p1,p2,p3,p4 ... if fewer than 5 then duplicate p + // phi_5 : plo_5 : func_4 : 010_3 // pin range plo-phi inclusive + uint32_t pin_encoding; +} binary_info_pins_with_func_t; + +typedef struct __packed _binary_info_pins_with_name { + struct _binary_info_core core; + uint32_t pin_mask; + bi_ptr_of(const char) label; +} binary_info_pins_with_name_t; + +#define BI_NAMED_GROUP_SHOW_IF_EMPTY 0x0001 // default is to hide +#define BI_NAMED_GROUP_SEPARATE_COMMAS 0x0002 // default is newlines +#define BI_NAMED_GROUP_SORT_ALPHA 0x0004 // default is no sort +#define BI_NAMED_GROUP_ADVANCED 0x0008 // if set, then only shown in say info -a + +typedef struct __packed _binary_info_named_group { + struct _binary_info_core core; + uint32_t parent_id; + uint16_t flags; + uint16_t group_tag; + uint32_t group_id; + bi_ptr_of(const char) label; +} binary_info_named_group_t; + +enum { + BINARY_INFO_BLOCK_DEV_FLAG_READ = + 1 << 0, // if not readable, then it is basically hidden, but tools may choose to avoid overwriting it + BINARY_INFO_BLOCK_DEV_FLAG_WRITE = 1 << 1, + BINARY_INFO_BLOCK_DEV_FLAG_REFORMAT = 1 << 2, // may be reformatted.. + + BINARY_INFO_BLOCK_DEV_FLAG_PT_UNKNOWN = 0 << 4, // unknown free to look + BINARY_INFO_BLOCK_DEV_FLAG_PT_MBR = 1 << 4, // expect MBR + BINARY_INFO_BLOCK_DEV_FLAG_PT_GPT = 2 << 4, // expect GPT + BINARY_INFO_BLOCK_DEV_FLAG_PT_NONE = 3 << 4, // no partition table +}; + +#ifdef __cplusplus +} +#endif +#endif \ No newline at end of file diff --git a/arkanoid/pico/sync.h b/arkanoid/pico/sync.h new file mode 100644 index 0000000..6800cc0 --- /dev/null +++ b/arkanoid/pico/sync.h @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_SYNC_H +#define _PICO_SYNC_H + +/** \file sync.h + * \defgroup pico_sync pico_sync + * Synchronization primitives and mutual exclusion + */ + +#include "sem.h" +#include "mutex.h" +#include "critical_section.h" + +#endif diff --git a/arkanoid/pico/time.c b/arkanoid/pico/time.c new file mode 100644 index 0000000..77212b6 --- /dev/null +++ b/arkanoid/pico/time.c @@ -0,0 +1,413 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include <limits.h> +#include <inttypes.h> +#include <stdio.h> +#include <stdlib.h> +#include "pico.h" +#include "time.h" +#include "pheap.h" +#include "sync.h" + +const absolute_time_t ABSOLUTE_TIME_INITIALIZED_VAR(nil_time, 0); +const absolute_time_t ABSOLUTE_TIME_INITIALIZED_VAR(at_the_end_of_time, INT64_MAX); + +typedef struct alarm_pool_entry { + absolute_time_t target; + alarm_callback_t callback; + void *user_data; +} alarm_pool_entry_t; + +typedef struct alarm_pool { + pheap_t *heap; + spin_lock_t *lock; + alarm_pool_entry_t *entries; + // one byte per entry, used to provide more longevity to public IDs than heap node ids do + // (this is increment every time the heap node id is re-used) + uint8_t *entry_ids_high; + alarm_id_t alarm_in_progress; // this is set during a callback from the IRQ handler... it can be cleared by alarm_cancel to prevent repeats + uint8_t hardware_alarm_num; +} alarm_pool_t; + +#if !PICO_TIME_DEFAULT_ALARM_POOL_DISABLED +// To avoid bringing in calloc, we statically allocate the arrays and the heap +PHEAP_DEFINE_STATIC(default_alarm_pool_heap, PICO_TIME_DEFAULT_ALARM_POOL_MAX_TIMERS); +static alarm_pool_entry_t default_alarm_pool_entries[PICO_TIME_DEFAULT_ALARM_POOL_MAX_TIMERS]; +static uint8_t default_alarm_pool_entry_ids_high[PICO_TIME_DEFAULT_ALARM_POOL_MAX_TIMERS]; +static lock_core_t sleep_notifier; + +static alarm_pool_t default_alarm_pool = { + .heap = &default_alarm_pool_heap, + .entries = default_alarm_pool_entries, + .entry_ids_high = default_alarm_pool_entry_ids_high, +}; + +static inline bool default_alarm_pool_initialized(void) { + return default_alarm_pool.lock != NULL; +} +#endif + +static alarm_pool_t *pools[NUM_TIMERS]; +static void alarm_pool_post_alloc_init(alarm_pool_t *pool, uint hardware_alarm_num); + + +static inline alarm_pool_entry_t *get_entry(alarm_pool_t *pool, pheap_node_id_t id) { + assert(id && id <= pool->heap->max_nodes); + return pool->entries + id - 1; +} + +static inline uint8_t *get_entry_id_high(alarm_pool_t *pool, pheap_node_id_t id) { + assert(id && id <= pool->heap->max_nodes); + return pool->entry_ids_high + id - 1; +} + +bool timer_pool_entry_comparator(void *user_data, pheap_node_id_t a, pheap_node_id_t b) { + alarm_pool_t *pool = (alarm_pool_t *)user_data; + return to_us_since_boot(get_entry(pool, a)->target) < to_us_since_boot(get_entry(pool, b)->target); +} + +static inline alarm_id_t make_public_id(uint8_t id_high, pheap_node_id_t id) { + return (alarm_id_t)(((uint)id_high << 8u * sizeof(id)) | id); +} + +void alarm_pool_init_default() { +#if !PICO_TIME_DEFAULT_ALARM_POOL_DISABLED + // allow multiple calls for ease of use from host tests + if (!default_alarm_pool_initialized()) { + ph_post_alloc_init(default_alarm_pool.heap, PICO_TIME_DEFAULT_ALARM_POOL_MAX_TIMERS, + timer_pool_entry_comparator, &default_alarm_pool); + alarm_pool_post_alloc_init(&default_alarm_pool, + PICO_TIME_DEFAULT_ALARM_POOL_HARDWARE_ALARM_NUM); + } + lock_init(&sleep_notifier, PICO_SPINLOCK_ID_TIMER); +#endif +} + +#if !PICO_TIME_DEFAULT_ALARM_POOL_DISABLED +alarm_pool_t *alarm_pool_get_default() { + assert(default_alarm_pool_initialized()); + return &default_alarm_pool; +} +#endif + +static pheap_node_id_t add_alarm_under_lock(alarm_pool_t *pool, absolute_time_t time, alarm_callback_t callback, + void *user_data, pheap_node_id_t reuse_id, bool create_if_past, bool *missed) { + pheap_node_id_t id; + if (reuse_id) { + assert(!ph_contains_node(pool->heap, reuse_id)); + id = reuse_id; + } else { + id = ph_new_node(pool->heap); + } + if (id) { + alarm_pool_entry_t *entry = get_entry(pool, id); + entry->target = time; + entry->callback = callback; + entry->user_data = user_data; + if (id == ph_insert_node(pool->heap, id)) { + bool is_missed = hardware_alarm_set_target(pool->hardware_alarm_num, time); + if (is_missed && !create_if_past) { + ph_remove_and_free_node(pool->heap, id); + } + if (missed) *missed = is_missed; + } + } + return id; +} + +static void alarm_pool_alarm_callback(uint alarm_num) { + // note this is called from timer IRQ handler + alarm_pool_t *pool = pools[alarm_num]; + bool again; + do { + absolute_time_t now = get_absolute_time(); + alarm_callback_t callback = NULL; + absolute_time_t target = nil_time; + void *user_data = NULL; + uint8_t id_high; + again = false; + uint32_t save = spin_lock_blocking(pool->lock); + pheap_node_id_t next_id = ph_peek_head(pool->heap); + if (next_id) { + alarm_pool_entry_t *entry = get_entry(pool, next_id); + if (absolute_time_diff_us(now, entry->target) <= 0) { + // we don't free the id in case we need to re-add the timer + pheap_node_id_t __unused removed_id = ph_remove_head(pool->heap, false); + assert(removed_id == next_id); // will be true under lock + target = entry->target; + callback = entry->callback; + user_data = entry->user_data; + assert(callback); + id_high = *get_entry_id_high(pool, next_id); + pool->alarm_in_progress = make_public_id(id_high, removed_id); + } else { + if (hardware_alarm_set_target(alarm_num, entry->target)) { + again = true; + } + } + } + spin_unlock(pool->lock, save); + if (callback) { + int64_t repeat = callback(make_public_id(id_high, next_id), user_data); + save = spin_lock_blocking(pool->lock); + // todo think more about whether we want to keep calling + if (repeat < 0 && pool->alarm_in_progress) { + assert(pool->alarm_in_progress == make_public_id(id_high, next_id)); + add_alarm_under_lock(pool, delayed_by_us(target, (uint64_t)-repeat), callback, user_data, next_id, true, NULL); + } else if (repeat > 0 && pool->alarm_in_progress) { + assert(pool->alarm_in_progress == make_public_id(id_high, next_id)); + add_alarm_under_lock(pool, delayed_by_us(get_absolute_time(), (uint64_t)repeat), callback, user_data, next_id, + true, NULL); + } else { + // need to return the id to the heap + ph_free_node(pool->heap, next_id); + (*get_entry_id_high(pool, next_id))++; // we bump it for next use of id + } + pool->alarm_in_progress = 0; + spin_unlock(pool->lock, save); + again = true; + } + } while (again); +} + +// note the timer is create with IRQs on this core +alarm_pool_t *alarm_pool_create(uint hardware_alarm_num, uint max_timers) { + alarm_pool_t *pool = (alarm_pool_t *) malloc(sizeof(alarm_pool_t)); + pool->heap = ph_create(max_timers, timer_pool_entry_comparator, pool); + pool->entries = (alarm_pool_entry_t *)calloc(max_timers, sizeof(alarm_pool_entry_t)); + pool->entry_ids_high = (uint8_t *)calloc(max_timers, sizeof(uint8_t)); + alarm_pool_post_alloc_init(pool, hardware_alarm_num); + return pool; +} + +void alarm_pool_post_alloc_init(alarm_pool_t *pool, uint hardware_alarm_num) { + hardware_alarm_claim(hardware_alarm_num); + hardware_alarm_cancel(hardware_alarm_num); + hardware_alarm_set_callback(hardware_alarm_num, alarm_pool_alarm_callback); + pool->lock = spin_lock_instance(next_striped_spin_lock_num()); + pool->hardware_alarm_num = (uint8_t) hardware_alarm_num; + pools[hardware_alarm_num] = pool; +} + +void alarm_pool_destroy(alarm_pool_t *pool) { +#if !PICO_TIME_DEFAULT_ALARM_POOL_DISABLED + if (pool == &default_alarm_pool) { + assert(false); // attempt to delete default alarm pool + return; + } +#endif + assert(pools[pool->hardware_alarm_num] == pool); + pools[pool->hardware_alarm_num] = NULL; + // todo clear out timers + ph_destroy(pool->heap); + hardware_alarm_set_callback(pool->hardware_alarm_num, NULL); + hardware_alarm_unclaim(pool->hardware_alarm_num); + free(pool->entry_ids_high); + free(pool->entries); + free(pool); +} + +alarm_id_t alarm_pool_add_alarm_at(alarm_pool_t *pool, absolute_time_t time, alarm_callback_t callback, + void *user_data, bool fire_if_past) { + bool missed = false; + + alarm_id_t public_id; + do { + uint8_t id_high = 0; + uint32_t save = spin_lock_blocking(pool->lock); + + pheap_node_id_t id = add_alarm_under_lock(pool, time, callback, user_data, 0, false, &missed); + if (id) id_high = *get_entry_id_high(pool, id); + + spin_unlock(pool->lock, save); + + if (!id) { + // no space in pheap to allocate an alarm + return -1; + } + + // note that if missed was true, then the id was never added to the pheap (because we + // passed false for create_if_past arg above) + public_id = missed ? 0 : make_public_id(id_high, id); + if (missed && fire_if_past) { + // ... so if fire_if_past == true we call the callback + int64_t repeat = callback(public_id, user_data); + // if not repeated we have no id to return so set public_id to 0, + // otherwise we need to repeat, but will assign a new id next time + // todo arguably this does mean that the id passed to the first callback may differ from subsequent calls + if (!repeat) { + public_id = 0; + break; + } else if (repeat < 0) { + time = delayed_by_us(time, (uint64_t)-repeat); + } else { + time = delayed_by_us(get_absolute_time(), (uint64_t)repeat); + } + } else { + // either: + // a) missed == false && public_id is > 0 + // b) missed == true && fire_if_past == false && public_id = 0 + // but we are done in either case + break; + } + } while (true); + return public_id; +} + +bool alarm_pool_cancel_alarm(alarm_pool_t *pool, alarm_id_t alarm_id) { + bool rc = false; + uint32_t save = spin_lock_blocking(pool->lock); + pheap_node_id_t id = (pheap_node_id_t) alarm_id; + if (ph_contains_node(pool->heap, id)) { + assert(alarm_id != pool->alarm_in_progress); // it shouldn't be in the heap if it is in progress + // check we have the right high value + uint8_t id_high = (uint8_t)((uint)alarm_id >> 8u * sizeof(pheap_node_id_t)); + if (id_high == *get_entry_id_high(pool, id)) { + rc = ph_remove_and_free_node(pool->heap, id); + // note we don't bother to remove the actual hardware alarm timeout... + // it will either do callbacks or not depending on other alarms, and reset the next timeout itself + assert(rc); + } + } else { + if (alarm_id == pool->alarm_in_progress) { + // make sure the alarm doesn't repeat + pool->alarm_in_progress = 0; + } + } + spin_unlock(pool->lock, save); + return rc; +} + +uint alarm_pool_hardware_alarm_num(alarm_pool_t *pool) { + return pool->hardware_alarm_num; +} + +static void alarm_pool_dump_key(pheap_node_id_t id, void *user_data) { + alarm_pool_t *pool = (alarm_pool_t *)user_data; +#if PICO_ON_DEVICE + printf("%lld (hi %02x)", to_us_since_boot(get_entry(pool, id)->target), *get_entry_id_high(pool, id)); +#else + printf("%"PRIu64, to_us_since_boot(get_entry(pool, id)->target)); +#endif +} + +static int64_t repeating_timer_callback(__unused alarm_id_t id, void *user_data) { + repeating_timer_t *rt = (repeating_timer_t *)user_data; + assert(rt->alarm_id == id); + if (rt->callback(rt)) { + return rt->delay_us; + } else { + rt->alarm_id = 0; + return 0; + } +} + +bool alarm_pool_add_repeating_timer_us(alarm_pool_t *pool, int64_t delay_us, repeating_timer_callback_t callback, void *user_data, repeating_timer_t *out) { + if (!delay_us) delay_us = 1; + out->pool = pool; + out->callback = callback; + out->delay_us = delay_us; + out->user_data = user_data; + out->alarm_id = alarm_pool_add_alarm_at(pool, make_timeout_time_us((uint64_t)(delay_us >= 0 ? delay_us : -delay_us)), + repeating_timer_callback, out, true); + // note that if out->alarm_id is 0, then the callback was called during the above call (fire_if_past == true) + // and then the callback removed itself. + return out->alarm_id >= 0; +} + +bool cancel_repeating_timer(repeating_timer_t *timer) { + bool rc = false; + if (timer->alarm_id) { + rc = alarm_pool_cancel_alarm(timer->pool, timer->alarm_id); + timer->alarm_id = 0; + } + return rc; +} + +void alarm_pool_dump(alarm_pool_t *pool) { + uint32_t save = spin_lock_blocking(pool->lock); + ph_dump(pool->heap, alarm_pool_dump_key, pool); + spin_unlock(pool->lock, save); +} + +#if !PICO_TIME_DEFAULT_ALARM_POOL_DISABLED +static int64_t sleep_until_callback(__unused alarm_id_t id, __unused void *user_data) { + uint32_t save = spin_lock_blocking(sleep_notifier.spin_lock); + lock_internal_spin_unlock_with_notify(&sleep_notifier, save); + return 0; +} +#endif + +void sleep_until(absolute_time_t t) { +#if PICO_ON_DEVICE && !defined(NDEBUG) + if (__get_current_exception()) { + panic("Attempted to sleep inside of an exception handler; use busy_wait if you must"); + } +#endif +#if !PICO_TIME_DEFAULT_ALARM_POOL_DISABLED + uint64_t t_us = to_us_since_boot(t); + uint64_t t_before_us = t_us - PICO_TIME_SLEEP_OVERHEAD_ADJUST_US; + // needs to work in the first PICO_TIME_SLEEP_OVERHEAD_ADJUST_US of boot + if (t_before_us > t_us) t_before_us = 0; + absolute_time_t t_before; + update_us_since_boot(&t_before, t_before_us); + if (absolute_time_diff_us(get_absolute_time(), t_before) > 0) { + if (add_alarm_at(t_before, sleep_until_callback, NULL, false) >= 0) { + // able to add alarm for just before the time + while (!time_reached(t_before)) { + uint32_t save = spin_lock_blocking(sleep_notifier.spin_lock); + lock_internal_spin_unlock_with_wait(&sleep_notifier, save); + } + } + } +#else + // hook in case we're in RTOS; note we assume using the alarm pool is better always if available. + sync_internal_yield_until_before(t); +#endif + // now wait until the exact time + busy_wait_until(t); +} + +void sleep_us(uint64_t us) { +#if !PICO_TIME_DEFAULT_ALARM_POOL_DISABLED + sleep_until(make_timeout_time_us(us)); +#else + if (us < PICO_TIME_SLEEP_OVERHEAD_ADJUST_US) { + busy_wait_us(us); + } else { + // hook in case we're in RTOS; note we assume using the alarm pool is better always if available. + absolute_time_t t = make_timeout_time_us(us - PICO_TIME_SLEEP_OVERHEAD_ADJUST_US); + sync_internal_yield_until_before(t); + + // then wait the rest of thw way + busy_wait_until(t); + } +#endif +} + +void sleep_ms(uint32_t ms) { + sleep_us(ms * 1000ull); +} + +bool best_effort_wfe_or_timeout(absolute_time_t timeout_timestamp) { +#if !PICO_TIME_DEFAULT_ALARM_POOL_DISABLED + alarm_id_t id; + id = add_alarm_at(timeout_timestamp, sleep_until_callback, NULL, false); + if (id <= 0) { + tight_loop_contents(); + return time_reached(timeout_timestamp); + } else { + __wfe(); + // we need to clean up if it wasn't us that caused the wfe; if it was this will be a noop. + cancel_alarm(id); + return time_reached(timeout_timestamp); + } +#else + tight_loop_contents(); + return time_reached(timeout_timestamp); +#endif +} diff --git a/arkanoid/pico/time.h b/arkanoid/pico/time.h new file mode 100644 index 0000000..c00b7a8 --- /dev/null +++ b/arkanoid/pico/time.h @@ -0,0 +1,716 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_TIME_H +#define _PICO_TIME_H + +#include "pico.h" +#include "hardware/timer.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file time.h + * \defgroup pico_time pico_time + * + * API for accurate timestamps, sleeping, and time based callbacks + * + * \note The functions defined here provide a much more powerful and user friendly wrapping around the + * low level hardware timer functionality. For these functions (and any other SDK functionality + * e.g. timeouts, that relies on them) to work correctly, the hardware timer should not be modified. i.e. it is expected + * to be monotonically increasing once per microsecond. Fortunately there is no need to modify the hardware + * timer as any functionality you can think of that isn't already covered here can easily be modelled + * by adding or subtracting a constant value from the unmodified hardware timer. + * + * \sa \ref hardware_timer + */ + +// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_TIME, Enable/disable assertions in the time module, type=bool, default=0, group=pico_time +#ifndef PARAM_ASSERTIONS_ENABLED_TIME +#define PARAM_ASSERTIONS_ENABLED_TIME 0 +#endif + +// PICO_CONFIG: PICO_TIME_SLEEP_OVERHEAD_ADJUST_US, How many microseconds to wake up early (and then busy_wait) to account for timer overhead when sleeping in low power mode, type=int, default=6, group=pico_time +#ifndef PICO_TIME_SLEEP_OVERHEAD_ADJUST_US +#define PICO_TIME_SLEEP_OVERHEAD_ADJUST_US 6 +#endif +/*! + * \defgroup timestamp timestamp + * \ingroup pico_time + * \brief Timestamp functions relating to points in time (including the current time) + * + * These are functions for dealing with timestamps (i.e. instants in time) represented by the type absolute_time_t. This opaque + * type is provided to help prevent accidental mixing of timestamps and relative time values. + */ + +/*! \brief Return a representation of the current time. + * \ingroup timestamp + * + * Returns an opaque high fidelity representation of the current time sampled during the call. + * + * \return the absolute time (now) of the hardware timer + * + * \sa absolute_time_t + * \sa sleep_until() + * \sa time_us_64() + */ +static inline absolute_time_t get_absolute_time(void) { + absolute_time_t t; + update_us_since_boot(&t, time_us_64()); + return t; +} + +static inline uint32_t us_to_ms(uint64_t us) { + if (us >> 32u) { + return (uint32_t)(us / 1000u); + } else { + return ((uint32_t)us) / 1000u; + } +} + +/*! fn to_ms_since_boot + * \ingroup timestamp + * \brief Convert a timestamp into a number of milliseconds since boot. + * \param t an absolute_time_t value to convert + * \return the number of microseconds since boot represented by t + * \sa to_us_since_boot() + */ +static inline uint32_t to_ms_since_boot(absolute_time_t t) { + uint64_t us = to_us_since_boot(t); + return us_to_ms(us); +} + +/*! \brief Return a timestamp value obtained by adding a number of microseconds to another timestamp + * \ingroup timestamp + * + * \param t the base timestamp + * \param us the number of microseconds to add + * \return the timestamp representing the resulting time + */ +static inline absolute_time_t delayed_by_us(const absolute_time_t t, uint64_t us) { + absolute_time_t t2; + uint64_t base = to_us_since_boot(t); + uint64_t delayed = base + us; + if (delayed < base) { + delayed = (uint64_t)-1; + } + update_us_since_boot(&t2, delayed); + return t2; +} + +/*! \brief Return a timestamp value obtained by adding a number of milliseconds to another timestamp + * \ingroup timestamp + * + * \param t the base timestamp + * \param ms the number of milliseconds to add + * \return the timestamp representing the resulting time + */ +static inline absolute_time_t delayed_by_ms(const absolute_time_t t, uint32_t ms) { + absolute_time_t t2; + uint64_t base = to_us_since_boot(t); + uint64_t delayed = base + ms * 1000ull; + if (delayed < base) { + delayed = (uint64_t)-1; + } + update_us_since_boot(&t2, delayed); + return t2; +} + +/*! \brief Convenience method to get the timestamp a number of microseconds from the current time + * \ingroup timestamp + * + * \param us the number of microseconds to add to the current timestamp + * \return the future timestamp + */ +static inline absolute_time_t make_timeout_time_us(uint64_t us) { + return delayed_by_us(get_absolute_time(), us); +} + +/*! \brief Convenience method to get the timestamp a number of milliseconds from the current time + * \ingroup timestamp + * + * \param ms the number of milliseconds to add to the current timestamp + * \return the future timestamp + */ +static inline absolute_time_t make_timeout_time_ms(uint32_t ms) { + return delayed_by_ms(get_absolute_time(), ms); +} + +/*! \brief Return the difference in microseconds between two timestamps + * \ingroup timestamp + * + * \note be careful when diffing against large timestamps (e.g. \ref at_the_end_of_time) + * as the signed integer may overflow. + * + * \param from the first timestamp + * \param to the second timestamp + * \return the number of microseconds between the two timestamps (positive if `to` is after `from` except + * in case of overflow) + */ +static inline int64_t absolute_time_diff_us(absolute_time_t from, absolute_time_t to) { + return (int64_t)(to_us_since_boot(to) - to_us_since_boot(from)); +} + +/*! \brief The timestamp representing the end of time; this is actually not the maximum possible + * timestamp, but is set to 0x7fffffff_ffffffff microseconds to avoid sign overflows with time + * arithmetic. This is still over 7 million years, so should be sufficient. + * \ingroup timestamp + */ +extern const absolute_time_t at_the_end_of_time; + +/*! \brief The timestamp representing a null timestamp + * \ingroup timestamp + */ +extern const absolute_time_t nil_time; + +/*! \brief Determine if the given timestamp is nil + * \ingroup timestamp + * \param t the timestamp + * \return true if the timestamp is nil + * \sa nil_time + */ +static inline bool is_nil_time(absolute_time_t t) { + return !to_us_since_boot(t); +} + +/*! + * \defgroup sleep sleep + * \ingroup pico_time + * \brief Sleep functions for delaying execution in a lower power state. + * + * These functions allow the calling core to sleep. This is a lower powered sleep; waking and re-checking time on every processor + * event (WFE) + * + * \note These functions should not be called from an IRQ handler. + * + * \note Lower powered sleep requires use of the \link alarm_pool_get_default default alarm pool\endlink which may + * be disabled by the #PICO_TIME_DEFAULT_ALARM_POOL_DISABLED define or currently full in which case these functions + * become busy waits instead. + * + * \note Whilst \a sleep_ functions are preferable to \a busy_wait functions from a power perspective, the \a busy_wait equivalent function + * may return slightly sooner after the target is reached. + * + * \sa busy_wait_until() \sa busy_wait_us() \sa busy_wait_us_32() + */ + +/*! \brief Wait until after the given timestamp to return + * \ingroup sleep + * + * \note This method attempts to perform a lower power (WFE) sleep + * + * \param target the time after which to return + * \sa sleep_us() + * \sa busy_wait_until() + * */ +void sleep_until(absolute_time_t target); + +/*! \brief Wait for the given number of microseconds before returning + * \ingroup sleep + * + * \note This method attempts to perform a lower power (WFE) sleep + * + * \param us the number of microseconds to sleep + * \sa busy_wait_us() + */ +void sleep_us(uint64_t us); + +/*! \brief Wait for the given number of milliseconds before returning + * \ingroup sleep + * + * \note This method attempts to perform a lower power sleep (using WFE) as much as possible. + * + * \param ms the number of milliseconds to sleep + */ +void sleep_ms(uint32_t ms); + +/*! \brief Helper method for blocking on a timeout + * \ingroup sleep + * + * This method will return in response to an event (as per __wfe) or + * when the target time is reached, or at any point before. + * + * This method can be used to implement a lower power polling loop waiting on + * some condition signalled by an event (__sev()). + * + * This is called \a best_effort because under certain circumstances (notably the default timer pool + * being disabled or full) the best effort is simply to return immediately without a __wfe, thus turning the calling + * code into a busy wait. + * + * Example usage: + * ```c + * bool my_function_with_timeout_us(uint64_t timeout_us) { + * absolute_time_t timeout_time = make_timeout_time_us(timeout_us); + * do { + * // each time round the loop, we check to see if the condition + * // we are waiting on has happened + * if (my_check_done()) { + * // do something + * return true; + * } + * // will try to sleep until timeout or the next processor event + * } while (!best_effort_wfe_or_timeout(timeout_time)); + * return false; // timed out + * } + * ``` + * + * @param timeout_timestamp the timeout time + * @return true if the target time is reached, false otherwise + */ +bool best_effort_wfe_or_timeout(absolute_time_t timeout_timestamp); + +/*! + * \defgroup alarm alarm + * \ingroup pico_time + * \brief Alarm functions for scheduling future execution + * + * Alarms are added to alarm pools, which may hold a certain fixed number of active alarms. Each alarm pool + * utilizes one of four underlying hardware alarms, thus you may have up to four alarm pools. An alarm pool + * calls (except when the callback would happen before or during being set) the callback on the core from which + * the alarm pool was created. Callbacks are called from the hardware alarm IRQ handler, so care must + * be taken in their implementation. + * + * A default pool is created the core specified by PICO_TIME_DEFAULT_ALARM_POOL_HARDWARE_ALARM_NUM + * on core 0, and may be used by the method variants that take no alarm pool parameter. + * + * \sa struct alarm_pool + * \sa hardware_timer + */ + +// PICO_CONFIG: PICO_TIME_DEFAULT_ALARM_POOL_DISABLED, Disable the default alarm pool, type=bool, default=0, advanced=true, group=pico_time +#ifndef PICO_TIME_DEFAULT_ALARM_POOL_DISABLED +/*! + * \brief If 1 then the default alarm pool is disabled (so no hardware alarm is claimed for the pool) + * + * \note Setting to 1 may cause some code not to compile as default timer pool related methods are removed + * + * \note When the default alarm pool is disabled, \a sleep_ methods and timeouts are no longer lower powered + * (they become \a busy_wait_) + * + * \ingroup alarm + * \sa #PICO_TIME_DEFAULT_ALARM_POOL_HARDWARE_ALARM_NUM + * \sa alarm_pool_get_default() + */ +#define PICO_TIME_DEFAULT_ALARM_POOL_DISABLED 0 +#endif + +// PICO_CONFIG: PICO_TIME_DEFAULT_ALARM_POOL_HARDWARE_ALARM_NUM, Select which HW alarm is used for the default alarm pool, min=0, max=3, default=3, advanced=true, group=pico_time +#ifndef PICO_TIME_DEFAULT_ALARM_POOL_HARDWARE_ALARM_NUM +/*! + * \brief Selects which hardware alarm is used for the default alarm pool + * \ingroup alarm + * \sa alarm_pool_get_default() + */ +#define PICO_TIME_DEFAULT_ALARM_POOL_HARDWARE_ALARM_NUM 3 +#endif + +// PICO_CONFIG: PICO_TIME_DEFAULT_ALARM_POOL_MAX_TIMERS, Selects the maximum number of concurrent timers in the default alarm pool, min=0, max=255, default=16, advanced=true, group=pico_time +#ifndef PICO_TIME_DEFAULT_ALARM_POOL_MAX_TIMERS +/*! + * \brief Selects the maximum number of concurrent timers in the default alarm pool + * \ingroup alarm + * + * \note For implementation reasons this is limited to PICO_PHEAP_MAX_ENTRIES which defaults to 255 + * \sa #PICO_TIME_DEFAULT_ALARM_POOL_HARDWARE_ALARM_NUM + * \sa alarm_pool_get_default() + */ +#define PICO_TIME_DEFAULT_ALARM_POOL_MAX_TIMERS 16 +#endif + +/** + * \brief The identifier for an alarm + * + * \note this identifier is signed because -1 is used as an error condition when creating alarms + * + * \note alarm ids may be reused, however for convenience the implementation makes an attempt to defer + * reusing as long as possible. You should certainly expect it to be hundreds of ids before one is + * reused, although in most cases it is more. Nonetheless care must still be taken when cancelling + * alarms or other functionality based on alarms when the alarm may have expired, as eventually + * the alarm id may be reused for another alarm. + * + * \ingroup alarm + */ +typedef int32_t alarm_id_t; // note this is signed because we use -1 as a meaningful error value + +/** + * \brief User alarm callback + * \ingroup alarm + * \param id the alarm_id as returned when the alarm was added + * \param user_data the user data passed when the alarm was added + * \return <0 to reschedule the same alarm this many us from the time the alarm was previously scheduled to fire + * \return >0 to reschedule the same alarm this many us from the time this method returns + * \return 0 to not reschedule the alarm + */ +typedef int64_t (*alarm_callback_t)(alarm_id_t id, void *user_data); + +typedef struct alarm_pool alarm_pool_t; + +/** + * \brief Create the default alarm pool (if not already created or disabled) + * \ingroup alarm + */ +void alarm_pool_init_default(void); + +#if !PICO_TIME_DEFAULT_ALARM_POOL_DISABLED +/*! + * \brief The default alarm pool used when alarms are added without specifying an alarm pool, + * and also used by the SDK to support lower power sleeps and timeouts. + * + * \ingroup alarm + * \sa #PICO_TIME_DEFAULT_ALARM_POOL_HARDWARE_ALARM_NUM + */ +alarm_pool_t *alarm_pool_get_default(void); +#endif + +/** + * \brief Create an alarm pool + * + * The alarm pool will call callbacks from an alarm IRQ Handler on the core of this function is called from. + * + * In many situations there is never any need for anything other than the default alarm pool, however you + * might want to create another if you want alarm callbacks on core 1 or require alarm pools of + * different priority (IRQ priority based preemption of callbacks) + * + * \note This method will hard assert if the hardware alarm is already claimed. + * + * \ingroup alarm + * \param hardware_alarm_num the hardware alarm to use to back this pool + * \param max_timers the maximum number of timers + * \note For implementation reasons this is limited to PICO_PHEAP_MAX_ENTRIES which defaults to 255 + * \sa alarm_pool_get_default() + * \sa hardware_claiming + */ +alarm_pool_t *alarm_pool_create(uint hardware_alarm_num, uint max_timers); + +/** + * \brief Return the hardware alarm used by an alarm pool + * \ingroup alarm + * \param pool the pool + * \return the hardware alarm used by the pool + */ +uint alarm_pool_hardware_alarm_num(alarm_pool_t *pool); + +/** + * \brief Destroy the alarm pool, cancelling all alarms and freeing up the underlying hardware alarm + * \ingroup alarm + * \param pool the pool + * \return the hardware alarm used by the pool + */ +void alarm_pool_destroy(alarm_pool_t *pool); + +/*! + * \brief Add an alarm callback to be called at a specific time + * \ingroup alarm + * + * Generally the callback is called as soon as possible after the time specified from an IRQ handler + * on the core the alarm pool was created on. If the callback is in the past or happens before + * the alarm setup could be completed, then this method will optionally call the callback itself + * and then return a return code to indicate that the target time has passed. + * + * \note It is safe to call this method from an IRQ handler (including alarm callbacks), and from either core. + * + * @param pool the alarm pool to use for scheduling the callback (this determines which hardware alarm is used, and which core calls the callback) + * @param time the timestamp when (after which) the callback should fire + * @param callback the callback function + * @param user_data user data to pass to the callback function + * @param fire_if_past if true, and the alarm time falls before or during this call before the alarm can be set, + * then the callback should be called during (by) this function instead + * @return >0 the alarm id for an active (at the time of return) alarm + * @return 0 if the alarm time passed before or during the call AND there is no active alarm to return the id of. + * The latter can either happen because fire_if_past was false (i.e. no timer was ever created), + * or if the callback <i>was</i> called during this method but the callback cancelled itself by returning 0 + * @return -1 if there were no alarm slots available + */ +alarm_id_t alarm_pool_add_alarm_at(alarm_pool_t *pool, absolute_time_t time, alarm_callback_t callback, void *user_data, bool fire_if_past); + +/*! + * \brief Add an alarm callback to be called after a delay specified in microseconds + * \ingroup alarm + * + * Generally the callback is called as soon as possible after the time specified from an IRQ handler + * on the core the alarm pool was created on. If the callback is in the past or happens before + * the alarm setup could be completed, then this method will optionally call the callback itself + * and then return a return code to indicate that the target time has passed. + * + * \note It is safe to call this method from an IRQ handler (including alarm callbacks), and from either core. + * + * @param pool the alarm pool to use for scheduling the callback (this determines which hardware alarm is used, and which core calls the callback) + * @param us the delay (from now) in microseconds when (after which) the callback should fire + * @param callback the callback function + * @param user_data user data to pass to the callback function + * @param fire_if_past if true, and the alarm time falls during this call before the alarm can be set, + * then the callback should be called during (by) this function instead + * @return >0 the alarm id + * @return 0 if the alarm time passed before or during the call AND there is no active alarm to return the id of. + * The latter can either happen because fire_if_past was false (i.e. no timer was ever created), + * or if the callback <i>was</i> called during this method but the callback cancelled itself by returning 0 + * @return -1 if there were no alarm slots available + */ +static inline alarm_id_t alarm_pool_add_alarm_in_us(alarm_pool_t *pool, uint64_t us, alarm_callback_t callback, void *user_data, bool fire_if_past) { + return alarm_pool_add_alarm_at(pool, delayed_by_us(get_absolute_time(), us), callback, user_data, fire_if_past); +} + +/*! + * \brief Add an alarm callback to be called after a delay specified in milliseconds + * \ingroup alarm + * + * Generally the callback is called as soon as possible after the time specified from an IRQ handler + * on the core the alarm pool was created on. If the callback is in the past or happens before + * the alarm setup could be completed, then this method will optionally call the callback itself + * and then return a return code to indicate that the target time has passed. + * + * \note It is safe to call this method from an IRQ handler (including alarm callbacks), and from either core. + * + * @param pool the alarm pool to use for scheduling the callback (this determines which hardware alarm is used, and which core calls the callback) + * @param ms the delay (from now) in milliseconds when (after which) the callback should fire + * @param callback the callback function + * @param user_data user data to pass to the callback function + * @param fire_if_past if true, and the alarm time falls before or during this call before the alarm can be set, + * then the callback should be called during (by) this function instead + * @return >0 the alarm id + * @return 0 if the alarm time passed before or during the call AND there is no active alarm to return the id of. + * The latter can either happen because fire_if_past was false (i.e. no timer was ever created), + * or if the callback <i>was</i> called during this method but the callback cancelled itself by returning 0 + * @return -1 if there were no alarm slots available + */ +static inline alarm_id_t alarm_pool_add_alarm_in_ms(alarm_pool_t *pool, uint32_t ms, alarm_callback_t callback, void *user_data, bool fire_if_past) { + return alarm_pool_add_alarm_at(pool, delayed_by_ms(get_absolute_time(), ms), callback, user_data, fire_if_past); +} + +/*! + * \brief Cancel an alarm + * \ingroup alarm + * \param pool the alarm_pool containing the alarm + * \param alarm_id the alarm + * \return true if the alarm was cancelled, false if it didn't exist + * \sa alarm_id_t for a note on reuse of IDs + */ +bool alarm_pool_cancel_alarm(alarm_pool_t *pool, alarm_id_t alarm_id); + +#if !PICO_TIME_DEFAULT_ALARM_POOL_DISABLED +/*! + * \brief Add an alarm callback to be called at a specific time + * \ingroup alarm + * + * Generally the callback is called as soon as possible after the time specified from an IRQ handler + * on the core of the default alarm pool (generally core 0). If the callback is in the past or happens before + * the alarm setup could be completed, then this method will optionally call the callback itself + * and then return a return code to indicate that the target time has passed. + * + * \note It is safe to call this method from an IRQ handler (including alarm callbacks), and from either core. + * + * @param time the timestamp when (after which) the callback should fire + * @param callback the callback function + * @param user_data user data to pass to the callback function + * @param fire_if_past if true, and the alarm time falls before or during this call before the alarm can be set, + * then the callback should be called during (by) this function instead + * @return >0 the alarm id + * @return 0 if the alarm time passed before or during the call AND there is no active alarm to return the id of. + * The latter can either happen because fire_if_past was false (i.e. no timer was ever created), + * or if the callback <i>was</i> called during this method but the callback cancelled itself by returning 0 + * @return -1 if there were no alarm slots available + */ +static inline alarm_id_t add_alarm_at(absolute_time_t time, alarm_callback_t callback, void *user_data, bool fire_if_past) { + return alarm_pool_add_alarm_at(alarm_pool_get_default(), time, callback, user_data, fire_if_past); +} + +/*! + * \brief Add an alarm callback to be called after a delay specified in microseconds + * \ingroup alarm + * + * Generally the callback is called as soon as possible after the time specified from an IRQ handler + * on the core of the default alarm pool (generally core 0). If the callback is in the past or happens before + * the alarm setup could be completed, then this method will optionally call the callback itself + * and then return a return code to indicate that the target time has passed. + * + * \note It is safe to call this method from an IRQ handler (including alarm callbacks), and from either core. + * + * @param us the delay (from now) in microseconds when (after which) the callback should fire + * @param callback the callback function + * @param user_data user data to pass to the callback function + * @param fire_if_past if true, and the alarm time falls during this call before the alarm can be set, + * then the callback should be called during (by) this function instead + * @return >0 the alarm id + * @return 0 if the alarm time passed before or during the call AND there is no active alarm to return the id of. + * The latter can either happen because fire_if_past was false (i.e. no timer was ever created), + * or if the callback <i>was</i> called during this method but the callback cancelled itself by returning 0 + * @return -1 if there were no alarm slots available + */ +static inline alarm_id_t add_alarm_in_us(uint64_t us, alarm_callback_t callback, void *user_data, bool fire_if_past) { + return alarm_pool_add_alarm_in_us(alarm_pool_get_default(), us, callback, user_data, fire_if_past); +} + +/*! + * \brief Add an alarm callback to be called after a delay specified in milliseconds + * \ingroup alarm + * + * Generally the callback is called as soon as possible after the time specified from an IRQ handler + * on the core of the default alarm pool (generally core 0). If the callback is in the past or happens before + * the alarm setup could be completed, then this method will optionally call the callback itself + * and then return a return code to indicate that the target time has passed. + * + * \note It is safe to call this method from an IRQ handler (including alarm callbacks), and from either core. + * + * @param ms the delay (from now) in milliseconds when (after which) the callback should fire + * @param callback the callback function + * @param user_data user data to pass to the callback function + * @param fire_if_past if true, and the alarm time falls during this call before the alarm can be set, + * then the callback should be called during (by) this function instead + * @return >0 the alarm id + * @return 0 if the alarm time passed before or during the call AND there is no active alarm to return the id of. + * The latter can either happen because fire_if_past was false (i.e. no timer was ever created), + * or if the callback <i>was</i> called during this method but the callback cancelled itself by returning 0 + * @return -1 if there were no alarm slots available + */ +static inline alarm_id_t add_alarm_in_ms(uint32_t ms, alarm_callback_t callback, void *user_data, bool fire_if_past) { + return alarm_pool_add_alarm_in_ms(alarm_pool_get_default(), ms, callback, user_data, fire_if_past); +} +/*! + * \brief Cancel an alarm from the default alarm pool + * \ingroup alarm + * \param alarm_id the alarm + * \return true if the alarm was cancelled, false if it didn't exist + * \sa alarm_id_t for a note on reuse of IDs + */ +static inline bool cancel_alarm(alarm_id_t alarm_id) { + return alarm_pool_cancel_alarm(alarm_pool_get_default(), alarm_id); +} + +#endif + +/*! + * \defgroup repeating_timer repeating_timer + * \ingroup pico_time + * \brief Repeating Timer functions for simple scheduling of repeated execution + * + * \note The regular \a alarm_ functionality can be used to make repeating alarms (by return non zero from the callback), + * however these methods abstract that further (at the cost of a user structure to store the repeat delay in (which + * the alarm framework does not have space for). + */ + +typedef struct repeating_timer repeating_timer_t; + +/** + * \brief Callback for a repeating timer + * \ingroup repeating_timer + * \param rt repeating time structure containing information about the repeating time. user_data is of primary important to the user + * \return true to continue repeating, false to stop. + */ +typedef bool (*repeating_timer_callback_t)(repeating_timer_t *rt); + +/** + * \brief Information about a repeating timer + * \ingroup repeating_timer + * \return + */ +struct repeating_timer { + int64_t delay_us; + alarm_pool_t *pool; + alarm_id_t alarm_id; + repeating_timer_callback_t callback; + void *user_data; +}; + +/*! + * \brief Add a repeating timer that is called repeatedly at the specified interval in microseconds + * \ingroup repeating_timer + * + * Generally the callback is called as soon as possible after the time specified from an IRQ handler + * on the core the alarm pool was created on. If the callback is in the past or happens before + * the alarm setup could be completed, then this method will optionally call the callback itself + * and then return a return code to indicate that the target time has passed. + * + * \note It is safe to call this method from an IRQ handler (including alarm callbacks), and from either core. + * + * @param pool the alarm pool to use for scheduling the repeating timer (this determines which hardware alarm is used, and which core calls the callback) + * @param delay_us the repeat delay in microseconds; if >0 then this is the delay between one callback ending and the next starting; if <0 then this is the negative of the time between the starts of the callbacks. The value of 0 is treated as 1 + * @param callback the repeating timer callback function + * @param user_data user data to pass to store in the repeating_timer structure for use by the callback. + * @param out the pointer to the user owned structure to store the repeating timer info in. BEWARE this storage location must outlive the repeating timer, so be careful of using stack space + * @return false if there were no alarm slots available to create the timer, true otherwise. + */ +bool alarm_pool_add_repeating_timer_us(alarm_pool_t *pool, int64_t delay_us, repeating_timer_callback_t callback, void *user_data, repeating_timer_t *out); + +/*! + * \brief Add a repeating timer that is called repeatedly at the specified interval in milliseconds + * \ingroup repeating_timer + * + * Generally the callback is called as soon as possible after the time specified from an IRQ handler + * on the core the alarm pool was created on. If the callback is in the past or happens before + * the alarm setup could be completed, then this method will optionally call the callback itself + * and then return a return code to indicate that the target time has passed. + * + * \note It is safe to call this method from an IRQ handler (including alarm callbacks), and from either core. + * + * @param pool the alarm pool to use for scheduling the repeating timer (this determines which hardware alarm is used, and which core calls the callback) + * @param delay_ms the repeat delay in milliseconds; if >0 then this is the delay between one callback ending and the next starting; if <0 then this is the negative of the time between the starts of the callbacks. The value of 0 is treated as 1 microsecond + * @param callback the repeating timer callback function + * @param user_data user data to pass to store in the repeating_timer structure for use by the callback. + * @param out the pointer to the user owned structure to store the repeating timer info in. BEWARE this storage location must outlive the repeating timer, so be careful of using stack space + * @return false if there were no alarm slots available to create the timer, true otherwise. + */ +static inline bool alarm_pool_add_repeating_timer_ms(alarm_pool_t *pool, int32_t delay_ms, repeating_timer_callback_t callback, void *user_data, repeating_timer_t *out) { + return alarm_pool_add_repeating_timer_us(pool, delay_ms * (int64_t)1000, callback, user_data, out); +} + +#if !PICO_TIME_DEFAULT_ALARM_POOL_DISABLED +/*! + * \brief Add a repeating timer that is called repeatedly at the specified interval in microseconds + * \ingroup repeating_timer + * + * Generally the callback is called as soon as possible after the time specified from an IRQ handler + * on the core of the default alarm pool (generally core 0). If the callback is in the past or happens before + * the alarm setup could be completed, then this method will optionally call the callback itself + * and then return a return code to indicate that the target time has passed. + * + * \note It is safe to call this method from an IRQ handler (including alarm callbacks), and from either core. + * + * @param delay_us the repeat delay in microseconds; if >0 then this is the delay between one callback ending and the next starting; if <0 then this is the negative of the time between the starts of the callbacks. The value of 0 is treated as 1 + * @param callback the repeating timer callback function + * @param user_data user data to pass to store in the repeating_timer structure for use by the callback. + * @param out the pointer to the user owned structure to store the repeating timer info in. BEWARE this storage location must outlive the repeating timer, so be careful of using stack space + * @return false if there were no alarm slots available to create the timer, true otherwise. + */ +static inline bool add_repeating_timer_us(int64_t delay_us, repeating_timer_callback_t callback, void *user_data, repeating_timer_t *out) { + return alarm_pool_add_repeating_timer_us(alarm_pool_get_default(), delay_us, callback, user_data, out); +} + +/*! + * \brief Add a repeating timer that is called repeatedly at the specified interval in milliseconds + * \ingroup repeating_timer + * + * Generally the callback is called as soon as possible after the time specified from an IRQ handler + * on the core of the default alarm pool (generally core 0). If the callback is in the past or happens before + * the alarm setup could be completed, then this method will optionally call the callback itself + * and then return a return code to indicate that the target time has passed. + * + * \note It is safe to call this method from an IRQ handler (including alarm callbacks), and from either core. + * + * @param delay_ms the repeat delay in milliseconds; if >0 then this is the delay between one callback ending and the next starting; if <0 then this is the negative of the time between the starts of the callbacks. The value of 0 is treated as 1 microsecond + * @param callback the repeating timer callback function + * @param user_data user data to pass to store in the repeating_timer structure for use by the callback. + * @param out the pointer to the user owned structure to store the repeating timer info in. BEWARE this storage location must outlive the repeating timer, so be careful of using stack space + * @return false if there were no alarm slots available to create the timer, true otherwise. + */ +static inline bool add_repeating_timer_ms(int32_t delay_ms, repeating_timer_callback_t callback, void *user_data, repeating_timer_t *out) { + return alarm_pool_add_repeating_timer_us(alarm_pool_get_default(), delay_ms * (int64_t)1000, callback, user_data, out); +} +#endif + +/** + * \brief Cancel a repeating timer + * \ingroup repeating_timer + * \param timer the repeating timer to cancel + * \return true if the repeating timer was cancelled, false if it didn't exist + * \sa alarm_id_t for a note on reuse of IDs + */ +bool cancel_repeating_timer(repeating_timer_t *timer); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/timeout_helper.c b/arkanoid/pico/timeout_helper.c new file mode 100644 index 0000000..cdd99e2 --- /dev/null +++ b/arkanoid/pico/timeout_helper.c @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "timeout_helper.h" + +static bool check_single_timeout_us(timeout_state_t *ts) { + return time_reached(ts->next_timeout); +} + +check_timeout_fn init_single_timeout_until(timeout_state_t *ts, absolute_time_t target) { + ts->next_timeout = target; + return check_single_timeout_us; +} + +static bool check_per_iteration_timeout_us(timeout_state_t *ts) { + if (time_reached(ts->next_timeout)) { + return true; + } + ts->next_timeout = make_timeout_time_us(ts->param); + return false; +} + +check_timeout_fn init_per_iteration_timeout_us(timeout_state_t *ts, uint64_t per_iteration_timeout_us) { + ts->next_timeout = make_timeout_time_us(per_iteration_timeout_us); + ts->param = per_iteration_timeout_us; + return check_per_iteration_timeout_us; +} diff --git a/arkanoid/pico/timeout_helper.h b/arkanoid/pico/timeout_helper.h new file mode 100644 index 0000000..5d37ab4 --- /dev/null +++ b/arkanoid/pico/timeout_helper.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_TIMEOUT_HELPER_H +#define _PICO_TIMEOUT_HELPER_H + +#include "time.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct timeout_state { + absolute_time_t next_timeout; + uint64_t param; +} timeout_state_t; + +typedef bool (*check_timeout_fn)(timeout_state_t *ts); + +check_timeout_fn init_single_timeout_until(timeout_state_t *ts, absolute_time_t target); +check_timeout_fn init_per_iteration_timeout_us(timeout_state_t *ts, uint64_t per_iteration_timeout_us); + +#ifdef __cplusplus +} +#endif + +#endif \ No newline at end of file diff --git a/arkanoid/pico/tinyusb/cdc/cdc.h b/arkanoid/pico/tinyusb/cdc/cdc.h new file mode 100644 index 0000000..0417b2a --- /dev/null +++ b/arkanoid/pico/tinyusb/cdc/cdc.h @@ -0,0 +1,409 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +/** \ingroup group_class + * \defgroup ClassDriver_CDC Communication Device Class (CDC) + * Currently only Abstract Control Model subclass is supported + * @{ */ + +#ifndef _TUSB_CDC_H__ +#define _TUSB_CDC_H__ + +#include "../tusb_common.h" + +#ifdef __cplusplus + extern "C" { +#endif + +/** \defgroup ClassDriver_CDC_Common Common Definitions + * @{ */ + +// TODO remove +/// CDC Pipe ID, used to indicate which pipe the API is addressing to (Notification, Out, In) +typedef enum +{ + CDC_PIPE_NOTIFICATION , ///< Notification pipe + CDC_PIPE_DATA_IN , ///< Data in pipe + CDC_PIPE_DATA_OUT , ///< Data out pipe + CDC_PIPE_ERROR , ///< Invalid Pipe ID +}cdc_pipeid_t; + +//--------------------------------------------------------------------+ +// CDC Communication Interface Class +//--------------------------------------------------------------------+ + +/// Communication Interface Subclass Codes +typedef enum +{ + CDC_COMM_SUBCLASS_DIRECT_LINE_CONTROL_MODEL = 0x01 , ///< Direct Line Control Model [USBPSTN1.2] + CDC_COMM_SUBCLASS_ABSTRACT_CONTROL_MODEL = 0x02 , ///< Abstract Control Model [USBPSTN1.2] + CDC_COMM_SUBCLASS_TELEPHONE_CONTROL_MODEL = 0x03 , ///< Telephone Control Model [USBPSTN1.2] + CDC_COMM_SUBCLASS_MULTICHANNEL_CONTROL_MODEL = 0x04 , ///< Multi-Channel Control Model [USBISDN1.2] + CDC_COMM_SUBCLASS_CAPI_CONTROL_MODEL = 0x05 , ///< CAPI Control Model [USBISDN1.2] + CDC_COMM_SUBCLASS_ETHERNET_CONTROL_MODEL = 0x06 , ///< Ethernet Networking Control Model [USBECM1.2] + CDC_COMM_SUBCLASS_ATM_NETWORKING_CONTROL_MODEL = 0x07 , ///< ATM Networking Control Model [USBATM1.2] + CDC_COMM_SUBCLASS_WIRELESS_HANDSET_CONTROL_MODEL = 0x08 , ///< Wireless Handset Control Model [USBWMC1.1] + CDC_COMM_SUBCLASS_DEVICE_MANAGEMENT = 0x09 , ///< Device Management [USBWMC1.1] + CDC_COMM_SUBCLASS_MOBILE_DIRECT_LINE_MODEL = 0x0A , ///< Mobile Direct Line Model [USBWMC1.1] + CDC_COMM_SUBCLASS_OBEX = 0x0B , ///< OBEX [USBWMC1.1] + CDC_COMM_SUBCLASS_ETHERNET_EMULATION_MODEL = 0x0C , ///< Ethernet Emulation Model [USBEEM1.0] + CDC_COMM_SUBCLASS_NETWORK_CONTROL_MODEL = 0x0D ///< Network Control Model [USBNCM1.0] +} cdc_comm_sublcass_type_t; + +/// Communication Interface Protocol Codes +typedef enum +{ + CDC_COMM_PROTOCOL_NONE = 0x00 , ///< No specific protocol + CDC_COMM_PROTOCOL_ATCOMMAND = 0x01 , ///< AT Commands: V.250 etc + CDC_COMM_PROTOCOL_ATCOMMAND_PCCA_101 = 0x02 , ///< AT Commands defined by PCCA-101 + CDC_COMM_PROTOCOL_ATCOMMAND_PCCA_101_AND_ANNEXO = 0x03 , ///< AT Commands defined by PCCA-101 & Annex O + CDC_COMM_PROTOCOL_ATCOMMAND_GSM_707 = 0x04 , ///< AT Commands defined by GSM 07.07 + CDC_COMM_PROTOCOL_ATCOMMAND_3GPP_27007 = 0x05 , ///< AT Commands defined by 3GPP 27.007 + CDC_COMM_PROTOCOL_ATCOMMAND_CDMA = 0x06 , ///< AT Commands defined by TIA for CDMA + CDC_COMM_PROTOCOL_ETHERNET_EMULATION_MODEL = 0x07 ///< Ethernet Emulation Model +} cdc_comm_protocol_type_t; + +//------------- SubType Descriptor in COMM Functional Descriptor -------------// +/// Communication Interface SubType Descriptor +typedef enum +{ + CDC_FUNC_DESC_HEADER = 0x00 , ///< Header Functional Descriptor, which marks the beginning of the concatenated set of functional descriptors for the interface. + CDC_FUNC_DESC_CALL_MANAGEMENT = 0x01 , ///< Call Management Functional Descriptor. + CDC_FUNC_DESC_ABSTRACT_CONTROL_MANAGEMENT = 0x02 , ///< Abstract Control Management Functional Descriptor. + CDC_FUNC_DESC_DIRECT_LINE_MANAGEMENT = 0x03 , ///< Direct Line Management Functional Descriptor. + CDC_FUNC_DESC_TELEPHONE_RINGER = 0x04 , ///< Telephone Ringer Functional Descriptor. + CDC_FUNC_DESC_TELEPHONE_CALL_AND_LINE_STATE_REPORTING_CAPACITY = 0x05 , ///< Telephone Call and Line State Reporting Capabilities Functional Descriptor. + CDC_FUNC_DESC_UNION = 0x06 , ///< Union Functional Descriptor + CDC_FUNC_DESC_COUNTRY_SELECTION = 0x07 , ///< Country Selection Functional Descriptor + CDC_FUNC_DESC_TELEPHONE_OPERATIONAL_MODES = 0x08 , ///< Telephone Operational ModesFunctional Descriptor + CDC_FUNC_DESC_USB_TERMINAL = 0x09 , ///< USB Terminal Functional Descriptor + CDC_FUNC_DESC_NETWORK_CHANNEL_TERMINAL = 0x0A , ///< Network Channel Terminal Descriptor + CDC_FUNC_DESC_PROTOCOL_UNIT = 0x0B , ///< Protocol Unit Functional Descriptor + CDC_FUNC_DESC_EXTENSION_UNIT = 0x0C , ///< Extension Unit Functional Descriptor + CDC_FUNC_DESC_MULTICHANEL_MANAGEMENT = 0x0D , ///< Multi-Channel Management Functional Descriptor + CDC_FUNC_DESC_CAPI_CONTROL_MANAGEMENT = 0x0E , ///< CAPI Control Management Functional Descriptor + CDC_FUNC_DESC_ETHERNET_NETWORKING = 0x0F , ///< Ethernet Networking Functional Descriptor + CDC_FUNC_DESC_ATM_NETWORKING = 0x10 , ///< ATM Networking Functional Descriptor + CDC_FUNC_DESC_WIRELESS_HANDSET_CONTROL_MODEL = 0x11 , ///< Wireless Handset Control Model Functional Descriptor + CDC_FUNC_DESC_MOBILE_DIRECT_LINE_MODEL = 0x12 , ///< Mobile Direct Line Model Functional Descriptor + CDC_FUNC_DESC_MOBILE_DIRECT_LINE_MODEL_DETAIL = 0x13 , ///< MDLM Detail Functional Descriptor + CDC_FUNC_DESC_DEVICE_MANAGEMENT_MODEL = 0x14 , ///< Device Management Model Functional Descriptor + CDC_FUNC_DESC_OBEX = 0x15 , ///< OBEX Functional Descriptor + CDC_FUNC_DESC_COMMAND_SET = 0x16 , ///< Command Set Functional Descriptor + CDC_FUNC_DESC_COMMAND_SET_DETAIL = 0x17 , ///< Command Set Detail Functional Descriptor + CDC_FUNC_DESC_TELEPHONE_CONTROL_MODEL = 0x18 , ///< Telephone Control Model Functional Descriptor + CDC_FUNC_DESC_OBEX_SERVICE_IDENTIFIER = 0x19 , ///< OBEX Service Identifier Functional Descriptor + CDC_FUNC_DESC_NCM = 0x1A , ///< NCM Functional Descriptor +}cdc_func_desc_type_t; + +//--------------------------------------------------------------------+ +// CDC Data Interface Class +//--------------------------------------------------------------------+ + +// SUBCLASS code of Data Interface is not used and should/must be zero + +// Data Interface Protocol Codes +typedef enum{ + CDC_DATA_PROTOCOL_ISDN_BRI = 0x30, ///< Physical interface protocol for ISDN BRI + CDC_DATA_PROTOCOL_HDLC = 0x31, ///< HDLC + CDC_DATA_PROTOCOL_TRANSPARENT = 0x32, ///< Transparent + CDC_DATA_PROTOCOL_Q921_MANAGEMENT = 0x50, ///< Management protocol for Q.921 data link protocol + CDC_DATA_PROTOCOL_Q921_DATA_LINK = 0x51, ///< Data link protocol for Q.931 + CDC_DATA_PROTOCOL_Q921_TEI_MULTIPLEXOR = 0x52, ///< TEI-multiplexor for Q.921 data link protocol + CDC_DATA_PROTOCOL_V42BIS_DATA_COMPRESSION = 0x90, ///< Data compression procedures + CDC_DATA_PROTOCOL_EURO_ISDN = 0x91, ///< Euro-ISDN protocol control + CDC_DATA_PROTOCOL_V24_RATE_ADAPTION_TO_ISDN = 0x92, ///< V.24 rate adaptation to ISDN + CDC_DATA_PROTOCOL_CAPI_COMMAND = 0x93, ///< CAPI Commands + CDC_DATA_PROTOCOL_HOST_BASED_DRIVER = 0xFD, ///< Host based driver. Note: This protocol code should only be used in messages between host and device to identify the host driver portion of a protocol stack. + CDC_DATA_PROTOCOL_IN_PROTOCOL_UNIT_FUNCTIONAL_DESCRIPTOR = 0xFE ///< The protocol(s) are described using a ProtocolUnit Functional Descriptors on Communications Class Interface +}cdc_data_protocol_type_t; + +//--------------------------------------------------------------------+ +// Management Element Request (Control Endpoint) +//--------------------------------------------------------------------+ + +/// Communication Interface Management Element Request Codes +typedef enum +{ + CDC_REQUEST_SEND_ENCAPSULATED_COMMAND = 0x00, ///< is used to issue a command in the format of the supported control protocol of the Communications Class interface + CDC_REQUEST_GET_ENCAPSULATED_RESPONSE = 0x01, ///< is used to request a response in the format of the supported control protocol of the Communications Class interface. + CDC_REQUEST_SET_COMM_FEATURE = 0x02, + CDC_REQUEST_GET_COMM_FEATURE = 0x03, + CDC_REQUEST_CLEAR_COMM_FEATURE = 0x04, + + CDC_REQUEST_SET_AUX_LINE_STATE = 0x10, + CDC_REQUEST_SET_HOOK_STATE = 0x11, + CDC_REQUEST_PULSE_SETUP = 0x12, + CDC_REQUEST_SEND_PULSE = 0x13, + CDC_REQUEST_SET_PULSE_TIME = 0x14, + CDC_REQUEST_RING_AUX_JACK = 0x15, + + CDC_REQUEST_SET_LINE_CODING = 0x20, + CDC_REQUEST_GET_LINE_CODING = 0x21, + CDC_REQUEST_SET_CONTROL_LINE_STATE = 0x22, + CDC_REQUEST_SEND_BREAK = 0x23, + + CDC_REQUEST_SET_RINGER_PARMS = 0x30, + CDC_REQUEST_GET_RINGER_PARMS = 0x31, + CDC_REQUEST_SET_OPERATION_PARMS = 0x32, + CDC_REQUEST_GET_OPERATION_PARMS = 0x33, + CDC_REQUEST_SET_LINE_PARMS = 0x34, + CDC_REQUEST_GET_LINE_PARMS = 0x35, + CDC_REQUEST_DIAL_DIGITS = 0x36, + CDC_REQUEST_SET_UNIT_PARAMETER = 0x37, + CDC_REQUEST_GET_UNIT_PARAMETER = 0x38, + CDC_REQUEST_CLEAR_UNIT_PARAMETER = 0x39, + CDC_REQUEST_GET_PROFILE = 0x3A, + + CDC_REQUEST_SET_ETHERNET_MULTICAST_FILTERS = 0x40, + CDC_REQUEST_SET_ETHERNET_POWER_MANAGEMENT_PATTERN_FILTER = 0x41, + CDC_REQUEST_GET_ETHERNET_POWER_MANAGEMENT_PATTERN_FILTER = 0x42, + CDC_REQUEST_SET_ETHERNET_PACKET_FILTER = 0x43, + CDC_REQUEST_GET_ETHERNET_STATISTIC = 0x44, + + CDC_REQUEST_SET_ATM_DATA_FORMAT = 0x50, + CDC_REQUEST_GET_ATM_DEVICE_STATISTICS = 0x51, + CDC_REQUEST_SET_ATM_DEFAULT_VC = 0x52, + CDC_REQUEST_GET_ATM_VC_STATISTICS = 0x53, + + CDC_REQUEST_MDLM_SEMANTIC_MODEL = 0x60, +}cdc_management_request_t; + +//--------------------------------------------------------------------+ +// Management Elemenent Notification (Notification Endpoint) +//--------------------------------------------------------------------+ + +/// 6.3 Notification Codes +typedef enum +{ + CDC_NOTIF_NETWORK_CONNECTION = 0x00, ///< This notification allows the device to notify the host about network connection status. + CDC_NOTIF_RESPONSE_AVAILABLE = 0x01, ///< This notification allows the device to notify the hostthat a response is available. This response can be retrieved with a subsequent \ref CDC_REQUEST_GET_ENCAPSULATED_RESPONSE request. + CDC_NOTIF_AUX_JACK_HOOK_STATE = 0x08, + CDC_NOTIF_RING_DETECT = 0x09, + CDC_NOTIF_SERIAL_STATE = 0x20, + CDC_NOTIF_CALL_STATE_CHANGE = 0x28, + CDC_NOTIF_LINE_STATE_CHANGE = 0x29, + CDC_NOTIF_CONNECTION_SPEED_CHANGE = 0x2A, ///< This notification allows the device to inform the host-networking driver that a change in either the upstream or the downstream bit rate of the connection has occurred + CDC_NOTIF_MDLM_SEMANTIC_MODEL_NOTIFICATION = 0x40, +}cdc_notification_request_t; + +//--------------------------------------------------------------------+ +// Class Specific Functional Descriptor (Communication Interface) +//--------------------------------------------------------------------+ + +// Start of all packed definitions for compiler without per-type packed +TU_ATTR_PACKED_BEGIN +TU_ATTR_BIT_FIELD_ORDER_BEGIN + +/// Header Functional Descriptor (Communication Interface) +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength ; ///< Size of this descriptor in bytes. + uint8_t bDescriptorType ; ///< Descriptor Type, must be Class-Specific + uint8_t bDescriptorSubType ; ///< Descriptor SubType one of above CDC_FUNC_DESC_ + uint16_t bcdCDC ; ///< CDC release number in Binary-Coded Decimal +}cdc_desc_func_header_t; + +/// Union Functional Descriptor (Communication Interface) +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength ; ///< Size of this descriptor in bytes. + uint8_t bDescriptorType ; ///< Descriptor Type, must be Class-Specific + uint8_t bDescriptorSubType ; ///< Descriptor SubType one of above CDC_FUCN_DESC_ + uint8_t bControlInterface ; ///< Interface number of Communication Interface + uint8_t bSubordinateInterface ; ///< Array of Interface number of Data Interface +}cdc_desc_func_union_t; + +#define cdc_desc_func_union_n_t(no_slave)\ + struct TU_ATTR_PACKED { \ + uint8_t bLength ;\ + uint8_t bDescriptorType ;\ + uint8_t bDescriptorSubType ;\ + uint8_t bControlInterface ;\ + uint8_t bSubordinateInterface[no_slave] ;\ +} + +/// Country Selection Functional Descriptor (Communication Interface) +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength ; ///< Size of this descriptor in bytes. + uint8_t bDescriptorType ; ///< Descriptor Type, must be Class-Specific + uint8_t bDescriptorSubType ; ///< Descriptor SubType one of above CDC_FUCN_DESC_ + uint8_t iCountryCodeRelDate ; ///< Index of a string giving the release date for the implemented ISO 3166 Country Codes. + uint16_t wCountryCode ; ///< Country code in the format as defined in [ISO3166], release date as specified inoffset 3 for the first supported country. +}cdc_desc_func_country_selection_t; + +#define cdc_desc_func_country_selection_n_t(no_country) \ + struct TU_ATTR_PACKED { \ + uint8_t bLength ;\ + uint8_t bDescriptorType ;\ + uint8_t bDescriptorSubType ;\ + uint8_t iCountryCodeRelDate ;\ + uint16_t wCountryCode[no_country] ;\ +} + +//--------------------------------------------------------------------+ +// PUBLIC SWITCHED TELEPHONE NETWORK (PSTN) SUBCLASS +//--------------------------------------------------------------------+ + +/// \brief Call Management Functional Descriptor +/// \details This functional descriptor describes the processing of calls for the Communications Class interface. +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength ; ///< Size of this descriptor in bytes. + uint8_t bDescriptorType ; ///< Descriptor Type, must be Class-Specific + uint8_t bDescriptorSubType ; ///< Descriptor SubType one of above CDC_FUCN_DESC_ + + struct { + uint8_t handle_call : 1; ///< 0 - Device sends/receives call management information only over the Communications Class interface. 1 - Device can send/receive call management information over a Data Class interface. + uint8_t send_recv_call : 1; ///< 0 - Device does not handle call management itself. 1 - Device handles call management itself. + uint8_t TU_RESERVED : 6; + } bmCapabilities; + + uint8_t bDataInterface; +}cdc_desc_func_call_management_t; + +typedef struct TU_ATTR_PACKED +{ + uint8_t support_comm_request : 1; ///< Device supports the request combination of Set_Comm_Feature, Clear_Comm_Feature, and Get_Comm_Feature. + uint8_t support_line_request : 1; ///< Device supports the request combination of Set_Line_Coding, Set_Control_Line_State, Get_Line_Coding, and the notification Serial_State. + uint8_t support_send_break : 1; ///< Device supports the request Send_Break + uint8_t support_notification_network_connection : 1; ///< Device supports the notification Network_Connection. + uint8_t TU_RESERVED : 4; +}cdc_acm_capability_t; + +TU_VERIFY_STATIC(sizeof(cdc_acm_capability_t) == 1, "mostly problem with compiler"); + +/// Abstract Control Management Functional Descriptor +/// This functional descriptor describes the commands supported by by the Communications Class interface with SubClass code of \ref CDC_COMM_SUBCLASS_ABSTRACT_CONTROL_MODEL +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength ; ///< Size of this descriptor in bytes. + uint8_t bDescriptorType ; ///< Descriptor Type, must be Class-Specific + uint8_t bDescriptorSubType ; ///< Descriptor SubType one of above CDC_FUCN_DESC_ + cdc_acm_capability_t bmCapabilities ; +}cdc_desc_func_acm_t; + +/// \brief Direct Line Management Functional Descriptor +/// \details This functional descriptor describes the commands supported by the Communications Class interface with SubClass code of \ref CDC_FUNC_DESC_DIRECT_LINE_MANAGEMENT +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength ; ///< Size of this descriptor in bytes. + uint8_t bDescriptorType ; ///< Descriptor Type, must be Class-Specific + uint8_t bDescriptorSubType ; ///< Descriptor SubType one of above CDC_FUCN_DESC_ + struct { + uint8_t require_pulse_setup : 1; ///< Device requires extra Pulse_Setup request during pulse dialing sequence to disengage holding circuit. + uint8_t support_aux_request : 1; ///< Device supports the request combination of Set_Aux_Line_State, Ring_Aux_Jack, and notification Aux_Jack_Hook_State. + uint8_t support_pulse_request : 1; ///< Device supports the request combination of Pulse_Setup, Send_Pulse, and Set_Pulse_Time. + uint8_t TU_RESERVED : 5; + } bmCapabilities; +}cdc_desc_func_direct_line_management_t; + +/// \brief Telephone Ringer Functional Descriptor +/// \details The Telephone Ringer functional descriptor describes the ringer capabilities supported by the Communications Class interface, +/// with the SubClass code of \ref CDC_COMM_SUBCLASS_TELEPHONE_CONTROL_MODEL +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength ; ///< Size of this descriptor in bytes. + uint8_t bDescriptorType ; ///< Descriptor Type, must be Class-Specific + uint8_t bDescriptorSubType ; ///< Descriptor SubType one of above CDC_FUCN_DESC_ + uint8_t bRingerVolSteps ; + uint8_t bNumRingerPatterns ; +}cdc_desc_func_telephone_ringer_t; + +/// \brief Telephone Operational Modes Functional Descriptor +/// \details The Telephone Operational Modes functional descriptor describes the operational modes supported by +/// the Communications Class interface, with the SubClass code of \ref CDC_COMM_SUBCLASS_TELEPHONE_CONTROL_MODEL +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength ; ///< Size of this descriptor in bytes. + uint8_t bDescriptorType ; ///< Descriptor Type, must be Class-Specific + uint8_t bDescriptorSubType ; ///< Descriptor SubType one of above CDC_FUCN_DESC_ + struct { + uint8_t simple_mode : 1; + uint8_t standalone_mode : 1; + uint8_t computer_centric_mode : 1; + uint8_t TU_RESERVED : 5; + } bmCapabilities; +}cdc_desc_func_telephone_operational_modes_t; + +/// \brief Telephone Call and Line State Reporting Capabilities Descriptor +/// \details The Telephone Call and Line State Reporting Capabilities functional descriptor describes the abilities of a +/// telephone device to report optional call and line states. +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength ; ///< Size of this descriptor in bytes. + uint8_t bDescriptorType ; ///< Descriptor Type, must be Class-Specific + uint8_t bDescriptorSubType ; ///< Descriptor SubType one of above CDC_FUCN_DESC_ + struct { + uint32_t interrupted_dialtone : 1; ///< 0 : Reports only dialtone (does not differentiate between normal and interrupted dialtone). 1 : Reports interrupted dialtone in addition to normal dialtone + uint32_t ringback_busy_fastbusy : 1; ///< 0 : Reports only dialing state. 1 : Reports ringback, busy, and fast busy states. + uint32_t caller_id : 1; ///< 0 : Does not report caller ID. 1 : Reports caller ID information. + uint32_t incoming_distinctive : 1; ///< 0 : Reports only incoming ringing. 1 : Reports incoming distinctive ringing patterns. + uint32_t dual_tone_multi_freq : 1; ///< 0 : Cannot report dual tone multi-frequency (DTMF) digits input remotely over the telephone line. 1 : Can report DTMF digits input remotely over the telephone line. + uint32_t line_state_change : 1; ///< 0 : Does not support line state change notification. 1 : Does support line state change notification + uint32_t TU_RESERVED : 26; + } bmCapabilities; +}cdc_desc_func_telephone_call_state_reporting_capabilities_t; + +// TODO remove +static inline uint8_t cdc_functional_desc_typeof(uint8_t const * p_desc) +{ + return p_desc[2]; +} + +//--------------------------------------------------------------------+ +// Requests +//--------------------------------------------------------------------+ +typedef struct TU_ATTR_PACKED +{ + uint32_t bit_rate; + uint8_t stop_bits; ///< 0: 1 stop bit - 1: 1.5 stop bits - 2: 2 stop bits + uint8_t parity; ///< 0: None - 1: Odd - 2: Even - 3: Mark - 4: Space + uint8_t data_bits; ///< can be 5, 6, 7, 8 or 16 +} cdc_line_coding_t; + +TU_VERIFY_STATIC(sizeof(cdc_line_coding_t) == 7, "size is not correct"); + +typedef struct TU_ATTR_PACKED +{ + uint16_t dte_is_present : 1; ///< Indicates to DCE if DTE is presentor not. This signal corresponds to V.24 signal 108/2 and RS-232 signal DTR. + uint16_t half_duplex_carrier_control : 1; + uint16_t : 14; +} cdc_line_control_state_t; + +TU_VERIFY_STATIC(sizeof(cdc_line_control_state_t) == 2, "size is not correct"); + +TU_ATTR_PACKED_END // End of all packed definitions +TU_ATTR_BIT_FIELD_ORDER_END + +#ifdef __cplusplus + } +#endif + +#endif + +/** @} */ diff --git a/arkanoid/pico/tinyusb/cdc/cdc_device.c b/arkanoid/pico/tinyusb/cdc/cdc_device.c new file mode 100644 index 0000000..a67dc2b --- /dev/null +++ b/arkanoid/pico/tinyusb/cdc/cdc_device.c @@ -0,0 +1,484 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#include "../tusb_option.h" + +#if (TUSB_OPT_DEVICE_ENABLED && CFG_TUD_CDC) + +#include "../usbd.h" +#include "../usbd_pvt.h" + +#include "cdc_device.h" + +//--------------------------------------------------------------------+ +// MACRO CONSTANT TYPEDEF +//--------------------------------------------------------------------+ +enum +{ + BULK_PACKET_SIZE = (TUD_OPT_HIGH_SPEED ? 512 : 64) +}; + +typedef struct +{ + uint8_t itf_num; + uint8_t ep_notif; + uint8_t ep_in; + uint8_t ep_out; + + // Bit 0: DTR (Data Terminal Ready), Bit 1: RTS (Request to Send) + uint8_t line_state; + + /*------------- From this point, data is not cleared by bus reset -------------*/ + char wanted_char; + cdc_line_coding_t line_coding; + + // FIFO + tu_fifo_t rx_ff; + tu_fifo_t tx_ff; + + uint8_t rx_ff_buf[CFG_TUD_CDC_RX_BUFSIZE]; + uint8_t tx_ff_buf[CFG_TUD_CDC_TX_BUFSIZE]; + +#if CFG_FIFO_MUTEX + osal_mutex_def_t rx_ff_mutex; + osal_mutex_def_t tx_ff_mutex; +#endif + + // Endpoint Transfer buffer + CFG_TUSB_MEM_ALIGN uint8_t epout_buf[CFG_TUD_CDC_EP_BUFSIZE]; + CFG_TUSB_MEM_ALIGN uint8_t epin_buf[CFG_TUD_CDC_EP_BUFSIZE]; + +}cdcd_interface_t; + +#define ITF_MEM_RESET_SIZE offsetof(cdcd_interface_t, wanted_char) + +//--------------------------------------------------------------------+ +// INTERNAL OBJECT & FUNCTION DECLARATION +//--------------------------------------------------------------------+ +CFG_TUSB_MEM_SECTION static cdcd_interface_t _cdcd_itf[CFG_TUD_CDC]; + +static void _prep_out_transaction (cdcd_interface_t* p_cdc) +{ + uint8_t const rhport = TUD_OPT_RHPORT; + uint16_t available = tu_fifo_remaining(&p_cdc->rx_ff); + + // Prepare for incoming data but only allow what we can store in the ring buffer. + // TODO Actually we can still carry out the transfer, keeping count of received bytes + // and slowly move it to the FIFO when read(). + // This pre-check reduces endpoint claiming + TU_VERIFY(available >= sizeof(p_cdc->epout_buf), ); + + // claim endpoint + TU_VERIFY(usbd_edpt_claim(rhport, p_cdc->ep_out), ); + + // fifo can be changed before endpoint is claimed + available = tu_fifo_remaining(&p_cdc->rx_ff); + + if ( available >= sizeof(p_cdc->epout_buf) ) + { + usbd_edpt_xfer(rhport, p_cdc->ep_out, p_cdc->epout_buf, sizeof(p_cdc->epout_buf)); + }else + { + // Release endpoint since we don't make any transfer + usbd_edpt_release(rhport, p_cdc->ep_out); + } +} + +//--------------------------------------------------------------------+ +// APPLICATION API +//--------------------------------------------------------------------+ +bool tud_cdc_n_connected(uint8_t itf) +{ + // DTR (bit 0) active is considered as connected + return tud_ready() && tu_bit_test(_cdcd_itf[itf].line_state, 0); +} + +uint8_t tud_cdc_n_get_line_state (uint8_t itf) +{ + return _cdcd_itf[itf].line_state; +} + +void tud_cdc_n_get_line_coding (uint8_t itf, cdc_line_coding_t* coding) +{ + (*coding) = _cdcd_itf[itf].line_coding; +} + +void tud_cdc_n_set_wanted_char (uint8_t itf, char wanted) +{ + _cdcd_itf[itf].wanted_char = wanted; +} + + +//--------------------------------------------------------------------+ +// READ API +//--------------------------------------------------------------------+ +uint32_t tud_cdc_n_available(uint8_t itf) +{ + return tu_fifo_count(&_cdcd_itf[itf].rx_ff); +} + +uint32_t tud_cdc_n_read(uint8_t itf, void* buffer, uint32_t bufsize) +{ + cdcd_interface_t* p_cdc = &_cdcd_itf[itf]; + uint32_t num_read = tu_fifo_read_n(&p_cdc->rx_ff, buffer, bufsize); + _prep_out_transaction(p_cdc); + return num_read; +} + +bool tud_cdc_n_peek(uint8_t itf, uint8_t* chr) +{ + return tu_fifo_peek(&_cdcd_itf[itf].rx_ff, chr); +} + +void tud_cdc_n_read_flush (uint8_t itf) +{ + cdcd_interface_t* p_cdc = &_cdcd_itf[itf]; + tu_fifo_clear(&p_cdc->rx_ff); + _prep_out_transaction(p_cdc); +} + +//--------------------------------------------------------------------+ +// WRITE API +//--------------------------------------------------------------------+ +uint32_t tud_cdc_n_write(uint8_t itf, void const* buffer, uint32_t bufsize) +{ + cdcd_interface_t* p_cdc = &_cdcd_itf[itf]; + uint16_t ret = tu_fifo_write_n(&p_cdc->tx_ff, buffer, bufsize); + + // flush if queue more than packet size + if ( tu_fifo_count(&p_cdc->tx_ff) >= BULK_PACKET_SIZE ) + { + tud_cdc_n_write_flush(itf); + } + + return ret; +} + +uint32_t tud_cdc_n_write_flush (uint8_t itf) +{ + cdcd_interface_t* p_cdc = &_cdcd_itf[itf]; + + // Skip if usb is not ready yet + TU_VERIFY( tud_ready(), 0 ); + + // No data to send + if ( !tu_fifo_count(&p_cdc->tx_ff) ) return 0; + + uint8_t const rhport = TUD_OPT_RHPORT; + + // Claim the endpoint + TU_VERIFY( usbd_edpt_claim(rhport, p_cdc->ep_in), 0 ); + + // Pull data from FIFO + uint16_t const count = tu_fifo_read_n(&p_cdc->tx_ff, p_cdc->epin_buf, sizeof(p_cdc->epin_buf)); + + if ( count ) + { + TU_ASSERT( usbd_edpt_xfer(rhport, p_cdc->ep_in, p_cdc->epin_buf, count), 0 ); + return count; + }else + { + // Release endpoint since we don't make any transfer + // Note: data is dropped if terminal is not connected + usbd_edpt_release(rhport, p_cdc->ep_in); + return 0; + } +} + +uint32_t tud_cdc_n_write_available (uint8_t itf) +{ + return tu_fifo_remaining(&_cdcd_itf[itf].tx_ff); +} + +bool tud_cdc_n_write_clear (uint8_t itf) +{ + return tu_fifo_clear(&_cdcd_itf[itf].tx_ff); +} + +//--------------------------------------------------------------------+ +// USBD Driver API +//--------------------------------------------------------------------+ +void cdcd_init(void) +{ + tu_memclr(_cdcd_itf, sizeof(_cdcd_itf)); + + for(uint8_t i=0; i<CFG_TUD_CDC; i++) + { + cdcd_interface_t* p_cdc = &_cdcd_itf[i]; + + p_cdc->wanted_char = -1; + + // default line coding is : stop bit = 1, parity = none, data bits = 8 + p_cdc->line_coding.bit_rate = 115200; + p_cdc->line_coding.stop_bits = 0; + p_cdc->line_coding.parity = 0; + p_cdc->line_coding.data_bits = 8; + + // Config RX fifo + tu_fifo_config(&p_cdc->rx_ff, p_cdc->rx_ff_buf, TU_ARRAY_SIZE(p_cdc->rx_ff_buf), 1, false); + + // Config TX fifo as overwritable at initialization and will be changed to non-overwritable + // if terminal supports DTR bit. Without DTR we do not know if data is actually polled by terminal. + // In this way, the most current data is prioritized. + tu_fifo_config(&p_cdc->tx_ff, p_cdc->tx_ff_buf, TU_ARRAY_SIZE(p_cdc->tx_ff_buf), 1, true); + +#if CFG_FIFO_MUTEX + tu_fifo_config_mutex(&p_cdc->rx_ff, NULL, osal_mutex_create(&p_cdc->rx_ff_mutex)); + tu_fifo_config_mutex(&p_cdc->tx_ff, osal_mutex_create(&p_cdc->tx_ff_mutex), NULL); +#endif + } +} + +void cdcd_reset(uint8_t rhport) +{ + (void) rhport; + + for(uint8_t i=0; i<CFG_TUD_CDC; i++) + { + cdcd_interface_t* p_cdc = &_cdcd_itf[i]; + + tu_memclr(p_cdc, ITF_MEM_RESET_SIZE); + tu_fifo_clear(&p_cdc->rx_ff); + tu_fifo_clear(&p_cdc->tx_ff); + tu_fifo_set_overwritable(&p_cdc->tx_ff, true); + } +} + +uint16_t cdcd_open(uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint16_t max_len) +{ + // Only support ACM subclass + TU_VERIFY( TUSB_CLASS_CDC == itf_desc->bInterfaceClass && + CDC_COMM_SUBCLASS_ABSTRACT_CONTROL_MODEL == itf_desc->bInterfaceSubClass, 0); + + // Find available interface + cdcd_interface_t * p_cdc = NULL; + for(uint8_t cdc_id=0; cdc_id<CFG_TUD_CDC; cdc_id++) + { + if ( _cdcd_itf[cdc_id].ep_in == 0 ) + { + p_cdc = &_cdcd_itf[cdc_id]; + break; + } + } + TU_ASSERT(p_cdc, 0); + + //------------- Control Interface -------------// + p_cdc->itf_num = itf_desc->bInterfaceNumber; + + uint16_t drv_len = sizeof(tusb_desc_interface_t); + uint8_t const * p_desc = tu_desc_next( itf_desc ); + + // Communication Functional Descriptors + while ( TUSB_DESC_CS_INTERFACE == tu_desc_type(p_desc) && drv_len <= max_len ) + { + drv_len += tu_desc_len(p_desc); + p_desc = tu_desc_next(p_desc); + } + + if ( TUSB_DESC_ENDPOINT == tu_desc_type(p_desc) ) + { + // notification endpoint + tusb_desc_endpoint_t const * desc_ep = (tusb_desc_endpoint_t const *) p_desc; + + TU_ASSERT( usbd_edpt_open(rhport, desc_ep), 0 ); + p_cdc->ep_notif = desc_ep->bEndpointAddress; + + drv_len += tu_desc_len(p_desc); + p_desc = tu_desc_next(p_desc); + } + + //------------- Data Interface (if any) -------------// + if ( (TUSB_DESC_INTERFACE == tu_desc_type(p_desc)) && + (TUSB_CLASS_CDC_DATA == ((tusb_desc_interface_t const *) p_desc)->bInterfaceClass) ) + { + // next to endpoint descriptor + drv_len += tu_desc_len(p_desc); + p_desc = tu_desc_next(p_desc); + + // Open endpoint pair + TU_ASSERT( usbd_open_edpt_pair(rhport, p_desc, 2, TUSB_XFER_BULK, &p_cdc->ep_out, &p_cdc->ep_in), 0 ); + + drv_len += 2*sizeof(tusb_desc_endpoint_t); + } + + // Prepare for incoming data + _prep_out_transaction(p_cdc); + + return drv_len; +} + +// Invoked when a control transfer occurred on an interface of this class +// Driver response accordingly to the request and the transfer stage (setup/data/ack) +// return false to stall control endpoint (e.g unsupported request) +bool cdcd_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb_control_request_t const * request) +{ + // Handle class request only + TU_VERIFY(request->bmRequestType_bit.type == TUSB_REQ_TYPE_CLASS); + + uint8_t itf = 0; + cdcd_interface_t* p_cdc = _cdcd_itf; + + // Identify which interface to use + for ( ; ; itf++, p_cdc++) + { + if (itf >= TU_ARRAY_SIZE(_cdcd_itf)) return false; + + if ( p_cdc->itf_num == request->wIndex ) break; + } + + switch ( request->bRequest ) + { + case CDC_REQUEST_SET_LINE_CODING: + if (stage == CONTROL_STAGE_SETUP) + { + TU_LOG2(" Set Line Coding\r\n"); + tud_control_xfer(rhport, request, &p_cdc->line_coding, sizeof(cdc_line_coding_t)); + } + else if ( stage == CONTROL_STAGE_ACK) + { + if ( tud_cdc_line_coding_cb ) tud_cdc_line_coding_cb(itf, &p_cdc->line_coding); + } + break; + + case CDC_REQUEST_GET_LINE_CODING: + if (stage == CONTROL_STAGE_SETUP) + { + TU_LOG2(" Get Line Coding\r\n"); + tud_control_xfer(rhport, request, &p_cdc->line_coding, sizeof(cdc_line_coding_t)); + } + break; + + case CDC_REQUEST_SET_CONTROL_LINE_STATE: + if (stage == CONTROL_STAGE_SETUP) + { + tud_control_status(rhport, request); + } + else if (stage == CONTROL_STAGE_ACK) + { + // CDC PSTN v1.2 section 6.3.12 + // Bit 0: Indicates if DTE is present or not. + // This signal corresponds to V.24 signal 108/2 and RS-232 signal DTR (Data Terminal Ready) + // Bit 1: Carrier control for half-duplex modems. + // This signal corresponds to V.24 signal 105 and RS-232 signal RTS (Request to Send) + bool const dtr = tu_bit_test(request->wValue, 0); + bool const rts = tu_bit_test(request->wValue, 1); + + p_cdc->line_state = (uint8_t) request->wValue; + + // Disable fifo overwriting if DTR bit is set + tu_fifo_set_overwritable(&p_cdc->tx_ff, !dtr); + + TU_LOG2(" Set Control Line State: DTR = %d, RTS = %d\r\n", dtr, rts); + + // Invoke callback + if ( tud_cdc_line_state_cb ) tud_cdc_line_state_cb(itf, dtr, rts); + } + break; + case CDC_REQUEST_SEND_BREAK: + if (stage == CONTROL_STAGE_SETUP) + { + tud_control_status(rhport, request); + } + else if (stage == CONTROL_STAGE_ACK) + { + TU_LOG2(" Send Break\r\n"); + if ( tud_cdc_send_break_cb ) tud_cdc_send_break_cb(itf, request->wValue); + } + break; + + default: return false; // stall unsupported request + } + + return true; +} + +bool cdcd_xfer_cb(uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint32_t xferred_bytes) +{ + (void) result; + + uint8_t itf; + cdcd_interface_t* p_cdc; + + // Identify which interface to use + for (itf = 0; itf < CFG_TUD_CDC; itf++) + { + p_cdc = &_cdcd_itf[itf]; + if ( ( ep_addr == p_cdc->ep_out ) || ( ep_addr == p_cdc->ep_in ) ) break; + } + TU_ASSERT(itf < CFG_TUD_CDC); + + // Received new data + if ( ep_addr == p_cdc->ep_out ) + { + tu_fifo_write_n(&p_cdc->rx_ff, &p_cdc->epout_buf, xferred_bytes); + + // Check for wanted char and invoke callback if needed + if ( tud_cdc_rx_wanted_cb && (((signed char) p_cdc->wanted_char) != -1) ) + { + for ( uint32_t i = 0; i < xferred_bytes; i++ ) + { + if ( (p_cdc->wanted_char == p_cdc->epout_buf[i]) && !tu_fifo_empty(&p_cdc->rx_ff) ) + { + tud_cdc_rx_wanted_cb(itf, p_cdc->wanted_char); + } + } + } + + // invoke receive callback (if there is still data) + if (tud_cdc_rx_cb && !tu_fifo_empty(&p_cdc->rx_ff) ) tud_cdc_rx_cb(itf); + + // prepare for OUT transaction + _prep_out_transaction(p_cdc); + } + + // Data sent to host, we continue to fetch from tx fifo to send. + // Note: This will cause incorrect baudrate set in line coding. + // Though maybe the baudrate is not really important !!! + if ( ep_addr == p_cdc->ep_in ) + { + // invoke transmit callback to possibly refill tx fifo + if ( tud_cdc_tx_complete_cb ) tud_cdc_tx_complete_cb(itf); + + if ( 0 == tud_cdc_n_write_flush(itf) ) + { + // If there is no data left, a ZLP should be sent if + // xferred_bytes is multiple of EP Packet size and not zero + if ( !tu_fifo_count(&p_cdc->tx_ff) && xferred_bytes && (0 == (xferred_bytes & (BULK_PACKET_SIZE-1))) ) + { + if ( usbd_edpt_claim(rhport, p_cdc->ep_in) ) + { + usbd_edpt_xfer(rhport, p_cdc->ep_in, NULL, 0); + } + } + } + } + + // nothing to do with notif endpoint for now + + return true; +} + +#endif diff --git a/arkanoid/pico/tinyusb/cdc/cdc_device.h b/arkanoid/pico/tinyusb/cdc/cdc_device.h new file mode 100644 index 0000000..b729b0d --- /dev/null +++ b/arkanoid/pico/tinyusb/cdc/cdc_device.h @@ -0,0 +1,260 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef _TUSB_CDC_DEVICE_H_ +#define _TUSB_CDC_DEVICE_H_ + +#include "../tusb_common.h" +#include "cdc.h" + +//--------------------------------------------------------------------+ +// Class Driver Configuration +//--------------------------------------------------------------------+ +#if !defined(CFG_TUD_CDC_EP_BUFSIZE) && defined(CFG_TUD_CDC_EPSIZE) + #warning CFG_TUD_CDC_EPSIZE is renamed to CFG_TUD_CDC_EP_BUFSIZE, please update to use the new name + #define CFG_TUD_CDC_EP_BUFSIZE CFG_TUD_CDC_EPSIZE +#endif + +#ifndef CFG_TUD_CDC_EP_BUFSIZE + #define CFG_TUD_CDC_EP_BUFSIZE (TUD_OPT_HIGH_SPEED ? 512 : 64) +#endif + +#ifdef __cplusplus + extern "C" { +#endif + +/** \addtogroup CDC_Serial Serial + * @{ + * \defgroup CDC_Serial_Device Device + * @{ */ + +//--------------------------------------------------------------------+ +// Application API (Multiple Ports) +// CFG_TUD_CDC > 1 +//--------------------------------------------------------------------+ + +// Check if terminal is connected to this port +bool tud_cdc_n_connected (uint8_t itf); + +// Get current line state. Bit 0: DTR (Data Terminal Ready), Bit 1: RTS (Request to Send) +uint8_t tud_cdc_n_get_line_state (uint8_t itf); + +// Get current line encoding: bit rate, stop bits parity etc .. +void tud_cdc_n_get_line_coding (uint8_t itf, cdc_line_coding_t* coding); + +// Set special character that will trigger tud_cdc_rx_wanted_cb() callback on receiving +void tud_cdc_n_set_wanted_char (uint8_t itf, char wanted); + +// Get the number of bytes available for reading +uint32_t tud_cdc_n_available (uint8_t itf); + +// Read received bytes +uint32_t tud_cdc_n_read (uint8_t itf, void* buffer, uint32_t bufsize); + +// Read a byte, return -1 if there is none +static inline +int32_t tud_cdc_n_read_char (uint8_t itf); + +// Clear the received FIFO +void tud_cdc_n_read_flush (uint8_t itf); + +// Get a byte from FIFO at the specified position without removing it +bool tud_cdc_n_peek (uint8_t itf, uint8_t* ui8); + +// Write bytes to TX FIFO, data may remain in the FIFO for a while +uint32_t tud_cdc_n_write (uint8_t itf, void const* buffer, uint32_t bufsize); + +// Write a byte +static inline +uint32_t tud_cdc_n_write_char (uint8_t itf, char ch); + +// Write a null-terminated string +static inline +uint32_t tud_cdc_n_write_str (uint8_t itf, char const* str); + +// Force sending data if possible, return number of forced bytes +uint32_t tud_cdc_n_write_flush (uint8_t itf); + +// Return the number of bytes (characters) available for writing to TX FIFO buffer in a single n_write operation. +uint32_t tud_cdc_n_write_available (uint8_t itf); + +// Clear the transmit FIFO +bool tud_cdc_n_write_clear (uint8_t itf); + +//--------------------------------------------------------------------+ +// Application API (Single Port) +//--------------------------------------------------------------------+ +static inline bool tud_cdc_connected (void); +static inline uint8_t tud_cdc_get_line_state (void); +static inline void tud_cdc_get_line_coding (cdc_line_coding_t* coding); +static inline void tud_cdc_set_wanted_char (char wanted); + +static inline uint32_t tud_cdc_available (void); +static inline int32_t tud_cdc_read_char (void); +static inline uint32_t tud_cdc_read (void* buffer, uint32_t bufsize); +static inline void tud_cdc_read_flush (void); +static inline bool tud_cdc_peek (uint8_t* ui8); + +static inline uint32_t tud_cdc_write_char (char ch); +static inline uint32_t tud_cdc_write (void const* buffer, uint32_t bufsize); +static inline uint32_t tud_cdc_write_str (char const* str); +static inline uint32_t tud_cdc_write_flush (void); +static inline uint32_t tud_cdc_write_available (void); +static inline bool tud_cdc_write_clear (void); + +//--------------------------------------------------------------------+ +// Application Callback API (weak is optional) +//--------------------------------------------------------------------+ + +// Invoked when received new data +TU_ATTR_WEAK void tud_cdc_rx_cb(uint8_t itf); + +// Invoked when received `wanted_char` +TU_ATTR_WEAK void tud_cdc_rx_wanted_cb(uint8_t itf, char wanted_char); + +// Invoked when space becomes available in TX buffer +TU_ATTR_WEAK void tud_cdc_tx_complete_cb(uint8_t itf); + +// Invoked when line state DTR & RTS are changed via SET_CONTROL_LINE_STATE +TU_ATTR_WEAK void tud_cdc_line_state_cb(uint8_t itf, bool dtr, bool rts); + +// Invoked when line coding is change via SET_LINE_CODING +TU_ATTR_WEAK void tud_cdc_line_coding_cb(uint8_t itf, cdc_line_coding_t const* p_line_coding); + +// Invoked when received send break +TU_ATTR_WEAK void tud_cdc_send_break_cb(uint8_t itf, uint16_t duration_ms); + +//--------------------------------------------------------------------+ +// Inline Functions +//--------------------------------------------------------------------+ +static inline int32_t tud_cdc_n_read_char (uint8_t itf) +{ + uint8_t ch; + return tud_cdc_n_read(itf, &ch, 1) ? (int32_t) ch : -1; +} + +static inline uint32_t tud_cdc_n_write_char(uint8_t itf, char ch) +{ + return tud_cdc_n_write(itf, &ch, 1); +} + +static inline uint32_t tud_cdc_n_write_str (uint8_t itf, char const* str) +{ + return tud_cdc_n_write(itf, str, strlen(str)); +} + +static inline bool tud_cdc_connected (void) +{ + return tud_cdc_n_connected(0); +} + +static inline uint8_t tud_cdc_get_line_state (void) +{ + return tud_cdc_n_get_line_state(0); +} + +static inline void tud_cdc_get_line_coding (cdc_line_coding_t* coding) +{ + tud_cdc_n_get_line_coding(0, coding); +} + +static inline void tud_cdc_set_wanted_char (char wanted) +{ + tud_cdc_n_set_wanted_char(0, wanted); +} + +static inline uint32_t tud_cdc_available (void) +{ + return tud_cdc_n_available(0); +} + +static inline int32_t tud_cdc_read_char (void) +{ + return tud_cdc_n_read_char(0); +} + +static inline uint32_t tud_cdc_read (void* buffer, uint32_t bufsize) +{ + return tud_cdc_n_read(0, buffer, bufsize); +} + +static inline void tud_cdc_read_flush (void) +{ + tud_cdc_n_read_flush(0); +} + +static inline bool tud_cdc_peek (uint8_t* ui8) +{ + return tud_cdc_n_peek(0, ui8); +} + +static inline uint32_t tud_cdc_write_char (char ch) +{ + return tud_cdc_n_write_char(0, ch); +} + +static inline uint32_t tud_cdc_write (void const* buffer, uint32_t bufsize) +{ + return tud_cdc_n_write(0, buffer, bufsize); +} + +static inline uint32_t tud_cdc_write_str (char const* str) +{ + return tud_cdc_n_write_str(0, str); +} + +static inline uint32_t tud_cdc_write_flush (void) +{ + return tud_cdc_n_write_flush(0); +} + +static inline uint32_t tud_cdc_write_available(void) +{ + return tud_cdc_n_write_available(0); +} + +static inline bool tud_cdc_write_clear(void) +{ + return tud_cdc_n_write_clear(0); +} + +/** @} */ +/** @} */ + +//--------------------------------------------------------------------+ +// INTERNAL USBD-CLASS DRIVER API +//--------------------------------------------------------------------+ +void cdcd_init (void); +void cdcd_reset (uint8_t rhport); +uint16_t cdcd_open (uint8_t rhport, tusb_desc_interface_t const * itf_desc, uint16_t max_len); +bool cdcd_control_xfer_cb (uint8_t rhport, uint8_t stage, tusb_control_request_t const * request); +bool cdcd_xfer_cb (uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint32_t xferred_bytes); + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_CDC_DEVICE_H_ */ diff --git a/arkanoid/pico/tinyusb/cdc/cdc_host.c b/arkanoid/pico/tinyusb/cdc/cdc_host.c new file mode 100644 index 0000000..33944e7 --- /dev/null +++ b/arkanoid/pico/tinyusb/cdc/cdc_host.c @@ -0,0 +1,249 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#include "../tusb_option.h" + +#if (TUSB_OPT_HOST_ENABLED && CFG_TUH_CDC) + +#include "../host/usbh.h" +#include "../host/usbh_classdriver.h" + +#include "cdc_host.h" + +//--------------------------------------------------------------------+ +// MACRO CONSTANT TYPEDEF +//--------------------------------------------------------------------+ +typedef struct { + uint8_t itf_num; + uint8_t itf_protocol; + + uint8_t ep_notif; + uint8_t ep_in; + uint8_t ep_out; + + cdc_acm_capability_t acm_capability; + +} cdch_data_t; + +//--------------------------------------------------------------------+ +// INTERNAL OBJECT & FUNCTION DECLARATION +//--------------------------------------------------------------------+ +static cdch_data_t cdch_data[CFG_TUH_DEVICE_MAX]; + +static inline cdch_data_t* get_itf(uint8_t dev_addr) +{ + return &cdch_data[dev_addr-1]; +} + +bool tuh_cdc_mounted(uint8_t dev_addr) +{ + cdch_data_t* cdc = get_itf(dev_addr); + return cdc->ep_in && cdc->ep_out; +} + +bool tuh_cdc_is_busy(uint8_t dev_addr, cdc_pipeid_t pipeid) +{ + if ( !tuh_cdc_mounted(dev_addr) ) return false; + + cdch_data_t const * p_cdc = get_itf(dev_addr); + + switch (pipeid) + { + case CDC_PIPE_NOTIFICATION: + return usbh_edpt_busy(dev_addr, p_cdc->ep_notif ); + + case CDC_PIPE_DATA_IN: + return usbh_edpt_busy(dev_addr, p_cdc->ep_in ); + + case CDC_PIPE_DATA_OUT: + return usbh_edpt_busy(dev_addr, p_cdc->ep_out ); + + default: + return false; + } +} + +//--------------------------------------------------------------------+ +// APPLICATION API (parameter validation needed) +//--------------------------------------------------------------------+ +bool tuh_cdc_serial_is_mounted(uint8_t dev_addr) +{ + // TODO consider all AT Command as serial candidate + return tuh_cdc_mounted(dev_addr) && + (cdch_data[dev_addr-1].itf_protocol <= CDC_COMM_PROTOCOL_ATCOMMAND_CDMA); +} + +bool tuh_cdc_send(uint8_t dev_addr, void const * p_data, uint32_t length, bool is_notify) +{ + (void) is_notify; + TU_VERIFY( tuh_cdc_mounted(dev_addr) ); + TU_VERIFY( p_data != NULL && length, TUSB_ERROR_INVALID_PARA); + + uint8_t const ep_out = cdch_data[dev_addr-1].ep_out; + if ( usbh_edpt_busy(dev_addr, ep_out) ) return false; + + return usbh_edpt_xfer(dev_addr, ep_out, (void *) p_data, length); +} + +bool tuh_cdc_receive(uint8_t dev_addr, void * p_buffer, uint32_t length, bool is_notify) +{ + (void) is_notify; + TU_VERIFY( tuh_cdc_mounted(dev_addr) ); + TU_VERIFY( p_buffer != NULL && length, TUSB_ERROR_INVALID_PARA); + + uint8_t const ep_in = cdch_data[dev_addr-1].ep_in; + if ( usbh_edpt_busy(dev_addr, ep_in) ) return false; + + return usbh_edpt_xfer(dev_addr, ep_in, p_buffer, length); +} + +bool tuh_cdc_set_control_line_state(uint8_t dev_addr, bool dtr, bool rts, tuh_control_complete_cb_t complete_cb) +{ + cdch_data_t const * p_cdc = get_itf(dev_addr); + tusb_control_request_t const request = + { + .bmRequestType_bit = + { + .recipient = TUSB_REQ_RCPT_INTERFACE, + .type = TUSB_REQ_TYPE_CLASS, + .direction = TUSB_DIR_OUT + }, + .bRequest = CDC_REQUEST_SET_CONTROL_LINE_STATE, + .wValue = (rts ? 2 : 0) | (dtr ? 1 : 0), + .wIndex = p_cdc->itf_num, + .wLength = 0 + }; + + TU_ASSERT( tuh_control_xfer(dev_addr, &request, NULL, complete_cb) ); + return true; +} + +//--------------------------------------------------------------------+ +// USBH-CLASS DRIVER API +//--------------------------------------------------------------------+ +void cdch_init(void) +{ + tu_memclr(cdch_data, sizeof(cdch_data)); +} + +bool cdch_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const *itf_desc, uint16_t max_len) +{ + (void) max_len; + + // Only support ACM subclass + // Protocol 0xFF can be RNDIS device for windows XP + TU_VERIFY( TUSB_CLASS_CDC == itf_desc->bInterfaceClass && + CDC_COMM_SUBCLASS_ABSTRACT_CONTROL_MODEL == itf_desc->bInterfaceSubClass && + 0xFF != itf_desc->bInterfaceProtocol); + + cdch_data_t * p_cdc = get_itf(dev_addr); + + p_cdc->itf_num = itf_desc->bInterfaceNumber; + p_cdc->itf_protocol = itf_desc->bInterfaceProtocol; + + //------------- Communication Interface -------------// + uint16_t drv_len = tu_desc_len(itf_desc); + uint8_t const * p_desc = tu_desc_next(itf_desc); + + // Communication Functional Descriptors + while( TUSB_DESC_CS_INTERFACE == tu_desc_type(p_desc) && drv_len <= max_len ) + { + if ( CDC_FUNC_DESC_ABSTRACT_CONTROL_MANAGEMENT == cdc_functional_desc_typeof(p_desc) ) + { + // save ACM bmCapabilities + p_cdc->acm_capability = ((cdc_desc_func_acm_t const *) p_desc)->bmCapabilities; + } + + drv_len += tu_desc_len(p_desc); + p_desc = tu_desc_next(p_desc); + } + + if ( TUSB_DESC_ENDPOINT == tu_desc_type(p_desc) ) + { + // notification endpoint + tusb_desc_endpoint_t const * desc_ep = (tusb_desc_endpoint_t const *) p_desc; + + TU_ASSERT( usbh_edpt_open(rhport, dev_addr, desc_ep) ); + p_cdc->ep_notif = desc_ep->bEndpointAddress; + + drv_len += tu_desc_len(p_desc); + p_desc = tu_desc_next(p_desc); + } + + //------------- Data Interface (if any) -------------// + if ( (TUSB_DESC_INTERFACE == tu_desc_type(p_desc)) && + (TUSB_CLASS_CDC_DATA == ((tusb_desc_interface_t const *) p_desc)->bInterfaceClass) ) + { + // next to endpoint descriptor + drv_len += tu_desc_len(p_desc); + p_desc = tu_desc_next(p_desc); + + // data endpoints expected to be in pairs + for(uint32_t i=0; i<2; i++) + { + tusb_desc_endpoint_t const *desc_ep = (tusb_desc_endpoint_t const *) p_desc; + TU_ASSERT(TUSB_DESC_ENDPOINT == desc_ep->bDescriptorType && TUSB_XFER_BULK == desc_ep->bmAttributes.xfer); + + TU_ASSERT(usbh_edpt_open(rhport, dev_addr, desc_ep)); + + if ( tu_edpt_dir(desc_ep->bEndpointAddress) == TUSB_DIR_IN ) + { + p_cdc->ep_in = desc_ep->bEndpointAddress; + }else + { + p_cdc->ep_out = desc_ep->bEndpointAddress; + } + + drv_len += tu_desc_len(p_desc); + p_desc = tu_desc_next( p_desc ); + } + } + + return true; +} + +bool cdch_set_config(uint8_t dev_addr, uint8_t itf_num) +{ + (void) dev_addr; (void) itf_num; + return true; +} + +bool cdch_xfer_cb(uint8_t dev_addr, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes) +{ + (void) ep_addr; + tuh_cdc_xfer_isr( dev_addr, event, 0, xferred_bytes ); + return true; +} + +void cdch_close(uint8_t dev_addr) +{ + TU_VERIFY(dev_addr <= CFG_TUH_DEVICE_MAX, ); + + cdch_data_t * p_cdc = get_itf(dev_addr); + tu_memclr(p_cdc, sizeof(cdch_data_t)); +} + +#endif diff --git a/arkanoid/pico/tinyusb/cdc/cdc_host.h b/arkanoid/pico/tinyusb/cdc/cdc_host.h new file mode 100644 index 0000000..0d43513 --- /dev/null +++ b/arkanoid/pico/tinyusb/cdc/cdc_host.h @@ -0,0 +1,134 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef _TUSB_CDC_HOST_H_ +#define _TUSB_CDC_HOST_H_ + +#include "cdc.h" + +#ifdef __cplusplus + extern "C" { +#endif + +//--------------------------------------------------------------------+ +// CDC APPLICATION PUBLIC API +//--------------------------------------------------------------------+ +/** \ingroup ClassDriver_CDC Communication Device Class (CDC) + * \addtogroup CDC_Serial Serial + * @{ + * \defgroup CDC_Serial_Host Host + * @{ */ + +bool tuh_cdc_set_control_line_state(uint8_t dev_addr, bool dtr, bool rts, tuh_control_complete_cb_t complete_cb); + +static inline bool tuh_cdc_connect(uint8_t dev_addr, tuh_control_complete_cb_t complete_cb) +{ + return tuh_cdc_set_control_line_state(dev_addr, true, true, complete_cb); +} + +static inline bool tuh_cdc_disconnect(uint8_t dev_addr, tuh_control_complete_cb_t complete_cb) +{ + return tuh_cdc_set_control_line_state(dev_addr, false, false, complete_cb); +} + +/** \brief Check if device support CDC Serial interface or not + * \param[in] dev_addr device address + * \retval true if device supports + * \retval false if device does not support or is not mounted + */ +bool tuh_cdc_serial_is_mounted(uint8_t dev_addr); + +/** \brief Check if the interface is currently busy or not + * \param[in] dev_addr device address + * \param[in] pipeid value from \ref cdc_pipeid_t to indicate target pipe. + * \retval true if the interface is busy, meaning the stack is still transferring/waiting data from/to device + * \retval false if the interface is not busy, meaning the stack successfully transferred data from/to device + * \note This function is used to check if previous transfer is complete (success or error), so that the next transfer + * can be scheduled. User needs to make sure the corresponding interface is mounted + * (by \ref tuh_cdc_serial_is_mounted) before calling this function. + */ +bool tuh_cdc_is_busy(uint8_t dev_addr, cdc_pipeid_t pipeid); + +/** \brief Perform USB OUT transfer to device + * \param[in] dev_addr device address + * \param[in] p_data Buffer containing data. Must be accessible by USB controller (see \ref CFG_TUSB_MEM_SECTION) + * \param[in] length Number of bytes to be transferred via USB bus + * \retval TUSB_ERROR_NONE on success + * \retval TUSB_ERROR_INTERFACE_IS_BUSY if the interface is already transferring data with device + * \retval TUSB_ERROR_DEVICE_NOT_READY if device is not yet configured (by SET CONFIGURED request) + * \retval TUSB_ERROR_INVALID_PARA if input parameters are not correct + * \note This function is non-blocking and returns immediately. The result of USB transfer will be reported by the + * interface's callback function. \a p_data must be declared with \ref CFG_TUSB_MEM_SECTION. + */ +bool tuh_cdc_send(uint8_t dev_addr, void const * p_data, uint32_t length, bool is_notify); + +/** \brief Perform USB IN transfer to get data from device + * \param[in] dev_addr device address + * \param[in] p_buffer Buffer containing received data. Must be accessible by USB controller (see \ref CFG_TUSB_MEM_SECTION) + * \param[in] length Number of bytes to be transferred via USB bus + * \retval TUSB_ERROR_NONE on success + * \retval TUSB_ERROR_INTERFACE_IS_BUSY if the interface is already transferring data with device + * \retval TUSB_ERROR_DEVICE_NOT_READY if device is not yet configured (by SET CONFIGURED request) + * \retval TUSB_ERROR_INVALID_PARA if input parameters are not correct + * \note This function is non-blocking and returns immediately. The result of USB transfer will be reported by the + * interface's callback function. \a p_data must be declared with \ref CFG_TUSB_MEM_SECTION. + */ +bool tuh_cdc_receive(uint8_t dev_addr, void * p_buffer, uint32_t length, bool is_notify); + +//--------------------------------------------------------------------+ +// CDC APPLICATION CALLBACKS +//--------------------------------------------------------------------+ + +/** \brief Callback function that is invoked when an transferring event occurred + * \param[in] dev_addr Address of device + * \param[in] event an value from \ref xfer_result_t + * \param[in] pipe_id value from \ref cdc_pipeid_t indicate the pipe + * \param[in] xferred_bytes Number of bytes transferred via USB bus + * \note event can be one of following + * - XFER_RESULT_SUCCESS : previously scheduled transfer completes successfully. + * - XFER_RESULT_FAILED : previously scheduled transfer encountered a transaction error. + * - XFER_RESULT_STALLED : previously scheduled transfer is stalled by device. + * \note + */ +void tuh_cdc_xfer_isr(uint8_t dev_addr, xfer_result_t event, cdc_pipeid_t pipe_id, uint32_t xferred_bytes); + +/// @} // group CDC_Serial_Host +/// @} + +//--------------------------------------------------------------------+ +// Internal Class Driver API +//--------------------------------------------------------------------+ +void cdch_init (void); +bool cdch_open (uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const *itf_desc, uint16_t max_len); +bool cdch_set_config (uint8_t dev_addr, uint8_t itf_num); +bool cdch_xfer_cb (uint8_t dev_addr, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes); +void cdch_close (uint8_t dev_addr); + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_CDC_HOST_H_ */ diff --git a/arkanoid/pico/tinyusb/cdc/cdc_rndis.h b/arkanoid/pico/tinyusb/cdc/cdc_rndis.h new file mode 100644 index 0000000..e0f129f --- /dev/null +++ b/arkanoid/pico/tinyusb/cdc/cdc_rndis.h @@ -0,0 +1,301 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +/** \ingroup ClassDriver_CDC Communication Device Class (CDC) + * \defgroup CDC_RNDIS Remote Network Driver Interface Specification (RNDIS) + * @{ + * \defgroup CDC_RNDIS_Common Common Definitions + * @{ */ + +#ifndef _TUSB_CDC_RNDIS_H_ +#define _TUSB_CDC_RNDIS_H_ + +#include "cdc.h" + +#ifdef __cplusplus + extern "C" { +#endif + +#ifdef __CC_ARM +#pragma diag_suppress 66 // Suppress Keil warnings #66-D: enumeration value is out of "int" range +#endif + +/// RNDIS Message Types +typedef enum +{ + RNDIS_MSG_PACKET = 0x00000001UL, ///< The host and device use this to send network data to one another. + + RNDIS_MSG_INITIALIZE = 0x00000002UL, ///< Sent by the host to initialize the device. + RNDIS_MSG_INITIALIZE_CMPLT = 0x80000002UL, ///< Device response to an initialize message. + + RNDIS_MSG_HALT = 0x00000003UL, ///< Sent by the host to halt the device. This does not have a response. It is optional for the device to send this message to the host. + + RNDIS_MSG_QUERY = 0x00000004UL, ///< Sent by the host to send a query OID. + RNDIS_MSG_QUERY_CMPLT = 0x80000004UL, ///< Device response to a query OID. + + RNDIS_MSG_SET = 0x00000005UL, ///< Sent by the host to send a set OID. + RNDIS_MSG_SET_CMPLT = 0x80000005UL, ///< Device response to a set OID. + + RNDIS_MSG_RESET = 0x00000006UL, ///< Sent by the host to perform a soft reset on the device. + RNDIS_MSG_RESET_CMPLT = 0x80000006UL, ///< Device response to reset message. + + RNDIS_MSG_INDICATE_STATUS = 0x00000007UL, ///< Sent by the device to indicate its status or an error when an unrecognized message is received. + + RNDIS_MSG_KEEP_ALIVE = 0x00000008UL, ///< During idle periods, sent every few seconds by the host to check that the device is still responsive. It is optional for the device to send this message to check if the host is active. + RNDIS_MSG_KEEP_ALIVE_CMPLT = 0x80000008UL ///< The device response to a keepalivemessage. The host can respond with this message to a keepalive message from the device when the device implements the optional KeepAliveTimer. +}rndis_msg_type_t; + +/// RNDIS Message Status Values +typedef enum +{ + RNDIS_STATUS_SUCCESS = 0x00000000UL, ///< Success + RNDIS_STATUS_FAILURE = 0xC0000001UL, ///< Unspecified error + RNDIS_STATUS_INVALID_DATA = 0xC0010015UL, ///< Invalid data error + RNDIS_STATUS_NOT_SUPPORTED = 0xC00000BBUL, ///< Unsupported request error + RNDIS_STATUS_MEDIA_CONNECT = 0x4001000BUL, ///< Device is connected to a network medium. + RNDIS_STATUS_MEDIA_DISCONNECT = 0x4001000CUL ///< Device is disconnected from the medium. +}rndis_msg_status_t; + +#ifdef __CC_ARM +#pragma diag_default 66 // return Keil 66 to normal severity +#endif + +//--------------------------------------------------------------------+ +// MESSAGE STRUCTURE +//--------------------------------------------------------------------+ + +//------------- Initialize -------------// +/// \brief Initialize Message +/// \details This message MUST be sent by the host to initialize the device. +typedef struct { + uint32_t type ; ///< Message type, must be \ref RNDIS_MSG_INITIALIZE + uint32_t length ; ///< Message length in bytes, must be 0x18 + uint32_t request_id ; ///< A 32-bit integer value, generated by the host, used to match the host's sent request to the response from the device. + uint32_t major_version ; ///< The major version of the RNDIS Protocol implemented by the host. + uint32_t minor_version ; ///< The minor version of the RNDIS Protocol implemented by the host + uint32_t max_xfer_size ; ///< The maximum size, in bytes, of any single bus data transfer that the host expects to receive from the device. +}rndis_msg_initialize_t; + +/// \brief Initialize Complete Message +/// \details This message MUST be sent by the device in response to an initialize message. +typedef struct { + uint32_t type ; ///< Message Type, must be \ref RNDIS_MSG_INITIALIZE_CMPLT + uint32_t length ; ///< Message length in bytes, must be 0x30 + uint32_t request_id ; ///< A 32-bit integer value from \a request_id field of the \ref rndis_msg_initialize_t to which this message is a response. + uint32_t status ; ///< The initialization status of the device, has value from \ref rndis_msg_status_t + uint32_t major_version ; ///< the highest-numbered RNDIS Protocol version supported by the device. + uint32_t minor_version ; ///< the highest-numbered RNDIS Protocol version supported by the device. + uint32_t device_flags ; ///< MUST be set to 0x000000010. Other values are reserved for future use. + uint32_t medium ; ///< is 0x00 for RNDIS_MEDIUM_802_3 + uint32_t max_packet_per_xfer ; ///< The maximum number of concatenated \ref RNDIS_MSG_PACKET messages that the device can handle in a single bus transfer to it. This value MUST be at least 1. + uint32_t max_xfer_size ; ///< The maximum size, in bytes, of any single bus data transfer that the device expects to receive from the host. + uint32_t packet_alignment_factor ; ///< The byte alignment the device expects for each RNDIS message that is part of a multimessage transfer to it. The value is specified as an exponent of 2; for example, the host uses 2<SUP>{PacketAlignmentFactor}</SUP> as the alignment value. + uint32_t reserved[2] ; +} rndis_msg_initialize_cmplt_t; + +//------------- Query -------------// +/// \brief Query Message +/// \details This message MUST be sent by the host to query an OID. +typedef struct { + uint32_t type ; ///< Message Type, must be \ref RNDIS_MSG_QUERY + uint32_t length ; ///< Message length in bytes, including the header and the \a oid_buffer + uint32_t request_id ; ///< A 32-bit integer value, generated by the host, used to match the host's sent request to the response from the device. + uint32_t oid ; ///< The integer value of the host operating system-defined identifier, for the parameter of the device being queried for. + uint32_t buffer_length ; ///< The length, in bytes, of the input data required for the OID query. This MUST be set to 0 when there is no input data associated with the OID. + uint32_t buffer_offset ; ///< The offset, in bytes, from the beginning of \a request_id field where the input data for the query is located in the message. This value MUST be set to 0 when there is no input data associated with the OID. + uint32_t reserved ; + uint8_t oid_buffer[] ; ///< Flexible array contains the input data supplied by the host, required for the OID query request processing by the device, as per the host NDIS specification. +} rndis_msg_query_t, rndis_msg_set_t; + +TU_VERIFY_STATIC(sizeof(rndis_msg_query_t) == 28, "Make sure flexible array member does not affect layout"); + +/// \brief Query Complete Message +/// \details This message MUST be sent by the device in response to a query OID message. +typedef struct { + uint32_t type ; ///< Message Type, must be \ref RNDIS_MSG_QUERY_CMPLT + uint32_t length ; ///< Message length in bytes, including the header and the \a oid_buffer + uint32_t request_id ; ///< A 32-bit integer value from \a request_id field of the \ref rndis_msg_query_t to which this message is a response. + uint32_t status ; ///< The status of processing for the query request, has value from \ref rndis_msg_status_t. + uint32_t buffer_length ; ///< The length, in bytes, of the data in the response to the query. This MUST be set to 0 when there is no OIDInputBuffer. + uint32_t buffer_offset ; ///< The offset, in bytes, from the beginning of \a request_id field where the response data for the query is located in the message. This MUST be set to 0 when there is no \ref oid_buffer. + uint8_t oid_buffer[] ; ///< Flexible array member contains the response data to the OID query request as specified by the host. +} rndis_msg_query_cmplt_t; + +TU_VERIFY_STATIC(sizeof(rndis_msg_query_cmplt_t) == 24, "Make sure flexible array member does not affect layout"); + +//------------- Reset -------------// +/// \brief Reset Message +/// \details This message MUST be sent by the host to perform a soft reset on the device. +typedef struct { + uint32_t type ; ///< Message Type, must be \ref RNDIS_MSG_RESET + uint32_t length ; ///< Message length in bytes, MUST be 0x06 + uint32_t reserved ; +} rndis_msg_reset_t; + +/// \brief Reset Complete Message +/// \details This message MUST be sent by the device in response to a reset message. +typedef struct { + uint32_t type ; ///< Message Type, must be \ref RNDIS_MSG_RESET_CMPLT + uint32_t length ; ///< Message length in bytes, MUST be 0x10 + uint32_t status ; ///< The status of processing for the \ref rndis_msg_reset_t, has value from \ref rndis_msg_status_t. + uint32_t addressing_reset ; ///< This field indicates whether the addressing information, which is the multicast address list or packet filter, has been lost during the reset operation. This MUST be set to 0x00000001 if the device requires that the host to resend addressing information or MUST be set to zero otherwise. +} rndis_msg_reset_cmplt_t; + +//typedef struct { +// uint32_t type; +// uint32_t length; +// uint32_t status; +// uint32_t buffer_length; +// uint32_t buffer_offset; +// uint32_t diagnostic_status; // optional +// uint32_t diagnostic_error_offset; // optional +// uint32_t status_buffer[0]; // optional +//} rndis_msg_indicate_status_t; + +/// \brief Keep Alive Message +/// \details This message MUST be sent by the host to check that device is still responsive. It is optional for the device to send this message to check if the host is active +typedef struct { + uint32_t type ; ///< Message Type + uint32_t length ; ///< Message length in bytes, MUST be 0x10 + uint32_t request_id ; +} rndis_msg_keep_alive_t, rndis_msg_halt_t; + +/// \brief Set Complete Message +/// \brief This message MUST be sent in response to a the request message +typedef struct { + uint32_t type ; ///< Message Type + uint32_t length ; ///< Message length in bytes, MUST be 0x10 + uint32_t request_id ; ///< must be the same as requesting message + uint32_t status ; ///< The status of processing for the request message request by the device to which this message is the response. +} rndis_msg_set_cmplt_t, rndis_msg_keep_alive_cmplt_t; + +/// \brief Packet Data Message +/// \brief This message MUST be used by the host and the device to send network data to one another. +typedef struct { + uint32_t type ; ///< Message Type, must be \ref RNDIS_MSG_PACKET + uint32_t length ; ///< Message length in bytes, The total length of this RNDIS message including the header, payload, and padding. + uint32_t data_offset ; ///< Specifies the offset, in bytes, from the start of this \a data_offset field of this message to the start of the data. This MUST be an integer multiple of 4. + uint32_t data_length ; ///< Specifies the number of bytes in the payload of this message. + uint32_t out_of_band_data_offet ; ///< Specifies the offset, in bytes, of the first out-of-band data record from the start of the DataOffset field in this message. MUST be an integer multiple of 4 when out-of-band data is present or set to 0 otherwise. When there are multiple out-ofband data records, each subsequent record MUST immediately follow the previous out-of-band data record. + uint32_t out_of_band_data_length ; ///< Specifies, in bytes, the total length of the out-of-band data. + uint32_t num_out_of_band_data_elements ; ///< Specifies the number of out-of-band records in this message. + uint32_t per_packet_info_offset ; ///< Specifies the offset, in bytes, of the start of per-packet-info data record from the start of the \a data_offset field in this message. MUST be an integer multiple of 4 when per-packet-info data record is present or MUST be set to 0 otherwise. When there are multiple per-packet-info data records, each subsequent record MUST immediately follow the previous record. + uint32_t per_packet_info_length ; ///< Specifies, in bytes, the total length of per-packetinformation contained in this message. + uint32_t reserved[2] ; + uint32_t payload[0] ; ///< Network data contained in this message. + + // uint8_t padding[0] + // Additional bytes of zeros added at the end of the message to comply with + // the internal and external padding requirements. Internal padding SHOULD be as per the + // specification of the out-of-band data record and per-packet-info data record. The external + //padding size SHOULD be determined based on the PacketAlignmentFactor field specification + //in REMOTE_NDIS_INITIALIZE_CMPLT message by the device, when multiple + //REMOTE_NDIS_PACKET_MSG messages are bundled together in a single bus-native message. + //In this case, all but the very last REMOTE_NDIS_PACKET_MSG MUST respect the + //PacketAlignmentFactor field. + + // rndis_msg_packet_t [0] : (optional) more packet if multiple packet per bus transaction is supported +} rndis_msg_packet_t; + + +typedef struct { + uint32_t size ; ///< Length, in bytes, of this header and appended data and padding. This value MUST be an integer multiple of 4. + uint32_t type ; ///< MUST be as per host operating system specification. + uint32_t offset ; ///< The byte offset from the beginning of this record to the beginning of data. + uint32_t data[0] ; ///< Flexible array contains data +} rndis_msg_out_of_band_data_t, rndis_msg_per_packet_info_t; + +//--------------------------------------------------------------------+ +// NDIS Object ID +//--------------------------------------------------------------------+ + +/// NDIS Object ID +typedef enum +{ + //------------- General Required OIDs -------------// + RNDIS_OID_GEN_SUPPORTED_LIST = 0x00010101, ///< List of supported OIDs + RNDIS_OID_GEN_HARDWARE_STATUS = 0x00010102, ///< Hardware status + RNDIS_OID_GEN_MEDIA_SUPPORTED = 0x00010103, ///< Media types supported (encoded) + RNDIS_OID_GEN_MEDIA_IN_USE = 0x00010104, ///< Media types in use (encoded) + RNDIS_OID_GEN_MAXIMUM_LOOKAHEAD = 0x00010105, ///< + RNDIS_OID_GEN_MAXIMUM_FRAME_SIZE = 0x00010106, ///< Maximum frame size in bytes + RNDIS_OID_GEN_LINK_SPEED = 0x00010107, ///< Link speed in units of 100 bps + RNDIS_OID_GEN_TRANSMIT_BUFFER_SPACE = 0x00010108, ///< Transmit buffer space + RNDIS_OID_GEN_RECEIVE_BUFFER_SPACE = 0x00010109, ///< Receive buffer space + RNDIS_OID_GEN_TRANSMIT_BLOCK_SIZE = 0x0001010A, ///< Minimum amount of storage, in bytes, that a single packet occupies in the transmit buffer space of the NIC + RNDIS_OID_GEN_RECEIVE_BLOCK_SIZE = 0x0001010B, ///< Amount of storage, in bytes, that a single packet occupies in the receive buffer space of the NIC + RNDIS_OID_GEN_VENDOR_ID = 0x0001010C, ///< Vendor NIC code + RNDIS_OID_GEN_VENDOR_DESCRIPTION = 0x0001010D, ///< Vendor network card description + RNDIS_OID_GEN_CURRENT_PACKET_FILTER = 0x0001010E, ///< Current packet filter (encoded) + RNDIS_OID_GEN_CURRENT_LOOKAHEAD = 0x0001010F, ///< Current lookahead size in bytes + RNDIS_OID_GEN_DRIVER_VERSION = 0x00010110, ///< NDIS version number used by the driver + RNDIS_OID_GEN_MAXIMUM_TOTAL_SIZE = 0x00010111, ///< Maximum total packet length in bytes + RNDIS_OID_GEN_PROTOCOL_OPTIONS = 0x00010112, ///< Optional protocol flags (encoded) + RNDIS_OID_GEN_MAC_OPTIONS = 0x00010113, ///< Optional NIC flags (encoded) + RNDIS_OID_GEN_MEDIA_CONNECT_STATUS = 0x00010114, ///< Whether the NIC is connected to the network + RNDIS_OID_GEN_MAXIMUM_SEND_PACKETS = 0x00010115, ///< The maximum number of send packets the driver can accept per call to its MiniportSendPacketsfunction + + //------------- General Optional OIDs -------------// + RNDIS_OID_GEN_VENDOR_DRIVER_VERSION = 0x00010116, ///< Vendor-assigned version number of the driver + RNDIS_OID_GEN_SUPPORTED_GUIDS = 0x00010117, ///< The custom GUIDs (Globally Unique Identifier) supported by the miniport driver + RNDIS_OID_GEN_NETWORK_LAYER_ADDRESSES = 0x00010118, ///< List of network-layer addresses associated with the binding between a transport and the driver + RNDIS_OID_GEN_TRANSPORT_HEADER_OFFSET = 0x00010119, ///< Size of packets' additional headers + RNDIS_OID_GEN_MEDIA_CAPABILITIES = 0x00010201, ///< + RNDIS_OID_GEN_PHYSICAL_MEDIUM = 0x00010202, ///< Physical media supported by the miniport driver (encoded) + + //------------- 802.3 Objects (Ethernet) -------------// + RNDIS_OID_802_3_PERMANENT_ADDRESS = 0x01010101, ///< Permanent station address + RNDIS_OID_802_3_CURRENT_ADDRESS = 0x01010102, ///< Current station address + RNDIS_OID_802_3_MULTICAST_LIST = 0x01010103, ///< Current multicast address list + RNDIS_OID_802_3_MAXIMUM_LIST_SIZE = 0x01010104, ///< Maximum size of multicast address list +} rndis_oid_type_t; + +/// RNDIS Packet Filter Bits \ref RNDIS_OID_GEN_CURRENT_PACKET_FILTER. +typedef enum +{ + RNDIS_PACKET_TYPE_DIRECTED = 0x00000001, ///< Directed packets. Directed packets contain a destination address equal to the station address of the NIC. + RNDIS_PACKET_TYPE_MULTICAST = 0x00000002, ///< Multicast address packets sent to addresses in the multicast address list. + RNDIS_PACKET_TYPE_ALL_MULTICAST = 0x00000004, ///< All multicast address packets, not just the ones enumerated in the multicast address list. + RNDIS_PACKET_TYPE_BROADCAST = 0x00000008, ///< Broadcast packets. + RNDIS_PACKET_TYPE_SOURCE_ROUTING = 0x00000010, ///< All source routing packets. If the protocol driver sets this bit, the NDIS library attempts to act as a source routing bridge. + RNDIS_PACKET_TYPE_PROMISCUOUS = 0x00000020, ///< Specifies all packets regardless of whether VLAN filtering is enabled or not and whether the VLAN identifier matches or not. + RNDIS_PACKET_TYPE_SMT = 0x00000040, ///< SMT packets that an FDDI NIC receives. + RNDIS_PACKET_TYPE_ALL_LOCAL = 0x00000080, ///< All packets sent by installed protocols and all packets indicated by the NIC that is identified by a given NdisBindingHandle. + RNDIS_PACKET_TYPE_GROUP = 0x00001000, ///< Packets sent to the current group address. + RNDIS_PACKET_TYPE_ALL_FUNCTIONAL = 0x00002000, ///< All functional address packets, not just the ones in the current functional address. + RNDIS_PACKET_TYPE_FUNCTIONAL = 0x00004000, ///< Functional address packets sent to addresses included in the current functional address. + RNDIS_PACKET_TYPE_MAC_FRAME = 0x00008000, ///< NIC driver frames that a Token Ring NIC receives. + RNDIS_PACKET_TYPE_NO_LOCAL = 0x00010000, +} rndis_packet_filter_type_t; + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_CDC_RNDIS_H_ */ + +/** @} */ +/** @} */ diff --git a/arkanoid/pico/tinyusb/cdc/cdc_rndis_host.c b/arkanoid/pico/tinyusb/cdc/cdc_rndis_host.c new file mode 100644 index 0000000..248a3c4 --- /dev/null +++ b/arkanoid/pico/tinyusb/cdc/cdc_rndis_host.c @@ -0,0 +1,279 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#include "../tusb_option.h" + +#if (TUSB_OPT_HOST_ENABLED && CFG_TUH_CDC && CFG_TUH_CDC_RNDIS) + +//--------------------------------------------------------------------+ +// INCLUDE +//--------------------------------------------------------------------+ +#include "../tusb_common.h" +#include "cdc_host.h" +#include "cdc_rndis_host.h" + +//--------------------------------------------------------------------+ +// MACRO CONSTANT TYPEDEF +//--------------------------------------------------------------------+ +#define RNDIS_MSG_PAYLOAD_MAX (1024*4) + +CFG_TUSB_MEM_SECTION static uint8_t msg_notification[CFG_TUH_DEVICE_MAX][8]; +CFG_TUSB_MEM_SECTION TU_ATTR_ALIGNED(4) static uint8_t msg_payload[RNDIS_MSG_PAYLOAD_MAX]; + +static rndish_data_t rndish_data[CFG_TUH_DEVICE_MAX]; + +// TODO Microsoft requires message length for any get command must be at least 4096 bytes + +//--------------------------------------------------------------------+ +// INTERNAL OBJECT & FUNCTION DECLARATION +//--------------------------------------------------------------------+ +static tusb_error_t rndis_body_subtask(void); +static tusb_error_t send_message_get_response_subtask( uint8_t dev_addr, cdch_data_t *p_cdc, + uint8_t * p_mess, uint32_t mess_length, + uint8_t *p_response ); + +//--------------------------------------------------------------------+ +// APPLICATION API +//--------------------------------------------------------------------+ +tusb_error_t tusbh_cdc_rndis_get_mac_addr(uint8_t dev_addr, uint8_t mac_address[6]) +{ + TU_ASSERT( tusbh_cdc_rndis_is_mounted(dev_addr), TUSB_ERROR_CDCH_DEVICE_NOT_MOUNTED); + TU_VERIFY( mac_address, TUSB_ERROR_INVALID_PARA); + + memcpy(mac_address, rndish_data[dev_addr-1].mac_address, 6); + + return TUSB_ERROR_NONE; +} + +//--------------------------------------------------------------------+ +// IMPLEMENTATION +//--------------------------------------------------------------------+ + +// To enable the TASK_ASSERT style (quick return on false condition) in a real RTOS, a task must act as a wrapper +// and is used mainly to call subtasks. Within a subtask return statement can be called freely, the task with +// forever loop cannot have any return at all. +OSAL_TASK_FUNCTION(cdch_rndis_task) (void* param;) +{ + OSAL_TASK_BEGIN + rndis_body_subtask(); + OSAL_TASK_END +} + +static tusb_error_t rndis_body_subtask(void) +{ + static uint8_t relative_addr; + + OSAL_SUBTASK_BEGIN + + for (relative_addr = 0; relative_addr < CFG_TUH_DEVICE_MAX; relative_addr++) + { + + } + + osal_task_delay(100); + + OSAL_SUBTASK_END +} + +//--------------------------------------------------------------------+ +// RNDIS-CDC Driver API +//--------------------------------------------------------------------+ +void rndish_init(void) +{ + tu_memclr(rndish_data, sizeof(rndish_data_t)*CFG_TUH_DEVICE_MAX); + + //------------- Task creation -------------// + + //------------- semaphore creation for notificaiton pipe -------------// + for(uint8_t i=0; i<CFG_TUH_DEVICE_MAX; i++) + { + rndish_data[i].sem_notification_hdl = osal_semaphore_create( OSAL_SEM_REF(rndish_data[i].semaphore_notification) ); + } +} + +void rndish_close(uint8_t dev_addr) +{ + osal_semaphore_reset( rndish_data[dev_addr-1].sem_notification_hdl ); +// tu_memclr(&rndish_data[dev_addr-1], sizeof(rndish_data_t)); TODO need to move semaphore & its handle out before memclr +} + + +static rndis_msg_initialize_t const msg_init = +{ + .type = RNDIS_MSG_INITIALIZE, + .length = sizeof(rndis_msg_initialize_t), + .request_id = 1, // TODO should use some magic number + .major_version = 1, + .minor_version = 0, + .max_xfer_size = 0x4000 // TODO mimic windows +}; + +static rndis_msg_query_t const msg_query_permanent_addr = +{ + .type = RNDIS_MSG_QUERY, + .length = sizeof(rndis_msg_query_t)+6, + .request_id = 1, + .oid = RNDIS_OID_802_3_PERMANENT_ADDRESS, + .buffer_length = 6, + .buffer_offset = 20, +}; + +static rndis_msg_set_t const msg_set_packet_filter = +{ + .type = RNDIS_MSG_SET, + .length = sizeof(rndis_msg_set_t)+4, + .request_id = 1, + .oid = RNDIS_OID_GEN_CURRENT_PACKET_FILTER, + .buffer_length = 4, + .buffer_offset = 20, +}; + +tusb_error_t rndish_open_subtask(uint8_t dev_addr, cdch_data_t *p_cdc) +{ + tusb_error_t error; + + OSAL_SUBTASK_BEGIN + + //------------- Message Initialize -------------// + memcpy(msg_payload, &msg_init, sizeof(rndis_msg_initialize_t)); + STASK_INVOKE( + send_message_get_response_subtask( dev_addr, p_cdc, + msg_payload, sizeof(rndis_msg_initialize_t), + msg_payload), + error + ); + if ( TUSB_ERROR_NONE != error ) STASK_RETURN(error); + + // TODO currently not support multiple data packets per xfer + rndis_msg_initialize_cmplt_t * const p_init_cmpt = (rndis_msg_initialize_cmplt_t *) msg_payload; + STASK_ASSERT(p_init_cmpt->type == RNDIS_MSG_INITIALIZE_CMPLT && p_init_cmpt->status == RNDIS_STATUS_SUCCESS && + p_init_cmpt->max_packet_per_xfer == 1 && p_init_cmpt->max_xfer_size <= RNDIS_MSG_PAYLOAD_MAX); + rndish_data[dev_addr-1].max_xfer_size = p_init_cmpt->max_xfer_size; + + //------------- Message Query 802.3 Permanent Address -------------// + memcpy(msg_payload, &msg_query_permanent_addr, sizeof(rndis_msg_query_t)); + tu_memclr(msg_payload + sizeof(rndis_msg_query_t), 6); // 6 bytes for MAC address + + STASK_INVOKE( + send_message_get_response_subtask( dev_addr, p_cdc, + msg_payload, sizeof(rndis_msg_query_t) + 6, + msg_payload), + error + ); + if ( TUSB_ERROR_NONE != error ) STASK_RETURN(error); + + rndis_msg_query_cmplt_t * const p_query_cmpt = (rndis_msg_query_cmplt_t *) msg_payload; + STASK_ASSERT(p_query_cmpt->type == RNDIS_MSG_QUERY_CMPLT && p_query_cmpt->status == RNDIS_STATUS_SUCCESS); + memcpy(rndish_data[dev_addr-1].mac_address, msg_payload + 8 + p_query_cmpt->buffer_offset, 6); + + //------------- Set OID_GEN_CURRENT_PACKET_FILTER to (DIRECTED | MULTICAST | BROADCAST) -------------// + memcpy(msg_payload, &msg_set_packet_filter, sizeof(rndis_msg_set_t)); + tu_memclr(msg_payload + sizeof(rndis_msg_set_t), 4); // 4 bytes for filter flags + ((rndis_msg_set_t*) msg_payload)->oid_buffer[0] = (RNDIS_PACKET_TYPE_DIRECTED | RNDIS_PACKET_TYPE_MULTICAST | RNDIS_PACKET_TYPE_BROADCAST); + + STASK_INVOKE( + send_message_get_response_subtask( dev_addr, p_cdc, + msg_payload, sizeof(rndis_msg_set_t) + 4, + msg_payload), + error + ); + if ( TUSB_ERROR_NONE != error ) STASK_RETURN(error); + + rndis_msg_set_cmplt_t * const p_set_cmpt = (rndis_msg_set_cmplt_t *) msg_payload; + STASK_ASSERT(p_set_cmpt->type == RNDIS_MSG_SET_CMPLT && p_set_cmpt->status == RNDIS_STATUS_SUCCESS); + + tusbh_cdc_rndis_mounted_cb(dev_addr); + + OSAL_SUBTASK_END +} + +void rndish_xfer_isr(cdch_data_t *p_cdc, pipe_handle_t pipe_hdl, xfer_result_t event, uint32_t xferred_bytes) +{ + if ( pipehandle_is_equal(pipe_hdl, p_cdc->pipe_notification) ) + { + osal_semaphore_post( rndish_data[pipe_hdl.dev_addr-1].sem_notification_hdl ); + } +} + +//--------------------------------------------------------------------+ +// INTERNAL & HELPER +//--------------------------------------------------------------------+ +static tusb_error_t send_message_get_response_subtask( uint8_t dev_addr, cdch_data_t *p_cdc, + uint8_t * p_mess, uint32_t mess_length, + uint8_t *p_response) +{ + tusb_error_t error; + + OSAL_SUBTASK_BEGIN + + //------------- Send RNDIS Control Message -------------// + STASK_INVOKE( + usbh_control_xfer_subtask( dev_addr, bm_request_type(TUSB_DIR_OUT, TUSB_REQ_TYPE_CLASS, TUSB_REQ_RCPT_INTERFACE), + CDC_REQUEST_SEND_ENCAPSULATED_COMMAND, 0, p_cdc->interface_number, + mess_length, p_mess), + error + ); + if ( TUSB_ERROR_NONE != error ) STASK_RETURN(error); + + //------------- waiting for Response Available notification -------------// + (void) usbh_edpt_xfer(p_cdc->pipe_notification, msg_notification[dev_addr-1], 8); + osal_semaphore_wait(rndish_data[dev_addr-1].sem_notification_hdl, OSAL_TIMEOUT_NORMAL, &error); + if ( TUSB_ERROR_NONE != error ) STASK_RETURN(error); + STASK_ASSERT(msg_notification[dev_addr-1][0] == 1); + + //------------- Get RNDIS Message Initialize Complete -------------// + STASK_INVOKE( + usbh_control_xfer_subtask( dev_addr, bm_request_type(TUSB_DIR_IN, TUSB_REQ_TYPE_CLASS, TUSB_REQ_RCPT_INTERFACE), + CDC_REQUEST_GET_ENCAPSULATED_RESPONSE, 0, p_cdc->interface_number, + RNDIS_MSG_PAYLOAD_MAX, p_response), + error + ); + if ( TUSB_ERROR_NONE != error ) STASK_RETURN(error); + + OSAL_SUBTASK_END +} + +//static tusb_error_t send_process_msg_initialize_subtask(uint8_t dev_addr, cdch_data_t *p_cdc) +//{ +// tusb_error_t error; +// +// OSAL_SUBTASK_BEGIN +// +// *((rndis_msg_initialize_t*) msg_payload) = (rndis_msg_initialize_t) +// { +// .type = RNDIS_MSG_INITIALIZE, +// .length = sizeof(rndis_msg_initialize_t), +// .request_id = 1, // TODO should use some magic number +// .major_version = 1, +// .minor_version = 0, +// .max_xfer_size = 0x4000 // TODO mimic windows +// }; +// +// +// +// OSAL_SUBTASK_END +//} +#endif diff --git a/arkanoid/pico/tinyusb/cdc/cdc_rndis_host.h b/arkanoid/pico/tinyusb/cdc/cdc_rndis_host.h new file mode 100644 index 0000000..9e7ff02 --- /dev/null +++ b/arkanoid/pico/tinyusb/cdc/cdc_rndis_host.h @@ -0,0 +1,63 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +/** \ingroup CDC_RNDIS + * \defgroup CDC_RNSID_Host Host + * @{ */ + +#ifndef _TUSB_CDC_RNDIS_HOST_H_ +#define _TUSB_CDC_RNDIS_HOST_H_ + +#include "../tusb_common.h" +#include "../host/usbh.h" +#include "cdc_rndis.h" + +#ifdef __cplusplus + extern "C" { +#endif + +//--------------------------------------------------------------------+ +// INTERNAL RNDIS-CDC Driver API +//--------------------------------------------------------------------+ +typedef struct { + OSAL_SEM_DEF(semaphore_notification); + osal_semaphore_handle_t sem_notification_hdl; // used to wait on notification pipe + uint32_t max_xfer_size; // got from device's msg initialize complete + uint8_t mac_address[6]; +}rndish_data_t; + +void rndish_init(void); +tusb_error_t rndish_open_subtask(uint8_t dev_addr, cdch_data_t *p_cdc); +void rndish_xfer_isr(cdch_data_t *p_cdc, pipe_handle_t pipe_hdl, xfer_result_t event, uint32_t xferred_bytes); +void rndish_close(uint8_t dev_addr); + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_CDC_RNDIS_HOST_H_ */ + +/** @} */ diff --git a/arkanoid/pico/tinyusb/dcd.h b/arkanoid/pico/tinyusb/dcd.h new file mode 100644 index 0000000..754e09e --- /dev/null +++ b/arkanoid/pico/tinyusb/dcd.h @@ -0,0 +1,190 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef _TUSB_DCD_H_ +#define _TUSB_DCD_H_ + +#include "tusb_common.h" +#include "osal.h" +#include "tusb_fifo.h" +#include "dcd_attr.h" + +// TODO this file has been merged with portable/ dcd_rp2040.c + +#include "tusb_option.h" + +//--------------------------------------------------------------------+ +// Configuration +//--------------------------------------------------------------------+ + +#ifndef CFG_TUD_ENDPPOINT_MAX + #define CFG_TUD_ENDPPOINT_MAX DCD_ATTR_ENDPOINT_MAX +#endif + +//--------------------------------------------------------------------+ +// MACRO CONSTANT TYPEDEF PROTYPES +//--------------------------------------------------------------------+ + +typedef enum +{ + DCD_EVENT_INVALID = 0, + DCD_EVENT_BUS_RESET, + DCD_EVENT_UNPLUGGED, + DCD_EVENT_SOF, + DCD_EVENT_SUSPEND, // TODO LPM Sleep L1 support + DCD_EVENT_RESUME, + + DCD_EVENT_SETUP_RECEIVED, + DCD_EVENT_XFER_COMPLETE, + + // Not an DCD event, just a convenient way to defer ISR function + USBD_EVENT_FUNC_CALL, + + DCD_EVENT_COUNT +} dcd_eventid_t; + +typedef struct TU_ATTR_ALIGNED(4) +{ + uint8_t rhport; + uint8_t event_id; + + union + { + // BUS RESET + struct { + tusb_speed_t speed; + } bus_reset; + + // SETUP_RECEIVED + tusb_control_request_t setup_received; + + // XFER_COMPLETE + struct { + uint8_t ep_addr; + uint8_t result; + uint32_t len; + }xfer_complete; + + // FUNC_CALL + struct { + void (*func) (void*); + void* param; + }func_call; + }; +} dcd_event_t; + +//TU_VERIFY_STATIC(sizeof(dcd_event_t) <= 12, "size is not correct"); + +//--------------------------------------------------------------------+ +// Controller API +//--------------------------------------------------------------------+ + +// Initialize controller to device mode +void dcd_init (uint8_t rhport); + +// Interrupt Handler +#if __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wredundant-decls" +#endif +void dcd_int_handler(uint8_t rhport); +#if __GNUC__ +#pragma GCC diagnostic pop +#endif + +// Enable device interrupt +void dcd_int_enable (uint8_t rhport); + +// Disable device interrupt +void dcd_int_disable(uint8_t rhport); + +// Receive Set Address request, mcu port must also include status IN response +void dcd_set_address(uint8_t rhport, uint8_t dev_addr); + +// Wake up host +void dcd_remote_wakeup(uint8_t rhport); + +// Connect by enabling internal pull-up resistor on D+/D- +void dcd_connect(uint8_t rhport) TU_ATTR_WEAK; + +// Disconnect by disabling internal pull-up resistor on D+/D- +void dcd_disconnect(uint8_t rhport) TU_ATTR_WEAK; + +//--------------------------------------------------------------------+ +// Endpoint API +//--------------------------------------------------------------------+ + +// Invoked when a control transfer's status stage is complete. +// May help DCD to prepare for next control transfer, this API is optional. +void dcd_edpt0_status_complete(uint8_t rhport, tusb_control_request_t const * request) TU_ATTR_WEAK; + +// Configure endpoint's registers according to descriptor +bool dcd_edpt_open (uint8_t rhport, tusb_desc_endpoint_t const * desc_ep); + +// Close all non-control endpoints, cancel all pending transfers if any. +// Invoked when switching from a non-zero Configuration by SET_CONFIGURE therefore +// required for multiple configuration support. +void dcd_edpt_close_all (uint8_t rhport); + +// Close an endpoint. +// Since it is weak, caller must TU_ASSERT this function's existence before calling it. +void dcd_edpt_close (uint8_t rhport, uint8_t ep_addr) TU_ATTR_WEAK; + +// Submit a transfer, When complete dcd_event_xfer_complete() is invoked to notify the stack +bool dcd_edpt_xfer (uint8_t rhport, uint8_t ep_addr, uint8_t * buffer, uint16_t total_bytes); + +// Submit an transfer using fifo, When complete dcd_event_xfer_complete() is invoked to notify the stack +// This API is optional, may be useful for register-based for transferring data. +bool dcd_edpt_xfer_fifo (uint8_t rhport, uint8_t ep_addr, tu_fifo_t * ff, uint16_t total_bytes) TU_ATTR_WEAK; + +// Stall endpoint, any queuing transfer should be removed from endpoint +void dcd_edpt_stall (uint8_t rhport, uint8_t ep_addr); + +// clear stall, data toggle is also reset to DATA0 +// This API never calls with control endpoints, since it is auto cleared when receiving setup packet +void dcd_edpt_clear_stall (uint8_t rhport, uint8_t ep_addr); + +//--------------------------------------------------------------------+ +// Event API (implemented by stack) +//--------------------------------------------------------------------+ + +// Called by DCD to notify device stack +extern void dcd_event_handler(dcd_event_t const * event, bool in_isr); + +// helper to send bus signal event +extern void dcd_event_bus_signal (uint8_t rhport, dcd_eventid_t eid, bool in_isr); + +// helper to send bus reset event +extern void dcd_event_bus_reset (uint8_t rhport, tusb_speed_t speed, bool in_isr); + +// helper to send setup received +extern void dcd_event_setup_received(uint8_t rhport, uint8_t const * setup, bool in_isr); + +// helper to send transfer complete event +extern void dcd_event_xfer_complete (uint8_t rhport, uint8_t ep_addr, uint32_t xferred_bytes, uint8_t result, bool in_isr); + + +#endif /* _TUSB_DCD_H_ */ diff --git a/arkanoid/pico/tinyusb/dcd_attr.h b/arkanoid/pico/tinyusb/dcd_attr.h new file mode 100644 index 0000000..44f2cc1 --- /dev/null +++ b/arkanoid/pico/tinyusb/dcd_attr.h @@ -0,0 +1,167 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2021, Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef TUSB_DCD_ATTR_H_ +#define TUSB_DCD_ATTR_H_ + +#include "tusb_option.h" + +// Attribute includes +// - ENDPOINT_MAX: max (logical) number of endpoint +// - ENDPOINT_EXCLUSIVE_NUMBER: endpoint number with different direction IN and OUT aren't allowed, +// e.g EP1 OUT & EP1 IN cannot exist together +// - PORT_HIGHSPEED: mask to indicate which port support highspeed mode, bit0 for port0 and so on. + +//------------- NXP -------------// +#if TU_CHECK_MCU(LPC11UXX) || TU_CHECK_MCU(LPC13XX) || TU_CHECK_MCU(LPC15XX) + #define DCD_ATTR_ENDPOINT_MAX 5 + +#elif TU_CHECK_MCU(LPC175X_6X) || TU_CHECK_MCU(LPC177X_8X) || TU_CHECK_MCU(LPC40XX) + #define DCD_ATTR_ENDPOINT_MAX 16 + +#elif TU_CHECK_MCU(LPC18XX) || TU_CHECK_MCU(LPC43XX) + // TODO USB0 has 6, USB1 has 4 + #define DCD_ATTR_ENDPOINT_MAX 6 + +#elif TU_CHECK_MCU(LPC51UXX) + #define DCD_ATTR_ENDPOINT_MAX 5 + +#elif TU_CHECK_MCU(LPC54XXX) + // TODO USB0 has 5, USB1 has 6 + #define DCD_ATTR_ENDPOINT_MAX 6 + +#elif TU_CHECK_MCU(LPC55XX) + // TODO USB0 has 5, USB1 has 6 + #define DCD_ATTR_ENDPOINT_MAX 6 + +#elif TU_CHECK_MCU(MIMXRT10XX) + #define DCD_ATTR_ENDPOINT_MAX 8 + +#elif TU_CHECK_MCU(MKL25ZXX) || TU_CHECK_MCU(K32L2BXX) + #define DCD_ATTR_ENDPOINT_MAX 16 + +#elif TU_CHECK_MCU(MM32F327X) + #define DCD_ATTR_ENDPOINT_MAX 16 + +//------------- Nordic -------------// +#elif TU_CHECK_MCU(NRF5X) + // 8 CBI + 1 ISO + #define DCD_ATTR_ENDPOINT_MAX 9 + +//------------- Microchip -------------// +#elif TU_CHECK_MCU(SAMD21) || TU_CHECK_MCU(SAMD51) || TU_CHECK_MCU(SAME5X) || \ + TU_CHECK_MCU(SAMD11) || TU_CHECK_MCU(SAML21) || TU_CHECK_MCU(SAML22) + #define DCD_ATTR_ENDPOINT_MAX 8 + +#elif TU_CHECK_MCU(SAMG) + #define DCD_ATTR_ENDPOINT_MAX 6 + #define DCD_ATTR_ENDPOINT_EXCLUSIVE_NUMBER + +#elif TU_CHECK_MCU(SAMX7X) + #define DCD_ATTR_ENDPOINT_MAX 10 + #define DCD_ATTR_ENDPOINT_EXCLUSIVE_NUMBER + +//------------- ST -------------// +#elif TU_CHECK_MCU(STM32F0) || TU_CHECK_MCU(STM32F1) || TU_CHECK_MCU(STM32F3) || \ + TU_CHECK_MCU(STM32L0) || TU_CHECK_MCU(STM32L1) || TU_CHECK_MCU(STM32L4) + // F1: F102, F103 + // L4: L4x2, L4x3 + #define DCD_ATTR_ENDPOINT_MAX 8 + +#elif TU_CHECK_MCU(STM32F2) || TU_CHECK_MCU(STM32F4) || TU_CHECK_MCU(STM32F3) + // F1: F105, F107 only has 4 + // L4: L4x5, L4x6 has 6 + // For most mcu, FS has 4, HS has 6 + #define DCD_ATTR_ENDPOINT_MAX 6 + +#elif TU_CHECK_MCU(STM32F7) + // FS has 6, HS has 9 + #define DCD_ATTR_ENDPOINT_MAX 9 + +#elif TU_CHECK_MCU(STM32H7) + #define DCD_ATTR_ENDPOINT_MAX 9 + +//------------- Sony -------------// +#elif TU_CHECK_MCU(CXD56) + #define DCD_ATTR_ENDPOINT_MAX 7 + #define DCD_ATTR_ENDPOINT_EXCLUSIVE_NUMBER + +//------------- TI -------------// +#elif TU_CHECK_MCU(MSP430x5xx) + #define DCD_ATTR_ENDPOINT_MAX 8 + +//------------- ValentyUSB -------------// +#elif TU_CHECK_MCU(VALENTYUSB_EPTRI) + #define DCD_ATTR_ENDPOINT_MAX 16 + +//------------- Nuvoton -------------// +#elif TU_CHECK_MCU(NUC121) || TU_CHECK_MCU(NUC126) + #define DCD_ATTR_ENDPOINT_MAX 8 + +#elif TU_CHECK_MCU(NUC120) + #define DCD_ATTR_ENDPOINT_MAX 6 + +#elif TU_CHECK_MCU(NUC505) + #define DCD_ATTR_ENDPOINT_MAX 12 + +//------------- Espressif -------------// +#elif TU_CHECK_MCU(ESP32S2) || TU_CHECK_MCU(ESP32S3) + #define DCD_ATTR_ENDPOINT_MAX 6 + +//------------- Dialog -------------// +#elif TU_CHECK_MCU(DA1469X) + #define DCD_ATTR_ENDPOINT_MAX 4 + +//------------- Raspberry Pi -------------// +#elif TU_CHECK_MCU(RP2040) + #define DCD_ATTR_ENDPOINT_MAX 16 + +//------------- Silabs -------------// +#elif TU_CHECK_MCU(EFM32GG) || TU_CHECK_MCU(EFM32GG11) || TU_CHECK_MCU(EFM32GG12) + #define DCD_ATTR_ENDPOINT_MAX 7 + +//------------- Renesas -------------// +#elif TU_CHECK_MCU(RX63X) || TU_CHECK_MCU(RX65X) || TU_CHECK_MCU(RX72N) + #define DCD_ATTR_ENDPOINT_MAX 10 + +//#elif TU_CHECK_MCU(MM32F327X) +// #define DCD_ATTR_ENDPOINT_MAX not known yet + +//------------- GigaDevice -------------// +#elif TU_CHECK_MCU(GD32VF103) + #define DCD_ATTR_ENDPOINT_MAX 4 + +#else + #warning "DCD_ATTR_ENDPOINT_MAX is not defined for this MCU, default to 8" + #define DCD_ATTR_ENDPOINT_MAX 8 +#endif + +// Default to fullspeed if not defined +//#ifndef PORT_HIGHSPEED +// #define DCD_ATTR_PORT_HIGHSPEED 0x00 +//#endif + +#endif diff --git a/arkanoid/pico/tinyusb/dcd_rp2040.c b/arkanoid/pico/tinyusb/dcd_rp2040.c new file mode 100644 index 0000000..85e4d4a --- /dev/null +++ b/arkanoid/pico/tinyusb/dcd_rp2040.c @@ -0,0 +1,494 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#include "tusb_option.h" + +#if TUSB_OPT_DEVICE_ENABLED && CFG_TUSB_MCU == OPT_MCU_RP2040 + +#include "../pico.h" +#include "rp2040_usb.h" + +#if TUD_OPT_RP2040_USB_DEVICE_ENUMERATION_FIX +#include "pico/fix/rp2040_usb_device_enumeration.h" +#endif + +#include "dcd.h" + +// Current implementation force vbus detection as always present, causing device think it is always plugged into host. +// Therefore it cannot detect disconnect event, mistaken it as suspend. +// Note: won't work if change to 0 (for now) +#define FORCE_VBUS_DETECT 1 + +/*------------------------------------------------------------------*/ +/* Low level controller + *------------------------------------------------------------------*/ + +#define usb_hw_set hw_set_alias(usb_hw) +#define usb_hw_clear hw_clear_alias(usb_hw) + +// Init these in dcd_init +static uint8_t *next_buffer_ptr; + +// USB_MAX_ENDPOINTS Endpoints, direction TUSB_DIR_OUT for out and TUSB_DIR_IN for in. +static struct hw_endpoint hw_endpoints[USB_MAX_ENDPOINTS][2]; + +static inline struct hw_endpoint *hw_endpoint_get_by_num(uint8_t num, tusb_dir_t dir) +{ + return &hw_endpoints[num][dir]; +} + +static struct hw_endpoint *hw_endpoint_get_by_addr(uint8_t ep_addr) +{ + uint8_t num = tu_edpt_number(ep_addr); + tusb_dir_t dir = tu_edpt_dir(ep_addr); + return hw_endpoint_get_by_num(num, dir); +} + +static void _hw_endpoint_alloc(struct hw_endpoint *ep, uint8_t transfer_type) +{ + // size must be multiple of 64 + uint size = tu_div_ceil(ep->wMaxPacketSize, 64) * 64u; + + // double buffered Bulk endpoint + if ( transfer_type == TUSB_XFER_BULK ) + { + size *= 2u; + } + + ep->hw_data_buf = next_buffer_ptr; + next_buffer_ptr += size; + + assert(((uintptr_t )next_buffer_ptr & 0b111111u) == 0); + uint dpram_offset = hw_data_offset(ep->hw_data_buf); + assert(hw_data_offset(next_buffer_ptr) <= USB_DPRAM_MAX); + + pico_info(" Alloced %d bytes at offset 0x%x (0x%p)\r\n", size, dpram_offset, ep->hw_data_buf); + + // Fill in endpoint control register with buffer offset + uint32_t const reg = EP_CTRL_ENABLE_BITS | ((uint)transfer_type << EP_CTRL_BUFFER_TYPE_LSB) | dpram_offset; + + *ep->endpoint_control = reg; +} + +#if 0 // todo unused +static void _hw_endpoint_close(struct hw_endpoint *ep) +{ + // Clear hardware registers and then zero the struct + // Clears endpoint enable + *ep->endpoint_control = 0; + // Clears buffer available, etc + *ep->buffer_control = 0; + // Clear any endpoint state + memset(ep, 0, sizeof(struct hw_endpoint)); +} + +static void hw_endpoint_close(uint8_t ep_addr) +{ + struct hw_endpoint *ep = hw_endpoint_get_by_addr(ep_addr); + _hw_endpoint_close(ep); +} +#endif + +static void hw_endpoint_init(uint8_t ep_addr, uint16_t wMaxPacketSize, uint8_t transfer_type) +{ + struct hw_endpoint *ep = hw_endpoint_get_by_addr(ep_addr); + + const uint8_t num = tu_edpt_number(ep_addr); + const tusb_dir_t dir = tu_edpt_dir(ep_addr); + + ep->ep_addr = ep_addr; + + // For device, IN is a tx transfer and OUT is an rx transfer + ep->rx = (dir == TUSB_DIR_OUT); + + ep->next_pid = 0u; + ep->wMaxPacketSize = wMaxPacketSize; + ep->transfer_type = transfer_type; + + // Every endpoint has a buffer control register in dpram + if ( dir == TUSB_DIR_IN ) + { + ep->buffer_control = &usb_dpram->ep_buf_ctrl[num].in; + } + else + { + ep->buffer_control = &usb_dpram->ep_buf_ctrl[num].out; + } + + // Clear existing buffer control state + *ep->buffer_control = 0; + + if ( num == 0 ) + { + // EP0 has no endpoint control register because the buffer offsets are fixed + ep->endpoint_control = NULL; + + // Buffer offset is fixed (also double buffered) + ep->hw_data_buf = (uint8_t*) &usb_dpram->ep0_buf_a[0]; + } + else + { + // Set the endpoint control register (starts at EP1, hence num-1) + if ( dir == TUSB_DIR_IN ) + { + ep->endpoint_control = &usb_dpram->ep_ctrl[num - 1].in; + } + else + { + ep->endpoint_control = &usb_dpram->ep_ctrl[num - 1].out; + } + + // alloc a buffer and fill in endpoint control register + _hw_endpoint_alloc(ep, transfer_type); + } +} + +static void hw_endpoint_xfer(uint8_t ep_addr, uint8_t *buffer, uint16_t total_bytes) +{ + struct hw_endpoint *ep = hw_endpoint_get_by_addr(ep_addr); + hw_endpoint_xfer_start(ep, buffer, total_bytes); +} + +static void hw_handle_buff_status(void) +{ + uint32_t remaining_buffers = usb_hw->buf_status; + pico_trace("buf_status = 0x%08x\n", remaining_buffers); + uint bit = 1u; + for (uint8_t i = 0; remaining_buffers && i < USB_MAX_ENDPOINTS * 2; i++) + { + if (remaining_buffers & bit) + { + // clear this in advance + usb_hw_clear->buf_status = bit; + + // IN transfer for even i, OUT transfer for odd i + struct hw_endpoint *ep = hw_endpoint_get_by_num(i >> 1u, !(i & 1u)); + + // Continue xfer + bool done = hw_endpoint_xfer_continue(ep); + if (done) + { + // Notify + dcd_event_xfer_complete(0, ep->ep_addr, ep->xferred_len, XFER_RESULT_SUCCESS, true); + hw_endpoint_reset_transfer(ep); + } + remaining_buffers &= ~bit; + } + bit <<= 1u; + } +} + +static void reset_ep0_pid(void) +{ + // If we have finished this transfer on EP0 set pid back to 1 for next + // setup transfer. Also clear a stall in case + uint8_t addrs[] = {0x0, 0x80}; + for (uint i = 0 ; i < TU_ARRAY_SIZE(addrs); i++) + { + struct hw_endpoint *ep = hw_endpoint_get_by_addr(addrs[i]); + ep->next_pid = 1u; + } +} + +static void reset_non_control_endpoints(void) +{ + // Disable all non-control + for ( uint8_t i = 0; i < USB_MAX_ENDPOINTS-1; i++ ) + { + usb_dpram->ep_ctrl[i].in = 0; + usb_dpram->ep_ctrl[i].out = 0; + } + + // clear non-control hw endpoints + tu_memclr(hw_endpoints[1], sizeof(hw_endpoints) - 2*sizeof(hw_endpoint_t)); + next_buffer_ptr = &usb_dpram->epx_data[0]; +} + +static void dcd_rp2040_irq(void) +{ + uint32_t const status = usb_hw->ints; + uint32_t handled = 0; + + if (status & USB_INTS_SETUP_REQ_BITS) + { + handled |= USB_INTS_SETUP_REQ_BITS; + uint8_t const *setup = (uint8_t const *)&usb_dpram->setup_packet; + + // reset pid to both 1 (data and ack) + reset_ep0_pid(); + + // Pass setup packet to tiny usb + dcd_event_setup_received(0, setup, true); + usb_hw_clear->sie_status = USB_SIE_STATUS_SETUP_REC_BITS; + } + + if (status & USB_INTS_BUFF_STATUS_BITS) + { + handled |= USB_INTS_BUFF_STATUS_BITS; + hw_handle_buff_status(); + } + +#if FORCE_VBUS_DETECT == 0 + // Since we force VBUS detect On, device will always think it is connected and + // couldn't distinguish between disconnect and suspend + if (status & USB_INTS_DEV_CONN_DIS_BITS) + { + handled |= USB_INTS_DEV_CONN_DIS_BITS; + + if ( usb_hw->sie_status & USB_SIE_STATUS_CONNECTED_BITS ) + { + // Connected: nothing to do + }else + { + // Disconnected + dcd_event_bus_signal(0, DCD_EVENT_UNPLUGGED, true); + } + + usb_hw_clear->sie_status = USB_SIE_STATUS_CONNECTED_BITS; + } +#endif + + // SE0 for 2.5 us or more (will last at least 10ms) + if (status & USB_INTS_BUS_RESET_BITS) + { + pico_trace("BUS RESET\n"); + + handled |= USB_INTS_BUS_RESET_BITS; + + usb_hw->dev_addr_ctrl = 0; + reset_non_control_endpoints(); + dcd_event_bus_reset(0, TUSB_SPEED_FULL, true); + usb_hw_clear->sie_status = USB_SIE_STATUS_BUS_RESET_BITS; + +#if TUD_OPT_RP2040_USB_DEVICE_ENUMERATION_FIX + // Only run enumeration walk-around if pull up is enabled + if ( usb_hw->sie_ctrl & USB_SIE_CTRL_PULLUP_EN_BITS ) rp2040_usb_device_enumeration_fix(); +#endif + } + + /* Note from pico datasheet 4.1.2.6.4 (v1.2) + * If you enable the suspend interrupt, it is likely you will see a suspend interrupt when + * the device is first connected but the bus is idle. The bus can be idle for a few ms before + * the host begins sending start of frame packets. You will also see a suspend interrupt + * when the device is disconnected if you do not have a VBUS detect circuit connected. This is + * because without VBUS detection, it is impossible to tell the difference between + * being disconnected and suspended. + */ + if (status & USB_INTS_DEV_SUSPEND_BITS) + { + handled |= USB_INTS_DEV_SUSPEND_BITS; + dcd_event_bus_signal(0, DCD_EVENT_SUSPEND, true); + usb_hw_clear->sie_status = USB_SIE_STATUS_SUSPENDED_BITS; + } + + if (status & USB_INTS_DEV_RESUME_FROM_HOST_BITS) + { + handled |= USB_INTS_DEV_RESUME_FROM_HOST_BITS; + dcd_event_bus_signal(0, DCD_EVENT_RESUME, true); + usb_hw_clear->sie_status = USB_SIE_STATUS_RESUME_BITS; + } + + if (status ^ handled) + { + panic("Unhandled IRQ 0x%x\n", (uint) (status ^ handled)); + } +} + +#define USB_INTS_ERROR_BITS ( \ + USB_INTS_ERROR_DATA_SEQ_BITS | \ + USB_INTS_ERROR_BIT_STUFF_BITS | \ + USB_INTS_ERROR_CRC_BITS | \ + USB_INTS_ERROR_RX_OVERFLOW_BITS | \ + USB_INTS_ERROR_RX_TIMEOUT_BITS) + +/*------------------------------------------------------------------*/ +/* Controller API + *------------------------------------------------------------------*/ + +void dcd_init (uint8_t rhport) +{ + assert(rhport == 0); + + // Reset hardware to default state + rp2040_usb_init(); + +#if FORCE_VBUS_DETECT + // Force VBUS detect so the device thinks it is plugged into a host + usb_hw->pwr = USB_USB_PWR_VBUS_DETECT_BITS | USB_USB_PWR_VBUS_DETECT_OVERRIDE_EN_BITS; +#endif + + irq_set_exclusive_handler(USBCTRL_IRQ, dcd_rp2040_irq); + + // Init control endpoints + tu_memclr(hw_endpoints[0], 2*sizeof(hw_endpoint_t)); + hw_endpoint_init(0x0, 64, TUSB_XFER_CONTROL); + hw_endpoint_init(0x80, 64, TUSB_XFER_CONTROL); + + // Init non-control endpoints + reset_non_control_endpoints(); + + // Initializes the USB peripheral for device mode and enables it. + // Don't need to enable the pull up here. Force VBUS + usb_hw->main_ctrl = USB_MAIN_CTRL_CONTROLLER_EN_BITS; + + // Enable individual controller IRQS here. Processor interrupt enable will be used + // for the global interrupt enable... + // Note: Force VBUS detect cause disconnection not detectable + usb_hw->sie_ctrl = USB_SIE_CTRL_EP0_INT_1BUF_BITS; + usb_hw->inte = USB_INTS_BUFF_STATUS_BITS | USB_INTS_BUS_RESET_BITS | USB_INTS_SETUP_REQ_BITS | + USB_INTS_DEV_SUSPEND_BITS | USB_INTS_DEV_RESUME_FROM_HOST_BITS | + (FORCE_VBUS_DETECT ? 0 : USB_INTS_DEV_CONN_DIS_BITS); + + dcd_connect(rhport); +} + +void dcd_int_enable(__unused uint8_t rhport) +{ + assert(rhport == 0); + irq_set_enabled(USBCTRL_IRQ, true); +} + +void dcd_int_disable(__unused uint8_t rhport) +{ + assert(rhport == 0); + irq_set_enabled(USBCTRL_IRQ, false); +} + +void dcd_set_address (__unused uint8_t rhport, __unused uint8_t dev_addr) +{ + assert(rhport == 0); + + // Can't set device address in hardware until status xfer has complete + // Send 0len complete response on EP0 IN + hw_endpoint_xfer(0x80, NULL, 0); +} + +void dcd_remote_wakeup(__unused uint8_t rhport) +{ + pico_info("dcd_remote_wakeup %d\n", rhport); + assert(rhport == 0); + usb_hw_set->sie_ctrl = USB_SIE_CTRL_RESUME_BITS; +} + +// disconnect by disabling internal pull-up resistor on D+/D- +void dcd_disconnect(__unused uint8_t rhport) +{ + (void) rhport; + usb_hw_clear->sie_ctrl = USB_SIE_CTRL_PULLUP_EN_BITS; +} + +// connect by enabling internal pull-up resistor on D+/D- +void dcd_connect(__unused uint8_t rhport) +{ + (void) rhport; + usb_hw_set->sie_ctrl = USB_SIE_CTRL_PULLUP_EN_BITS; +} + +/*------------------------------------------------------------------*/ +/* DCD Endpoint port + *------------------------------------------------------------------*/ + +void dcd_edpt0_status_complete(uint8_t rhport, tusb_control_request_t const * request) +{ + (void) rhport; + + if ( request->bmRequestType_bit.recipient == TUSB_REQ_RCPT_DEVICE && + request->bmRequestType_bit.type == TUSB_REQ_TYPE_STANDARD && + request->bRequest == TUSB_REQ_SET_ADDRESS ) + { + usb_hw->dev_addr_ctrl = (uint8_t) request->wValue; + } +} + +bool dcd_edpt_open (__unused uint8_t rhport, tusb_desc_endpoint_t const * desc_edpt) +{ + assert(rhport == 0); + hw_endpoint_init(desc_edpt->bEndpointAddress, desc_edpt->wMaxPacketSize.size, desc_edpt->bmAttributes.xfer); + return true; +} + +void dcd_edpt_close_all (uint8_t rhport) +{ + (void) rhport; + + // may need to use EP Abort + reset_non_control_endpoints(); +} + +bool dcd_edpt_xfer(__unused uint8_t rhport, uint8_t ep_addr, uint8_t * buffer, uint16_t total_bytes) +{ + assert(rhport == 0); + hw_endpoint_xfer(ep_addr, buffer, total_bytes); + return true; +} + +void dcd_edpt_stall(uint8_t rhport, uint8_t ep_addr) +{ + (void) rhport; + + if ( tu_edpt_number(ep_addr) == 0 ) + { + // A stall on EP0 has to be armed so it can be cleared on the next setup packet + usb_hw_set->ep_stall_arm = (tu_edpt_dir(ep_addr) == TUSB_DIR_IN) ? USB_EP_STALL_ARM_EP0_IN_BITS : USB_EP_STALL_ARM_EP0_OUT_BITS; + } + + struct hw_endpoint *ep = hw_endpoint_get_by_addr(ep_addr); + + // stall and clear current pending buffer + // may need to use EP_ABORT + _hw_endpoint_buffer_control_set_value32(ep, USB_BUF_CTRL_STALL); +} + +void dcd_edpt_clear_stall(uint8_t rhport, uint8_t ep_addr) +{ + (void) rhport; + + if (tu_edpt_number(ep_addr)) + { + struct hw_endpoint *ep = hw_endpoint_get_by_addr(ep_addr); + + // clear stall also reset toggle to DATA0, ready for next transfer + ep->next_pid = 0; + _hw_endpoint_buffer_control_clear_mask32(ep, USB_BUF_CTRL_STALL); + } +} + +void dcd_edpt_close (uint8_t rhport, uint8_t ep_addr) +{ + (void) rhport; + (void) ep_addr; + + // usbd.c says: In progress transfers on this EP may be delivered after this call + pico_trace("dcd_edpt_close %02x\n", ep_addr); +} + +void dcd_int_handler(uint8_t rhport) +{ + (void) rhport; + dcd_rp2040_irq(); +} + +#endif diff --git a/arkanoid/pico/tinyusb/hcd_rp2040.c b/arkanoid/pico/tinyusb/hcd_rp2040.c new file mode 100644 index 0000000..07d0a43 --- /dev/null +++ b/arkanoid/pico/tinyusb/hcd_rp2040.c @@ -0,0 +1,563 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * Copyright (c) 2021 Ha Thach (tinyusb.org) for Double Buffered + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#include "tusb_option.h" + +#if TUSB_OPT_HOST_ENABLED && CFG_TUSB_MCU == OPT_MCU_RP2040 + +#include "../pico.h" +#include "rp2040_usb.h" + +//--------------------------------------------------------------------+ +// INCLUDE +//--------------------------------------------------------------------+ +#include "osal.h" + +#include "hcd.h" +#include "usbh.h" + +#define ROOT_PORT 0 + +//--------------------------------------------------------------------+ +// Low level rp2040 controller functions +//--------------------------------------------------------------------+ + +#ifndef PICO_USB_HOST_INTERRUPT_ENDPOINTS +#define PICO_USB_HOST_INTERRUPT_ENDPOINTS (USB_MAX_ENDPOINTS - 1) +#endif +static_assert(PICO_USB_HOST_INTERRUPT_ENDPOINTS <= USB_MAX_ENDPOINTS, ""); + +// Host mode uses one shared endpoint register for non-interrupt endpoint +static struct hw_endpoint ep_pool[1 + PICO_USB_HOST_INTERRUPT_ENDPOINTS]; +#define epx (ep_pool[0]) + +#define usb_hw_set hw_set_alias(usb_hw) +#define usb_hw_clear hw_clear_alias(usb_hw) + +// Flags we set by default in sie_ctrl (we add other bits on top) +enum { + SIE_CTRL_BASE = USB_SIE_CTRL_SOF_EN_BITS | USB_SIE_CTRL_KEEP_ALIVE_EN_BITS | + USB_SIE_CTRL_PULLDOWN_EN_BITS | USB_SIE_CTRL_EP0_INT_1BUF_BITS +}; + +static struct hw_endpoint *get_dev_ep(uint8_t dev_addr, uint8_t ep_addr) +{ + uint8_t num = tu_edpt_number(ep_addr); + if ( num == 0 ) return &epx; + + for ( uint32_t i = 1; i < TU_ARRAY_SIZE(ep_pool); i++ ) + { + struct hw_endpoint *ep = &ep_pool[i]; + if ( ep->configured && (ep->dev_addr == dev_addr) && (ep->ep_addr == ep_addr) ) return ep; + } + + return NULL; +} + +static inline uint8_t dev_speed(void) +{ + return (usb_hw->sie_status & USB_SIE_STATUS_SPEED_BITS) >> USB_SIE_STATUS_SPEED_LSB; +} + +static bool need_pre(uint8_t dev_addr) +{ + // If this device is different to the speed of the root device + // (i.e. is a low speed device on a full speed hub) then need pre + return hcd_port_speed_get(0) != tuh_speed_get(dev_addr); +} + +static void hw_xfer_complete(struct hw_endpoint *ep, xfer_result_t xfer_result) +{ + // Mark transfer as done before we tell the tinyusb stack + uint8_t dev_addr = ep->dev_addr; + uint8_t ep_addr = ep->ep_addr; + uint xferred_len = ep->xferred_len; + hw_endpoint_reset_transfer(ep); + hcd_event_xfer_complete(dev_addr, ep_addr, xferred_len, xfer_result, true); +} + +static void _handle_buff_status_bit(uint bit, struct hw_endpoint *ep) +{ + usb_hw_clear->buf_status = bit; + bool done = hw_endpoint_xfer_continue(ep); + if (done) + { + hw_xfer_complete(ep, XFER_RESULT_SUCCESS); + } +} + +static void hw_handle_buff_status(void) +{ + uint32_t remaining_buffers = usb_hw->buf_status; + pico_trace("buf_status 0x%08x\n", remaining_buffers); + + // Check EPX first + uint bit = 0b1; + if (remaining_buffers & bit) + { + remaining_buffers &= ~bit; + struct hw_endpoint *ep = &epx; + + uint32_t ep_ctrl = *ep->endpoint_control; + if (ep_ctrl & EP_CTRL_DOUBLE_BUFFERED_BITS) + { + TU_LOG(3, "Double Buffered: "); + }else + { + TU_LOG(3, "Single Buffered: "); + } + TU_LOG_HEX(3, ep_ctrl); + + _handle_buff_status_bit(bit, ep); + } + + // Check interrupt endpoints + for (uint i = 1; i <= USB_HOST_INTERRUPT_ENDPOINTS && remaining_buffers; i++) + { + // EPX is bit 0 + // IEP1 is bit 2 + // IEP2 is bit 4 + // IEP3 is bit 6 + // etc + bit = 1 << (i*2); + + if (remaining_buffers & bit) + { + remaining_buffers &= ~bit; + _handle_buff_status_bit(bit, &ep_pool[i]); + } + } + + if (remaining_buffers) + { + panic("Unhandled buffer %d\n", remaining_buffers); + } +} + +static void hw_trans_complete(void) +{ + struct hw_endpoint *ep = &epx; + assert(ep->active); + + if (usb_hw->sie_ctrl & USB_SIE_CTRL_SEND_SETUP_BITS) + { + pico_trace("Sent setup packet\n"); + hw_xfer_complete(ep, XFER_RESULT_SUCCESS); + } + else + { + // Don't care. Will handle this in buff status + return; + } +} + +static void hcd_rp2040_irq(void) +{ + uint32_t status = usb_hw->ints; + uint32_t handled = 0; + + if (status & USB_INTS_HOST_CONN_DIS_BITS) + { + handled |= USB_INTS_HOST_CONN_DIS_BITS; + + if (dev_speed()) + { + hcd_event_device_attach(ROOT_PORT, true); + } + else + { + hcd_event_device_remove(ROOT_PORT, true); + } + + // Clear speed change interrupt + usb_hw_clear->sie_status = USB_SIE_STATUS_SPEED_BITS; + } + + if (status & USB_INTS_BUFF_STATUS_BITS) + { + handled |= USB_INTS_BUFF_STATUS_BITS; + TU_LOG(2, "Buffer complete\n"); + hw_handle_buff_status(); + } + + if (status & USB_INTS_TRANS_COMPLETE_BITS) + { + handled |= USB_INTS_TRANS_COMPLETE_BITS; + usb_hw_clear->sie_status = USB_SIE_STATUS_TRANS_COMPLETE_BITS; + TU_LOG(2, "Transfer complete\n"); + hw_trans_complete(); + } + + if (status & USB_INTS_STALL_BITS) + { + // We have rx'd a stall from the device + pico_trace("Stall REC\n"); + handled |= USB_INTS_STALL_BITS; + usb_hw_clear->sie_status = USB_SIE_STATUS_STALL_REC_BITS; + hw_xfer_complete(&epx, XFER_RESULT_STALLED); + } + + if (status & USB_INTS_ERROR_RX_TIMEOUT_BITS) + { + handled |= USB_INTS_ERROR_RX_TIMEOUT_BITS; + usb_hw_clear->sie_status = USB_SIE_STATUS_RX_TIMEOUT_BITS; + } + + if (status & USB_INTS_ERROR_DATA_SEQ_BITS) + { + usb_hw_clear->sie_status = USB_SIE_STATUS_DATA_SEQ_ERROR_BITS; + TU_LOG(3, " Seq Error: [0] = 0x%04u [1] = 0x%04x\r\n", tu_u32_low16(*epx.buffer_control), tu_u32_high16(*epx.buffer_control)); + panic("Data Seq Error \n"); + } + + if (status ^ handled) + { + panic("Unhandled IRQ 0x%x\n", (uint) (status ^ handled)); + } +} + +static struct hw_endpoint *_next_free_interrupt_ep(void) +{ + struct hw_endpoint *ep = NULL; + for (uint i = 1; i < TU_ARRAY_SIZE(ep_pool); i++) + { + ep = &ep_pool[i]; + if (!ep->configured) + { + // Will be configured by _hw_endpoint_init / _hw_endpoint_allocate + ep->interrupt_num = i - 1; + return ep; + } + } + return ep; +} + +static struct hw_endpoint *_hw_endpoint_allocate(uint8_t transfer_type) +{ + struct hw_endpoint *ep = NULL; + + if (transfer_type == TUSB_XFER_INTERRUPT) + { + ep = _next_free_interrupt_ep(); + pico_info("Allocate interrupt ep %d\n", ep->interrupt_num); + assert(ep); + ep->buffer_control = &usbh_dpram->int_ep_buffer_ctrl[ep->interrupt_num].ctrl; + ep->endpoint_control = &usbh_dpram->int_ep_ctrl[ep->interrupt_num].ctrl; + // 0 for epx (double buffered): TODO increase to 1024 for ISO + // 2x64 for intep0 + // 3x64 for intep1 + // etc + ep->hw_data_buf = &usbh_dpram->epx_data[64 * (ep->interrupt_num + 2)]; + } + else + { + ep = &epx; + ep->buffer_control = &usbh_dpram->epx_buf_ctrl; + ep->endpoint_control = &usbh_dpram->epx_ctrl; + ep->hw_data_buf = &usbh_dpram->epx_data[0]; + } + + return ep; +} + +static void _hw_endpoint_init(struct hw_endpoint *ep, uint8_t dev_addr, uint8_t ep_addr, uint wMaxPacketSize, uint8_t transfer_type, uint8_t bmInterval) +{ + // Already has data buffer, endpoint control, and buffer control allocated at this point + assert(ep->endpoint_control); + assert(ep->buffer_control); + assert(ep->hw_data_buf); + + uint8_t const num = tu_edpt_number(ep_addr); + tusb_dir_t const dir = tu_edpt_dir(ep_addr); + + ep->ep_addr = ep_addr; + ep->dev_addr = dev_addr; + + // For host, IN to host == RX, anything else rx == false + ep->rx = (dir == TUSB_DIR_IN); + + // Response to a setup packet on EP0 starts with pid of 1 + ep->next_pid = (num == 0 ? 1u : 0u); + ep->wMaxPacketSize = wMaxPacketSize; + ep->transfer_type = transfer_type; + + pico_trace("hw_endpoint_init dev %d ep %d %s xfer %d\n", ep->dev_addr, tu_edpt_number(ep->ep_addr), ep_dir_string[tu_edpt_dir(ep->ep_addr)], ep->transfer_type); + pico_trace("dev %d ep %d %s setup buffer @ 0x%p\n", ep->dev_addr, tu_edpt_number(ep->ep_addr), ep_dir_string[tu_edpt_dir(ep->ep_addr)], ep->hw_data_buf); + uint dpram_offset = hw_data_offset(ep->hw_data_buf); + // Bits 0-5 should be 0 + assert(!(dpram_offset & 0b111111)); + + // Fill in endpoint control register with buffer offset + uint32_t ep_reg = EP_CTRL_ENABLE_BITS + | EP_CTRL_INTERRUPT_PER_BUFFER + | (ep->transfer_type << EP_CTRL_BUFFER_TYPE_LSB) + | dpram_offset; + ep_reg |= bmInterval ? (bmInterval - 1) << EP_CTRL_HOST_INTERRUPT_INTERVAL_LSB : 0; + *ep->endpoint_control = ep_reg; + pico_trace("endpoint control (0x%p) <- 0x%x\n", ep->endpoint_control, ep_reg); + ep->configured = true; + + if (bmInterval) + { + // This is an interrupt endpoint + // so need to set up interrupt endpoint address control register with: + // device address + // endpoint number / direction + // preamble + uint32_t reg = dev_addr | (num << USB_ADDR_ENDP1_ENDPOINT_LSB); + // Assert the interrupt endpoint is IN_TO_HOST + // TODO Interrupt can also be OUT + assert(dir == TUSB_DIR_IN); + + if (need_pre(dev_addr)) + { + reg |= USB_ADDR_ENDP1_INTEP_PREAMBLE_BITS; + } + usb_hw->int_ep_addr_ctrl[ep->interrupt_num] = reg; + + // Finally, enable interrupt that endpoint + usb_hw_set->int_ep_ctrl = 1 << (ep->interrupt_num + 1); + + // If it's an interrupt endpoint we need to set up the buffer control + // register + } +} + +//--------------------------------------------------------------------+ +// HCD API +//--------------------------------------------------------------------+ +bool hcd_init(uint8_t rhport) +{ + pico_trace("hcd_init %d\n", rhport); + assert(rhport == 0); + + // Reset any previous state + rp2040_usb_init(); + + // Force VBUS detect to always present, for now we assume vbus is always provided (without using VBUS En) + usb_hw->pwr = USB_USB_PWR_VBUS_DETECT_BITS | USB_USB_PWR_VBUS_DETECT_OVERRIDE_EN_BITS; + + irq_set_exclusive_handler(USBCTRL_IRQ, hcd_rp2040_irq); + + // clear epx and interrupt eps + memset(&ep_pool, 0, sizeof(ep_pool)); + + // Enable in host mode with SOF / Keep alive on + usb_hw->main_ctrl = USB_MAIN_CTRL_CONTROLLER_EN_BITS | USB_MAIN_CTRL_HOST_NDEVICE_BITS; + usb_hw->sie_ctrl = SIE_CTRL_BASE; + usb_hw->inte = USB_INTE_BUFF_STATUS_BITS | + USB_INTE_HOST_CONN_DIS_BITS | + USB_INTE_HOST_RESUME_BITS | + USB_INTE_STALL_BITS | + USB_INTE_TRANS_COMPLETE_BITS | + USB_INTE_ERROR_RX_TIMEOUT_BITS | + USB_INTE_ERROR_DATA_SEQ_BITS ; + + return true; +} + +void hcd_port_reset(uint8_t rhport) +{ + pico_trace("hcd_port_reset\n"); + assert(rhport == 0); + // TODO: Nothing to do here yet. Perhaps need to reset some state? +} + +bool hcd_port_connect_status(uint8_t rhport) +{ + pico_trace("hcd_port_connect_status\n"); + assert(rhport == 0); + return usb_hw->sie_status & USB_SIE_STATUS_SPEED_BITS; +} + +tusb_speed_t hcd_port_speed_get(uint8_t rhport) +{ + assert(rhport == 0); + // TODO: Should enumval this register + switch (dev_speed()) + { + case 1: + return TUSB_SPEED_LOW; + case 2: + return TUSB_SPEED_FULL; + default: + panic("Invalid speed\n"); + return TUSB_SPEED_INVALID; + } +} + +// Close all opened endpoint belong to this device +void hcd_device_close(uint8_t rhport, uint8_t dev_addr) +{ + (void) rhport; + (void) dev_addr; + + pico_trace("hcd_device_close %d\n", dev_addr); +} + +uint32_t hcd_frame_number(uint8_t rhport) +{ + (void) rhport; + return usb_hw->sof_rd; +} + +void hcd_int_enable(uint8_t rhport) +{ + assert(rhport == 0); + irq_set_enabled(USBCTRL_IRQ, true); +} + +void hcd_int_disable(uint8_t rhport) +{ + // todo we should check this is disabling from the correct core; note currently this is never called + assert(rhport == 0); + irq_set_enabled(USBCTRL_IRQ, false); +} + +//--------------------------------------------------------------------+ +// Endpoint API +//--------------------------------------------------------------------+ + +bool hcd_edpt_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_endpoint_t const * ep_desc) +{ + (void) rhport; + + pico_trace("hcd_edpt_open dev_addr %d, ep_addr %d\n", dev_addr, ep_desc->bEndpointAddress); + + // Allocated differently based on if it's an interrupt endpoint or not + struct hw_endpoint *ep = _hw_endpoint_allocate(ep_desc->bmAttributes.xfer); + + _hw_endpoint_init(ep, + dev_addr, + ep_desc->bEndpointAddress, + ep_desc->wMaxPacketSize.size, + ep_desc->bmAttributes.xfer, + ep_desc->bInterval); + + return true; +} + +bool hcd_edpt_xfer(uint8_t rhport, uint8_t dev_addr, uint8_t ep_addr, uint8_t * buffer, uint16_t buflen) +{ + (void) rhport; + + pico_trace("hcd_edpt_xfer dev_addr %d, ep_addr 0x%x, len %d\n", dev_addr, ep_addr, buflen); + + uint8_t const ep_num = tu_edpt_number(ep_addr); + tusb_dir_t const ep_dir = tu_edpt_dir(ep_addr); + + // Get appropriate ep. Either EPX or interrupt endpoint + struct hw_endpoint *ep = get_dev_ep(dev_addr, ep_addr); + assert(ep); + + // Control endpoint can change direction 0x00 <-> 0x80 + if ( ep_addr != ep->ep_addr ) + { + assert(ep_num == 0); + + // Direction has flipped on endpoint control so re init it but with same properties + _hw_endpoint_init(ep, dev_addr, ep_addr, ep->wMaxPacketSize, ep->transfer_type, 0); + } + + // If a normal transfer (non-interrupt) then initiate using + // sie ctrl registers. Otherwise interrupt ep registers should + // already be configured + if (ep == &epx) { + hw_endpoint_xfer_start(ep, buffer, buflen); + + // That has set up buffer control, endpoint control etc + // for host we have to initiate the transfer + usb_hw->dev_addr_ctrl = dev_addr | (ep_num << USB_ADDR_ENDP_ENDPOINT_LSB); + + uint32_t flags = USB_SIE_CTRL_START_TRANS_BITS | SIE_CTRL_BASE | + (ep_dir ? USB_SIE_CTRL_RECEIVE_DATA_BITS : USB_SIE_CTRL_SEND_DATA_BITS); + // Set pre if we are a low speed device on full speed hub + flags |= need_pre(dev_addr) ? USB_SIE_CTRL_PREAMBLE_EN_BITS : 0; + + usb_hw->sie_ctrl = flags; + }else + { + hw_endpoint_xfer_start(ep, buffer, buflen); + } + + return true; +} + +bool hcd_setup_send(uint8_t rhport, uint8_t dev_addr, uint8_t const setup_packet[8]) +{ + (void) rhport; + + // Copy data into setup packet buffer + memcpy((void*)&usbh_dpram->setup_packet[0], setup_packet, 8); + + // Configure EP0 struct with setup info for the trans complete + struct hw_endpoint *ep = _hw_endpoint_allocate(0); + + // EP0 out + _hw_endpoint_init(ep, dev_addr, 0x00, ep->wMaxPacketSize, 0, 0); + assert(ep->configured); + + ep->remaining_len = 8; + ep->active = true; + + // Set device address + usb_hw->dev_addr_ctrl = dev_addr; + + // Set pre if we are a low speed device on full speed hub + uint32_t const flags = SIE_CTRL_BASE | USB_SIE_CTRL_SEND_SETUP_BITS | USB_SIE_CTRL_START_TRANS_BITS | + (need_pre(dev_addr) ? USB_SIE_CTRL_PREAMBLE_EN_BITS : 0); + + usb_hw->sie_ctrl = flags; + + return true; +} + + +//bool hcd_edpt_busy(uint8_t dev_addr, uint8_t ep_addr) +//{ +// // EPX is shared, so multiple device addresses and endpoint addresses share that +// // so if any transfer is active on epx, we are busy. Interrupt endpoints have their own +// // EPX so ep->active will only be busy if there is a pending transfer on that interrupt endpoint +// // on that device +// pico_trace("hcd_edpt_busy dev addr %d ep_addr 0x%x\n", dev_addr, ep_addr); +// struct hw_endpoint *ep = get_dev_ep(dev_addr, ep_addr); +// assert(ep); +// bool busy = ep->active; +// pico_trace("busy == %d\n", busy); +// return busy; +//} + +bool hcd_edpt_clear_stall(uint8_t dev_addr, uint8_t ep_addr) +{ + (void) dev_addr; + (void) ep_addr; + + panic("hcd_clear_stall"); + return true; +} + +#endif diff --git a/arkanoid/pico/tinyusb/host/hcd.h b/arkanoid/pico/tinyusb/host/hcd.h new file mode 100644 index 0000000..eebdfad --- /dev/null +++ b/arkanoid/pico/tinyusb/host/hcd.h @@ -0,0 +1,179 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef _TUSB_HCD_H_ +#define _TUSB_HCD_H_ + +#include "../tusb_common.h" +#include "../osal.h" +#include "../tusb_fifo.h" +#include "hcd_attr.h" + +#ifdef __cplusplus + extern "C" { +#endif + + //--------------------------------------------------------------------+ +// MACRO CONSTANT TYPEDEF +//--------------------------------------------------------------------+ +typedef enum +{ + HCD_EVENT_DEVICE_ATTACH, + HCD_EVENT_DEVICE_REMOVE, + HCD_EVENT_XFER_COMPLETE, + + // Not an HCD event, just a convenient way to defer ISR function + USBH_EVENT_FUNC_CALL, + + HCD_EVENT_COUNT +} hcd_eventid_t; + +typedef struct +{ + uint8_t rhport; + uint8_t event_id; + uint8_t dev_addr; + + union + { + // Attach, Remove + struct { + uint8_t hub_addr; + uint8_t hub_port; + uint8_t speed; + } connection; + + // XFER_COMPLETE + struct { + uint8_t ep_addr; + uint8_t result; + uint32_t len; + } xfer_complete; + + // FUNC_CALL + struct { + void (*func) (void*); + void* param; + }func_call; + }; + +} hcd_event_t; + +#if TUSB_OPT_HOST_ENABLED +// Max number of endpoints per device +enum { + // TODO better computation + HCD_MAX_ENDPOINT = CFG_TUH_DEVICE_MAX*(CFG_TUH_HUB + CFG_TUH_HID*2 + CFG_TUH_MSC*2 + CFG_TUH_CDC*3), + HCD_MAX_XFER = HCD_MAX_ENDPOINT*2, +}; + +//#define HCD_MAX_ENDPOINT 16 +//#define HCD_MAX_XFER 16 + +typedef struct { + uint8_t rhport; + uint8_t hub_addr; + uint8_t hub_port; + uint8_t speed; +} hcd_devtree_info_t; + +#endif + +//--------------------------------------------------------------------+ +// Controller API +//--------------------------------------------------------------------+ + +// Initialize controller to host mode +bool hcd_init(uint8_t rhport); + +// Interrupt Handler +void hcd_int_handler(uint8_t rhport); + +// Enable USB interrupt +void hcd_int_enable (uint8_t rhport); + +// Disable USB interrupt +void hcd_int_disable(uint8_t rhport); + +// Get frame number (1ms) +uint32_t hcd_frame_number(uint8_t rhport); + +//--------------------------------------------------------------------+ +// Port API +//--------------------------------------------------------------------+ + +// Get the current connect status of roothub port +bool hcd_port_connect_status(uint8_t rhport); + +// Reset USB bus on the port +void hcd_port_reset(uint8_t rhport); + +// TODO implement later +void hcd_port_reset_end(uint8_t rhport); + +// Get port link speed +tusb_speed_t hcd_port_speed_get(uint8_t rhport); + +// HCD closes all opened endpoints belong to this device +void hcd_device_close(uint8_t rhport, uint8_t dev_addr); + +//--------------------------------------------------------------------+ +// Endpoints API +//--------------------------------------------------------------------+ + +bool hcd_setup_send(uint8_t rhport, uint8_t dev_addr, uint8_t const setup_packet[8]); +bool hcd_edpt_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_endpoint_t const * ep_desc); +bool hcd_edpt_xfer(uint8_t rhport, uint8_t dev_addr, uint8_t ep_addr, uint8_t * buffer, uint16_t buflen); +bool hcd_edpt_clear_stall(uint8_t dev_addr, uint8_t ep_addr); + +//--------------------------------------------------------------------+ +// USBH implemented API +//--------------------------------------------------------------------+ + +// Get device tree information of a device +// USB device tree can be complicated and manged by USBH, this help HCD to retrieve +// needed topology info to carry out its work +extern void hcd_devtree_get_info(uint8_t dev_addr, hcd_devtree_info_t* devtree_info); + +//------------- Event API -------------// + +// Called by HCD to notify stack +extern void hcd_event_handler(hcd_event_t const* event, bool in_isr); + +// Helper to send device attach event +extern void hcd_event_device_attach(uint8_t rhport, bool in_isr); + +// Helper to send device removal event +extern void hcd_event_device_remove(uint8_t rhport, bool in_isr); + +// Helper to send USB transfer event +extern void hcd_event_xfer_complete(uint8_t dev_addr, uint8_t ep_addr, uint32_t xferred_bytes, xfer_result_t result, bool in_isr); + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_HCD_H_ */ diff --git a/arkanoid/pico/tinyusb/host/hcd_attr.h b/arkanoid/pico/tinyusb/host/hcd_attr.h new file mode 100644 index 0000000..56619e5 --- /dev/null +++ b/arkanoid/pico/tinyusb/host/hcd_attr.h @@ -0,0 +1,105 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2021, Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef TUSB_HCD_ATTR_H_ +#define TUSB_HCD_ATTR_H_ + +#include "../tusb_option.h" + +// Attribute includes +// - ENDPOINT_MAX: max (logical) number of endpoint +// - PORT_HIGHSPEED: mask to indicate which port support highspeed mode, bit0 for port0 and so on. + +//------------- NXP -------------// +#if TU_CHECK_MCU(LPC175X_6X) || TU_CHECK_MCU(LPC177X_8X) || TU_CHECK_MCU(LPC40XX) + #define HCD_ATTR_OHCI + +#elif TU_CHECK_MCU(LPC18XX) || TU_CHECK_MCU(LPC43XX) + #define HCD_ATTR_EHCI_TRANSDIMENSION + +#elif TU_CHECK_MCU(LPC54XXX) + // #define HCD_ATTR_EHCI_NXP_PTD + +#elif TU_CHECK_MCU(LPC55XX) + // #define HCD_ATTR_EHCI_NXP_PTD + +#elif TU_CHECK_MCU(MIMXRT10XX) + #define HCD_ATTR_EHCI_TRANSDIMENSION + +#elif TU_CHECK_MCU(MKL25ZXX) + +//------------- Microchip -------------// +#elif TU_CHECK_MCU(SAMD21) || TU_CHECK_MCU(SAMD51) || TU_CHECK_MCU(SAME5X) || \ + TU_CHECK_MCU(SAMD11) || TU_CHECK_MCU(SAML21) || TU_CHECK_MCU(SAML22) + +#elif TU_CHECK_MCU(SAMG) + +#elif TU_CHECK_MCU(SAMX7X) + +//------------- ST -------------// +#elif TU_CHECK_MCU(STM32F0) || TU_CHECK_MCU(STM32F1) || TU_CHECK_MCU(STM32F3) || \ + TU_CHECK_MCU(STM32L0) || TU_CHECK_MCU(STM32L1) || TU_CHECK_MCU(STM32L4) + +#elif TU_CHECK_MCU(STM32F2) || TU_CHECK_MCU(STM32F4) || TU_CHECK_MCU(STM32F3) + +#elif TU_CHECK_MCU(STM32F7) + +#elif TU_CHECK_MCU(STM32H7) + +//------------- Sony -------------// +#elif TU_CHECK_MCU(CXD56) + +//------------- Nuvoton -------------// +#elif TU_CHECK_MCU(NUC505) + +//------------- Espressif -------------// +#elif TU_CHECK_MCU(ESP32S2) || TU_CHECK_MCU(ESP32S3) + +//------------- Raspberry Pi -------------// +#elif TU_CHECK_MCU(RP2040) + +//------------- Silabs -------------// +#elif TU_CHECK_MCU(EFM32GG) || TU_CHECK_MCU(EFM32GG11) || TU_CHECK_MCU(EFM32GG12) + +//------------- Renesas -------------// +#elif TU_CHECK_MCU(RX63X) || TU_CHECK_MCU(RX65X) || TU_CHECK_MCU(RX72N) + +//#elif TU_CHECK_MCU(MM32F327X) +// #define DCD_ATTR_ENDPOINT_MAX not known yet + +//------------- GigaDevice -------------// +#elif TU_CHECK_MCU(GD32VF103) + +#else +// #warning "DCD_ATTR_ENDPOINT_MAX is not defined for this MCU, default to 8" +#endif + +// Default to fullspeed if not defined +//#ifndef PORT_HIGHSPEED +// #define DCD_ATTR_PORT_HIGHSPEED 0x00 +//#endif + +#endif diff --git a/arkanoid/pico/tinyusb/host/hub.c b/arkanoid/pico/tinyusb/host/hub.c new file mode 100644 index 0000000..a56cad0 --- /dev/null +++ b/arkanoid/pico/tinyusb/host/hub.c @@ -0,0 +1,388 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#include "../tusb_option.h" + +#if (TUSB_OPT_HOST_ENABLED && CFG_TUH_HUB) + +#include "usbh.h" +#include "usbh_classdriver.h" +#include "hub.h" + +//--------------------------------------------------------------------+ +// MACRO CONSTANT TYPEDEF +//--------------------------------------------------------------------+ +typedef struct +{ + uint8_t itf_num; + uint8_t ep_in; + uint8_t port_count; + uint8_t status_change; // data from status change interrupt endpoint + + hub_port_status_response_t port_status; +} hub_interface_t; + +CFG_TUSB_MEM_SECTION static hub_interface_t hub_data[CFG_TUH_HUB]; +CFG_TUSB_MEM_SECTION TU_ATTR_ALIGNED(4) static uint8_t _hub_buffer[sizeof(descriptor_hub_desc_t)]; + +TU_ATTR_ALWAYS_INLINE +static inline hub_interface_t* get_itf(uint8_t dev_addr) +{ + return &hub_data[dev_addr-1-CFG_TUH_DEVICE_MAX]; +} + +#if CFG_TUSB_DEBUG +static char const* const _hub_feature_str[] = +{ + [HUB_FEATURE_PORT_CONNECTION ] = "PORT_CONNECTION", + [HUB_FEATURE_PORT_ENABLE ] = "PORT_ENABLE", + [HUB_FEATURE_PORT_SUSPEND ] = "PORT_SUSPEND", + [HUB_FEATURE_PORT_OVER_CURRENT ] = "PORT_OVER_CURRENT", + [HUB_FEATURE_PORT_RESET ] = "PORT_RESET", + [HUB_FEATURE_PORT_POWER ] = "PORT_POWER", + [HUB_FEATURE_PORT_LOW_SPEED ] = "PORT_LOW_SPEED", + [HUB_FEATURE_PORT_CONNECTION_CHANGE ] = "PORT_CONNECTION_CHANGE", + [HUB_FEATURE_PORT_ENABLE_CHANGE ] = "PORT_ENABLE_CHANGE", + [HUB_FEATURE_PORT_SUSPEND_CHANGE ] = "PORT_SUSPEND_CHANGE", + [HUB_FEATURE_PORT_OVER_CURRENT_CHANGE ] = "PORT_OVER_CURRENT_CHANGE", + [HUB_FEATURE_PORT_RESET_CHANGE ] = "PORT_RESET_CHANGE", + [HUB_FEATURE_PORT_TEST ] = "PORT_TEST", + [HUB_FEATURE_PORT_INDICATOR ] = "PORT_INDICATOR", +}; +#endif + +//--------------------------------------------------------------------+ +// HUB +//--------------------------------------------------------------------+ +bool hub_port_clear_feature(uint8_t hub_addr, uint8_t hub_port, uint8_t feature, tuh_control_complete_cb_t complete_cb) +{ + tusb_control_request_t const request = + { + .bmRequestType_bit = + { + .recipient = TUSB_REQ_RCPT_OTHER, + .type = TUSB_REQ_TYPE_CLASS, + .direction = TUSB_DIR_OUT + }, + .bRequest = HUB_REQUEST_CLEAR_FEATURE, + .wValue = feature, + .wIndex = hub_port, + .wLength = 0 + }; + + TU_LOG2("HUB Clear Feature: %s, addr = %u port = %u\r\n", _hub_feature_str[feature], hub_addr, hub_port); + TU_ASSERT( tuh_control_xfer(hub_addr, &request, NULL, complete_cb) ); + return true; +} + +bool hub_port_set_feature(uint8_t hub_addr, uint8_t hub_port, uint8_t feature, tuh_control_complete_cb_t complete_cb) +{ + tusb_control_request_t const request = + { + .bmRequestType_bit = + { + .recipient = TUSB_REQ_RCPT_OTHER, + .type = TUSB_REQ_TYPE_CLASS, + .direction = TUSB_DIR_OUT + }, + .bRequest = HUB_REQUEST_SET_FEATURE, + .wValue = feature, + .wIndex = hub_port, + .wLength = 0 + }; + + TU_LOG2("HUB Set Feature: %s, addr = %u port = %u\r\n", _hub_feature_str[feature], hub_addr, hub_port); + TU_ASSERT( tuh_control_xfer(hub_addr, &request, NULL, complete_cb) ); + return true; +} + +bool hub_port_reset(uint8_t hub_addr, uint8_t hub_port, tuh_control_complete_cb_t complete_cb) +{ + return hub_port_set_feature(hub_addr, hub_port, HUB_FEATURE_PORT_RESET, complete_cb); +} + +bool hub_port_get_status(uint8_t hub_addr, uint8_t hub_port, void* resp, tuh_control_complete_cb_t complete_cb) +{ + tusb_control_request_t const request = + { + .bmRequestType_bit = + { + .recipient = TUSB_REQ_RCPT_OTHER, + .type = TUSB_REQ_TYPE_CLASS, + .direction = TUSB_DIR_IN + }, + .bRequest = HUB_REQUEST_GET_STATUS, + .wValue = 0, + .wIndex = hub_port, + .wLength = 4 + }; + + TU_LOG2("HUB Get Port Status: addr = %u port = %u\r\n", hub_addr, hub_port); + TU_ASSERT( tuh_control_xfer( hub_addr, &request, resp, complete_cb) ); + return true; +} + +//--------------------------------------------------------------------+ +// CLASS-USBH API (don't require to verify parameters) +//--------------------------------------------------------------------+ +void hub_init(void) +{ + tu_memclr(hub_data, sizeof(hub_data)); +} + +bool hub_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const *itf_desc, uint16_t max_len) +{ + TU_VERIFY(TUSB_CLASS_HUB == itf_desc->bInterfaceClass && + 0 == itf_desc->bInterfaceSubClass); + + // hub driver does not support multiple TT yet + TU_VERIFY(itf_desc->bInterfaceProtocol <= 1); + + // msc driver length is fixed + uint16_t const drv_len = sizeof(tusb_desc_interface_t) + sizeof(tusb_desc_endpoint_t); + TU_ASSERT(drv_len <= max_len); + + //------------- Interrupt Status endpoint -------------// + tusb_desc_endpoint_t const *desc_ep = (tusb_desc_endpoint_t const *) tu_desc_next(itf_desc); + + TU_ASSERT(TUSB_DESC_ENDPOINT == desc_ep->bDescriptorType && + TUSB_XFER_INTERRUPT == desc_ep->bmAttributes.xfer, 0); + + TU_ASSERT(usbh_edpt_open(rhport, dev_addr, desc_ep)); + + hub_interface_t* p_hub = get_itf(dev_addr); + + p_hub->itf_num = itf_desc->bInterfaceNumber; + p_hub->ep_in = desc_ep->bEndpointAddress; + + return true; +} + +void hub_close(uint8_t dev_addr) +{ + TU_VERIFY(dev_addr > CFG_TUH_DEVICE_MAX, ); + hub_interface_t* p_hub = get_itf(dev_addr); + + if (p_hub->ep_in) tu_memclr(p_hub, sizeof( hub_interface_t)); +} + +bool hub_status_pipe_queue(uint8_t dev_addr) +{ + hub_interface_t* hub_itf = get_itf(dev_addr); + return usbh_edpt_xfer(dev_addr, hub_itf->ep_in, &hub_itf->status_change, 1); +} + + +//--------------------------------------------------------------------+ +// Set Configure +//--------------------------------------------------------------------+ + +static bool config_set_port_power (uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result); +static bool config_port_power_complete (uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result); + +bool hub_set_config(uint8_t dev_addr, uint8_t itf_num) +{ + hub_interface_t* p_hub = get_itf(dev_addr); + TU_ASSERT(itf_num == p_hub->itf_num); + + // Get Hub Descriptor + tusb_control_request_t const request = + { + .bmRequestType_bit = + { + .recipient = TUSB_REQ_RCPT_DEVICE, + .type = TUSB_REQ_TYPE_CLASS, + .direction = TUSB_DIR_IN + }, + .bRequest = HUB_REQUEST_GET_DESCRIPTOR, + .wValue = 0, + .wIndex = 0, + .wLength = sizeof(descriptor_hub_desc_t) + }; + + TU_ASSERT( tuh_control_xfer(dev_addr, &request, _hub_buffer, config_set_port_power) ); + + return true; +} + +static bool config_set_port_power (uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result) +{ + (void) request; + TU_ASSERT(XFER_RESULT_SUCCESS == result); + + hub_interface_t* p_hub = get_itf(dev_addr); + + // only use number of ports in hub descriptor + descriptor_hub_desc_t const* desc_hub = (descriptor_hub_desc_t const*) _hub_buffer; + p_hub->port_count = desc_hub->bNbrPorts; + + // May need to GET_STATUS + + // Set Port Power to be able to detect connection, starting with port 1 + uint8_t const hub_port = 1; + return hub_port_set_feature(dev_addr, hub_port, HUB_FEATURE_PORT_POWER, config_port_power_complete); +} + +static bool config_port_power_complete (uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result) +{ + TU_ASSERT(XFER_RESULT_SUCCESS == result); + hub_interface_t* p_hub = get_itf(dev_addr); + + if (request->wIndex == p_hub->port_count) + { + // All ports are power -> queue notification status endpoint and + // complete the SET CONFIGURATION + TU_ASSERT( usbh_edpt_xfer(dev_addr, p_hub->ep_in, &p_hub->status_change, 1) ); + + usbh_driver_set_config_complete(dev_addr, p_hub->itf_num); + }else + { + // power next port + uint8_t const hub_port = (uint8_t) (request->wIndex + 1); + return hub_port_set_feature(dev_addr, hub_port, HUB_FEATURE_PORT_POWER, config_port_power_complete); + } + + return true; +} + +//--------------------------------------------------------------------+ +// Connection Changes +//--------------------------------------------------------------------+ + +static bool connection_get_status_complete (uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result); +static bool connection_clear_conn_change_complete (uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result); +static bool connection_port_reset_complete (uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result); + +// callback as response of interrupt endpoint polling +bool hub_xfer_cb(uint8_t dev_addr, uint8_t ep_addr, xfer_result_t result, uint32_t xferred_bytes) +{ + (void) xferred_bytes; // TODO can be more than 1 for hub with lots of ports + (void) ep_addr; + TU_ASSERT(result == XFER_RESULT_SUCCESS); + + hub_interface_t* p_hub = get_itf(dev_addr); + + TU_LOG2(" Port Status Change = 0x%02X\r\n", p_hub->status_change); + + // Hub ignore bit0 in status change + for (uint8_t port=1; port <= p_hub->port_count; port++) + { + if ( tu_bit_test(p_hub->status_change, port) ) + { + hub_port_get_status(dev_addr, port, &p_hub->port_status, connection_get_status_complete); + break; + } + } + + // NOTE: next status transfer is queued by usbh.c after handling this request + + return true; +} + +static bool connection_get_status_complete (uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result) +{ + TU_ASSERT(result == XFER_RESULT_SUCCESS); + + hub_interface_t* p_hub = get_itf(dev_addr); + uint8_t const port_num = (uint8_t) request->wIndex; + + // Connection change + if (p_hub->port_status.change.connection) + { + // Port is powered and enabled + //TU_VERIFY(port_status.status_current.port_power && port_status.status_current.port_enable, ); + + // Acknowledge Port Connection Change + hub_port_clear_feature(dev_addr, port_num, HUB_FEATURE_PORT_CONNECTION_CHANGE, connection_clear_conn_change_complete); + }else + { + // Other changes are: Enable, Suspend, Over Current, Reset, L1 state + // TODO clear change + + // prepare for next hub status + // TODO continue with status_change, or maybe we can do it again with status + hub_status_pipe_queue(dev_addr); + } + + return true; +} + +static bool connection_clear_conn_change_complete (uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result) +{ + TU_ASSERT(result == XFER_RESULT_SUCCESS); + + hub_interface_t* p_hub = get_itf(dev_addr); + uint8_t const port_num = (uint8_t) request->wIndex; + + if ( p_hub->port_status.status.connection ) + { + // Reset port if attach event + hub_port_reset(dev_addr, port_num, connection_port_reset_complete); + }else + { + // submit detach event + hcd_event_t event = + { + .rhport = usbh_get_rhport(dev_addr), + .event_id = HCD_EVENT_DEVICE_REMOVE, + .connection = + { + .hub_addr = dev_addr, + .hub_port = port_num + } + }; + + hcd_event_handler(&event, false); + } + + return true; +} + +static bool connection_port_reset_complete (uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result) +{ + TU_ASSERT(result == XFER_RESULT_SUCCESS); + + // hub_interface_t* p_hub = get_itf(dev_addr); + uint8_t const port_num = (uint8_t) request->wIndex; + + // submit attach event + hcd_event_t event = + { + .rhport = usbh_get_rhport(dev_addr), + .event_id = HCD_EVENT_DEVICE_ATTACH, + .connection = + { + .hub_addr = dev_addr, + .hub_port = port_num + } + }; + + hcd_event_handler(&event, false); + + return true; +} + +#endif diff --git a/arkanoid/pico/tinyusb/host/hub.h b/arkanoid/pico/tinyusb/host/hub.h new file mode 100644 index 0000000..02dc325 --- /dev/null +++ b/arkanoid/pico/tinyusb/host/hub.h @@ -0,0 +1,196 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +/** \ingroup group_class + * \defgroup ClassDriver_Hub Hub (Host only) + * \details Like most PC's OS, Hub support is completely hidden from Application. In fact, application cannot determine whether + * a device is mounted directly via roothub or via a hub's port. All Hub-related procedures are performed and managed + * by tinyusb stack. Unless you are trying to develop the stack itself, there are nothing else can be used by Application. + * \note Due to my laziness, only 1-level of Hub is supported. In other way, the stack cannot mount a hub via another hub. + * @{ + */ + +#ifndef _TUSB_HUB_H_ +#define _TUSB_HUB_H_ + +#include "../tusb_common.h" + +#ifdef __cplusplus + extern "C" { +#endif + +//D1...D0: Logical Power Switching Mode +//00: Ganged power switching (all ports’power at +//once) +//01: Individual port power switching +//1X: Reserved. Used only on 1.0 compliant hubs +//that implement no power switching +//D2: Identifies a Compound Device +//0: Hub is not part of a compound device. +//1: Hub is part of a compound device. +//D4...D3: Over-current Protection Mode +//00: Global Over-current Protection. The hub +//reports over-current as a summation of all +//ports’current draw, without a breakdown of +//individual port over-current status. +//01: Individual Port Over-current Protection. The +//hub reports over-current on a per-port basis. +//Each port has an over-current status. +//1X: No Over-current Protection. This option is +//allowed only for bus-powered hubs that do not +//implement over-current protection. +// +//D6...D5: TT Think TIme +//00: TT requires at most 8 FS bit times of inter +//transaction gap on a full-/low-speed +//downstream bus. +//01: TT requires at most 16 FS bit times. +//10: TT requires at most 24 FS bit times. +//11: TT requires at most 32 FS bit times. +//D7: Port Indicators Supported +//0: Port Indicators are not supported on its +//downstream facing ports and the +//PORT_INDICATOR request has no effect. +//1: Port Indicators are supported on its +//downstream facing ports and the +//PORT_INDICATOR request controls the +//indicators. See Section 11.5.3. +//D15...D8: Reserved + +typedef struct TU_ATTR_PACKED{ + uint8_t bLength ; ///< Size of descriptor + uint8_t bDescriptorType ; ///< Other_speed_Configuration Type + uint8_t bNbrPorts; + uint16_t wHubCharacteristics; + uint8_t bPwrOn2PwrGood; + uint8_t bHubContrCurrent; + uint8_t DeviceRemovable; // bitmap each bit for a port (from bit1) + uint8_t PortPwrCtrlMask; // just for compatibility, should be 0xff +} descriptor_hub_desc_t; + +TU_VERIFY_STATIC( sizeof(descriptor_hub_desc_t) == 9, "size is not correct"); + +enum { + HUB_REQUEST_GET_STATUS = 0 , + HUB_REQUEST_CLEAR_FEATURE = 1 , + + HUB_REQUEST_SET_FEATURE = 3 , + + HUB_REQUEST_GET_DESCRIPTOR = 6 , + HUB_REQUEST_SET_DESCRIPTOR = 7 , + HUB_REQUEST_CLEAR_TT_BUFFER = 8 , + HUB_REQUEST_RESET_TT = 9 , + HUB_REQUEST_GET_TT_STATE = 10 , + HUB_REQUEST_STOP_TT = 11 +}; + +enum { + HUB_FEATURE_HUB_LOCAL_POWER_CHANGE = 0, + HUB_FEATURE_HUB_OVER_CURRENT_CHANGE +}; + +enum{ + HUB_FEATURE_PORT_CONNECTION = 0, + HUB_FEATURE_PORT_ENABLE = 1, + HUB_FEATURE_PORT_SUSPEND = 2, + HUB_FEATURE_PORT_OVER_CURRENT = 3, + HUB_FEATURE_PORT_RESET = 4, + + HUB_FEATURE_PORT_POWER = 8, + HUB_FEATURE_PORT_LOW_SPEED = 9, + + HUB_FEATURE_PORT_CONNECTION_CHANGE = 16, + HUB_FEATURE_PORT_ENABLE_CHANGE = 17, + HUB_FEATURE_PORT_SUSPEND_CHANGE = 18, + HUB_FEATURE_PORT_OVER_CURRENT_CHANGE = 19, + HUB_FEATURE_PORT_RESET_CHANGE = 20, + HUB_FEATURE_PORT_TEST = 21, + HUB_FEATURE_PORT_INDICATOR = 22 +}; + +// data in response of HUB_REQUEST_GET_STATUS, wIndex = 0 (hub) +typedef struct { + union{ + struct TU_ATTR_PACKED { + uint16_t local_power_source : 1; + uint16_t over_current : 1; + uint16_t : 14; + }; + + uint16_t value; + } status, change; +} hub_status_response_t; + +TU_VERIFY_STATIC( sizeof(hub_status_response_t) == 4, "size is not correct"); + +// data in response of HUB_REQUEST_GET_STATUS, wIndex = Port num +typedef struct { + union { + struct TU_ATTR_PACKED { + uint16_t connection : 1; + uint16_t port_enable : 1; + uint16_t suspend : 1; + uint16_t over_current : 1; + uint16_t reset : 1; + + uint16_t : 3; + uint16_t port_power : 1; + uint16_t low_speed : 1; + uint16_t high_speed : 1; + uint16_t port_test_mode : 1; + uint16_t port_indicator_control : 1; + uint16_t TU_RESERVED : 3; + }; + + uint16_t value; + } status, change; +} hub_port_status_response_t; + +TU_VERIFY_STATIC( sizeof(hub_port_status_response_t) == 4, "size is not correct"); + +bool hub_port_clear_feature(uint8_t hub_addr, uint8_t hub_port, uint8_t feature, tuh_control_complete_cb_t complete_cb); +bool hub_port_set_feature(uint8_t hub_addr, uint8_t hub_port, uint8_t feature, tuh_control_complete_cb_t complete_cb); + +bool hub_port_reset(uint8_t hub_addr, uint8_t hub_port, tuh_control_complete_cb_t complete_cb); +bool hub_port_get_status(uint8_t hub_addr, uint8_t hub_port, void* resp, tuh_control_complete_cb_t complete_cb); +bool hub_status_pipe_queue(uint8_t dev_addr); + +//--------------------------------------------------------------------+ +// Internal Class Driver API +//--------------------------------------------------------------------+ +void hub_init (void); +bool hub_open (uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const *itf_desc, uint16_t max_len); +bool hub_set_config (uint8_t dev_addr, uint8_t itf_num); +bool hub_xfer_cb (uint8_t dev_addr, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes); +void hub_close (uint8_t dev_addr); + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_HUB_H_ */ + +/** @} */ diff --git a/arkanoid/pico/tinyusb/host/usbh.c b/arkanoid/pico/tinyusb/host/usbh.c new file mode 100644 index 0000000..cc63a55 --- /dev/null +++ b/arkanoid/pico/tinyusb/host/usbh.c @@ -0,0 +1,1195 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#include "../tusb_option.h" + +#if TUSB_OPT_HOST_ENABLED + +#include "../tusb.h" +#include "usbh.h" +#include "usbh_classdriver.h" +#include "hub.h" + +//--------------------------------------------------------------------+ +// USBH Configuration +//--------------------------------------------------------------------+ + +// TODO remove,update +#ifndef CFG_TUH_EP_MAX +#define CFG_TUH_EP_MAX 9 +#endif + +#ifndef CFG_TUH_TASK_QUEUE_SZ +#define CFG_TUH_TASK_QUEUE_SZ 16 +#endif + +// Debug level of USBD +#define USBH_DBG_LVL 2 + +//--------------------------------------------------------------------+ +// USBH-HCD common data structure +//--------------------------------------------------------------------+ + +typedef struct { + //------------- port -------------// + uint8_t rhport; + uint8_t hub_addr; + uint8_t hub_port; + uint8_t speed; + + //------------- device descriptor -------------// + uint16_t vid; + uint16_t pid; + + uint8_t ep0_size; + uint8_t i_manufacturer; + uint8_t i_product; + uint8_t i_serial; + + //------------- configuration descriptor -------------// + // uint8_t interface_count; // bNumInterfaces alias + + //------------- device -------------// + struct TU_ATTR_PACKED + { + uint8_t connected : 1; + uint8_t addressed : 1; + uint8_t configured : 1; + uint8_t suspended : 1; + }; + + volatile uint8_t state; // device state, value from enum tusbh_device_state_t + + uint8_t itf2drv[16]; // map interface number to driver (0xff is invalid) + uint8_t ep2drv[CFG_TUH_EP_MAX][2]; // map endpoint to driver ( 0xff is invalid ) + + struct TU_ATTR_PACKED + { + volatile bool busy : 1; + volatile bool stalled : 1; + volatile bool claimed : 1; + + // TODO merge ep2drv here, 4-bit should be sufficient + }ep_status[CFG_TUH_EP_MAX][2]; + + // Mutex for claiming endpoint, only needed when using with preempted RTOS +#if CFG_TUSB_OS != OPT_OS_NONE + osal_mutex_def_t mutexdef; + osal_mutex_t mutex; +#endif + +} usbh_device_t; + +typedef struct +{ + uint8_t rhport; + uint8_t hub_addr; + uint8_t hub_port; + uint8_t speed; + + volatile uint8_t connected; +} usbh_dev0_t; + + +//--------------------------------------------------------------------+ +// MACRO CONSTANT TYPEDEF +//--------------------------------------------------------------------+ + +// Invalid driver ID in itf2drv[] ep2drv[][] mapping +enum { DRVID_INVALID = 0xFFu }; +enum { ADDR_INVALID = 0xFFu }; + +#if CFG_TUSB_DEBUG >= 2 + #define DRIVER_NAME(_name) .name = _name, +#else + #define DRIVER_NAME(_name) +#endif + +static usbh_class_driver_t const usbh_class_drivers[] = +{ + #if CFG_TUH_CDC + { + DRIVER_NAME("CDC") + .init = cdch_init, + .open = cdch_open, + .set_config = cdch_set_config, + .xfer_cb = cdch_xfer_cb, + .close = cdch_close + }, + #endif + + #if CFG_TUH_MSC + { + DRIVER_NAME("MSC") + .init = msch_init, + .open = msch_open, + .set_config = msch_set_config, + .xfer_cb = msch_xfer_cb, + .close = msch_close + }, + #endif + + #if CFG_TUH_HID + { + DRIVER_NAME("HID") + .init = hidh_init, + .open = hidh_open, + .set_config = hidh_set_config, + .xfer_cb = hidh_xfer_cb, + .close = hidh_close + }, + #endif + + #if CFG_TUH_HUB + { + DRIVER_NAME("HUB") + .init = hub_init, + .open = hub_open, + .set_config = hub_set_config, + .xfer_cb = hub_xfer_cb, + .close = hub_close + }, + #endif + + #if CFG_TUH_VENDOR + { + DRIVER_NAME("VENDOR") + .init = cush_init, + .open = cush_open_subtask, + .xfer_cb = cush_isr, + .close = cush_close + } + #endif +}; + +enum { USBH_CLASS_DRIVER_COUNT = TU_ARRAY_SIZE(usbh_class_drivers) }; + +enum { RESET_DELAY = 500 }; // 200 USB specs say only 50ms but many devices require much longer + +enum { CONFIG_NUM = 1 }; // default to use configuration 1 + + +//--------------------------------------------------------------------+ +// INTERNAL OBJECT & FUNCTION DECLARATION +//--------------------------------------------------------------------+ + +static bool _usbh_initialized = false; + +// Device with address = 0 for enumeration +static usbh_dev0_t _dev0; + +// all devices excluding zero-address +// hub address start from CFG_TUH_DEVICE_MAX+1 +CFG_TUSB_MEM_SECTION usbh_device_t _usbh_devices[CFG_TUH_DEVICE_MAX + CFG_TUH_HUB]; + +// Event queue +// role device/host is used by OS NONE for mutex (disable usb isr) +OSAL_QUEUE_DEF(OPT_MODE_HOST, _usbh_qdef, CFG_TUH_TASK_QUEUE_SZ, hcd_event_t); +static osal_queue_t _usbh_q; + +CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN static uint8_t _usbh_ctrl_buf[CFG_TUH_ENUMERATION_BUFSIZE]; + +//------------- Helper Function -------------// + +TU_ATTR_ALWAYS_INLINE +static inline usbh_device_t* get_device(uint8_t dev_addr) +{ + TU_ASSERT(dev_addr, NULL); + return &_usbh_devices[dev_addr-1]; +} + +static bool enum_new_device(hcd_event_t* event); +static void process_device_unplugged(uint8_t rhport, uint8_t hub_addr, uint8_t hub_port); +static bool usbh_edpt_control_open(uint8_t dev_addr, uint8_t max_packet_size); + +// from usbh_control.c +extern bool usbh_control_xfer_cb (uint8_t dev_addr, uint8_t ep_addr, xfer_result_t result, uint32_t xferred_bytes); + +//--------------------------------------------------------------------+ +// PUBLIC API (Parameter Verification is required) +//--------------------------------------------------------------------+ +bool tuh_mounted(uint8_t dev_addr) +{ + return get_device(dev_addr)->configured; +} + +bool tuh_vid_pid_get(uint8_t dev_addr, uint16_t* vid, uint16_t* pid) +{ + *vid = *pid = 0; + + TU_VERIFY(tuh_mounted(dev_addr)); + + usbh_device_t const* dev = get_device(dev_addr); + + *vid = dev->vid; + *pid = dev->pid; + + return true; +} + +tusb_speed_t tuh_speed_get (uint8_t dev_addr) +{ + return (tusb_speed_t) (dev_addr ? get_device(dev_addr)->speed : _dev0.speed); +} + +#if CFG_TUSB_OS == OPT_OS_NONE +void osal_task_delay(uint32_t msec) +{ + (void) msec; + + const uint32_t start = hcd_frame_number(TUH_OPT_RHPORT); + while ( ( hcd_frame_number(TUH_OPT_RHPORT) - start ) < msec ) {} +} +#endif + +//--------------------------------------------------------------------+ +// CLASS-USBD API (don't require to verify parameters) +//--------------------------------------------------------------------+ + +bool tuh_inited(void) +{ + return _usbh_initialized; +} + +bool tuh_init(uint8_t rhport) +{ + // skip if already initialized + if (_usbh_initialized) return _usbh_initialized; + + TU_LOG2("USBH init\r\n"); + + tu_memclr(_usbh_devices, sizeof(_usbh_devices)); + tu_memclr(&_dev0, sizeof(_dev0)); + + //------------- Enumeration & Reporter Task init -------------// + _usbh_q = osal_queue_create( &_usbh_qdef ); + TU_ASSERT(_usbh_q != NULL); + + //------------- Semaphore, Mutex for Control Pipe -------------// + for(uint8_t i=0; i<TU_ARRAY_SIZE(_usbh_devices); i++) + { + usbh_device_t * dev = &_usbh_devices[i]; + +#if CFG_TUSB_OS != OPT_OS_NONE + dev->mutex = osal_mutex_create(&dev->mutexdef); + TU_ASSERT(dev->mutex); +#endif + + memset(dev->itf2drv, DRVID_INVALID, sizeof(dev->itf2drv)); // invalid mapping + memset(dev->ep2drv , DRVID_INVALID, sizeof(dev->ep2drv )); // invalid mapping + } + + // Class drivers init + for (uint8_t drv_id = 0; drv_id < USBH_CLASS_DRIVER_COUNT; drv_id++) + { + TU_LOG2("%s init\r\n", usbh_class_drivers[drv_id].name); + usbh_class_drivers[drv_id].init(); + } + + TU_ASSERT(hcd_init(rhport)); + hcd_int_enable(rhport); + + _usbh_initialized = true; + return true; +} + +/* USB Host Driver task + * This top level thread manages all host controller event and delegates events to class-specific drivers. + * This should be called periodically within the mainloop or rtos thread. + * + @code + int main(void) + { + application_init(); + tusb_init(); + + while(1) // the mainloop + { + application_code(); + tuh_task(); // tinyusb host task + } + } + @endcode + */ +void tuh_task(void) +{ + // Skip if stack is not initialized + if ( !tusb_inited() ) return; + + // Loop until there is no more events in the queue + while (1) + { + hcd_event_t event; + if ( !osal_queue_receive(_usbh_q, &event) ) return; + + switch (event.event_id) + { + case HCD_EVENT_DEVICE_ATTACH: + // TODO due to the shared _usbh_ctrl_buf, we must complete enumerating + // one device before enumerating another one. + TU_LOG2("USBH DEVICE ATTACH\r\n"); + enum_new_device(&event); + break; + + case HCD_EVENT_DEVICE_REMOVE: + TU_LOG2("USBH DEVICE REMOVED\r\n"); + process_device_unplugged(event.rhport, event.connection.hub_addr, event.connection.hub_port); + + #if CFG_TUH_HUB + // TODO remove + if ( event.connection.hub_addr != 0) + { + // done with hub, waiting for next data on status pipe + (void) hub_status_pipe_queue( event.connection.hub_addr ); + } + #endif + break; + + case HCD_EVENT_XFER_COMPLETE: + { + uint8_t const ep_addr = event.xfer_complete.ep_addr; + uint8_t const epnum = tu_edpt_number(ep_addr); + uint8_t const ep_dir = tu_edpt_dir(ep_addr); + + TU_LOG2("on EP %02X with %u bytes\r\n", ep_addr, (unsigned int) event.xfer_complete.len); + + if (event.dev_addr == 0) + { + // device 0 only has control endpoint + TU_ASSERT(epnum == 0, ); + usbh_control_xfer_cb(event.dev_addr, ep_addr, event.xfer_complete.result, event.xfer_complete.len); + } + else + { + usbh_device_t* dev = get_device(event.dev_addr); + dev->ep_status[epnum][ep_dir].busy = false; + dev->ep_status[epnum][ep_dir].claimed = 0; + + if ( 0 == epnum ) + { + usbh_control_xfer_cb(event.dev_addr, ep_addr, event.xfer_complete.result, event.xfer_complete.len); + }else + { + uint8_t drv_id = dev->ep2drv[epnum][ep_dir]; + TU_ASSERT(drv_id < USBH_CLASS_DRIVER_COUNT, ); + + TU_LOG2("%s xfer callback\r\n", usbh_class_drivers[drv_id].name); + usbh_class_drivers[drv_id].xfer_cb(event.dev_addr, ep_addr, event.xfer_complete.result, event.xfer_complete.len); + } + } + } + break; + + case USBH_EVENT_FUNC_CALL: + if ( event.func_call.func ) event.func_call.func(event.func_call.param); + break; + + default: break; + } + } +} + +//--------------------------------------------------------------------+ +// USBH API For Class Driver +//--------------------------------------------------------------------+ + +uint8_t usbh_get_rhport(uint8_t dev_addr) +{ + return (dev_addr == 0) ? _dev0.rhport : get_device(dev_addr)->rhport; +} + +uint8_t* usbh_get_enum_buf(void) +{ + return _usbh_ctrl_buf; +} + +//--------------------------------------------------------------------+ +// HCD Event Handler +//--------------------------------------------------------------------+ + +void hcd_devtree_get_info(uint8_t dev_addr, hcd_devtree_info_t* devtree_info) +{ + if (dev_addr) + { + usbh_device_t const* dev = get_device(dev_addr); + + devtree_info->rhport = dev->rhport; + devtree_info->hub_addr = dev->hub_addr; + devtree_info->hub_port = dev->hub_port; + devtree_info->speed = dev->speed; + }else + { + devtree_info->rhport = _dev0.rhport; + devtree_info->hub_addr = _dev0.hub_addr; + devtree_info->hub_port = _dev0.hub_port; + devtree_info->speed = _dev0.speed; + } +} + +void hcd_event_handler(hcd_event_t const* event, bool in_isr) +{ + switch (event->event_id) + { + default: + osal_queue_send(_usbh_q, event, in_isr); + break; + } +} + +void hcd_event_xfer_complete(uint8_t dev_addr, uint8_t ep_addr, uint32_t xferred_bytes, xfer_result_t result, bool in_isr) +{ + hcd_event_t event = + { + .rhport = 0, // TODO correct rhport + .event_id = HCD_EVENT_XFER_COMPLETE, + .dev_addr = dev_addr, + .xfer_complete = + { + .ep_addr = ep_addr, + .result = result, + .len = xferred_bytes + } + }; + + hcd_event_handler(&event, in_isr); +} + +void hcd_event_device_attach(uint8_t rhport, bool in_isr) +{ + hcd_event_t event = + { + .rhport = rhport, + .event_id = HCD_EVENT_DEVICE_ATTACH + }; + + event.connection.hub_addr = 0; + event.connection.hub_port = 0; + + hcd_event_handler(&event, in_isr); +} + +void hcd_event_device_remove(uint8_t hostid, bool in_isr) +{ + hcd_event_t event = + { + .rhport = hostid, + .event_id = HCD_EVENT_DEVICE_REMOVE + }; + + event.connection.hub_addr = 0; + event.connection.hub_port = 0; + + hcd_event_handler(&event, in_isr); +} + + +// a device unplugged on hostid, hub_addr, hub_port +// return true if found and unmounted device, false if cannot find +void process_device_unplugged(uint8_t rhport, uint8_t hub_addr, uint8_t hub_port) +{ + //------------- find the all devices (star-network) under port that is unplugged -------------// + // TODO mark as disconnected in ISR, also handle dev0 + for ( uint8_t dev_id = 0; dev_id < TU_ARRAY_SIZE(_usbh_devices); dev_id++ ) + { + usbh_device_t* dev = &_usbh_devices[dev_id]; + uint8_t const dev_addr = dev_id+1; + + // TODO Hub multiple level + if (dev->rhport == rhport && + (hub_addr == 0 || dev->hub_addr == hub_addr) && // hub_addr == 0 & hub_port == 0 means roothub + (hub_port == 0 || dev->hub_port == hub_port) && + dev->state != TUSB_DEVICE_STATE_UNPLUG) + { + // Invoke callback before close driver + if (tuh_umount_cb) tuh_umount_cb(dev_addr); + + // Close class driver + for (uint8_t drv_id = 0; drv_id < USBH_CLASS_DRIVER_COUNT; drv_id++) + { + TU_LOG2("%s close\r\n", usbh_class_drivers[drv_id].name); + usbh_class_drivers[drv_id].close(dev_addr); + } + + memset(dev->itf2drv, DRVID_INVALID, sizeof(dev->itf2drv)); // invalid mapping + memset(dev->ep2drv , DRVID_INVALID, sizeof(dev->ep2drv )); // invalid mapping + + hcd_device_close(rhport, dev_addr); + + dev->state = TUSB_DEVICE_STATE_UNPLUG; + } + } +} + +//--------------------------------------------------------------------+ +// INTERNAL HELPER +//--------------------------------------------------------------------+ +static uint8_t get_new_address(bool is_hub) +{ + uint8_t const start = (is_hub ? CFG_TUH_DEVICE_MAX : 0) + 1; + uint8_t const count = (is_hub ? CFG_TUH_HUB : CFG_TUH_DEVICE_MAX); + + for (uint8_t i=0; i < count; i++) + { + uint8_t const addr = start + i; + if (get_device(addr)->state == TUSB_DEVICE_STATE_UNPLUG) return addr; + } + return ADDR_INVALID; +} + +void usbh_driver_set_config_complete(uint8_t dev_addr, uint8_t itf_num) +{ + usbh_device_t* dev = get_device(dev_addr); + + for(itf_num++; itf_num < sizeof(dev->itf2drv); itf_num++) + { + // continue with next valid interface + // TODO skip IAD binding interface such as CDCs + uint8_t const drv_id = dev->itf2drv[itf_num]; + if (drv_id != DRVID_INVALID) + { + usbh_class_driver_t const * driver = &usbh_class_drivers[drv_id]; + TU_LOG2("%s set config: itf = %u\r\n", driver->name, itf_num); + driver->set_config(dev_addr, itf_num); + break; + } + } + + // all interface are configured + if (itf_num == sizeof(dev->itf2drv)) + { + // Invoke callback if available + if (tuh_mount_cb) tuh_mount_cb(dev_addr); + } +} + +//--------------------------------------------------------------------+ +// Enumeration Process +// is a lengthy process with a seires of control transfer to configure +// newly attached device. Each step is handled by a function in this +// section +// TODO due to the shared _usbh_ctrl_buf, we must complete enumerating +// one device before enumerating another one. +//--------------------------------------------------------------------+ + +static bool enum_request_addr0_device_desc(void); +static bool enum_request_set_addr(void); + +static bool enum_get_addr0_device_desc_complete (uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result); +static bool enum_set_address_complete (uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result); +static bool enum_get_device_desc_complete (uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result); +static bool enum_get_9byte_config_desc_complete (uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result); +static bool enum_get_config_desc_complete (uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result); +static bool enum_set_config_complete (uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result); +static bool parse_configuration_descriptor (uint8_t dev_addr, tusb_desc_configuration_t const* desc_cfg); + +#if CFG_TUH_HUB +static bool enum_hub_clear_reset0_complete(uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result) +{ + (void) dev_addr; (void) request; + TU_ASSERT(XFER_RESULT_SUCCESS == result); + enum_request_addr0_device_desc(); + return true; +} + +static bool enum_hub_clear_reset1_complete(uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result) +{ + (void) dev_addr; (void) request; + TU_ASSERT(XFER_RESULT_SUCCESS == result); + + enum_request_set_addr(); + + // done with hub, waiting for next data on status pipe + (void) hub_status_pipe_queue( _dev0.hub_addr ); + + return true; +} + +static bool enum_hub_get_status1_complete(uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result) +{ + (void) dev_addr; (void) request; + TU_ASSERT(XFER_RESULT_SUCCESS == result); + + hub_port_status_response_t port_status; + memcpy(&port_status, _usbh_ctrl_buf, sizeof(hub_port_status_response_t)); + + // Acknowledge Port Reset Change if Reset Successful + if (port_status.change.reset) + { + TU_ASSERT( hub_port_clear_feature(_dev0.hub_addr, _dev0.hub_port, HUB_FEATURE_PORT_RESET_CHANGE, enum_hub_clear_reset1_complete) ); + } + + return true; +} + +static bool enum_hub_get_status0_complete(uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result) +{ + (void) dev_addr; (void) request; + TU_ASSERT(XFER_RESULT_SUCCESS == result); + + hub_port_status_response_t port_status; + memcpy(&port_status, _usbh_ctrl_buf, sizeof(hub_port_status_response_t)); + + if ( !port_status.status.connection ) + { + // device unplugged while delaying, nothing else to do, queue hub status + return hub_status_pipe_queue(dev_addr); + } + + _dev0.speed = (port_status.status.high_speed) ? TUSB_SPEED_HIGH : + (port_status.status.low_speed ) ? TUSB_SPEED_LOW : TUSB_SPEED_FULL; + + // Acknowledge Port Reset Change + if (port_status.change.reset) + { + hub_port_clear_feature(_dev0.hub_addr, _dev0.hub_port, HUB_FEATURE_PORT_RESET_CHANGE, enum_hub_clear_reset0_complete); + } + + return true; +} +#endif + +static bool enum_new_device(hcd_event_t* event) +{ + _dev0.rhport = event->rhport; // TODO refractor integrate to device_pool + _dev0.hub_addr = event->connection.hub_addr; + _dev0.hub_port = event->connection.hub_port; + + //------------- connected/disconnected directly with roothub -------------// + if (_dev0.hub_addr == 0) + { + // wait until device is stable TODO non blocking + osal_task_delay(RESET_DELAY); + + // device unplugged while delaying + if ( !hcd_port_connect_status(_dev0.rhport) ) return true; + + _dev0.speed = hcd_port_speed_get(_dev0.rhport ); + + enum_request_addr0_device_desc(); + } +#if CFG_TUH_HUB + //------------- connected/disconnected via hub -------------// + else + { + // wait until device is stable + osal_task_delay(RESET_DELAY); + TU_ASSERT( hub_port_get_status(_dev0.hub_addr, _dev0.hub_port, _usbh_ctrl_buf, enum_hub_get_status0_complete) ); + } +#endif // CFG_TUH_HUB + + return true; +} + +static bool enum_request_addr0_device_desc(void) +{ + // TODO probably doesn't need to open/close each enumeration + uint8_t const addr0 = 0; + TU_ASSERT( usbh_edpt_control_open(addr0, 8) ); + + //------------- Get first 8 bytes of device descriptor to get Control Endpoint Size -------------// + TU_LOG2("Get 8 byte of Device Descriptor\r\n"); + tusb_control_request_t const request = + { + .bmRequestType_bit = + { + .recipient = TUSB_REQ_RCPT_DEVICE, + .type = TUSB_REQ_TYPE_STANDARD, + .direction = TUSB_DIR_IN + }, + .bRequest = TUSB_REQ_GET_DESCRIPTOR, + .wValue = TUSB_DESC_DEVICE << 8, + .wIndex = 0, + .wLength = 8 + }; + TU_ASSERT( tuh_control_xfer(addr0, &request, _usbh_ctrl_buf, enum_get_addr0_device_desc_complete) ); + + return true; +} + +// After Get Device Descriptor of Address 0 +static bool enum_get_addr0_device_desc_complete(uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result) +{ + (void) request; + TU_ASSERT(0 == dev_addr); + + if (XFER_RESULT_SUCCESS != result) + { +#if CFG_TUH_HUB + // TODO remove, waiting for next data on status pipe + if (_dev0.hub_addr != 0) hub_status_pipe_queue(_dev0.hub_addr); +#endif + + return false; + } + + tusb_desc_device_t const * desc_device = (tusb_desc_device_t const*) _usbh_ctrl_buf; + TU_ASSERT( tu_desc_type(desc_device) == TUSB_DESC_DEVICE ); + + // Reset device again before Set Address + TU_LOG2("Port reset \r\n"); + + if (_dev0.hub_addr == 0) + { + // connected directly to roothub + hcd_port_reset( _dev0.rhport ); // reset port after 8 byte descriptor + osal_task_delay(RESET_DELAY); + + enum_request_set_addr(); + } +#if CFG_TUH_HUB + else + { + // after RESET_DELAY the hub_port_reset() already complete + TU_ASSERT( hub_port_reset(_dev0.hub_addr, _dev0.hub_port, NULL) ); + osal_task_delay(RESET_DELAY); + + tuh_task(); // FIXME temporarily to clean up port_reset control transfer + + TU_ASSERT( hub_port_get_status(_dev0.hub_addr, _dev0.hub_port, _usbh_ctrl_buf, enum_hub_get_status1_complete) ); + } +#endif + + return true; +} + +static bool enum_request_set_addr(void) +{ + uint8_t const addr0 = 0; + tusb_desc_device_t const * desc_device = (tusb_desc_device_t const*) _usbh_ctrl_buf; + + // Get new address + uint8_t const new_addr = get_new_address(desc_device->bDeviceClass == TUSB_CLASS_HUB); + TU_ASSERT(new_addr != ADDR_INVALID); + + TU_LOG2("Set Address = %d\r\n", new_addr); + + usbh_device_t* new_dev = get_device(new_addr); + + new_dev->rhport = _dev0.rhport; + new_dev->hub_addr = _dev0.hub_addr; + new_dev->hub_port = _dev0.hub_port; + new_dev->speed = _dev0.speed; + new_dev->connected = 1; + new_dev->ep0_size = desc_device->bMaxPacketSize0; + + tusb_control_request_t const new_request = + { + .bmRequestType_bit = + { + .recipient = TUSB_REQ_RCPT_DEVICE, + .type = TUSB_REQ_TYPE_STANDARD, + .direction = TUSB_DIR_OUT + }, + .bRequest = TUSB_REQ_SET_ADDRESS, + .wValue = new_addr, + .wIndex = 0, + .wLength = 0 + }; + + TU_ASSERT( tuh_control_xfer(addr0, &new_request, NULL, enum_set_address_complete) ); + + return true; +} + +// After SET_ADDRESS is complete +static bool enum_set_address_complete(uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result) +{ + TU_ASSERT(0 == dev_addr); + TU_ASSERT(XFER_RESULT_SUCCESS == result); + + uint8_t const new_addr = (uint8_t const) request->wValue; + + usbh_device_t* new_dev = get_device(new_addr); + new_dev->addressed = 1; + + // TODO close device 0, may not be needed + hcd_device_close(_dev0.rhport, 0); + + // open control pipe for new address + TU_ASSERT( usbh_edpt_control_open(new_addr, new_dev->ep0_size) ); + + // Get full device descriptor + TU_LOG2("Get Device Descriptor\r\n"); + tusb_control_request_t const new_request = + { + .bmRequestType_bit = + { + .recipient = TUSB_REQ_RCPT_DEVICE, + .type = TUSB_REQ_TYPE_STANDARD, + .direction = TUSB_DIR_IN + }, + .bRequest = TUSB_REQ_GET_DESCRIPTOR, + .wValue = TUSB_DESC_DEVICE << 8, + .wIndex = 0, + .wLength = sizeof(tusb_desc_device_t) + }; + + TU_ASSERT(tuh_control_xfer(new_addr, &new_request, _usbh_ctrl_buf, enum_get_device_desc_complete)); + + return true; +} + +static bool enum_get_device_desc_complete(uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result) +{ + (void) request; + TU_ASSERT(XFER_RESULT_SUCCESS == result); + + tusb_desc_device_t const * desc_device = (tusb_desc_device_t const*) _usbh_ctrl_buf; + usbh_device_t* dev = get_device(dev_addr); + + dev->vid = desc_device->idVendor; + dev->pid = desc_device->idProduct; + dev->i_manufacturer = desc_device->iManufacturer; + dev->i_product = desc_device->iProduct; + dev->i_serial = desc_device->iSerialNumber; + +// if (tuh_attach_cb) tuh_attach_cb((tusb_desc_device_t*) _usbh_ctrl_buf); + + TU_LOG2("Get 9 bytes of Configuration Descriptor\r\n"); + tusb_control_request_t const new_request = + { + .bmRequestType_bit = + { + .recipient = TUSB_REQ_RCPT_DEVICE, + .type = TUSB_REQ_TYPE_STANDARD, + .direction = TUSB_DIR_IN + }, + .bRequest = TUSB_REQ_GET_DESCRIPTOR, + .wValue = (TUSB_DESC_CONFIGURATION << 8) | (CONFIG_NUM - 1), + .wIndex = 0, + .wLength = 9 + }; + + TU_ASSERT( tuh_control_xfer(dev_addr, &new_request, _usbh_ctrl_buf, enum_get_9byte_config_desc_complete) ); + + return true; +} + +static bool enum_get_9byte_config_desc_complete(uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result) +{ + (void) request; + TU_ASSERT(XFER_RESULT_SUCCESS == result); + + // TODO not enough buffer to hold configuration descriptor + tusb_desc_configuration_t const * desc_config = (tusb_desc_configuration_t const*) _usbh_ctrl_buf; + uint16_t total_len; + + // Use offsetof to avoid pointer to the odd/misaligned address + memcpy(&total_len, (uint8_t*) desc_config + offsetof(tusb_desc_configuration_t, wTotalLength), 2); + + TU_ASSERT(total_len <= CFG_TUH_ENUMERATION_BUFSIZE); + + // Get full configuration descriptor + TU_LOG2("Get Configuration Descriptor\r\n"); + tusb_control_request_t const new_request = + { + .bmRequestType_bit = + { + .recipient = TUSB_REQ_RCPT_DEVICE, + .type = TUSB_REQ_TYPE_STANDARD, + .direction = TUSB_DIR_IN + }, + .bRequest = TUSB_REQ_GET_DESCRIPTOR, + .wValue = (TUSB_DESC_CONFIGURATION << 8) | (CONFIG_NUM - 1), + .wIndex = 0, + .wLength = total_len + + }; + + TU_ASSERT( tuh_control_xfer(dev_addr, &new_request, _usbh_ctrl_buf, enum_get_config_desc_complete) ); + + return true; +} + +static bool enum_get_config_desc_complete(uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result) +{ + (void) request; + TU_ASSERT(XFER_RESULT_SUCCESS == result); + + // Parse configuration & set up drivers + // Driver open aren't allowed to make any usb transfer yet + TU_ASSERT( parse_configuration_descriptor(dev_addr, (tusb_desc_configuration_t*) _usbh_ctrl_buf) ); + + TU_LOG2("Set Configuration = %d\r\n", CONFIG_NUM); + tusb_control_request_t const new_request = + { + .bmRequestType_bit = + { + .recipient = TUSB_REQ_RCPT_DEVICE, + .type = TUSB_REQ_TYPE_STANDARD, + .direction = TUSB_DIR_OUT + }, + .bRequest = TUSB_REQ_SET_CONFIGURATION, + .wValue = CONFIG_NUM, + .wIndex = 0, + .wLength = 0 + }; + + TU_ASSERT( tuh_control_xfer(dev_addr, &new_request, NULL, enum_set_config_complete) ); + + return true; +} + +static bool enum_set_config_complete(uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result) +{ + (void) request; + TU_ASSERT(XFER_RESULT_SUCCESS == result); + + TU_LOG2("Device configured\r\n"); + usbh_device_t* dev = get_device(dev_addr); + dev->configured = 1; + dev->state = TUSB_DEVICE_STATE_CONFIGURED; + + // Start the Set Configuration process for interfaces (itf = DRVID_INVALID) + // Since driver can perform control transfer within its set_config, this is done asynchronously. + // The process continue with next interface when class driver complete its sequence with usbh_driver_set_config_complete() + // TODO use separated API instead of using DRVID_INVALID + usbh_driver_set_config_complete(dev_addr, DRVID_INVALID); + + return true; +} + +static bool parse_configuration_descriptor(uint8_t dev_addr, tusb_desc_configuration_t const* desc_cfg) +{ + usbh_device_t* dev = get_device(dev_addr); + + uint8_t const* desc_end = ((uint8_t const*) desc_cfg) + tu_le16toh(desc_cfg->wTotalLength); + uint8_t const* p_desc = tu_desc_next(desc_cfg); + + // parse each interfaces + while( p_desc < desc_end ) + { + uint8_t assoc_itf_count = 1; + + // Class will always starts with Interface Association (if any) and then Interface descriptor + if ( TUSB_DESC_INTERFACE_ASSOCIATION == tu_desc_type(p_desc) ) + { + tusb_desc_interface_assoc_t const * desc_iad = (tusb_desc_interface_assoc_t const *) p_desc; + assoc_itf_count = desc_iad->bInterfaceCount; + + p_desc = tu_desc_next(p_desc); // next to Interface + + // IAD's first interface number and class should match with opened interface + //TU_ASSERT(desc_iad->bFirstInterface == desc_itf->bInterfaceNumber && + // desc_iad->bFunctionClass == desc_itf->bInterfaceClass); + } + + TU_ASSERT( TUSB_DESC_INTERFACE == tu_desc_type(p_desc) ); + tusb_desc_interface_t const* desc_itf = (tusb_desc_interface_t const*) p_desc; + +#if CFG_TUH_MIDI + // MIDI has 2 interfaces (Audio Control v1 + MIDIStreaming) but does not have IAD + // manually increase the associated count + if (1 == assoc_itf_count && + TUSB_CLASS_AUDIO == desc_itf->bInterfaceClass && + AUDIO_SUBCLASS_CONTROL == desc_itf->bInterfaceSubClass && + AUDIO_FUNC_PROTOCOL_CODE_UNDEF == desc_itf->bInterfaceProtocol) + { + assoc_itf_count = 2; + } +#endif + + uint16_t const drv_len = tu_desc_get_interface_total_len(desc_itf, assoc_itf_count, desc_end-p_desc); + TU_ASSERT(drv_len >= sizeof(tusb_desc_interface_t)); + + if (desc_itf->bInterfaceClass == TUSB_CLASS_HUB && dev->hub_addr != 0) + { + // TODO Attach hub to Hub is not currently supported + // skip this interface + TU_LOG(USBH_DBG_LVL, "Only 1 level of HUB is supported\r\n"); + } + else + { + // Find driver for this interface + uint8_t drv_id; + for (drv_id = 0; drv_id < USBH_CLASS_DRIVER_COUNT; drv_id++) + { + usbh_class_driver_t const * driver = &usbh_class_drivers[drv_id]; + + if ( driver->open(dev->rhport, dev_addr, desc_itf, drv_len) ) + { + // open successfully + TU_LOG2(" %s opened\r\n", driver->name); + + // bind (associated) interfaces to found driver + for(uint8_t i=0; i<assoc_itf_count; i++) + { + uint8_t const itf_num = desc_itf->bInterfaceNumber+i; + + // Interface number must not be used already + TU_ASSERT( DRVID_INVALID == dev->itf2drv[itf_num] ); + dev->itf2drv[itf_num] = drv_id; + } + + // bind all endpoints to found driver + tu_edpt_bind_driver(dev->ep2drv, desc_itf, drv_len, drv_id); + + break; // exit driver find loop + } + } + + if( drv_id >= USBH_CLASS_DRIVER_COUNT ) + { + TU_LOG(USBH_DBG_LVL, "Interface %u: class = %u subclass = %u protocol = %u is not supported\r\n", + desc_itf->bInterfaceNumber, desc_itf->bInterfaceClass, desc_itf->bInterfaceSubClass, desc_itf->bInterfaceProtocol); + } + } + + // next Interface or IAD descriptor + p_desc += drv_len; + } + + return true; +} + +//--------------------------------------------------------------------+ +// Endpoint API +//--------------------------------------------------------------------+ + +// TODO has some duplication code with device, refactor later +bool usbh_edpt_claim(uint8_t dev_addr, uint8_t ep_addr) +{ + uint8_t const epnum = tu_edpt_number(ep_addr); + uint8_t const dir = tu_edpt_dir(ep_addr); + + usbh_device_t* dev = get_device(dev_addr); + +#if CFG_TUSB_OS != OPT_OS_NONE + // pre-check to help reducing mutex lock + TU_VERIFY((dev->ep_status[epnum][dir].busy == 0) && (dev->ep_status[epnum][dir].claimed == 0)); + osal_mutex_lock(dev->mutex, OSAL_TIMEOUT_WAIT_FOREVER); +#endif + + // can only claim the endpoint if it is not busy and not claimed yet. + bool const ret = (dev->ep_status[epnum][dir].busy == 0) && (dev->ep_status[epnum][dir].claimed == 0); + if (ret) + { + dev->ep_status[epnum][dir].claimed = 1; + } + +#if CFG_TUSB_OS != OPT_OS_NONE + osal_mutex_unlock(dev->mutex); +#endif + + return ret; +} + +// TODO has some duplication code with device, refactor later +bool usbh_edpt_release(uint8_t dev_addr, uint8_t ep_addr) +{ + uint8_t const epnum = tu_edpt_number(ep_addr); + uint8_t const dir = tu_edpt_dir(ep_addr); + + usbh_device_t* dev = get_device(dev_addr); + +#if CFG_TUSB_OS != OPT_OS_NONE + osal_mutex_lock(dev->mutex, OSAL_TIMEOUT_WAIT_FOREVER); +#endif + + // can only release the endpoint if it is claimed and not busy + bool const ret = (dev->ep_status[epnum][dir].busy == 0) && (dev->ep_status[epnum][dir].claimed == 1); + if (ret) + { + dev->ep_status[epnum][dir].claimed = 0; + } + +#if CFG_TUSB_OS != OPT_OS_NONE + osal_mutex_unlock(dev->mutex); +#endif + + return ret; +} + +// TODO has some duplication code with device, refactor later +bool usbh_edpt_xfer(uint8_t dev_addr, uint8_t ep_addr, uint8_t * buffer, uint16_t total_bytes) +{ + uint8_t const epnum = tu_edpt_number(ep_addr); + uint8_t const dir = tu_edpt_dir(ep_addr); + + usbh_device_t* dev = get_device(dev_addr); + + TU_LOG2(" Queue EP %02X with %u bytes ... ", ep_addr, total_bytes); + + // Attempt to transfer on a busy endpoint, sound like an race condition ! + TU_ASSERT(dev->ep_status[epnum][dir].busy == 0); + + // Set busy first since the actual transfer can be complete before hcd_edpt_xfer() + // could return and USBH task can preempt and clear the busy + dev->ep_status[epnum][dir].busy = true; + + if ( hcd_edpt_xfer(dev->rhport, dev_addr, ep_addr, buffer, total_bytes) ) + { + TU_LOG2("OK\r\n"); + return true; + }else + { + // HCD error, mark endpoint as ready to allow next transfer + dev->ep_status[epnum][dir].busy = false; + dev->ep_status[epnum][dir].claimed = 0; + TU_LOG2("failed\r\n"); + TU_BREAKPOINT(); + return false; + } +} + +static bool usbh_edpt_control_open(uint8_t dev_addr, uint8_t max_packet_size) +{ + TU_LOG2("Open EP0 with Size = %u (addr = %u)\r\n", max_packet_size, dev_addr); + + tusb_desc_endpoint_t ep0_desc = + { + .bLength = sizeof(tusb_desc_endpoint_t), + .bDescriptorType = TUSB_DESC_ENDPOINT, + .bEndpointAddress = 0, + .bmAttributes = { .xfer = TUSB_XFER_CONTROL }, + .wMaxPacketSize = { .size = max_packet_size }, + .bInterval = 0 + }; + + return hcd_edpt_open(usbh_get_rhport(dev_addr), dev_addr, &ep0_desc); +} + +bool usbh_edpt_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_endpoint_t const * desc_ep) +{ + usbh_device_t* dev = get_device(dev_addr); + TU_ASSERT(tu_edpt_validate(desc_ep, (tusb_speed_t) dev->speed)); + + return hcd_edpt_open(rhport, dev_addr, desc_ep); +} + +bool usbh_edpt_busy(uint8_t dev_addr, uint8_t ep_addr) +{ + uint8_t const epnum = tu_edpt_number(ep_addr); + uint8_t const dir = tu_edpt_dir(ep_addr); + + usbh_device_t* dev = get_device(dev_addr); + + return dev->ep_status[epnum][dir].busy; +} + + + +#endif diff --git a/arkanoid/pico/tinyusb/host/usbh.h b/arkanoid/pico/tinyusb/host/usbh.h new file mode 100644 index 0000000..fc8cf13 --- /dev/null +++ b/arkanoid/pico/tinyusb/host/usbh.h @@ -0,0 +1,99 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef _TUSB_USBH_H_ +#define _TUSB_USBH_H_ + +#ifdef __cplusplus + extern "C" { +#endif + +#include "../tusb_common.h" +#include "hcd.h" + +//--------------------------------------------------------------------+ +// MACRO CONSTANT TYPEDEF +//--------------------------------------------------------------------+ + +typedef bool (*tuh_control_complete_cb_t)(uint8_t dev_addr, tusb_control_request_t const * request, xfer_result_t result); + +//--------------------------------------------------------------------+ +// APPLICATION API +//--------------------------------------------------------------------+ + +// Init host stack +bool tuh_init(uint8_t rhport); + +// Check if host stack is already initialized +bool tuh_inited(void); + +// Task function should be called in main/rtos loop +void tuh_task(void); + +// Interrupt handler, name alias to HCD +extern void hcd_int_handler(uint8_t rhport); +#define tuh_int_handler hcd_int_handler + +bool tuh_vid_pid_get(uint8_t dev_addr, uint16_t* vid, uint16_t* pid); +tusb_speed_t tuh_speed_get(uint8_t dev_addr); + +// Check if device is connected and configured +bool tuh_mounted(uint8_t dev_addr); + +// Check if device is suspended +static inline bool tuh_suspended(uint8_t dev_addr) +{ + // TODO implement suspend & resume on host + (void) dev_addr; + return false; +} + +// Check if device is ready to communicate with +TU_ATTR_ALWAYS_INLINE +static inline bool tuh_ready(uint8_t dev_addr) +{ + return tuh_mounted(dev_addr) && !tuh_suspended(dev_addr); +} + +// Carry out control transfer +bool tuh_control_xfer (uint8_t dev_addr, tusb_control_request_t const* request, void* buffer, tuh_control_complete_cb_t complete_cb); + +//--------------------------------------------------------------------+ +// APPLICATION CALLBACK +//--------------------------------------------------------------------+ +//TU_ATTR_WEAK uint8_t tuh_attach_cb (tusb_desc_device_t const *desc_device); + +// Invoked when device is mounted (configured) +TU_ATTR_WEAK void tuh_mount_cb (uint8_t dev_addr); + +/// Invoked when device is unmounted (bus reset/unplugged) +TU_ATTR_WEAK void tuh_umount_cb(uint8_t dev_addr); + +#ifdef __cplusplus + } +#endif + +#endif diff --git a/arkanoid/pico/tinyusb/host/usbh_classdriver.h b/arkanoid/pico/tinyusb/host/usbh_classdriver.h new file mode 100644 index 0000000..542c585 --- /dev/null +++ b/arkanoid/pico/tinyusb/host/usbh_classdriver.h @@ -0,0 +1,83 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2021, Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef _TUSB_USBH_CLASSDRIVER_H_ +#define _TUSB_USBH_CLASSDRIVER_H_ + +#include "../osal.h" +#include "../tusb_fifo.h" + +#ifdef __cplusplus + extern "C" { +#endif + +//--------------------------------------------------------------------+ +// Class Driver API +//--------------------------------------------------------------------+ + +typedef struct { + #if CFG_TUSB_DEBUG >= 2 + char const* name; + #endif + + void (* const init )(void); + bool (* const open )(uint8_t rhport, uint8_t dev_addr, tusb_desc_interface_t const * itf_desc, uint16_t max_len); + bool (* const set_config )(uint8_t dev_addr, uint8_t itf_num); + bool (* const xfer_cb )(uint8_t dev_addr, uint8_t ep_addr, xfer_result_t result, uint32_t xferred_bytes); + void (* const close )(uint8_t dev_addr); +} usbh_class_driver_t; + +// Call by class driver to tell USBH that it has complete the enumeration +void usbh_driver_set_config_complete(uint8_t dev_addr, uint8_t itf_num); + +uint8_t usbh_get_rhport(uint8_t dev_addr); + +uint8_t* usbh_get_enum_buf(void); + +//--------------------------------------------------------------------+ +// USBH Endpoint API +//--------------------------------------------------------------------+ + +// Open an endpoint +bool usbh_edpt_open(uint8_t rhport, uint8_t dev_addr, tusb_desc_endpoint_t const * desc_ep); + +// Submit a usb transfer +bool usbh_edpt_xfer(uint8_t dev_addr, uint8_t ep_addr, uint8_t * buffer, uint16_t total_bytes); + +// Claim an endpoint before submitting a transfer. +// If caller does not make any transfer, it must release endpoint for others. +bool usbh_edpt_claim(uint8_t dev_addr, uint8_t ep_addr); + +bool usbh_edpt_release(uint8_t dev_addr, uint8_t ep_addr); + +// Check if endpoint transferring is complete +bool usbh_edpt_busy(uint8_t dev_addr, uint8_t ep_addr); + +#ifdef __cplusplus + } +#endif + +#endif diff --git a/arkanoid/pico/tinyusb/host/usbh_control.c b/arkanoid/pico/tinyusb/host/usbh_control.c new file mode 100644 index 0000000..5d85b80 --- /dev/null +++ b/arkanoid/pico/tinyusb/host/usbh_control.c @@ -0,0 +1,138 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2020, Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#include "../tusb_option.h" + +#if TUSB_OPT_HOST_ENABLED + +#include "../tusb.h" +#include "usbh_classdriver.h" + +enum +{ + STAGE_SETUP, + STAGE_DATA, + STAGE_ACK +}; + +typedef struct +{ + tusb_control_request_t request TU_ATTR_ALIGNED(4); + + uint8_t stage; + uint8_t* buffer; + tuh_control_complete_cb_t complete_cb; +} usbh_control_xfer_t; + +static usbh_control_xfer_t _ctrl_xfer; + +//CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN +//static uint8_t _tuh_ctrl_buf[CFG_TUH_ENUMERATION_BUFSIZE]; + +//--------------------------------------------------------------------+ +// MACRO TYPEDEF CONSTANT ENUM DECLARATION +//--------------------------------------------------------------------+ + +bool tuh_control_xfer (uint8_t dev_addr, tusb_control_request_t const* request, void* buffer, tuh_control_complete_cb_t complete_cb) +{ + // TODO need to claim the endpoint first + const uint8_t rhport = usbh_get_rhport(dev_addr); + + _ctrl_xfer.request = (*request); + _ctrl_xfer.buffer = buffer; + _ctrl_xfer.stage = STAGE_SETUP; + _ctrl_xfer.complete_cb = complete_cb; + + TU_LOG2("Control Setup (addr = %u): ", dev_addr); + TU_LOG2_VAR(request); + TU_LOG2("\r\n"); + + // Send setup packet + TU_ASSERT( hcd_setup_send(rhport, dev_addr, (uint8_t const*) &_ctrl_xfer.request) ); + + return true; +} + +static void _xfer_complete(uint8_t dev_addr, xfer_result_t result) +{ + TU_LOG2("\r\n"); + if (_ctrl_xfer.complete_cb) _ctrl_xfer.complete_cb(dev_addr, &_ctrl_xfer.request, result); +} + +bool usbh_control_xfer_cb (uint8_t dev_addr, uint8_t ep_addr, xfer_result_t result, uint32_t xferred_bytes) +{ + (void) ep_addr; + (void) xferred_bytes; + + const uint8_t rhport = usbh_get_rhport(dev_addr); + + tusb_control_request_t const * request = &_ctrl_xfer.request; + + if (XFER_RESULT_SUCCESS != result) + { + TU_LOG2("Control failed: result = %d\r\n", result); + + // terminate transfer if any stage failed + _xfer_complete(dev_addr, result); + }else + { + switch(_ctrl_xfer.stage) + { + case STAGE_SETUP: + _ctrl_xfer.stage = STAGE_DATA; + if (request->wLength) + { + // DATA stage: initial data toggle is always 1 + hcd_edpt_xfer(rhport, dev_addr, tu_edpt_addr(0, request->bmRequestType_bit.direction), _ctrl_xfer.buffer, request->wLength); + return true; + } + __attribute__((fallthrough)); + + case STAGE_DATA: + _ctrl_xfer.stage = STAGE_ACK; + + if (request->wLength) + { + TU_LOG2("Control data (addr = %u):\r\n", dev_addr); + TU_LOG2_MEM(_ctrl_xfer.buffer, request->wLength, 2); + } + + // ACK stage: toggle is always 1 + hcd_edpt_xfer(rhport, dev_addr, tu_edpt_addr(0, 1-request->bmRequestType_bit.direction), NULL, 0); + break; + + case STAGE_ACK: + _xfer_complete(dev_addr, result); + break; + + default: return false; + } + } + + return true; +} + +#endif diff --git a/arkanoid/pico/tinyusb/osal.h b/arkanoid/pico/tinyusb/osal.h new file mode 100644 index 0000000..c2c4688 --- /dev/null +++ b/arkanoid/pico/tinyusb/osal.h @@ -0,0 +1,111 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef _TUSB_OSAL_H_ +#define _TUSB_OSAL_H_ + +#ifdef __cplusplus + extern "C" { +#endif + +/** \addtogroup group_osal + * @{ */ + +#include "tusb_common.h" + +// Return immediately +#define OSAL_TIMEOUT_NOTIMEOUT (0) +// Default timeout +#define OSAL_TIMEOUT_NORMAL (10) +// Wait forever +#define OSAL_TIMEOUT_WAIT_FOREVER (UINT32_MAX) + +#define OSAL_TIMEOUT_CONTROL_XFER OSAL_TIMEOUT_WAIT_FOREVER + +typedef void (*osal_task_func_t)( void * ); + +#if CFG_TUSB_OS == OPT_OS_NONE + #include "osal_none.h" +#elif CFG_TUSB_OS == OPT_OS_FREERTOS + #include "osal_freertos.h" +#elif CFG_TUSB_OS == OPT_OS_MYNEWT + #include "osal_mynewt.h" +#elif CFG_TUSB_OS == OPT_OS_PICO + #include "osal_pico.h" +#elif CFG_TUSB_OS == OPT_OS_RTTHREAD + #include "osal_rtthread.h" +#elif CFG_TUSB_OS == OPT_OS_CUSTOM + #include "tusb_os_custom.h" // implemented by application +#else + #error OS is not supported yet +#endif + +//--------------------------------------------------------------------+ +// OSAL Porting API +//--------------------------------------------------------------------+ + +#if __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wredundant-decls" +#endif +//------------- Semaphore -------------// +static inline osal_semaphore_t osal_semaphore_create(osal_semaphore_def_t* semdef); +static inline bool osal_semaphore_post(osal_semaphore_t sem_hdl, bool in_isr); +static inline bool osal_semaphore_wait(osal_semaphore_t sem_hdl, uint32_t msec); + +static inline void osal_semaphore_reset(osal_semaphore_t sem_hdl); // TODO removed + +//------------- Mutex -------------// +static inline osal_mutex_t osal_mutex_create(osal_mutex_def_t* mdef); +static inline bool osal_mutex_lock (osal_mutex_t sem_hdl, uint32_t msec); +static inline bool osal_mutex_unlock(osal_mutex_t mutex_hdl); + +//------------- Queue -------------// +static inline osal_queue_t osal_queue_create(osal_queue_def_t* qdef); +static inline bool osal_queue_receive(osal_queue_t qhdl, void* data); +static inline bool osal_queue_send(osal_queue_t qhdl, void const * data, bool in_isr); +static inline bool osal_queue_empty(osal_queue_t qhdl); +#if __GNUC__ +#pragma GCC diagnostic pop +#endif + +#if 0 // TODO remove subtask related macros later +// Sub Task +#define OSAL_SUBTASK_BEGIN +#define OSAL_SUBTASK_END return TUSB_ERROR_NONE; + +#define STASK_RETURN(_error) return _error; +#define STASK_INVOKE(_subtask, _status) (_status) = _subtask +#define STASK_ASSERT(_cond) TU_VERIFY(_cond, TUSB_ERROR_OSAL_TASK_FAILED) +#endif + +#ifdef __cplusplus + } +#endif + +/** @} */ + +#endif /* _TUSB_OSAL_H_ */ diff --git a/arkanoid/pico/tinyusb/osal_freertos.h b/arkanoid/pico/tinyusb/osal_freertos.h new file mode 100644 index 0000000..e2b9f19 --- /dev/null +++ b/arkanoid/pico/tinyusb/osal_freertos.h @@ -0,0 +1,172 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef _TUSB_OSAL_FREERTOS_H_ +#define _TUSB_OSAL_FREERTOS_H_ + +// FreeRTOS Headers +#include TU_INCLUDE_PATH(CFG_TUSB_OS_INC_PATH,FreeRTOS.h) +#include TU_INCLUDE_PATH(CFG_TUSB_OS_INC_PATH,semphr.h) +#include TU_INCLUDE_PATH(CFG_TUSB_OS_INC_PATH,queue.h) +#include TU_INCLUDE_PATH(CFG_TUSB_OS_INC_PATH,task.h) + +#ifdef __cplusplus +extern "C" { +#endif + +//--------------------------------------------------------------------+ +// TASK API +//--------------------------------------------------------------------+ +static inline void osal_task_delay(uint32_t msec) +{ + vTaskDelay( pdMS_TO_TICKS(msec) ); +} + +//--------------------------------------------------------------------+ +// Semaphore API +//--------------------------------------------------------------------+ +typedef StaticSemaphore_t osal_semaphore_def_t; +typedef SemaphoreHandle_t osal_semaphore_t; + +static inline osal_semaphore_t osal_semaphore_create(osal_semaphore_def_t* semdef) +{ + return xSemaphoreCreateBinaryStatic(semdef); +} + +static inline bool osal_semaphore_post(osal_semaphore_t sem_hdl, bool in_isr) +{ + if ( !in_isr ) + { + return xSemaphoreGive(sem_hdl) != 0; + } + else + { + BaseType_t xHigherPriorityTaskWoken; + BaseType_t res = xSemaphoreGiveFromISR(sem_hdl, &xHigherPriorityTaskWoken); + +#if CFG_TUSB_MCU == OPT_MCU_ESP32S2 || CFG_TUSB_MCU == OPT_MCU_ESP32S3 + if ( xHigherPriorityTaskWoken ) portYIELD_FROM_ISR(); +#else + portYIELD_FROM_ISR(xHigherPriorityTaskWoken); +#endif + + return res != 0; + } +} + +static inline bool osal_semaphore_wait (osal_semaphore_t sem_hdl, uint32_t msec) +{ + uint32_t const ticks = (msec == OSAL_TIMEOUT_WAIT_FOREVER) ? portMAX_DELAY : pdMS_TO_TICKS(msec); + return xSemaphoreTake(sem_hdl, ticks); +} + +static inline void osal_semaphore_reset(osal_semaphore_t const sem_hdl) +{ + xQueueReset(sem_hdl); +} + +//--------------------------------------------------------------------+ +// MUTEX API (priority inheritance) +//--------------------------------------------------------------------+ +typedef StaticSemaphore_t osal_mutex_def_t; +typedef SemaphoreHandle_t osal_mutex_t; + +static inline osal_mutex_t osal_mutex_create(osal_mutex_def_t* mdef) +{ + return xSemaphoreCreateMutexStatic(mdef); +} + +static inline bool osal_mutex_lock (osal_mutex_t mutex_hdl, uint32_t msec) +{ + return osal_semaphore_wait(mutex_hdl, msec); +} + +static inline bool osal_mutex_unlock(osal_mutex_t mutex_hdl) +{ + return xSemaphoreGive(mutex_hdl); +} + +//--------------------------------------------------------------------+ +// QUEUE API +//--------------------------------------------------------------------+ + +// role host is used by OS NONE for mutex (disable usb isr) only +#define OSAL_QUEUE_DEF(_role, _name, _depth, _type) \ + static _type _name##_##buf[_depth];\ + osal_queue_def_t _name = { .depth = _depth, .item_sz = sizeof(_type), .buf = _name##_##buf }; + +typedef struct +{ + uint16_t depth; + uint16_t item_sz; + void* buf; + + StaticQueue_t sq; +}osal_queue_def_t; + +typedef QueueHandle_t osal_queue_t; + +static inline osal_queue_t osal_queue_create(osal_queue_def_t* qdef) +{ + return xQueueCreateStatic(qdef->depth, qdef->item_sz, (uint8_t*) qdef->buf, &qdef->sq); +} + +static inline bool osal_queue_receive(osal_queue_t qhdl, void* data) +{ + return xQueueReceive(qhdl, data, portMAX_DELAY); +} + +static inline bool osal_queue_send(osal_queue_t qhdl, void const * data, bool in_isr) +{ + if ( !in_isr ) + { + return xQueueSendToBack(qhdl, data, OSAL_TIMEOUT_WAIT_FOREVER) != 0; + } + else + { + BaseType_t xHigherPriorityTaskWoken; + BaseType_t res = xQueueSendToBackFromISR(qhdl, data, &xHigherPriorityTaskWoken); + +#if CFG_TUSB_MCU == OPT_MCU_ESP32S2 || CFG_TUSB_MCU == OPT_MCU_ESP32S3 + if ( xHigherPriorityTaskWoken ) portYIELD_FROM_ISR(); +#else + portYIELD_FROM_ISR(xHigherPriorityTaskWoken); +#endif + + return res != 0; + } +} + +static inline bool osal_queue_empty(osal_queue_t qhdl) +{ + return uxQueueMessagesWaiting(qhdl) == 0; +} + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_OSAL_FREERTOS_H_ */ diff --git a/arkanoid/pico/tinyusb/osal_mynewt.h b/arkanoid/pico/tinyusb/osal_mynewt.h new file mode 100644 index 0000000..34dfc7e --- /dev/null +++ b/arkanoid/pico/tinyusb/osal_mynewt.h @@ -0,0 +1,174 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef OSAL_MYNEWT_H_ +#define OSAL_MYNEWT_H_ + +#include "os/os.h" + +#ifdef __cplusplus + extern "C" { +#endif + +//--------------------------------------------------------------------+ +// TASK API +//--------------------------------------------------------------------+ +static inline void osal_task_delay(uint32_t msec) +{ + os_time_delay( os_time_ms_to_ticks32(msec) ); +} + +//--------------------------------------------------------------------+ +// Semaphore API +//--------------------------------------------------------------------+ +typedef struct os_sem osal_semaphore_def_t; +typedef struct os_sem* osal_semaphore_t; + +static inline osal_semaphore_t osal_semaphore_create(osal_semaphore_def_t* semdef) +{ + return (os_sem_init(semdef, 0) == OS_OK) ? (osal_semaphore_t) semdef : NULL; +} + +static inline bool osal_semaphore_post(osal_semaphore_t sem_hdl, bool in_isr) +{ + (void) in_isr; + return os_sem_release(sem_hdl) == OS_OK; +} + +static inline bool osal_semaphore_wait(osal_semaphore_t sem_hdl, uint32_t msec) +{ + uint32_t const ticks = (msec == OSAL_TIMEOUT_WAIT_FOREVER) ? OS_TIMEOUT_NEVER : os_time_ms_to_ticks32(msec); + return os_sem_pend(sem_hdl, ticks) == OS_OK; +} + +static inline void osal_semaphore_reset(osal_semaphore_t sem_hdl) +{ + // TODO implement later +} + +//--------------------------------------------------------------------+ +// MUTEX API (priority inheritance) +//--------------------------------------------------------------------+ +typedef struct os_mutex osal_mutex_def_t; +typedef struct os_mutex* osal_mutex_t; + +static inline osal_mutex_t osal_mutex_create(osal_mutex_def_t* mdef) +{ + return (os_mutex_init(mdef) == OS_OK) ? (osal_mutex_t) mdef : NULL; +} + +static inline bool osal_mutex_lock(osal_mutex_t mutex_hdl, uint32_t msec) +{ + uint32_t const ticks = (msec == OSAL_TIMEOUT_WAIT_FOREVER) ? OS_TIMEOUT_NEVER : os_time_ms_to_ticks32(msec); + return os_mutex_pend(mutex_hdl, ticks) == OS_OK; +} + +static inline bool osal_mutex_unlock(osal_mutex_t mutex_hdl) +{ + return os_mutex_release(mutex_hdl) == OS_OK; +} + +//--------------------------------------------------------------------+ +// QUEUE API +//--------------------------------------------------------------------+ + +// role host is used by OS NONE for mutex (disable usb isr) only +#define OSAL_QUEUE_DEF(_role, _name, _depth, _type) \ + static _type _name##_##buf[_depth];\ + static struct os_event _name##_##evbuf[_depth];\ + osal_queue_def_t _name = { .depth = _depth, .item_sz = sizeof(_type), .buf = _name##_##buf, .evbuf = _name##_##evbuf};\ + +typedef struct +{ + uint16_t depth; + uint16_t item_sz; + void* buf; + void* evbuf; + + struct os_mempool mpool; + struct os_mempool epool; + + struct os_eventq evq; +}osal_queue_def_t; + +typedef osal_queue_def_t* osal_queue_t; + +static inline osal_queue_t osal_queue_create(osal_queue_def_t* qdef) +{ + if ( OS_OK != os_mempool_init(&qdef->mpool, qdef->depth, qdef->item_sz, qdef->buf, "usbd queue") ) return NULL; + if ( OS_OK != os_mempool_init(&qdef->epool, qdef->depth, sizeof(struct os_event), qdef->evbuf, "usbd evqueue") ) return NULL; + + os_eventq_init(&qdef->evq); + return (osal_queue_t) qdef; +} + +static inline bool osal_queue_receive(osal_queue_t qhdl, void* data) +{ + struct os_event* ev; + ev = os_eventq_get(&qhdl->evq); + + memcpy(data, ev->ev_arg, qhdl->item_sz); // copy message + os_memblock_put(&qhdl->mpool, ev->ev_arg); // put back mem block + os_memblock_put(&qhdl->epool, ev); // put back ev block + + return true; +} + +static inline bool osal_queue_send(osal_queue_t qhdl, void const * data, bool in_isr) +{ + (void) in_isr; + + // get a block from mem pool for data + void* ptr = os_memblock_get(&qhdl->mpool); + if (!ptr) return false; + memcpy(ptr, data, qhdl->item_sz); + + // get a block from event pool to put into queue + struct os_event* ev = (struct os_event*) os_memblock_get(&qhdl->epool); + if (!ev) + { + os_memblock_put(&qhdl->mpool, ptr); + return false; + } + tu_memclr(ev, sizeof(struct os_event)); + ev->ev_arg = ptr; + + os_eventq_put(&qhdl->evq, ev); + + return true; +} + +static inline bool osal_queue_empty(osal_queue_t qhdl) +{ + return STAILQ_EMPTY(&qhdl->evq.evq_list); +} + + +#ifdef __cplusplus + } +#endif + +#endif /* OSAL_MYNEWT_H_ */ diff --git a/arkanoid/pico/tinyusb/osal_none.h b/arkanoid/pico/tinyusb/osal_none.h new file mode 100644 index 0000000..50c8299 --- /dev/null +++ b/arkanoid/pico/tinyusb/osal_none.h @@ -0,0 +1,204 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef _TUSB_OSAL_NONE_H_ +#define _TUSB_OSAL_NONE_H_ + +#ifdef __cplusplus + extern "C" { +#endif + +//--------------------------------------------------------------------+ +// TASK API +//--------------------------------------------------------------------+ + + +//--------------------------------------------------------------------+ +// Binary Semaphore API +//--------------------------------------------------------------------+ +typedef struct +{ + volatile uint16_t count; +}osal_semaphore_def_t; + +typedef osal_semaphore_def_t* osal_semaphore_t; + +static inline osal_semaphore_t osal_semaphore_create(osal_semaphore_def_t* semdef) +{ + semdef->count = 0; + return semdef; +} + +static inline bool osal_semaphore_post(osal_semaphore_t sem_hdl, bool in_isr) +{ + (void) in_isr; + sem_hdl->count++; + return true; +} + +// TODO blocking for now +static inline bool osal_semaphore_wait (osal_semaphore_t sem_hdl, uint32_t msec) +{ + (void) msec; + + while (sem_hdl->count == 0) { } + sem_hdl->count--; + + return true; +} + +static inline void osal_semaphore_reset(osal_semaphore_t sem_hdl) +{ + sem_hdl->count = 0; +} + +//--------------------------------------------------------------------+ +// MUTEX API +// Within tinyusb, mutex is never used in ISR context +//--------------------------------------------------------------------+ +typedef osal_semaphore_def_t osal_mutex_def_t; +typedef osal_semaphore_t osal_mutex_t; + +static inline osal_mutex_t osal_mutex_create(osal_mutex_def_t* mdef) +{ + mdef->count = 1; + return mdef; +} + +static inline bool osal_mutex_lock (osal_mutex_t mutex_hdl, uint32_t msec) +{ + return osal_semaphore_wait(mutex_hdl, msec); +} + +static inline bool osal_mutex_unlock(osal_mutex_t mutex_hdl) +{ + return osal_semaphore_post(mutex_hdl, false); +} + +//--------------------------------------------------------------------+ +// QUEUE API +//--------------------------------------------------------------------+ +#include "tusb_fifo.h" + +// extern to avoid including dcd.h and hcd.h +#if TUSB_OPT_DEVICE_ENABLED +extern void dcd_int_disable(uint8_t rhport); +extern void dcd_int_enable(uint8_t rhport); +#endif + +#if TUSB_OPT_HOST_ENABLED +extern void hcd_int_disable(uint8_t rhport); +extern void hcd_int_enable(uint8_t rhport); +#endif + +typedef struct +{ + uint8_t role; // device or host + tu_fifo_t ff; +}osal_queue_def_t; + +typedef osal_queue_def_t* osal_queue_t; + +// role host is used by OS NONE for mutex (disable usb isr) only +#define OSAL_QUEUE_DEF(_role, _name, _depth, _type) \ + uint8_t _name##_buf[_depth*sizeof(_type)]; \ + osal_queue_def_t _name = { \ + .role = _role, \ + .ff = TU_FIFO_INIT(_name##_buf, _depth, _type, false) \ + } + +// lock queue by disable USB interrupt +static inline void _osal_q_lock(osal_queue_t qhdl) +{ + (void) qhdl; + +#if TUSB_OPT_DEVICE_ENABLED + if (qhdl->role == OPT_MODE_DEVICE) dcd_int_disable(TUD_OPT_RHPORT); +#endif + +#if TUSB_OPT_HOST_ENABLED + if (qhdl->role == OPT_MODE_HOST) hcd_int_disable(TUH_OPT_RHPORT); +#endif +} + +// unlock queue +static inline void _osal_q_unlock(osal_queue_t qhdl) +{ + (void) qhdl; + +#if TUSB_OPT_DEVICE_ENABLED + if (qhdl->role == OPT_MODE_DEVICE) dcd_int_enable(TUD_OPT_RHPORT); +#endif + +#if TUSB_OPT_HOST_ENABLED + if (qhdl->role == OPT_MODE_HOST) hcd_int_enable(TUH_OPT_RHPORT); +#endif +} + +static inline osal_queue_t osal_queue_create(osal_queue_def_t* qdef) +{ + tu_fifo_clear(&qdef->ff); + return (osal_queue_t) qdef; +} + +static inline bool osal_queue_receive(osal_queue_t qhdl, void* data) +{ + _osal_q_lock(qhdl); + bool success = tu_fifo_read(&qhdl->ff, data); + _osal_q_unlock(qhdl); + + return success; +} + +static inline bool osal_queue_send(osal_queue_t qhdl, void const * data, bool in_isr) +{ + if (!in_isr) { + _osal_q_lock(qhdl); + } + + bool success = tu_fifo_write(&qhdl->ff, data); + + if (!in_isr) { + _osal_q_unlock(qhdl); + } + + TU_ASSERT(success); + + return success; +} + +static inline bool osal_queue_empty(osal_queue_t qhdl) +{ + // Skip queue lock/unlock since this function is primarily called + // with interrupt disabled before going into low power mode + return tu_fifo_empty(&qhdl->ff); +} + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_OSAL_NONE_H_ */ diff --git a/arkanoid/pico/tinyusb/osal_pico.h b/arkanoid/pico/tinyusb/osal_pico.h new file mode 100644 index 0000000..7008479 --- /dev/null +++ b/arkanoid/pico/tinyusb/osal_pico.h @@ -0,0 +1,187 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef _TUSB_OSAL_PICO_H_ +#define _TUSB_OSAL_PICO_H_ + +#include "../time.h" +#include "../sem.h" +#include "../mutex.h" +#include "../critical_section.h" + +#ifdef __cplusplus + extern "C" { +#endif + +//--------------------------------------------------------------------+ +// TASK API +//--------------------------------------------------------------------+ +static inline void osal_task_delay(uint32_t msec) +{ + sleep_ms(msec); +} + +//--------------------------------------------------------------------+ +// Binary Semaphore API +//--------------------------------------------------------------------+ +typedef struct semaphore osal_semaphore_def_t, *osal_semaphore_t; + +static inline osal_semaphore_t osal_semaphore_create(osal_semaphore_def_t* semdef) +{ + sem_init(semdef, 0, 255); + return semdef; +} + +static inline bool osal_semaphore_post(osal_semaphore_t sem_hdl, bool in_isr) +{ + (void) in_isr; + sem_release(sem_hdl); + return true; +} + +static inline bool osal_semaphore_wait (osal_semaphore_t sem_hdl, uint32_t msec) +{ + return sem_acquire_timeout_ms(sem_hdl, msec); +} + +static inline void osal_semaphore_reset(osal_semaphore_t sem_hdl) +{ + sem_reset(sem_hdl, 0); +} + +//--------------------------------------------------------------------+ +// MUTEX API +// Within tinyusb, mutex is never used in ISR context +//--------------------------------------------------------------------+ +typedef struct mutex osal_mutex_def_t, *osal_mutex_t; + +static inline osal_mutex_t osal_mutex_create(osal_mutex_def_t* mdef) +{ + mutex_init(mdef); + return mdef; +} + +static inline bool osal_mutex_lock (osal_mutex_t mutex_hdl, uint32_t msec) +{ + return mutex_enter_timeout_ms(mutex_hdl, msec); +} + +static inline bool osal_mutex_unlock(osal_mutex_t mutex_hdl) +{ + mutex_exit(mutex_hdl); + return true; +} + +//--------------------------------------------------------------------+ +// QUEUE API +//--------------------------------------------------------------------+ +#include "tusb_fifo.h" + +#if TUSB_OPT_HOST_ENABLED +extern void hcd_int_disable(uint8_t rhport); +extern void hcd_int_enable(uint8_t rhport); +#endif + +typedef struct +{ + tu_fifo_t ff; + struct critical_section critsec; // osal_queue may be used in IRQs, so need critical section +} osal_queue_def_t; + +typedef osal_queue_def_t* osal_queue_t; + +// role host is used by OS NONE for mutex (disable usb isr) only +#define OSAL_QUEUE_DEF(_role, _name, _depth, _type) \ + uint8_t _name##_buf[_depth*sizeof(_type)]; \ + osal_queue_def_t _name = { \ + .ff = TU_FIFO_INIT(_name##_buf, _depth, _type, false) \ + } + +// lock queue by disable USB interrupt +static inline void _osal_q_lock(osal_queue_t qhdl) +{ + critical_section_enter_blocking(&qhdl->critsec); +} + +// unlock queue +static inline void _osal_q_unlock(osal_queue_t qhdl) +{ + critical_section_exit(&qhdl->critsec); +} + +static inline osal_queue_t osal_queue_create(osal_queue_def_t* qdef) +{ + critical_section_init(&qdef->critsec); + tu_fifo_clear(&qdef->ff); + return (osal_queue_t) qdef; +} + +static inline bool osal_queue_receive(osal_queue_t qhdl, void* data) +{ + // TODO: revisit... docs say that mutexes are never used from IRQ context, + // however osal_queue_recieve may be. therefore my assumption is that + // the fifo mutex is not populated for queues used from an IRQ context + //assert(!qhdl->ff.mutex); + + _osal_q_lock(qhdl); + bool success = tu_fifo_read(&qhdl->ff, data); + _osal_q_unlock(qhdl); + + return success; +} + +static inline bool osal_queue_send(osal_queue_t qhdl, void const * data, bool in_isr) +{ + // TODO: revisit... docs say that mutexes are never used from IRQ context, + // however osal_queue_recieve may be. therefore my assumption is that + // the fifo mutex is not populated for queues used from an IRQ context + //assert(!qhdl->ff.mutex); + (void) in_isr; + + _osal_q_lock(qhdl); + bool success = tu_fifo_write(&qhdl->ff, data); + _osal_q_unlock(qhdl); + + TU_ASSERT(success); + + return success; +} + +static inline bool osal_queue_empty(osal_queue_t qhdl) +{ + // TODO: revisit; whether this is true or not currently, tu_fifo_empty is a single + // volatile read. + + // Skip queue lock/unlock since this function is primarily called + // with interrupt disabled before going into low power mode + return tu_fifo_empty(&qhdl->ff); +} + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_OSAL_PICO_H_ */ diff --git a/arkanoid/pico/tinyusb/osal_rtthread.h b/arkanoid/pico/tinyusb/osal_rtthread.h new file mode 100644 index 0000000..da2ab69 --- /dev/null +++ b/arkanoid/pico/tinyusb/osal_rtthread.h @@ -0,0 +1,130 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2020 tfx2001 (2479727366@qq.com) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef _TUSB_OSAL_RTTHREAD_H_ +#define _TUSB_OSAL_RTTHREAD_H_ + +// RT-Thread Headers +#include "rtthread.h" + +#ifdef __cplusplus +extern "C" { +#endif + +//--------------------------------------------------------------------+ +// TASK API +//--------------------------------------------------------------------+ +static inline void osal_task_delay(uint32_t msec) { + rt_thread_mdelay(msec); +} + +//--------------------------------------------------------------------+ +// Semaphore API +//--------------------------------------------------------------------+ +typedef struct rt_semaphore osal_semaphore_def_t; +typedef rt_sem_t osal_semaphore_t; + +static inline osal_semaphore_t +osal_semaphore_create(osal_semaphore_def_t *semdef) { + rt_sem_init(semdef, "tusb", 0, RT_IPC_FLAG_FIFO); + return semdef; +} + +static inline bool osal_semaphore_post(osal_semaphore_t sem_hdl, bool in_isr) { + (void) in_isr; + return rt_sem_release(sem_hdl) == RT_EOK; +} + +static inline bool osal_semaphore_wait(osal_semaphore_t sem_hdl, uint32_t msec) { + return rt_sem_take(sem_hdl, rt_tick_from_millisecond(msec)) == RT_EOK; +} + +static inline void osal_semaphore_reset(osal_semaphore_t const sem_hdl) { + // TODO: implement +} + +//--------------------------------------------------------------------+ +// MUTEX API (priority inheritance) +//--------------------------------------------------------------------+ +typedef struct rt_mutex osal_mutex_def_t; +typedef rt_mutex_t osal_mutex_t; + +static inline osal_mutex_t osal_mutex_create(osal_mutex_def_t *mdef) { + rt_mutex_init(mdef, "tusb", RT_IPC_FLAG_FIFO); + return mdef; +} + +static inline bool osal_mutex_lock(osal_mutex_t mutex_hdl, uint32_t msec) { + return rt_mutex_take(mutex_hdl, rt_tick_from_millisecond(msec)) == RT_EOK; +} + +static inline bool osal_mutex_unlock(osal_mutex_t mutex_hdl) { + return rt_mutex_release(mutex_hdl) == RT_EOK; +} + +//--------------------------------------------------------------------+ +// QUEUE API +//--------------------------------------------------------------------+ + +// role host is used by OS NONE for mutex (disable usb isr) only +#define OSAL_QUEUE_DEF(_role, _name, _depth, _type) \ + static _type _name##_##buf[_depth]; \ + osal_queue_def_t _name = { .depth = _depth, .item_sz = sizeof(_type), .buf = _name##_##buf }; + +typedef struct { + uint16_t depth; + uint16_t item_sz; + void *buf; + + struct rt_messagequeue sq; +} osal_queue_def_t; + +typedef rt_mq_t osal_queue_t; + +static inline osal_queue_t osal_queue_create(osal_queue_def_t *qdef) { + rt_mq_init(&(qdef->sq), "tusb", qdef->buf, qdef->item_sz, + qdef->item_sz * qdef->depth, RT_IPC_FLAG_FIFO); + return &(qdef->sq); +} + +static inline bool osal_queue_receive(osal_queue_t qhdl, void *data) { + return rt_mq_recv(qhdl, data, qhdl->msg_size, RT_WAITING_FOREVER) == RT_EOK; +} + +static inline bool osal_queue_send(osal_queue_t qhdl, void const *data, bool in_isr) { + (void) in_isr; + return rt_mq_send(qhdl, (void *)data, qhdl->msg_size) == RT_EOK; +} + +static inline bool osal_queue_empty(osal_queue_t qhdl) { + return (qhdl->entry) == 0; +} + +#ifdef __cplusplus +} +#endif + +#endif /* _TUSB_OSAL_RTTHREAD_H_ */ diff --git a/arkanoid/pico/tinyusb/rp2040_usb.c b/arkanoid/pico/tinyusb/rp2040_usb.c new file mode 100644 index 0000000..c9e2f6b --- /dev/null +++ b/arkanoid/pico/tinyusb/rp2040_usb.c @@ -0,0 +1,323 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * Copyright (c) 2021 Ha Thach (tinyusb.org) for Double Buffered + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#include "tusb_option.h" + +#if CFG_TUSB_MCU == OPT_MCU_RP2040 + +#include <stdlib.h> +#include "rp2040_usb.h" + +// Direction strings for debug +const char *ep_dir_string[] = { + "out", + "in", +}; + +static inline void _hw_endpoint_lock_update(__unused struct hw_endpoint * ep, __unused int delta) { + // todo add critsec as necessary to prevent issues between worker and IRQ... + // note that this is perhaps as simple as disabling IRQs because it would make + // sense to have worker and IRQ on same core, however I think using critsec is about equivalent. +} + +static void _hw_endpoint_xfer_sync(struct hw_endpoint *ep); +static void _hw_endpoint_start_next_buffer(struct hw_endpoint *ep); + +//--------------------------------------------------------------------+ +// +//--------------------------------------------------------------------+ + +void rp2040_usb_init(void) +{ + // Reset usb controller + reset_block(RESETS_RESET_USBCTRL_BITS); + unreset_block_wait(RESETS_RESET_USBCTRL_BITS); + + // Clear any previous state just in case + memset(usb_hw, 0, sizeof(*usb_hw)); + memset(usb_dpram, 0, sizeof(*usb_dpram)); + + // Mux the controller to the onboard usb phy + usb_hw->muxing = USB_USB_MUXING_TO_PHY_BITS | USB_USB_MUXING_SOFTCON_BITS; +} + +void hw_endpoint_reset_transfer(struct hw_endpoint *ep) +{ + ep->active = false; + ep->remaining_len = 0; + ep->xferred_len = 0; + ep->user_buf = 0; +} + +void _hw_endpoint_buffer_control_update32(struct hw_endpoint *ep, uint32_t and_mask, uint32_t or_mask) { + uint32_t value = 0; + if (and_mask) { + value = *ep->buffer_control & and_mask; + } + if (or_mask) { + value |= or_mask; + if (or_mask & USB_BUF_CTRL_AVAIL) { + if (*ep->buffer_control & USB_BUF_CTRL_AVAIL) { + panic("ep %d %s was already available", tu_edpt_number(ep->ep_addr), ep_dir_string[tu_edpt_dir(ep->ep_addr)]); + } + *ep->buffer_control = value & ~USB_BUF_CTRL_AVAIL; + // 12 cycle delay.. (should be good for 48*12Mhz = 576Mhz) + // Don't need delay in host mode as host is in charge +#if !TUSB_OPT_HOST_ENABLED + __asm volatile ( + "b 1f\n" + "1: b 1f\n" + "1: b 1f\n" + "1: b 1f\n" + "1: b 1f\n" + "1: b 1f\n" + "1:\n" + : : : "memory"); +#endif + } + } + *ep->buffer_control = value; +} + +// prepare buffer, return buffer control +static uint32_t prepare_ep_buffer(struct hw_endpoint *ep, uint8_t buf_id) +{ + uint16_t const buflen = tu_min16(ep->remaining_len, ep->wMaxPacketSize); + ep->remaining_len = (uint16_t)(ep->remaining_len - buflen); + + uint32_t buf_ctrl = buflen | USB_BUF_CTRL_AVAIL; + + // PID + buf_ctrl |= ep->next_pid ? USB_BUF_CTRL_DATA1_PID : USB_BUF_CTRL_DATA0_PID; + ep->next_pid ^= 1u; + + if ( !ep->rx ) + { + // Copy data from user buffer to hw buffer + memcpy(ep->hw_data_buf + buf_id*64, ep->user_buf, buflen); + ep->user_buf += buflen; + + // Mark as full + buf_ctrl |= USB_BUF_CTRL_FULL; + } + + // Is this the last buffer? Only really matters for host mode. Will trigger + // the trans complete irq but also stop it polling. We only really care about + // trans complete for setup packets being sent + if (ep->remaining_len == 0) + { + buf_ctrl |= USB_BUF_CTRL_LAST; + } + + if (buf_id) buf_ctrl = buf_ctrl << 16; + + return buf_ctrl; +} + +// Prepare buffer control register value +static void _hw_endpoint_start_next_buffer(struct hw_endpoint *ep) +{ + uint32_t ep_ctrl = *ep->endpoint_control; + + // always compute and start with buffer 0 + uint32_t buf_ctrl = prepare_ep_buffer(ep, 0) | USB_BUF_CTRL_SEL; + + // For now: skip double buffered for Device mode, OUT endpoint since + // host could send < 64 bytes and cause short packet on buffer0 + // NOTE this could happen to Host mode IN endpoint + bool const force_single = !(usb_hw->main_ctrl & USB_MAIN_CTRL_HOST_NDEVICE_BITS) && !tu_edpt_dir(ep->ep_addr); + + if(ep->remaining_len && !force_single) + { + // Use buffer 1 (double buffered) if there is still data + // TODO: Isochronous for buffer1 bit-field is different than CBI (control bulk, interrupt) + + buf_ctrl |= prepare_ep_buffer(ep, 1); + + // Set endpoint control double buffered bit if needed + ep_ctrl &= ~EP_CTRL_INTERRUPT_PER_BUFFER; + ep_ctrl |= EP_CTRL_DOUBLE_BUFFERED_BITS | EP_CTRL_INTERRUPT_PER_DOUBLE_BUFFER; + }else + { + // Single buffered since 1 is enough + ep_ctrl &= ~(EP_CTRL_DOUBLE_BUFFERED_BITS | EP_CTRL_INTERRUPT_PER_DOUBLE_BUFFER); + ep_ctrl |= EP_CTRL_INTERRUPT_PER_BUFFER; + } + + *ep->endpoint_control = ep_ctrl; + + TU_LOG(3, " Prepare BufCtrl: [0] = 0x%04u [1] = 0x%04x\r\n", tu_u32_low16(buf_ctrl), tu_u32_high16(buf_ctrl)); + + // Finally, write to buffer_control which will trigger the transfer + // the next time the controller polls this dpram address + _hw_endpoint_buffer_control_set_value32(ep, buf_ctrl); +} + +void hw_endpoint_xfer_start(struct hw_endpoint *ep, uint8_t *buffer, uint16_t total_len) +{ + _hw_endpoint_lock_update(ep, 1); + + if ( ep->active ) + { + // TODO: Is this acceptable for interrupt packets? + TU_LOG(1, "WARN: starting new transfer on already active ep %d %s\n", tu_edpt_number(ep->ep_addr), + ep_dir_string[tu_edpt_dir(ep->ep_addr)]); + + hw_endpoint_reset_transfer(ep); + } + + // Fill in info now that we're kicking off the hw + ep->remaining_len = total_len; + ep->xferred_len = 0; + ep->active = true; + ep->user_buf = buffer; + + _hw_endpoint_start_next_buffer(ep); + _hw_endpoint_lock_update(ep, -1); +} + +// sync endpoint buffer and return transferred bytes +static uint16_t sync_ep_buffer(struct hw_endpoint *ep, uint8_t buf_id) +{ + uint32_t buf_ctrl = _hw_endpoint_buffer_control_get_value32(ep); + if (buf_id) buf_ctrl = buf_ctrl >> 16; + + uint16_t xferred_bytes = buf_ctrl & USB_BUF_CTRL_LEN_MASK; + + if ( !ep->rx ) + { + // We are continuing a transfer here. If we are TX, we have successfully + // sent some data can increase the length we have sent + assert(!(buf_ctrl & USB_BUF_CTRL_FULL)); + + ep->xferred_len = (uint16_t)(ep->xferred_len + xferred_bytes); + }else + { + // If we have received some data, so can increase the length + // we have received AFTER we have copied it to the user buffer at the appropriate offset + assert(buf_ctrl & USB_BUF_CTRL_FULL); + + memcpy(ep->user_buf, ep->hw_data_buf + buf_id*64, xferred_bytes); + ep->xferred_len = (uint16_t)(ep->xferred_len + xferred_bytes); + ep->user_buf += xferred_bytes; + } + + // Short packet + if (xferred_bytes < ep->wMaxPacketSize) + { + pico_trace(" Short packet on buffer %d with %u bytes\n", buf_id, xferred_bytes); + // Reduce total length as this is last packet + ep->remaining_len = 0; + } + + return xferred_bytes; +} + +static void _hw_endpoint_xfer_sync (struct hw_endpoint *ep) +{ + // Update hw endpoint struct with info from hardware + // after a buff status interrupt + + uint32_t __unused buf_ctrl = _hw_endpoint_buffer_control_get_value32(ep); + TU_LOG(3, " Sync BufCtrl: [0] = 0x%04u [1] = 0x%04x\r\n", tu_u32_low16(buf_ctrl), tu_u32_high16(buf_ctrl)); + + // always sync buffer 0 + uint16_t buf0_bytes = sync_ep_buffer(ep, 0); + + // sync buffer 1 if double buffered + if ( (*ep->endpoint_control) & EP_CTRL_DOUBLE_BUFFERED_BITS ) + { + if (buf0_bytes == ep->wMaxPacketSize) + { + // sync buffer 1 if not short packet + sync_ep_buffer(ep, 1); + }else + { + // short packet on buffer 0 + // TODO couldn't figure out how to handle this case which happen with net_lwip_webserver example + // At this time (currently trigger per 2 buffer), the buffer1 is probably filled with data from + // the next transfer (not current one). For now we disable double buffered for device OUT + // NOTE this could happen to Host IN +#if 0 + uint8_t const ep_num = tu_edpt_number(ep->ep_addr); + uint8_t const dir = (uint8_t) tu_edpt_dir(ep->ep_addr); + uint8_t const ep_id = 2*ep_num + (dir ? 0 : 1); + + // abort queued transfer on buffer 1 + usb_hw->abort |= TU_BIT(ep_id); + + while ( !(usb_hw->abort_done & TU_BIT(ep_id)) ) {} + + uint32_t ep_ctrl = *ep->endpoint_control; + ep_ctrl &= ~(EP_CTRL_DOUBLE_BUFFERED_BITS | EP_CTRL_INTERRUPT_PER_DOUBLE_BUFFER); + ep_ctrl |= EP_CTRL_INTERRUPT_PER_BUFFER; + + _hw_endpoint_buffer_control_set_value32(ep, 0); + + usb_hw->abort &= ~TU_BIT(ep_id); + + TU_LOG(3, "----SHORT PACKET buffer0 on EP %02X:\r\n", ep->ep_addr); + TU_LOG(3, " BufCtrl: [0] = 0x%04u [1] = 0x%04x\r\n", tu_u32_low16(buf_ctrl), tu_u32_high16(buf_ctrl)); +#endif + } + } +} + +// Returns true if transfer is complete +bool hw_endpoint_xfer_continue(struct hw_endpoint *ep) +{ + _hw_endpoint_lock_update(ep, 1); + // Part way through a transfer + if (!ep->active) + { + panic("Can't continue xfer on inactive ep %d %s", tu_edpt_number(ep->ep_addr), ep_dir_string); + } + + // Update EP struct from hardware state + _hw_endpoint_xfer_sync(ep); + + // Now we have synced our state with the hardware. Is there more data to transfer? + // If we are done then notify tinyusb + if (ep->remaining_len == 0) + { + pico_trace("Completed transfer of %d bytes on ep %d %s\n", + ep->xferred_len, tu_edpt_number(ep->ep_addr), ep_dir_string[tu_edpt_dir(ep->ep_addr)]); + // Notify caller we are done so it can notify the tinyusb stack + _hw_endpoint_lock_update(ep, -1); + return true; + } + else + { + _hw_endpoint_start_next_buffer(ep); + } + + _hw_endpoint_lock_update(ep, -1); + // More work to do + return false; +} + +#endif diff --git a/arkanoid/pico/tinyusb/rp2040_usb.h b/arkanoid/pico/tinyusb/rp2040_usb.h new file mode 100644 index 0000000..4e7432d --- /dev/null +++ b/arkanoid/pico/tinyusb/rp2040_usb.h @@ -0,0 +1,96 @@ +#ifndef RP2040_COMMON_H_ +#define RP2040_COMMON_H_ + +#if defined(RP2040_USB_HOST_MODE) && defined(RP2040_USB_DEVICE_MODE) +#error TinyUSB device and host mode not supported at the same time +#endif + +#include "tusb_common.h" + +#include "../pico.h" +#include "../hardware/structs/usb.h" +#include "../hardware/irq.h" +#include "../hardware/resets.h" + +#if defined(PICO_RP2040_USB_DEVICE_ENUMERATION_FIX) && !defined(TUD_OPT_RP2040_USB_DEVICE_ENUMERATION_FIX) +#define TUD_OPT_RP2040_USB_DEVICE_ENUMERATION_FIX PICO_RP2040_USB_DEVICE_ENUMERATION_FIX +#endif + + +#define pico_info(...) TU_LOG(2, __VA_ARGS__) +#define pico_trace(...) TU_LOG(3, __VA_ARGS__) + +// Hardware information per endpoint +typedef struct hw_endpoint +{ + // Is this a valid struct + bool configured; + + // Transfer direction (i.e. IN is rx for host but tx for device) + // allows us to common up transfer functions + bool rx; + + uint8_t ep_addr; + uint8_t next_pid; + + // Endpoint control register + io_rw_32 *endpoint_control; + + // Buffer control register + io_rw_32 *buffer_control; + + // Buffer pointer in usb dpram + uint8_t *hw_data_buf; + + // Current transfer information + bool active; + uint16_t remaining_len; + uint16_t xferred_len; + + // User buffer in main memory + uint8_t *user_buf; + + // Data needed from EP descriptor + uint16_t wMaxPacketSize; + + // Interrupt, bulk, etc + uint8_t transfer_type; + +#if TUSB_OPT_HOST_ENABLED + // Only needed for host + uint8_t dev_addr; + + // If interrupt endpoint + uint8_t interrupt_num; +#endif +} hw_endpoint_t; + +void rp2040_usb_init(void); + +void hw_endpoint_xfer_start(struct hw_endpoint *ep, uint8_t *buffer, uint16_t total_len); +bool hw_endpoint_xfer_continue(struct hw_endpoint *ep); +void hw_endpoint_reset_transfer(struct hw_endpoint *ep); + +void _hw_endpoint_buffer_control_update32(struct hw_endpoint *ep, uint32_t and_mask, uint32_t or_mask); +static inline uint32_t _hw_endpoint_buffer_control_get_value32(struct hw_endpoint *ep) { + return *ep->buffer_control; +} +static inline void _hw_endpoint_buffer_control_set_value32(struct hw_endpoint *ep, uint32_t value) { + return _hw_endpoint_buffer_control_update32(ep, 0, value); +} +static inline void _hw_endpoint_buffer_control_set_mask32(struct hw_endpoint *ep, uint32_t value) { + return _hw_endpoint_buffer_control_update32(ep, ~value, value); +} +static inline void _hw_endpoint_buffer_control_clear_mask32(struct hw_endpoint *ep, uint32_t value) { + return _hw_endpoint_buffer_control_update32(ep, ~value, 0); +} + +static inline uintptr_t hw_data_offset(uint8_t *buf) +{ + // Remove usb base from buffer pointer + return (uintptr_t)buf ^ (uintptr_t)usb_dpram; +} + +extern const char *ep_dir_string[]; + +#endif diff --git a/arkanoid/pico/tinyusb/tusb.c b/arkanoid/pico/tinyusb/tusb.c new file mode 100644 index 0000000..55ca83b --- /dev/null +++ b/arkanoid/pico/tinyusb/tusb.c @@ -0,0 +1,246 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#include "tusb_option.h" + +#if TUSB_OPT_HOST_ENABLED || TUSB_OPT_DEVICE_ENABLED + +#include "tusb.h" + +// TODO clean up +#if TUSB_OPT_DEVICE_ENABLED +#include "usbd_pvt.h" +#endif + +bool tusb_init(void) +{ +#if TUSB_OPT_DEVICE_ENABLED + TU_ASSERT ( tud_init(TUD_OPT_RHPORT) ); // init device stack +#endif + +#if TUSB_OPT_HOST_ENABLED + TU_ASSERT( tuh_init(TUH_OPT_RHPORT) ); // init host stack +#endif + + return true; +} + +bool tusb_inited(void) +{ + bool ret = false; + +#if TUSB_OPT_DEVICE_ENABLED + ret = ret || tud_inited(); +#endif + +#if TUSB_OPT_HOST_ENABLED + ret = ret || tuh_inited(); +#endif + + return ret; +} + +//--------------------------------------------------------------------+ +// Internal Helper for both Host and Device stack +//--------------------------------------------------------------------+ + +bool tu_edpt_validate(tusb_desc_endpoint_t const * desc_ep, tusb_speed_t speed) +{ + uint16_t const max_packet_size = tu_le16toh(desc_ep->wMaxPacketSize.size); + TU_LOG2(" Open EP %02X with Size = %u\r\n", desc_ep->bEndpointAddress, max_packet_size); + + switch (desc_ep->bmAttributes.xfer) + { + case TUSB_XFER_ISOCHRONOUS: + { + uint16_t const spec_size = (speed == TUSB_SPEED_HIGH ? 1024 : 1023); + TU_ASSERT(max_packet_size <= spec_size); + } + break; + + case TUSB_XFER_BULK: + if (speed == TUSB_SPEED_HIGH) + { + // Bulk highspeed must be EXACTLY 512 + TU_ASSERT(max_packet_size == 512); + }else + { + // TODO Bulk fullspeed can only be 8, 16, 32, 64 + TU_ASSERT(max_packet_size <= 64); + } + break; + + case TUSB_XFER_INTERRUPT: + { + uint16_t const spec_size = (speed == TUSB_SPEED_HIGH ? 1024 : 64); + TU_ASSERT(max_packet_size <= spec_size); + } + break; + + default: return false; + } + + return true; +} + +void tu_edpt_bind_driver(uint8_t ep2drv[][2], tusb_desc_interface_t const* desc_itf, uint16_t desc_len, uint8_t driver_id) +{ + uint8_t const* p_desc = (uint8_t const*) desc_itf; + uint16_t len = 0; + + while( len < desc_len ) + { + if ( TUSB_DESC_ENDPOINT == tu_desc_type(p_desc) ) + { + uint8_t const ep_addr = ((tusb_desc_endpoint_t const*) p_desc)->bEndpointAddress; + + TU_LOG(2, " Bind EP %02x to driver id %u\r\n", ep_addr, driver_id); + ep2drv[tu_edpt_number(ep_addr)][tu_edpt_dir(ep_addr)] = driver_id; + } + + len += (uint16_t) tu_desc_len(p_desc); + p_desc = tu_desc_next(p_desc); + } +} + +uint16_t tu_desc_get_interface_total_len(tusb_desc_interface_t const* desc_itf, uint8_t itf_count, uint16_t max_len) +{ + uint8_t const* p_desc = (uint8_t const*) desc_itf; + uint16_t len = 0; + + while (itf_count--) + { + // Next on interface desc + len += tu_desc_len(desc_itf); + p_desc = tu_desc_next(p_desc); + + while (len < max_len) + { + // return on IAD regardless of itf count + if ( tu_desc_type(p_desc) == TUSB_DESC_INTERFACE_ASSOCIATION ) return len; + + if ( (tu_desc_type(p_desc) == TUSB_DESC_INTERFACE) && + ((tusb_desc_interface_t const*) p_desc)->bAlternateSetting == 0 ) + { + break; + } + + len += tu_desc_len(p_desc); + p_desc = tu_desc_next(p_desc); + } + } + + return len; +} + +/*------------------------------------------------------------------*/ +/* Debug + *------------------------------------------------------------------*/ +#if CFG_TUSB_DEBUG +#include <ctype.h> + +char const* const tusb_strerr[TUSB_ERROR_COUNT] = { ERROR_TABLE(ERROR_STRING) }; + +static void dump_str_line(uint8_t const* buf, uint16_t count) +{ + tu_printf(" |"); + + // each line is 16 bytes + for(uint16_t i=0; i<count; i++) + { + const char ch = buf[i]; + tu_printf("%c", isprint(ch) ? ch : '.'); + } + + tu_printf("|\r\n"); +} + +/* Print out memory contents + * - buf : buffer + * - count : number of item + * - indent: prefix spaces on every line + */ +void tu_print_mem(void const *buf, uint32_t count, uint8_t indent) +{ + uint8_t const size = 1; // fixed 1 byte for now + + if ( !buf || !count ) + { + tu_printf("NULL\r\n"); + return; + } + + uint8_t const *buf8 = (uint8_t const *) buf; + + char format[] = "%00X"; + format[2] += 2*size; + + const uint8_t item_per_line = 16 / size; + + for(unsigned int i=0; i<count; i++) + { + unsigned int value=0; + + if ( i%item_per_line == 0 ) + { + // Print Ascii + if ( i != 0 ) + { + dump_str_line(buf8-16, 16); + } + + for(uint8_t s=0; s < indent; s++) tu_printf(" "); + + // print offset or absolute address + tu_printf("%04X: ", 16*i/item_per_line); + } + + memcpy(&value, buf8, size); + buf8 += size; + + tu_printf(" "); + tu_printf(format, value); + } + + // fill up last row to 16 for printing ascii + const uint32_t remain = count%16; + uint8_t nback = (remain ? remain : 16); + + if ( remain ) + { + for(uint32_t i=0; i< 16-remain; i++) + { + tu_printf(" "); + for(int j=0; j<2*size; j++) tu_printf(" "); + } + } + + dump_str_line(buf8-nback, nback); +} + +#endif + +#endif // host or device enabled diff --git a/arkanoid/pico/tinyusb/tusb.h b/arkanoid/pico/tinyusb/tusb.h new file mode 100644 index 0000000..3befa14 --- /dev/null +++ b/arkanoid/pico/tinyusb/tusb.h @@ -0,0 +1,140 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef _TUSB_H_ +#define _TUSB_H_ + +#ifdef __cplusplus + extern "C" { +#endif + +//--------------------------------------------------------------------+ +// INCLUDE +//--------------------------------------------------------------------+ +#include "tusb_common.h" +#include "osal.h" +#include "tusb_fifo.h" + +//------------- HOST -------------// +#if TUSB_OPT_HOST_ENABLED + #include "host/usbh.h" + + #if CFG_TUH_HID + #include "hid/hid_host.h" + #endif + + #if CFG_TUH_MSC + #include "msc/msc_host.h" + #endif + + #if CFG_TUH_CDC + #include "cdc/cdc_host.h" + #endif + + #if CFG_TUH_VENDOR + #include "vendor/vendor_host.h" + #endif + +#endif + +//------------- DEVICE -------------// +#if TUSB_OPT_DEVICE_ENABLED + #include "usbd.h" + + #if CFG_TUD_HID + #include "hid/hid_device.h" + #endif + + #if CFG_TUD_CDC + #include "cdc/cdc_device.h" + #endif + + #if CFG_TUD_MSC + #include "msc/msc_device.h" + #endif + + #if CFG_TUD_AUDIO + #include "audio/audio_device.h" + #endif + + #if CFG_TUD_VIDEO + #include "video/video_device.h" + #endif + + #if CFG_TUD_MIDI + #include "midi/midi_device.h" + #endif + + #if CFG_TUD_VENDOR + #include "vendor/vendor_device.h" + #endif + + #if CFG_TUD_USBTMC + #include "usbtmc/usbtmc_device.h" + #endif + + #if CFG_TUD_DFU_RUNTIME + #include "dfu/dfu_rt_device.h" + #endif + + #if CFG_TUD_DFU + #include "dfu/dfu_device.h" + #endif + + #if CFG_TUD_ECM_RNDIS || CFG_TUD_NCM + #include "net/net_device.h" + #endif + + #if CFG_TUD_BTH + #include "bth/bth_device.h" + #endif +#endif + + +//--------------------------------------------------------------------+ +// APPLICATION API +//--------------------------------------------------------------------+ +/** \ingroup group_application_api + * @{ */ + +// Initialize host stack +// Note: when using with RTOS, this should be called after scheduler/kernel is started. +// Otherwise it could cause kernel issue since USB IRQ handler does use RTOS queue API. +bool tusb_init(void); + +// Check if stack is initialized +bool tusb_inited(void); + +// TODO +// bool tusb_teardown(void); + +/** @} */ + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_H_ */ diff --git a/arkanoid/pico/tinyusb/tusb_common.h b/arkanoid/pico/tinyusb/tusb_common.h new file mode 100644 index 0000000..fc4d3bc --- /dev/null +++ b/arkanoid/pico/tinyusb/tusb_common.h @@ -0,0 +1,434 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef _TUSB_COMMON_H_ +#define _TUSB_COMMON_H_ + +#ifdef __cplusplus + extern "C" { +#endif + +//--------------------------------------------------------------------+ +// Macros Helper +//--------------------------------------------------------------------+ +#define TU_ARRAY_SIZE(_arr) ( sizeof(_arr) / sizeof(_arr[0]) ) +#define TU_MIN(_x, _y) ( ( (_x) < (_y) ) ? (_x) : (_y) ) +#define TU_MAX(_x, _y) ( ( (_x) > (_y) ) ? (_x) : (_y) ) + +#define TU_U16_HIGH(_u16) ((uint8_t) (((_u16) >> 8) & 0x00ff)) +#define TU_U16_LOW(_u16) ((uint8_t) ((_u16) & 0x00ff)) +#define U16_TO_U8S_BE(_u16) TU_U16_HIGH(_u16), TU_U16_LOW(_u16) +#define U16_TO_U8S_LE(_u16) TU_U16_LOW(_u16), TU_U16_HIGH(_u16) + +#define TU_U32_BYTE3(_u32) ((uint8_t) ((((uint32_t) _u32) >> 24) & 0x000000ff)) // MSB +#define TU_U32_BYTE2(_u32) ((uint8_t) ((((uint32_t) _u32) >> 16) & 0x000000ff)) +#define TU_U32_BYTE1(_u32) ((uint8_t) ((((uint32_t) _u32) >> 8) & 0x000000ff)) +#define TU_U32_BYTE0(_u32) ((uint8_t) (((uint32_t) _u32) & 0x000000ff)) // LSB + +#define U32_TO_U8S_BE(_u32) TU_U32_BYTE3(_u32), TU_U32_BYTE2(_u32), TU_U32_BYTE1(_u32), TU_U32_BYTE0(_u32) +#define U32_TO_U8S_LE(_u32) TU_U32_BYTE0(_u32), TU_U32_BYTE1(_u32), TU_U32_BYTE2(_u32), TU_U32_BYTE3(_u32) + +#define TU_BIT(n) (1UL << (n)) + +//--------------------------------------------------------------------+ +// Includes +//--------------------------------------------------------------------+ + +// Standard Headers +#include <stdbool.h> +#include <stdint.h> +#include <stddef.h> +#include <string.h> +#include <stdio.h> + +// Tinyusb Common Headers +#include "tusb_option.h" +#include "tusb_compiler.h" +#include "tusb_verify.h" +#include "tusb_types.h" + +#include "tusb_error.h" // TODO remove +#include "tusb_timeout.h" // TODO remove + +//--------------------------------------------------------------------+ +// Internal Helper used by Host and Device Stack +//--------------------------------------------------------------------+ + +// Check if endpoint descriptor is valid per USB specs +bool tu_edpt_validate(tusb_desc_endpoint_t const * desc_ep, tusb_speed_t speed); + +// Bind all endpoint of a interface descriptor to class driver +void tu_edpt_bind_driver(uint8_t ep2drv[][2], tusb_desc_interface_t const* p_desc, uint16_t desc_len, uint8_t driver_id); + +// Calculate total length of n interfaces (depending on IAD) +uint16_t tu_desc_get_interface_total_len(tusb_desc_interface_t const* desc_itf, uint8_t itf_count, uint16_t max_len); + +//--------------------------------------------------------------------+ +// Internal Inline Functions +//--------------------------------------------------------------------+ + +//------------- Mem -------------// +#define tu_memclr(buffer, size) memset((buffer), 0, (size)) +#define tu_varclr(_var) tu_memclr(_var, sizeof(*(_var))) + +//------------- Bytes -------------// +TU_ATTR_ALWAYS_INLINE static inline uint32_t tu_u32(uint8_t b3, uint8_t b2, uint8_t b1, uint8_t b0) +{ + return ( ((uint32_t) b3) << 24) | ( ((uint32_t) b2) << 16) | ( ((uint32_t) b1) << 8) | b0; +} + +TU_ATTR_ALWAYS_INLINE static inline uint16_t tu_u16(uint8_t high, uint8_t low) +{ + return (uint16_t) ((((uint16_t) high) << 8) | low); +} + +TU_ATTR_ALWAYS_INLINE static inline uint8_t tu_u32_byte3(uint32_t ui32) { return TU_U32_BYTE3(ui32); } +TU_ATTR_ALWAYS_INLINE static inline uint8_t tu_u32_byte2(uint32_t ui32) { return TU_U32_BYTE2(ui32); } +TU_ATTR_ALWAYS_INLINE static inline uint8_t tu_u32_byte1(uint32_t ui32) { return TU_U32_BYTE1(ui32); } +TU_ATTR_ALWAYS_INLINE static inline uint8_t tu_u32_byte0(uint32_t ui32) { return TU_U32_BYTE0(ui32); } + +TU_ATTR_ALWAYS_INLINE static inline uint8_t tu_u16_high(uint16_t ui16) { return TU_U16_HIGH(ui16); } +TU_ATTR_ALWAYS_INLINE static inline uint8_t tu_u16_low (uint16_t ui16) { return TU_U16_LOW(ui16); } + +//------------- Bits -------------// +TU_ATTR_ALWAYS_INLINE static inline uint32_t tu_bit_set (uint32_t value, uint8_t pos) { return value | TU_BIT(pos); } +TU_ATTR_ALWAYS_INLINE static inline uint32_t tu_bit_clear(uint32_t value, uint8_t pos) { return value & (~TU_BIT(pos)); } +TU_ATTR_ALWAYS_INLINE static inline bool tu_bit_test (uint32_t value, uint8_t pos) { return (value & TU_BIT(pos)) ? true : false; } + +//------------- Min -------------// +TU_ATTR_ALWAYS_INLINE static inline uint8_t tu_min8 (uint8_t x, uint8_t y ) { return (x < y) ? x : y; } +TU_ATTR_ALWAYS_INLINE static inline uint16_t tu_min16 (uint16_t x, uint16_t y) { return (x < y) ? x : y; } +TU_ATTR_ALWAYS_INLINE static inline uint32_t tu_min32 (uint32_t x, uint32_t y) { return (x < y) ? x : y; } + +//------------- Max -------------// +TU_ATTR_ALWAYS_INLINE static inline uint8_t tu_max8 (uint8_t x, uint8_t y ) { return (x > y) ? x : y; } +TU_ATTR_ALWAYS_INLINE static inline uint16_t tu_max16 (uint16_t x, uint16_t y) { return (x > y) ? x : y; } +TU_ATTR_ALWAYS_INLINE static inline uint32_t tu_max32 (uint32_t x, uint32_t y) { return (x > y) ? x : y; } + +//------------- Align -------------// +TU_ATTR_ALWAYS_INLINE static inline uint32_t tu_align(uint32_t value, uint32_t alignment) +{ + return value & ((uint32_t) ~(alignment-1)); +} + +TU_ATTR_ALWAYS_INLINE static inline uint32_t tu_align16 (uint32_t value) { return (value & 0xFFFFFFF0UL); } +TU_ATTR_ALWAYS_INLINE static inline uint32_t tu_align32 (uint32_t value) { return (value & 0xFFFFFFE0UL); } +TU_ATTR_ALWAYS_INLINE static inline uint32_t tu_align4k (uint32_t value) { return (value & 0xFFFFF000UL); } +TU_ATTR_ALWAYS_INLINE static inline uint32_t tu_offset4k(uint32_t value) { return (value & 0xFFFUL); } + +//------------- Mathematics -------------// +TU_ATTR_ALWAYS_INLINE static inline uint32_t tu_div_ceil(uint32_t v, uint32_t d) { return (v + d -1)/d; } + +/// inclusive range checking TODO remove +TU_ATTR_ALWAYS_INLINE static inline bool tu_within(uint32_t lower, uint32_t value, uint32_t upper) +{ + return (lower <= value) && (value <= upper); +} + +// log2 of a value is its MSB's position +// TODO use clz TODO remove +static inline uint8_t tu_log2(uint32_t value) +{ + uint8_t result = 0; + while (value >>= 1) { result++; } + return result; +} + +//------------- Unaligned Access -------------// +#if TUP_ARCH_STRICT_ALIGN + +// Rely on compiler to generate correct code for unaligned access + +typedef struct { uint16_t val; } TU_ATTR_PACKED tu_unaligned_uint16_t; +typedef struct { uint32_t val; } TU_ATTR_PACKED tu_unaligned_uint32_t; + +TU_ATTR_ALWAYS_INLINE static inline uint32_t tu_unaligned_read32(const void* mem) +{ + tu_unaligned_uint32_t const* ua32 = (tu_unaligned_uint32_t const*) mem; + return ua32->val; +} + +TU_ATTR_ALWAYS_INLINE static inline void tu_unaligned_write32(void* mem, uint32_t value) +{ + tu_unaligned_uint32_t* ua32 = (tu_unaligned_uint32_t*) mem; + ua32->val = value; +} + +TU_ATTR_ALWAYS_INLINE static inline uint16_t tu_unaligned_read16(const void* mem) +{ + tu_unaligned_uint16_t const* ua16 = (tu_unaligned_uint16_t const*) mem; + return ua16->val; +} + +TU_ATTR_ALWAYS_INLINE static inline void tu_unaligned_write16(void* mem, uint16_t value) +{ + tu_unaligned_uint16_t* ua16 = (tu_unaligned_uint16_t*) mem; + ua16->val = value; +} + +#elif TUP_MCU_STRICT_ALIGN + +// MCU such as LPC_IP3511 Highspeed cannot access unaligned memory on USB_RAM although it is ARM M4. +// We have to manually pick up bytes since tu_unaligned_uint32_t will still generate unaligned code +// NOTE: volatile cast to memory to prevent compiler to optimize and generate unaligned code +// TODO Big Endian may need minor changes +TU_ATTR_ALWAYS_INLINE static inline uint32_t tu_unaligned_read32(const void* mem) +{ + volatile uint8_t const* buf8 = (uint8_t const*) mem; + return tu_u32(buf8[3], buf8[2], buf8[1], buf8[0]); +} + +TU_ATTR_ALWAYS_INLINE static inline void tu_unaligned_write32(void* mem, uint32_t value) +{ + volatile uint8_t* buf8 = (uint8_t*) mem; + buf8[0] = tu_u32_byte0(value); + buf8[1] = tu_u32_byte1(value); + buf8[2] = tu_u32_byte2(value); + buf8[3] = tu_u32_byte3(value); +} + +TU_ATTR_ALWAYS_INLINE static inline uint16_t tu_unaligned_read16(const void* mem) +{ + volatile uint8_t const* buf8 = (uint8_t const*) mem; + return tu_u16(buf8[1], buf8[0]); +} + +TU_ATTR_ALWAYS_INLINE static inline void tu_unaligned_write16(void* mem, uint16_t value) +{ + volatile uint8_t* buf8 = (uint8_t*) mem; + buf8[0] = tu_u16_low(value); + buf8[1] = tu_u16_high(value); +} + + +#else + +// MCU that could access unaligned memory natively +TU_ATTR_ALWAYS_INLINE static inline uint32_t tu_unaligned_read32 (const void* mem ) { return *((uint32_t*) mem); } +TU_ATTR_ALWAYS_INLINE static inline uint16_t tu_unaligned_read16 (const void* mem ) { return *((uint16_t*) mem); } + +TU_ATTR_ALWAYS_INLINE static inline void tu_unaligned_write32 (void* mem, uint32_t value ) { *((uint32_t*) mem) = value; } +TU_ATTR_ALWAYS_INLINE static inline void tu_unaligned_write16 (void* mem, uint16_t value ) { *((uint16_t*) mem) = value; } + +#endif + +/*------------------------------------------------------------------*/ +/* Count number of arguments of __VA_ARGS__ + * - reference https://groups.google.com/forum/#!topic/comp.std.c/d-6Mj5Lko_s + * - _GET_NTH_ARG() takes args >= N (64) but only expand to Nth one (64th) + * - _RSEQ_N() is reverse sequential to N to add padding to have + * Nth position is the same as the number of arguments + * - ##__VA_ARGS__ is used to deal with 0 paramerter (swallows comma) + *------------------------------------------------------------------*/ +#ifndef TU_ARGS_NUM + +#define TU_ARGS_NUM(...) _TU_NARG(_0, ##__VA_ARGS__,_RSEQ_N()) + +#define _TU_NARG(...) _GET_NTH_ARG(__VA_ARGS__) +#define _GET_NTH_ARG( \ + _1, _2, _3, _4, _5, _6, _7, _8, _9,_10, \ + _11,_12,_13,_14,_15,_16,_17,_18,_19,_20, \ + _21,_22,_23,_24,_25,_26,_27,_28,_29,_30, \ + _31,_32,_33,_34,_35,_36,_37,_38,_39,_40, \ + _41,_42,_43,_44,_45,_46,_47,_48,_49,_50, \ + _51,_52,_53,_54,_55,_56,_57,_58,_59,_60, \ + _61,_62,_63,N,...) N +#define _RSEQ_N() \ + 62,61,60, \ + 59,58,57,56,55,54,53,52,51,50, \ + 49,48,47,46,45,44,43,42,41,40, \ + 39,38,37,36,35,34,33,32,31,30, \ + 29,28,27,26,25,24,23,22,21,20, \ + 19,18,17,16,15,14,13,12,11,10, \ + 9,8,7,6,5,4,3,2,1,0 +#endif + +// To be removed +//------------- Binary constant -------------// +#if defined(__GNUC__) && !defined(__CC_ARM) + +#define TU_BIN8(x) ((uint8_t) (0b##x)) +#define TU_BIN16(b1, b2) ((uint16_t) (0b##b1##b2)) +#define TU_BIN32(b1, b2, b3, b4) ((uint32_t) (0b##b1##b2##b3##b4)) + +#else + +// internal macro of B8, B16, B32 +#define _B8__(x) (((x&0x0000000FUL)?1:0) \ + +((x&0x000000F0UL)?2:0) \ + +((x&0x00000F00UL)?4:0) \ + +((x&0x0000F000UL)?8:0) \ + +((x&0x000F0000UL)?16:0) \ + +((x&0x00F00000UL)?32:0) \ + +((x&0x0F000000UL)?64:0) \ + +((x&0xF0000000UL)?128:0)) + +#define TU_BIN8(d) ((uint8_t) _B8__(0x##d##UL)) +#define TU_BIN16(dmsb,dlsb) (((uint16_t)TU_BIN8(dmsb)<<8) + TU_BIN8(dlsb)) +#define TU_BIN32(dmsb,db2,db3,dlsb) \ + (((uint32_t)TU_BIN8(dmsb)<<24) \ + + ((uint32_t)TU_BIN8(db2)<<16) \ + + ((uint32_t)TU_BIN8(db3)<<8) \ + + TU_BIN8(dlsb)) +#endif + +//--------------------------------------------------------------------+ +// Debug Function +//--------------------------------------------------------------------+ + +// CFG_TUSB_DEBUG for debugging +// 0 : no debug +// 1 : print error +// 2 : print warning +// 3 : print info +#if CFG_TUSB_DEBUG + +void tu_print_mem(void const *buf, uint32_t count, uint8_t indent); + +#ifdef CFG_TUSB_DEBUG_PRINTF + extern int CFG_TUSB_DEBUG_PRINTF(const char *format, ...); + #define tu_printf CFG_TUSB_DEBUG_PRINTF +#else + #define tu_printf printf +#endif + +static inline +void tu_print_var(uint8_t const* buf, uint32_t bufsize) +{ + for(uint32_t i=0; i<bufsize; i++) tu_printf("%02X ", buf[i]); +} + +// Log with Level +#define TU_LOG(n, ...) TU_XSTRCAT(TU_LOG, n)(__VA_ARGS__) +#define TU_LOG_MEM(n, ...) TU_XSTRCAT3(TU_LOG, n, _MEM)(__VA_ARGS__) +#define TU_LOG_VAR(n, ...) TU_XSTRCAT3(TU_LOG, n, _VAR)(__VA_ARGS__) +#define TU_LOG_INT(n, ...) TU_XSTRCAT3(TU_LOG, n, _INT)(__VA_ARGS__) +#define TU_LOG_HEX(n, ...) TU_XSTRCAT3(TU_LOG, n, _HEX)(__VA_ARGS__) +#define TU_LOG_LOCATION() tu_printf("%s: %d:\r\n", __PRETTY_FUNCTION__, __LINE__) +#define TU_LOG_FAILED() tu_printf("%s: %d: Failed\r\n", __PRETTY_FUNCTION__, __LINE__) + +// Log Level 1: Error +#define TU_LOG1 tu_printf +#define TU_LOG1_MEM tu_print_mem +#define TU_LOG1_VAR(_x) tu_print_var((uint8_t const*)(_x), sizeof(*(_x))) +#define TU_LOG1_INT(_x) tu_printf(#_x " = %ld\r\n", (uint32_t) (_x) ) +#define TU_LOG1_HEX(_x) tu_printf(#_x " = %lX\r\n", (uint32_t) (_x) ) + +// Log Level 2: Warn +#if CFG_TUSB_DEBUG >= 2 + #define TU_LOG2 TU_LOG1 + #define TU_LOG2_MEM TU_LOG1_MEM + #define TU_LOG2_VAR TU_LOG1_VAR + #define TU_LOG2_INT TU_LOG1_INT + #define TU_LOG2_HEX TU_LOG1_HEX +#endif + +// Log Level 3: Info +#if CFG_TUSB_DEBUG >= 3 + #define TU_LOG3 TU_LOG1 + #define TU_LOG3_MEM TU_LOG1_MEM + #define TU_LOG3_VAR TU_LOG1_VAR + #define TU_LOG3_INT TU_LOG1_INT + #define TU_LOG3_HEX TU_LOG1_HEX +#endif + +typedef struct +{ + uint32_t key; + const char* data; +} tu_lookup_entry_t; + +typedef struct +{ + uint16_t count; + tu_lookup_entry_t const* items; +} tu_lookup_table_t; + +static inline const char* tu_lookup_find(tu_lookup_table_t const* p_table, uint32_t key) +{ + static char not_found[11]; + + for(uint16_t i=0; i<p_table->count; i++) + { + if (p_table->items[i].key == key) return p_table->items[i].data; + } + + // not found return the key value in hex + sprintf(not_found, "0x%08lX", (unsigned long) key); + + return not_found; +} + +#endif // CFG_TUSB_DEBUG + +#ifndef TU_LOG +#define TU_LOG(n, ...) +#define TU_LOG_MEM(n, ...) +#define TU_LOG_VAR(n, ...) +#define TU_LOG_INT(n, ...) +#define TU_LOG_HEX(n, ...) +#define TU_LOG_LOCATION() +#define TU_LOG_FAILED() +#endif + +// TODO replace all TU_LOGn with TU_LOG(n) + +#define TU_LOG0(...) +#define TU_LOG0_MEM(...) +#define TU_LOG0_VAR(...) +#define TU_LOG0_INT(...) +#define TU_LOG0_HEX(...) + + +#ifndef TU_LOG1 + #define TU_LOG1(...) + #define TU_LOG1_MEM(...) + #define TU_LOG1_VAR(...) + #define TU_LOG1_INT(...) + #define TU_LOG1_HEX(...) +#endif + +#ifndef TU_LOG2 + #define TU_LOG2(...) + #define TU_LOG2_MEM(...) + #define TU_LOG2_VAR(...) + #define TU_LOG2_INT(...) + #define TU_LOG2_HEX(...) +#endif + +#ifndef TU_LOG3 + #define TU_LOG3(...) + #define TU_LOG3_MEM(...) + #define TU_LOG3_VAR(...) + #define TU_LOG3_INT(...) + #define TU_LOG3_HEX(...) +#endif + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_COMMON_H_ */ diff --git a/arkanoid/pico/tinyusb/tusb_compiler.h b/arkanoid/pico/tinyusb/tusb_compiler.h new file mode 100644 index 0000000..3e85939 --- /dev/null +++ b/arkanoid/pico/tinyusb/tusb_compiler.h @@ -0,0 +1,218 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +/** \ingroup Group_Common + * \defgroup Group_Compiler Compiler + * \brief Group_Compiler brief + * @{ */ + +#ifndef _TUSB_COMPILER_H_ +#define _TUSB_COMPILER_H_ + +#define TU_TOKEN(x) x +#define TU_STRING(x) #x ///< stringify without expand +#define TU_XSTRING(x) TU_STRING(x) ///< expand then stringify + +#define TU_STRCAT(a, b) a##b ///< concat without expand +#define TU_STRCAT3(a, b, c) a##b##c ///< concat without expand + +#define TU_XSTRCAT(a, b) TU_STRCAT(a, b) ///< expand then concat +#define TU_XSTRCAT3(a, b, c) TU_STRCAT3(a, b, c) ///< expand then concat 3 tokens + +#define TU_INCLUDE_PATH(_dir,_file) TU_XSTRING( TU_TOKEN(_dir)TU_TOKEN(_file) ) + +#if defined __COUNTER__ && __COUNTER__ != __COUNTER__ + #define _TU_COUNTER_ __COUNTER__ +#else + #define _TU_COUNTER_ __LINE__ +#endif + +// Compile-time Assert +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L + #define TU_VERIFY_STATIC _Static_assert +#elif defined (__cplusplus) && __cplusplus >= 201103L + #define TU_VERIFY_STATIC static_assert +#elif defined(__CCRX__) + #define TU_VERIFY_STATIC(const_expr, _mess) typedef char TU_XSTRCAT(Line, __LINE__)[(const_expr) ? 1 : 0]; +#else + #define TU_VERIFY_STATIC(const_expr, _mess) enum { TU_XSTRCAT(_verify_static_, _TU_COUNTER_) = 1/(!!(const_expr)) } +#endif + +// for declaration of reserved field, make use of _TU_COUNTER_ +#define TU_RESERVED TU_XSTRCAT(reserved, _TU_COUNTER_) + +#define TU_LITTLE_ENDIAN (0x12u) +#define TU_BIG_ENDIAN (0x21u) + +//--------------------------------------------------------------------+ +// Compiler porting with Attribute and Endian +//--------------------------------------------------------------------+ + +// TODO refactor since __attribute__ is supported across many compiler +#if defined(__GNUC__) + #define TU_ATTR_ALIGNED(Bytes) __attribute__ ((aligned(Bytes))) + #define TU_ATTR_SECTION(sec_name) __attribute__ ((section(#sec_name))) + #define TU_ATTR_PACKED __attribute__ ((packed)) + #define TU_ATTR_WEAK __attribute__ ((weak)) + #define TU_ATTR_ALWAYS_INLINE __attribute__ ((always_inline)) + #define TU_ATTR_DEPRECATED(mess) __attribute__ ((deprecated(mess))) // warn if function with this attribute is used + #define TU_ATTR_UNUSED __attribute__ ((unused)) // Function/Variable is meant to be possibly unused + #define TU_ATTR_USED __attribute__ ((used)) // Function/Variable is meant to be used + + #define TU_ATTR_PACKED_BEGIN + #define TU_ATTR_PACKED_END + #define TU_ATTR_BIT_FIELD_ORDER_BEGIN + #define TU_ATTR_BIT_FIELD_ORDER_END + + // Endian conversion use well-known host to network (big endian) naming + #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ + #define TU_BYTE_ORDER TU_LITTLE_ENDIAN + #else + #define TU_BYTE_ORDER TU_BIG_ENDIAN + #endif + + #define TU_BSWAP16(u16) (__builtin_bswap16(u16)) + #define TU_BSWAP32(u32) (__builtin_bswap32(u32)) + + // List of obsolete callback function that is renamed and should not be defined. + // Put it here since only gcc support this pragma + #pragma GCC poison tud_vendor_control_request_cb + +#elif defined(__TI_COMPILER_VERSION__) + #define TU_ATTR_ALIGNED(Bytes) __attribute__ ((aligned(Bytes))) + #define TU_ATTR_SECTION(sec_name) __attribute__ ((section(#sec_name))) + #define TU_ATTR_PACKED __attribute__ ((packed)) + #define TU_ATTR_WEAK __attribute__ ((weak)) + #define TU_ATTR_ALWAYS_INLINE __attribute__ ((always_inline)) + #define TU_ATTR_DEPRECATED(mess) __attribute__ ((deprecated(mess))) // warn if function with this attribute is used + #define TU_ATTR_UNUSED __attribute__ ((unused)) // Function/Variable is meant to be possibly unused + #define TU_ATTR_USED __attribute__ ((used)) + + #define TU_ATTR_PACKED_BEGIN + #define TU_ATTR_PACKED_END + #define TU_ATTR_BIT_FIELD_ORDER_BEGIN + #define TU_ATTR_BIT_FIELD_ORDER_END + + // __BYTE_ORDER is defined in the TI ARM compiler, but not MSP430 (which is little endian) + #if ((__BYTE_ORDER__) == (__ORDER_LITTLE_ENDIAN__)) || defined(__MSP430__) + #define TU_BYTE_ORDER TU_LITTLE_ENDIAN + #else + #define TU_BYTE_ORDER TU_BIG_ENDIAN + #endif + + #define TU_BSWAP16(u16) (__builtin_bswap16(u16)) + #define TU_BSWAP32(u32) (__builtin_bswap32(u32)) + +#elif defined(__ICCARM__) + #include <intrinsics.h> + #define TU_ATTR_ALIGNED(Bytes) __attribute__ ((aligned(Bytes))) + #define TU_ATTR_SECTION(sec_name) __attribute__ ((section(#sec_name))) + #define TU_ATTR_PACKED __attribute__ ((packed)) + #define TU_ATTR_WEAK __attribute__ ((weak)) + #define TU_ATTR_ALWAYS_INLINE __attribute__ ((always_inline)) + #define TU_ATTR_DEPRECATED(mess) __attribute__ ((deprecated(mess))) // warn if function with this attribute is used + #define TU_ATTR_UNUSED __attribute__ ((unused)) // Function/Variable is meant to be possibly unused + #define TU_ATTR_USED __attribute__ ((used)) // Function/Variable is meant to be used + + #define TU_ATTR_PACKED_BEGIN + #define TU_ATTR_PACKED_END + #define TU_ATTR_BIT_FIELD_ORDER_BEGIN + #define TU_ATTR_BIT_FIELD_ORDER_END + + // Endian conversion use well-known host to network (big endian) naming + #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ + #define TU_BYTE_ORDER TU_LITTLE_ENDIAN + #else + #define TU_BYTE_ORDER TU_BIG_ENDIAN + #endif + + #define TU_BSWAP16(u16) (__iar_builtin_REV16(u16)) + #define TU_BSWAP32(u32) (__iar_builtin_REV(u32)) + +#elif defined(__CCRX__) + #define TU_ATTR_ALIGNED(Bytes) + #define TU_ATTR_SECTION(sec_name) + #define TU_ATTR_PACKED + #define TU_ATTR_WEAK + #define TU_ATTR_ALWAYS_INLINE + #define TU_ATTR_DEPRECATED(mess) + #define TU_ATTR_UNUSED + #define TU_ATTR_USED + + #define TU_ATTR_PACKED_BEGIN _Pragma("pack") + #define TU_ATTR_PACKED_END _Pragma("packoption") + #define TU_ATTR_BIT_FIELD_ORDER_BEGIN _Pragma("bit_order right") + #define TU_ATTR_BIT_FIELD_ORDER_END _Pragma("bit_order") + + // Endian conversion use well-known host to network (big endian) naming + #if defined(__LIT) + #define TU_BYTE_ORDER TU_LITTLE_ENDIAN + #else + #define TU_BYTE_ORDER TU_BIG_ENDIAN + #endif + + #define TU_BSWAP16(u16) ((unsigned short)_builtin_revw((unsigned long)u16)) + #define TU_BSWAP32(u32) (_builtin_revl(u32)) + +#else + #error "Compiler attribute porting is required" +#endif + +#if (TU_BYTE_ORDER == TU_LITTLE_ENDIAN) + + #define tu_htons(u16) (TU_BSWAP16(u16)) + #define tu_ntohs(u16) (TU_BSWAP16(u16)) + + #define tu_htonl(u32) (TU_BSWAP32(u32)) + #define tu_ntohl(u32) (TU_BSWAP32(u32)) + + #define tu_htole16(u16) (u16) + #define tu_le16toh(u16) (u16) + + #define tu_htole32(u32) (u32) + #define tu_le32toh(u32) (u32) + +#elif (TU_BYTE_ORDER == TU_BIG_ENDIAN) + + #define tu_htons(u16) (u16) + #define tu_ntohs(u16) (u16) + + #define tu_htonl(u32) (u32) + #define tu_ntohl(u32) (u32) + + #define tu_htole16(u16) (TU_BSWAP16(u16)) + #define tu_le16toh(u16) (TU_BSWAP16(u16)) + + #define tu_htole32(u32) (TU_BSWAP32(u32)) + #define tu_le32toh(u32) (TU_BSWAP32(u32)) + +#else + #error Byte order is undefined +#endif + +#endif /* _TUSB_COMPILER_H_ */ + +/// @} diff --git a/arkanoid/pico/tinyusb/tusb_config.h b/arkanoid/pico/tinyusb/tusb_config.h new file mode 100644 index 0000000..3211ef0 --- /dev/null +++ b/arkanoid/pico/tinyusb/tusb_config.h @@ -0,0 +1,40 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * Copyright (c) 2020 Damien P. George + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ + +#ifndef _PICO_STDIO_USB_TUSB_CONFIG_H +#define _PICO_STDIO_USB_TUSB_CONFIG_H + +#include "../stdio_usb.h" + +#define CFG_TUSB_RHPORT0_MODE (OPT_MODE_DEVICE) + +#define CFG_TUD_CDC (1) +#define CFG_TUD_CDC_RX_BUFSIZE (256) +#define CFG_TUD_CDC_TX_BUFSIZE (256) + +// We use a vendor specific interface but with our own driver +#define CFG_TUD_VENDOR (0) +#endif diff --git a/arkanoid/pico/tinyusb/tusb_error.h b/arkanoid/pico/tinyusb/tusb_error.h new file mode 100644 index 0000000..d7ad8c3 --- /dev/null +++ b/arkanoid/pico/tinyusb/tusb_error.h @@ -0,0 +1,75 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +/** \ingroup Group_Common + * \defgroup Group_Error Error Codes + * @{ */ + +#ifndef _TUSB_ERRORS_H_ +#define _TUSB_ERRORS_H_ + +#include "tusb_option.h" + +#ifdef __cplusplus + extern "C" { +#endif + +#define ERROR_ENUM(x) x, +#define ERROR_STRING(x) #x, + +#define ERROR_TABLE(ENTRY) \ + ENTRY(TUSB_ERROR_NONE )\ + ENTRY(TUSB_ERROR_INVALID_PARA )\ + ENTRY(TUSB_ERROR_DEVICE_NOT_READY )\ + ENTRY(TUSB_ERROR_INTERFACE_IS_BUSY )\ + ENTRY(TUSB_ERROR_HCD_OPEN_PIPE_FAILED )\ + ENTRY(TUSB_ERROR_OSAL_TIMEOUT )\ + ENTRY(TUSB_ERROR_CDCH_DEVICE_NOT_MOUNTED )\ + ENTRY(TUSB_ERROR_MSCH_DEVICE_NOT_MOUNTED )\ + ENTRY(TUSB_ERROR_NOT_SUPPORTED )\ + ENTRY(TUSB_ERROR_NOT_ENOUGH_MEMORY )\ + ENTRY(TUSB_ERROR_FAILED )\ + +/// \brief Error Code returned +/// TODO obsolete and to be remove +typedef enum +{ + ERROR_TABLE(ERROR_ENUM) + TUSB_ERROR_COUNT +}tusb_error_t; + +#if CFG_TUSB_DEBUG +/// Enum to String for debugging purposes. Only available if \ref CFG_TUSB_DEBUG > 0 +extern char const* const tusb_strerr[TUSB_ERROR_COUNT]; +#endif + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_ERRORS_H_ */ + +/** @} */ diff --git a/arkanoid/pico/tinyusb/tusb_fifo.c b/arkanoid/pico/tinyusb/tusb_fifo.c new file mode 100644 index 0000000..174a6fd --- /dev/null +++ b/arkanoid/pico/tinyusb/tusb_fifo.c @@ -0,0 +1,1000 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * Copyright (c) 2020 Reinhard Panhuber - rework to unmasked pointers + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#include "osal.h" +#include "tusb_fifo.h" + +// Supress IAR warning +// Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement +#if defined(__ICCARM__) +#pragma diag_suppress = Pa082 +#endif + +// implement mutex lock and unlock +#if CFG_FIFO_MUTEX + +static inline void _ff_lock(tu_fifo_mutex_t mutex) +{ + if (mutex) osal_mutex_lock(mutex, OSAL_TIMEOUT_WAIT_FOREVER); +} + +static inline void _ff_unlock(tu_fifo_mutex_t mutex) +{ + if (mutex) osal_mutex_unlock(mutex); +} + +#else + +#define _ff_lock(_mutex) +#define _ff_unlock(_mutex) + +#endif + +/** \enum tu_fifo_copy_mode_t + * \brief Write modes intended to allow special read and write functions to be able to + * copy data to and from USB hardware FIFOs as needed for e.g. STM32s and others + */ +typedef enum +{ + TU_FIFO_COPY_INC, ///< Copy from/to an increasing source/destination address - default mode + TU_FIFO_COPY_CST_FULL_WORDS, ///< Copy from/to a constant source/destination address - required for e.g. STM32 to write into USB hardware FIFO +} tu_fifo_copy_mode_t; + +bool tu_fifo_config(tu_fifo_t *f, void* buffer, uint16_t depth, uint16_t item_size, bool overwritable) +{ + if (depth > 0x8000) return false; // Maximum depth is 2^15 items + + _ff_lock(f->mutex_wr); + _ff_lock(f->mutex_rd); + + f->buffer = (uint8_t*) buffer; + f->depth = depth; + f->item_size = item_size; + f->overwritable = overwritable; + + // Limit index space to 2*depth - this allows for a fast "modulo" calculation + // but limits the maximum depth to 2^16/2 = 2^15 and buffer overflows are detectable + // only if overflow happens once (important for unsupervised DMA applications) + f->max_pointer_idx = 2*depth - 1; + f->non_used_index_space = UINT16_MAX - f->max_pointer_idx; + + f->rd_idx = f->wr_idx = 0; + + _ff_unlock(f->mutex_wr); + _ff_unlock(f->mutex_rd); + + return true; +} + +// Static functions are intended to work on local variables +static inline uint16_t _ff_mod(uint16_t idx, uint16_t depth) +{ + while ( idx >= depth) idx -= depth; + return idx; +} + +// Intended to be used to read from hardware USB FIFO in e.g. STM32 where all data is read from a constant address +// Code adapted from dcd_synopsis.c +// TODO generalize with configurable 1 byte or 4 byte each read +static void _ff_push_const_addr(uint8_t * ff_buf, const void * app_buf, uint16_t len) +{ + volatile uint32_t * rx_fifo = (volatile uint32_t *) app_buf; + + // Reading full available 32 bit words from const app address + uint16_t full_words = len >> 2; + while(full_words--) + { + tu_unaligned_write32(ff_buf, *rx_fifo); + ff_buf += 4; + } + + // Read the remaining 1-3 bytes from const app address + uint8_t const bytes_rem = len & 0x03; + if ( bytes_rem ) + { + uint32_t tmp32 = *rx_fifo; + memcpy(ff_buf, &tmp32, bytes_rem); + } +} + +// Intended to be used to write to hardware USB FIFO in e.g. STM32 +// where all data is written to a constant address in full word copies +static void _ff_pull_const_addr(void * app_buf, const uint8_t * ff_buf, uint16_t len) +{ + volatile uint32_t * tx_fifo = (volatile uint32_t *) app_buf; + + // Pushing full available 32 bit words to const app address + uint16_t full_words = len >> 2; + while(full_words--) + { + *tx_fifo = tu_unaligned_read32(ff_buf); + ff_buf += 4; + } + + // Write the remaining 1-3 bytes into const app address + uint8_t const bytes_rem = len & 0x03; + if ( bytes_rem ) + { + uint32_t tmp32 = 0; + memcpy(&tmp32, ff_buf, bytes_rem); + + *tx_fifo = tmp32; + } +} + +// send one item to FIFO WITHOUT updating write pointer +static inline void _ff_push(tu_fifo_t* f, void const * app_buf, uint16_t rel) +{ + memcpy(f->buffer + (rel * f->item_size), app_buf, f->item_size); +} + +// send n items to FIFO WITHOUT updating write pointer +static void _ff_push_n(tu_fifo_t* f, void const * app_buf, uint16_t n, uint16_t rel, tu_fifo_copy_mode_t copy_mode) +{ + uint16_t const nLin = f->depth - rel; + uint16_t const nWrap = n - nLin; + + uint16_t nLin_bytes = nLin * f->item_size; + uint16_t nWrap_bytes = nWrap * f->item_size; + + // current buffer of fifo + uint8_t* ff_buf = f->buffer + (rel * f->item_size); + + switch (copy_mode) + { + case TU_FIFO_COPY_INC: + if(n <= nLin) + { + // Linear only + memcpy(ff_buf, app_buf, n*f->item_size); + } + else + { + // Wrap around + + // Write data to linear part of buffer + memcpy(ff_buf, app_buf, nLin_bytes); + + // Write data wrapped around + memcpy(f->buffer, ((uint8_t const*) app_buf) + nLin_bytes, nWrap_bytes); + } + break; + + case TU_FIFO_COPY_CST_FULL_WORDS: + // Intended for hardware buffers from which it can be read word by word only + if(n <= nLin) + { + // Linear only + _ff_push_const_addr(ff_buf, app_buf, n*f->item_size); + } + else + { + // Wrap around case + + // Write full words to linear part of buffer + uint16_t nLin_4n_bytes = nLin_bytes & 0xFFFC; + _ff_push_const_addr(ff_buf, app_buf, nLin_4n_bytes); + ff_buf += nLin_4n_bytes; + + // There could be odd 1-3 bytes before the wrap-around boundary + volatile uint32_t * rx_fifo = (volatile uint32_t *) app_buf; + uint8_t rem = nLin_bytes & 0x03; + if (rem > 0) + { + uint8_t remrem = tu_min16(nWrap_bytes, 4-rem); + nWrap_bytes -= remrem; + + uint32_t tmp32 = *rx_fifo; + uint8_t * src_u8 = ((uint8_t *) &tmp32); + + // Write 1-3 bytes before wrapped boundary + while(rem--) *ff_buf++ = *src_u8++; + + // Read more bytes to beginning to complete a word + ff_buf = f->buffer; + while(remrem--) *ff_buf++ = *src_u8++; + } + else + { + ff_buf = f->buffer; // wrap around to beginning + } + + // Write data wrapped part + if (nWrap_bytes > 0) _ff_push_const_addr(ff_buf, app_buf, nWrap_bytes); + } + break; + } +} + +// get one item from FIFO WITHOUT updating read pointer +static inline void _ff_pull(tu_fifo_t* f, void * app_buf, uint16_t rel) +{ + memcpy(app_buf, f->buffer + (rel * f->item_size), f->item_size); +} + +// get n items from FIFO WITHOUT updating read pointer +static void _ff_pull_n(tu_fifo_t* f, void* app_buf, uint16_t n, uint16_t rel, tu_fifo_copy_mode_t copy_mode) +{ + uint16_t const nLin = f->depth - rel; + uint16_t const nWrap = n - nLin; // only used if wrapped + + uint16_t nLin_bytes = nLin * f->item_size; + uint16_t nWrap_bytes = nWrap * f->item_size; + + // current buffer of fifo + uint8_t* ff_buf = f->buffer + (rel * f->item_size); + + switch (copy_mode) + { + case TU_FIFO_COPY_INC: + if ( n <= nLin ) + { + // Linear only + memcpy(app_buf, ff_buf, n*f->item_size); + } + else + { + // Wrap around + + // Read data from linear part of buffer + memcpy(app_buf, ff_buf, nLin_bytes); + + // Read data wrapped part + memcpy((uint8_t*) app_buf + nLin_bytes, f->buffer, nWrap_bytes); + } + break; + + case TU_FIFO_COPY_CST_FULL_WORDS: + if ( n <= nLin ) + { + // Linear only + _ff_pull_const_addr(app_buf, ff_buf, n*f->item_size); + } + else + { + // Wrap around case + + // Read full words from linear part of buffer + uint16_t nLin_4n_bytes = nLin_bytes & 0xFFFC; + _ff_pull_const_addr(app_buf, ff_buf, nLin_4n_bytes); + ff_buf += nLin_4n_bytes; + + // There could be odd 1-3 bytes before the wrap-around boundary + volatile uint32_t * tx_fifo = (volatile uint32_t *) app_buf; + uint8_t rem = nLin_bytes & 0x03; + if (rem > 0) + { + uint8_t remrem = tu_min16(nWrap_bytes, 4-rem); + nWrap_bytes -= remrem; + + uint32_t tmp32=0; + uint8_t * dst_u8 = (uint8_t *)&tmp32; + + // Read 1-3 bytes before wrapped boundary + while(rem--) *dst_u8++ = *ff_buf++; + + // Read more bytes from beginning to complete a word + ff_buf = f->buffer; + while(remrem--) *dst_u8++ = *ff_buf++; + + *tx_fifo = tmp32; + } + else + { + ff_buf = f->buffer; // wrap around to beginning + } + + // Read data wrapped part + if (nWrap_bytes > 0) _ff_pull_const_addr(app_buf, ff_buf, nWrap_bytes); + } + break; + + default: break; + } +} + +// Advance an absolute pointer +static uint16_t advance_pointer(tu_fifo_t* f, uint16_t p, uint16_t offset) +{ + // We limit the index space of p such that a correct wrap around happens + // Check for a wrap around or if we are in unused index space - This has to be checked first!! + // We are exploiting the wrap around to the correct index + if ((p > (uint16_t)(p + offset)) || ((uint16_t)(p + offset) > f->max_pointer_idx)) + { + p = (p + offset) + f->non_used_index_space; + } + else + { + p += offset; + } + return p; +} + +// Backward an absolute pointer +static uint16_t backward_pointer(tu_fifo_t* f, uint16_t p, uint16_t offset) +{ + // We limit the index space of p such that a correct wrap around happens + // Check for a wrap around or if we are in unused index space - This has to be checked first!! + // We are exploiting the wrap around to the correct index + if ((p < (uint16_t)(p - offset)) || ((uint16_t)(p - offset) > f->max_pointer_idx)) + { + p = (p - offset) - f->non_used_index_space; + } + else + { + p -= offset; + } + return p; +} + +// get relative from absolute pointer +static uint16_t get_relative_pointer(tu_fifo_t* f, uint16_t p) +{ + return _ff_mod(p, f->depth); +} + +// Works on local copies of w and r - return only the difference and as such can be used to determine an overflow +static inline uint16_t _tu_fifo_count(tu_fifo_t* f, uint16_t wAbs, uint16_t rAbs) +{ + uint16_t cnt = wAbs-rAbs; + + // In case we have non-power of two depth we need a further modification + if (rAbs > wAbs) cnt -= f->non_used_index_space; + + return cnt; +} + +// Works on local copies of w and r +static inline bool _tu_fifo_empty(uint16_t wAbs, uint16_t rAbs) +{ + return wAbs == rAbs; +} + +// Works on local copies of w and r +static inline bool _tu_fifo_full(tu_fifo_t* f, uint16_t wAbs, uint16_t rAbs) +{ + return (_tu_fifo_count(f, wAbs, rAbs) == f->depth); +} + +// Works on local copies of w and r +// BE AWARE - THIS FUNCTION MIGHT NOT GIVE A CORRECT ANSWERE IN CASE WRITE POINTER "OVERFLOWS" +// Only one overflow is allowed for this function to work e.g. if depth = 100, you must not +// write more than 2*depth-1 items in one rush without updating write pointer. Otherwise +// write pointer wraps and you pointer states are messed up. This can only happen if you +// use DMAs, write functions do not allow such an error. +static inline bool _tu_fifo_overflowed(tu_fifo_t* f, uint16_t wAbs, uint16_t rAbs) +{ + return (_tu_fifo_count(f, wAbs, rAbs) > f->depth); +} + +// Works on local copies of w +// For more details see _tu_fifo_overflow()! +static inline void _tu_fifo_correct_read_pointer(tu_fifo_t* f, uint16_t wAbs) +{ + f->rd_idx = backward_pointer(f, wAbs, f->depth); +} + +// Works on local copies of w and r +// Must be protected by mutexes since in case of an overflow read pointer gets modified +static bool _tu_fifo_peek(tu_fifo_t* f, void * p_buffer, uint16_t wAbs, uint16_t rAbs) +{ + uint16_t cnt = _tu_fifo_count(f, wAbs, rAbs); + + // Check overflow and correct if required + if (cnt > f->depth) + { + _tu_fifo_correct_read_pointer(f, wAbs); + cnt = f->depth; + } + + // Skip beginning of buffer + if (cnt == 0) return false; + + uint16_t rRel = get_relative_pointer(f, rAbs); + + // Peek data + _ff_pull(f, p_buffer, rRel); + + return true; +} + +// Works on local copies of w and r +// Must be protected by mutexes since in case of an overflow read pointer gets modified +static uint16_t _tu_fifo_peek_n(tu_fifo_t* f, void * p_buffer, uint16_t n, uint16_t wAbs, uint16_t rAbs, tu_fifo_copy_mode_t copy_mode) +{ + uint16_t cnt = _tu_fifo_count(f, wAbs, rAbs); + + // Check overflow and correct if required + if (cnt > f->depth) + { + _tu_fifo_correct_read_pointer(f, wAbs); + rAbs = f->rd_idx; + cnt = f->depth; + } + + // Skip beginning of buffer + if (cnt == 0) return 0; + + // Check if we can read something at and after offset - if too less is available we read what remains + if (cnt < n) n = cnt; + + uint16_t rRel = get_relative_pointer(f, rAbs); + + // Peek data + _ff_pull_n(f, p_buffer, n, rRel, copy_mode); + + return n; +} + +// Works on local copies of w and r +static inline uint16_t _tu_fifo_remaining(tu_fifo_t* f, uint16_t wAbs, uint16_t rAbs) +{ + return f->depth - _tu_fifo_count(f, wAbs, rAbs); +} + +static uint16_t _tu_fifo_write_n(tu_fifo_t* f, const void * data, uint16_t n, tu_fifo_copy_mode_t copy_mode) +{ + if ( n == 0 ) return 0; + + _ff_lock(f->mutex_wr); + + uint16_t w = f->wr_idx, r = f->rd_idx; + uint8_t const* buf8 = (uint8_t const*) data; + + if (!f->overwritable) + { + // Not overwritable limit up to full + n = tu_min16(n, _tu_fifo_remaining(f, w, r)); + } + else if (n >= f->depth) + { + // Only copy last part + buf8 = buf8 + (n - f->depth) * f->item_size; + n = f->depth; + + // We start writing at the read pointer's position since we fill the complete + // buffer and we do not want to modify the read pointer within a write function! + // This would end up in a race condition with read functions! + w = r; + } + + uint16_t wRel = get_relative_pointer(f, w); + + // Write data + _ff_push_n(f, buf8, n, wRel, copy_mode); + + // Advance pointer + f->wr_idx = advance_pointer(f, w, n); + + _ff_unlock(f->mutex_wr); + + return n; +} + +static uint16_t _tu_fifo_read_n(tu_fifo_t* f, void * buffer, uint16_t n, tu_fifo_copy_mode_t copy_mode) +{ + _ff_lock(f->mutex_rd); + + // Peek the data + // f->rd_idx might get modified in case of an overflow so we can not use a local variable + n = _tu_fifo_peek_n(f, buffer, n, f->wr_idx, f->rd_idx, copy_mode); + + // Advance read pointer + f->rd_idx = advance_pointer(f, f->rd_idx, n); + + _ff_unlock(f->mutex_rd); + return n; +} + +/******************************************************************************/ +/*! + @brief Get number of items in FIFO. + + As this function only reads the read and write pointers once, this function is + reentrant and thus thread and ISR save without any mutexes. In case an + overflow occurred, this function return f.depth at maximum. Overflows are + checked and corrected for in the read functions! + + @param[in] f + Pointer to the FIFO buffer to manipulate + + @returns Number of items in FIFO + */ +/******************************************************************************/ +uint16_t tu_fifo_count(tu_fifo_t* f) +{ + return tu_min16(_tu_fifo_count(f, f->wr_idx, f->rd_idx), f->depth); +} + +/******************************************************************************/ +/*! + @brief Check if FIFO is empty. + + As this function only reads the read and write pointers once, this function is + reentrant and thus thread and ISR save without any mutexes. + + @param[in] f + Pointer to the FIFO buffer to manipulate + + @returns Number of items in FIFO + */ +/******************************************************************************/ +bool tu_fifo_empty(tu_fifo_t* f) +{ + return _tu_fifo_empty(f->wr_idx, f->rd_idx); +} + +/******************************************************************************/ +/*! + @brief Check if FIFO is full. + + As this function only reads the read and write pointers once, this function is + reentrant and thus thread and ISR save without any mutexes. + + @param[in] f + Pointer to the FIFO buffer to manipulate + + @returns Number of items in FIFO + */ +/******************************************************************************/ +bool tu_fifo_full(tu_fifo_t* f) +{ + return _tu_fifo_full(f, f->wr_idx, f->rd_idx); +} + +/******************************************************************************/ +/*! + @brief Get remaining space in FIFO. + + As this function only reads the read and write pointers once, this function is + reentrant and thus thread and ISR save without any mutexes. + + @param[in] f + Pointer to the FIFO buffer to manipulate + + @returns Number of items in FIFO + */ +/******************************************************************************/ +uint16_t tu_fifo_remaining(tu_fifo_t* f) +{ + return _tu_fifo_remaining(f, f->wr_idx, f->rd_idx); +} + +/******************************************************************************/ +/*! + @brief Check if overflow happened. + + BE AWARE - THIS FUNCTION MIGHT NOT GIVE A CORRECT ANSWERE IN CASE WRITE POINTER "OVERFLOWS" + Only one overflow is allowed for this function to work e.g. if depth = 100, you must not + write more than 2*depth-1 items in one rush without updating write pointer. Otherwise + write pointer wraps and your pointer states are messed up. This can only happen if you + use DMAs, write functions do not allow such an error. Avoid such nasty things! + + All reading functions (read, peek) check for overflows and correct read pointer on their own such + that latest items are read. + If required (e.g. for DMA use) you can also correct the read pointer by + tu_fifo_correct_read_pointer(). + + @param[in] f + Pointer to the FIFO buffer to manipulate + + @returns True if overflow happened + */ +/******************************************************************************/ +bool tu_fifo_overflowed(tu_fifo_t* f) +{ + return _tu_fifo_overflowed(f, f->wr_idx, f->rd_idx); +} + +// Only use in case tu_fifo_overflow() returned true! +void tu_fifo_correct_read_pointer(tu_fifo_t* f) +{ + _ff_lock(f->mutex_rd); + _tu_fifo_correct_read_pointer(f, f->wr_idx); + _ff_unlock(f->mutex_rd); +} + +/******************************************************************************/ +/*! + @brief Read one element out of the buffer. + + This function will return the element located at the array index of the + read pointer, and then increment the read pointer index. + This function checks for an overflow and corrects read pointer if required. + + @param[in] f + Pointer to the FIFO buffer to manipulate + @param[in] buffer + Pointer to the place holder for data read from the buffer + + @returns TRUE if the queue is not empty + */ +/******************************************************************************/ +bool tu_fifo_read(tu_fifo_t* f, void * buffer) +{ + _ff_lock(f->mutex_rd); + + // Peek the data + // f->rd_idx might get modified in case of an overflow so we can not use a local variable + bool ret = _tu_fifo_peek(f, buffer, f->wr_idx, f->rd_idx); + + // Advance pointer + f->rd_idx = advance_pointer(f, f->rd_idx, ret); + + _ff_unlock(f->mutex_rd); + return ret; +} + +/******************************************************************************/ +/*! + @brief This function will read n elements from the array index specified by + the read pointer and increment the read index. + This function checks for an overflow and corrects read pointer if required. + + @param[in] f + Pointer to the FIFO buffer to manipulate + @param[in] buffer + The pointer to data location + @param[in] n + Number of element that buffer can afford + + @returns number of items read from the FIFO + */ +/******************************************************************************/ +uint16_t tu_fifo_read_n(tu_fifo_t* f, void * buffer, uint16_t n) +{ + return _tu_fifo_read_n(f, buffer, n, TU_FIFO_COPY_INC); +} + +uint16_t tu_fifo_read_n_const_addr_full_words(tu_fifo_t* f, void * buffer, uint16_t n) +{ + return _tu_fifo_read_n(f, buffer, n, TU_FIFO_COPY_CST_FULL_WORDS); +} + +/******************************************************************************/ +/*! + @brief Read one item without removing it from the FIFO. + This function checks for an overflow and corrects read pointer if required. + + @param[in] f + Pointer to the FIFO buffer to manipulate + @param[in] offset + Position to read from in the FIFO buffer with respect to read pointer + @param[in] p_buffer + Pointer to the place holder for data read from the buffer + + @returns TRUE if the queue is not empty + */ +/******************************************************************************/ +bool tu_fifo_peek(tu_fifo_t* f, void * p_buffer) +{ + _ff_lock(f->mutex_rd); + bool ret = _tu_fifo_peek(f, p_buffer, f->wr_idx, f->rd_idx); + _ff_unlock(f->mutex_rd); + return ret; +} + +/******************************************************************************/ +/*! + @brief Read n items without removing it from the FIFO + This function checks for an overflow and corrects read pointer if required. + + @param[in] f + Pointer to the FIFO buffer to manipulate + @param[in] p_buffer + Pointer to the place holder for data read from the buffer + @param[in] n + Number of items to peek + + @returns Number of bytes written to p_buffer + */ +/******************************************************************************/ +uint16_t tu_fifo_peek_n(tu_fifo_t* f, void * p_buffer, uint16_t n) +{ + _ff_lock(f->mutex_rd); + bool ret = _tu_fifo_peek_n(f, p_buffer, n, f->wr_idx, f->rd_idx, TU_FIFO_COPY_INC); + _ff_unlock(f->mutex_rd); + return ret; +} + +/******************************************************************************/ +/*! + @brief Write one element into the buffer. + + This function will write one element into the array index specified by + the write pointer and increment the write index. + + @param[in] f + Pointer to the FIFO buffer to manipulate + @param[in] data + The byte to add to the FIFO + + @returns TRUE if the data was written to the FIFO (overwrittable + FIFO will always return TRUE) + */ +/******************************************************************************/ +bool tu_fifo_write(tu_fifo_t* f, const void * data) +{ + _ff_lock(f->mutex_wr); + + uint16_t w = f->wr_idx; + + if ( _tu_fifo_full(f, w, f->rd_idx) && !f->overwritable ) return false; + + uint16_t wRel = get_relative_pointer(f, w); + + // Write data + _ff_push(f, data, wRel); + + // Advance pointer + f->wr_idx = advance_pointer(f, w, 1); + + _ff_unlock(f->mutex_wr); + + return true; +} + +/******************************************************************************/ +/*! + @brief This function will write n elements into the array index specified by + the write pointer and increment the write index. + + @param[in] f + Pointer to the FIFO buffer to manipulate + @param[in] data + The pointer to data to add to the FIFO + @param[in] count + Number of element + @return Number of written elements + */ +/******************************************************************************/ +uint16_t tu_fifo_write_n(tu_fifo_t* f, const void * data, uint16_t n) +{ + return _tu_fifo_write_n(f, data, n, TU_FIFO_COPY_INC); +} + +/******************************************************************************/ +/*! + @brief This function will write n elements into the array index specified by + the write pointer and increment the write index. The source address will + not be incremented which is useful for reading from registers. + + @param[in] f + Pointer to the FIFO buffer to manipulate + @param[in] data + The pointer to data to add to the FIFO + @param[in] count + Number of element + @return Number of written elements + */ +/******************************************************************************/ +uint16_t tu_fifo_write_n_const_addr_full_words(tu_fifo_t* f, const void * data, uint16_t n) +{ + return _tu_fifo_write_n(f, data, n, TU_FIFO_COPY_CST_FULL_WORDS); +} + +/******************************************************************************/ +/*! + @brief Clear the fifo read and write pointers + + @param[in] f + Pointer to the FIFO buffer to manipulate + */ +/******************************************************************************/ +bool tu_fifo_clear(tu_fifo_t *f) +{ + _ff_lock(f->mutex_wr); + _ff_lock(f->mutex_rd); + + f->rd_idx = f->wr_idx = 0; + f->max_pointer_idx = 2*f->depth-1; + f->non_used_index_space = UINT16_MAX - f->max_pointer_idx; + + _ff_unlock(f->mutex_wr); + _ff_unlock(f->mutex_rd); + return true; +} + +/******************************************************************************/ +/*! + @brief Change the fifo mode to overwritable or not overwritable + + @param[in] f + Pointer to the FIFO buffer to manipulate + @param[in] overwritable + Overwritable mode the fifo is set to + */ +/******************************************************************************/ +bool tu_fifo_set_overwritable(tu_fifo_t *f, bool overwritable) +{ + _ff_lock(f->mutex_wr); + _ff_lock(f->mutex_rd); + + f->overwritable = overwritable; + + _ff_unlock(f->mutex_wr); + _ff_unlock(f->mutex_rd); + + return true; +} + +/******************************************************************************/ +/*! + @brief Advance write pointer - intended to be used in combination with DMA. + It is possible to fill the FIFO by use of a DMA in circular mode. Within + DMA ISRs you may update the write pointer to be able to read from the FIFO. + As long as the DMA is the only process writing into the FIFO this is safe + to use. + + USE WITH CARE - WE DO NOT CONDUCT SAFTY CHECKS HERE! + + @param[in] f + Pointer to the FIFO buffer to manipulate + @param[in] n + Number of items the write pointer moves forward + */ +/******************************************************************************/ +void tu_fifo_advance_write_pointer(tu_fifo_t *f, uint16_t n) +{ + f->wr_idx = advance_pointer(f, f->wr_idx, n); +} + +/******************************************************************************/ +/*! + @brief Advance read pointer - intended to be used in combination with DMA. + It is possible to read from the FIFO by use of a DMA in linear mode. Within + DMA ISRs you may update the read pointer to be able to again write into the + FIFO. As long as the DMA is the only process reading from the FIFO this is + safe to use. + + USE WITH CARE - WE DO NOT CONDUCT SAFTY CHECKS HERE! + + @param[in] f + Pointer to the FIFO buffer to manipulate + @param[in] n + Number of items the read pointer moves forward + */ +/******************************************************************************/ +void tu_fifo_advance_read_pointer(tu_fifo_t *f, uint16_t n) +{ + f->rd_idx = advance_pointer(f, f->rd_idx, n); +} + +/******************************************************************************/ +/*! + @brief Get read info + + Returns the length and pointer from which bytes can be read in a linear manner. + This is of major interest for DMA transmissions. If returned length is zero the + corresponding pointer is invalid. + The read pointer does NOT get advanced, use tu_fifo_advance_read_pointer() to + do so! + @param[in] f + Pointer to FIFO + @param[out] *info + Pointer to struct which holds the desired infos + */ +/******************************************************************************/ +void tu_fifo_get_read_info(tu_fifo_t *f, tu_fifo_buffer_info_t *info) +{ + // Operate on temporary values in case they change in between + uint16_t w = f->wr_idx, r = f->rd_idx; + + uint16_t cnt = _tu_fifo_count(f, w, r); + + // Check overflow and correct if required - may happen in case a DMA wrote too fast + if (cnt > f->depth) + { + _ff_lock(f->mutex_rd); + _tu_fifo_correct_read_pointer(f, w); + _ff_unlock(f->mutex_rd); + r = f->rd_idx; + cnt = f->depth; + } + + // Check if fifo is empty + if (cnt == 0) + { + info->len_lin = 0; + info->len_wrap = 0; + info->ptr_lin = NULL; + info->ptr_wrap = NULL; + return; + } + + // Get relative pointers + w = get_relative_pointer(f, w); + r = get_relative_pointer(f, r); + + // Copy pointer to buffer to start reading from + info->ptr_lin = &f->buffer[r]; + + // Check if there is a wrap around necessary + if (w > r) { + // Non wrapping case + info->len_lin = cnt; + info->len_wrap = 0; + info->ptr_wrap = NULL; + } + else + { + info->len_lin = f->depth - r; // Also the case if FIFO was full + info->len_wrap = cnt - info->len_lin; + info->ptr_wrap = f->buffer; + } +} + +/******************************************************************************/ +/*! + @brief Get linear write info + + Returns the length and pointer to which bytes can be written into FIFO in a linear manner. + This is of major interest for DMA transmissions not using circular mode. If a returned length is zero the + corresponding pointer is invalid. The returned lengths summed up are the currently free space in the FIFO. + The write pointer does NOT get advanced, use tu_fifo_advance_write_pointer() to do so! + TAKE CARE TO NOT OVERFLOW THE BUFFER MORE THAN TWO TIMES THE FIFO DEPTH - IT CAN NOT RECOVERE OTHERWISE! + @param[in] f + Pointer to FIFO + @param[out] *info + Pointer to struct which holds the desired infos + */ +/******************************************************************************/ +void tu_fifo_get_write_info(tu_fifo_t *f, tu_fifo_buffer_info_t *info) +{ + uint16_t w = f->wr_idx, r = f->rd_idx; + uint16_t free = _tu_fifo_remaining(f, w, r); + + if (free == 0) + { + info->len_lin = 0; + info->len_wrap = 0; + info->ptr_lin = NULL; + info->ptr_wrap = NULL; + return; + } + + // Get relative pointers + w = get_relative_pointer(f, w); + r = get_relative_pointer(f, r); + + // Copy pointer to buffer to start writing to + info->ptr_lin = &f->buffer[w]; + + if (w < r) + { + // Non wrapping case + info->len_lin = r-w; + info->len_wrap = 0; + info->ptr_wrap = NULL; + } + else + { + info->len_lin = f->depth - w; + info->len_wrap = free - info->len_lin; // Remaining length - n already was limited to free or FIFO depth + info->ptr_wrap = f->buffer; // Always start of buffer + } +} diff --git a/arkanoid/pico/tinyusb/tusb_fifo.h b/arkanoid/pico/tinyusb/tusb_fifo.h new file mode 100644 index 0000000..6f061ae --- /dev/null +++ b/arkanoid/pico/tinyusb/tusb_fifo.h @@ -0,0 +1,151 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * Copyright (c) 2020 Reinhard Panhuber - rework to unmasked pointers + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef _TUSB_FIFO_H_ +#define _TUSB_FIFO_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +// Due to the use of unmasked pointers, this FIFO does not suffer from loosing +// one item slice. Furthermore, write and read operations are completely +// decoupled as write and read functions do not modify a common state. Henceforth, +// writing or reading from the FIFO within an ISR is safe as long as no other +// process (thread or ISR) interferes. +// Also, this FIFO is ready to be used in combination with a DMA as the write and +// read pointers can be updated from within a DMA ISR. Overflows are detectable +// within a certain number (see tu_fifo_overflow()). + +#include "tusb_common.h" + +// mutex is only needed for RTOS +// for OS None, we don't get preempted +#define CFG_FIFO_MUTEX (CFG_TUSB_OS != OPT_OS_NONE) + +#if CFG_FIFO_MUTEX +#include "osal.h" +#define tu_fifo_mutex_t osal_mutex_t +#endif + +typedef struct +{ + uint8_t* buffer ; ///< buffer pointer + uint16_t depth ; ///< max items + uint16_t item_size ; ///< size of each item + bool overwritable ; + + uint16_t non_used_index_space ; ///< required for non-power-of-two buffer length + uint16_t max_pointer_idx ; ///< maximum absolute pointer index + + volatile uint16_t wr_idx ; ///< write pointer + volatile uint16_t rd_idx ; ///< read pointer + +#if CFG_FIFO_MUTEX + tu_fifo_mutex_t mutex_wr; + tu_fifo_mutex_t mutex_rd; +#endif + +} tu_fifo_t; + +typedef struct +{ + uint16_t len_lin ; ///< linear length in item size + uint16_t len_wrap ; ///< wrapped length in item size + void * ptr_lin ; ///< linear part start pointer + void * ptr_wrap ; ///< wrapped part start pointer +} tu_fifo_buffer_info_t; + +#define TU_FIFO_INIT(_buffer, _depth, _type, _overwritable) \ +{ \ + .buffer = _buffer, \ + .depth = _depth, \ + .item_size = sizeof(_type), \ + .overwritable = _overwritable, \ + .non_used_index_space = UINT16_MAX - (2*(_depth)-1), \ + .max_pointer_idx = 2*(_depth)-1, \ +} + +#define TU_FIFO_DEF(_name, _depth, _type, _overwritable) \ + uint8_t _name##_buf[_depth*sizeof(_type)]; \ + tu_fifo_t _name = TU_FIFO_INIT(_name##_buf, _depth, _type, _overwritable) + + +bool tu_fifo_set_overwritable(tu_fifo_t *f, bool overwritable); +bool tu_fifo_clear(tu_fifo_t *f); +bool tu_fifo_config(tu_fifo_t *f, void* buffer, uint16_t depth, uint16_t item_size, bool overwritable); + +#if CFG_FIFO_MUTEX +TU_ATTR_ALWAYS_INLINE static inline +void tu_fifo_config_mutex(tu_fifo_t *f, tu_fifo_mutex_t write_mutex_hdl, tu_fifo_mutex_t read_mutex_hdl) +{ + f->mutex_wr = write_mutex_hdl; + f->mutex_rd = read_mutex_hdl; +} +#endif + +bool tu_fifo_write (tu_fifo_t* f, void const * p_data); +uint16_t tu_fifo_write_n (tu_fifo_t* f, void const * p_data, uint16_t n); +uint16_t tu_fifo_write_n_const_addr_full_words (tu_fifo_t* f, const void * data, uint16_t n); + +bool tu_fifo_read (tu_fifo_t* f, void * p_buffer); +uint16_t tu_fifo_read_n (tu_fifo_t* f, void * p_buffer, uint16_t n); +uint16_t tu_fifo_read_n_const_addr_full_words (tu_fifo_t* f, void * buffer, uint16_t n); + +bool tu_fifo_peek (tu_fifo_t* f, void * p_buffer); +uint16_t tu_fifo_peek_n (tu_fifo_t* f, void * p_buffer, uint16_t n); + +uint16_t tu_fifo_count (tu_fifo_t* f); +uint16_t tu_fifo_remaining (tu_fifo_t* f); +bool tu_fifo_empty (tu_fifo_t* f); +bool tu_fifo_full (tu_fifo_t* f); +bool tu_fifo_overflowed (tu_fifo_t* f); +void tu_fifo_correct_read_pointer (tu_fifo_t* f); + +TU_ATTR_ALWAYS_INLINE static inline +uint16_t tu_fifo_depth(tu_fifo_t* f) +{ + return f->depth; +} + +// Pointer modifications intended to be used in combinations with DMAs. +// USE WITH CARE - NO SAFTY CHECKS CONDUCTED HERE! NOT MUTEX PROTECTED! +void tu_fifo_advance_write_pointer(tu_fifo_t *f, uint16_t n); +void tu_fifo_advance_read_pointer (tu_fifo_t *f, uint16_t n); + +// If you want to read/write from/to the FIFO by use of a DMA, you may need to conduct two copies +// to handle a possible wrapping part. These functions deliver a pointer to start +// reading/writing from/to and a valid linear length along which no wrap occurs. +void tu_fifo_get_read_info (tu_fifo_t *f, tu_fifo_buffer_info_t *info); +void tu_fifo_get_write_info(tu_fifo_t *f, tu_fifo_buffer_info_t *info); + + +#ifdef __cplusplus +} +#endif + +#endif /* _TUSB_FIFO_H_ */ diff --git a/arkanoid/pico/tinyusb/tusb_option.h b/arkanoid/pico/tinyusb/tusb_option.h new file mode 100644 index 0000000..e49fc01 --- /dev/null +++ b/arkanoid/pico/tinyusb/tusb_option.h @@ -0,0 +1,358 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef _TUSB_OPTION_H_ +#define _TUSB_OPTION_H_ + +#define TUSB_VERSION_MAJOR 0 +#define TUSB_VERSION_MINOR 12 +#define TUSB_VERSION_REVISION 0 +#define TUSB_VERSION_STRING TU_STRING(TUSB_VERSION_MAJOR) "." TU_STRING(TUSB_VERSION_MINOR) "." TU_STRING(TUSB_VERSION_REVISION) + +//--------------------------------------------------------------------+ +// Supported MCUs +// CFG_TUSB_MCU must be defined to one of following value +//--------------------------------------------------------------------+ +#define TU_CHECK_MCU(_m) (CFG_TUSB_MCU == OPT_MCU_##_m) + +#define OPT_MCU_NONE 0 + +// LPC +#define OPT_MCU_LPC11UXX 1 ///< NXP LPC11Uxx +#define OPT_MCU_LPC13XX 2 ///< NXP LPC13xx +#define OPT_MCU_LPC15XX 3 ///< NXP LPC15xx +#define OPT_MCU_LPC175X_6X 4 ///< NXP LPC175x, LPC176x +#define OPT_MCU_LPC177X_8X 5 ///< NXP LPC177x, LPC178x +#define OPT_MCU_LPC18XX 6 ///< NXP LPC18xx +#define OPT_MCU_LPC40XX 7 ///< NXP LPC40xx +#define OPT_MCU_LPC43XX 8 ///< NXP LPC43xx +#define OPT_MCU_LPC51UXX 9 ///< NXP LPC51U6x +#define OPT_MCU_LPC54XXX 10 ///< NXP LPC54xxx +#define OPT_MCU_LPC55XX 11 ///< NXP LPC55xx + +// NRF +#define OPT_MCU_NRF5X 100 ///< Nordic nRF5x series + +// SAM +#define OPT_MCU_SAMD21 200 ///< MicroChip SAMD21 +#define OPT_MCU_SAMD51 201 ///< MicroChip SAMD51 +#define OPT_MCU_SAMG 202 ///< MicroChip SAMDG series +#define OPT_MCU_SAME5X 203 ///< MicroChip SAM E5x +#define OPT_MCU_SAMD11 204 ///< MicroChip SAMD11 +#define OPT_MCU_SAML22 205 ///< MicroChip SAML22 +#define OPT_MCU_SAML21 206 ///< MicroChip SAML21 +#define OPT_MCU_SAMX7X 207 ///< MicroChip SAME70, S70, V70, V71 family + +// STM32 +#define OPT_MCU_STM32F0 300 ///< ST STM32F0 +#define OPT_MCU_STM32F1 301 ///< ST STM32F1 +#define OPT_MCU_STM32F2 302 ///< ST STM32F2 +#define OPT_MCU_STM32F3 303 ///< ST STM32F3 +#define OPT_MCU_STM32F4 304 ///< ST STM32F4 +#define OPT_MCU_STM32F7 305 ///< ST STM32F7 +#define OPT_MCU_STM32H7 306 ///< ST STM32H7 +#define OPT_MCU_STM32L0 307 ///< ST STM32L0 +#define OPT_MCU_STM32L1 308 ///< ST STM32L1 +#define OPT_MCU_STM32L4 309 ///< ST STM32L4 + +// Sony +#define OPT_MCU_CXD56 400 ///< SONY CXD56 + +// TI MSP430 +#define OPT_MCU_MSP430x5xx 500 ///< TI MSP430x5xx + +// ValentyUSB eptri +#define OPT_MCU_VALENTYUSB_EPTRI 600 ///< Fomu eptri config + +// NXP iMX RT +#define OPT_MCU_MIMXRT10XX 700 ///< NXP iMX RT10xx + +// Nuvoton +#define OPT_MCU_NUC121 800 +#define OPT_MCU_NUC126 801 +#define OPT_MCU_NUC120 802 +#define OPT_MCU_NUC505 803 + +// Espressif +#define OPT_MCU_ESP32S2 900 ///< Espressif ESP32-S2 +#define OPT_MCU_ESP32S3 901 ///< Espressif ESP32-S3 + +// Dialog +#define OPT_MCU_DA1469X 1000 ///< Dialog Semiconductor DA1469x + +// Raspberry Pi +#define OPT_MCU_RP2040 1100 ///< Raspberry Pi RP2040 + +// NXP Kinetis +#define OPT_MCU_MKL25ZXX 1200 ///< NXP MKL25Zxx +#define OPT_MCU_K32L2BXX 1201 ///< NXP K32L2Bxx + +// Silabs +#define OPT_MCU_EFM32GG 1300 ///< Silabs EFM32GG +#define OPT_MCU_EFM32GG11 1301 ///< Silabs EFM32GG11 +#define OPT_MCU_EFM32GG12 1302 ///< Silabs EFM32GG12 + +// Renesas RX +#define OPT_MCU_RX63X 1400 ///< Renesas RX63N/631 +#define OPT_MCU_RX65X 1401 ///< Renesas RX65N/RX651 +#define OPT_MCU_RX72N 1402 ///< Renesas RX72N + +// Mind Motion +#define OPT_MCU_MM32F327X 1500 ///< Mind Motion MM32F327 + +// GigaDevice +#define OPT_MCU_GD32VF103 1600 ///< GigaDevice GD32VF103 + +//--------------------------------------------------------------------+ +// Supported OS +//--------------------------------------------------------------------+ + +#define OPT_OS_NONE 1 ///< No RTOS +#define OPT_OS_FREERTOS 2 ///< FreeRTOS +#define OPT_OS_MYNEWT 3 ///< Mynewt OS +#define OPT_OS_CUSTOM 4 ///< Custom OS is implemented by application +#define OPT_OS_PICO 5 ///< Raspberry Pi Pico SDK +#define OPT_OS_RTTHREAD 6 ///< RT-Thread + +// Allow to use command line to change the config name/location +#ifdef CFG_TUSB_CONFIG_FILE + #include CFG_TUSB_CONFIG_FILE +#else + #include "tusb_config.h" +#endif + +//-------------------------------------------------------------------- +// RootHub Mode Configuration +// CFG_TUSB_RHPORTx_MODE contains operation mode and speed for that port +//-------------------------------------------------------------------- + +// Lower 4-bit is operational mode +#define OPT_MODE_NONE 0x00 ///< Disabled +#define OPT_MODE_DEVICE 0x01 ///< Device Mode +#define OPT_MODE_HOST 0x02 ///< Host Mode + +// Higher 4-bit is max operational speed (corresponding to tusb_speed_t) +#define OPT_MODE_FULL_SPEED 0x00 ///< Max Full Speed +#define OPT_MODE_LOW_SPEED 0x10 ///< Max Low Speed +#define OPT_MODE_HIGH_SPEED 0x20 ///< Max High Speed + + +#ifndef CFG_TUSB_RHPORT0_MODE + #define CFG_TUSB_RHPORT0_MODE OPT_MODE_NONE +#endif + + +#ifndef CFG_TUSB_RHPORT1_MODE + #define CFG_TUSB_RHPORT1_MODE OPT_MODE_NONE +#endif + +#if (((CFG_TUSB_RHPORT0_MODE) & OPT_MODE_HOST ) && ((CFG_TUSB_RHPORT1_MODE) & OPT_MODE_HOST )) || \ + (((CFG_TUSB_RHPORT0_MODE) & OPT_MODE_DEVICE) && ((CFG_TUSB_RHPORT1_MODE) & OPT_MODE_DEVICE)) + #error "TinyUSB currently does not support same modes on more than 1 roothub port" +#endif + +// Which roothub port is configured as host +#define TUH_OPT_RHPORT ( ((CFG_TUSB_RHPORT0_MODE) & OPT_MODE_HOST) ? 0 : (((CFG_TUSB_RHPORT1_MODE) & OPT_MODE_HOST) ? 1 : -1) ) +#define TUSB_OPT_HOST_ENABLED ( TUH_OPT_RHPORT >= 0 ) + +// Which roothub port is configured as device +#define TUD_OPT_RHPORT ( ((CFG_TUSB_RHPORT0_MODE) & OPT_MODE_DEVICE) ? 0 : (((CFG_TUSB_RHPORT1_MODE) & OPT_MODE_DEVICE) ? 1 : -1) ) + +#if TUD_OPT_RHPORT == 0 +#define TUD_OPT_HIGH_SPEED ( (CFG_TUSB_RHPORT0_MODE) & OPT_MODE_HIGH_SPEED ) +#else +#define TUD_OPT_HIGH_SPEED ( (CFG_TUSB_RHPORT1_MODE) & OPT_MODE_HIGH_SPEED ) +#endif + +#define TUSB_OPT_DEVICE_ENABLED ( TUD_OPT_RHPORT >= 0 ) + +//--------------------------------------------------------------------+ +// COMMON OPTIONS +//--------------------------------------------------------------------+ + +// Debug enable to print out error message +#ifndef CFG_TUSB_DEBUG + #define CFG_TUSB_DEBUG 0 +#endif + +// place data in accessible RAM for usb controller +#ifndef CFG_TUSB_MEM_SECTION + #define CFG_TUSB_MEM_SECTION +#endif + +// alignment requirement of buffer used for endpoint transferring +#ifndef CFG_TUSB_MEM_ALIGN + #define CFG_TUSB_MEM_ALIGN TU_ATTR_ALIGNED(4) +#endif + +// OS selection +#ifndef CFG_TUSB_OS + #define CFG_TUSB_OS OPT_OS_NONE +#endif + +#ifndef CFG_TUSB_OS_INC_PATH + #define CFG_TUSB_OS_INC_PATH +#endif + +//-------------------------------------------------------------------- +// DEVICE OPTIONS +//-------------------------------------------------------------------- + +#ifndef CFG_TUD_ENDPOINT0_SIZE + #define CFG_TUD_ENDPOINT0_SIZE 64 +#endif + +#ifndef CFG_TUD_CDC + #define CFG_TUD_CDC 0 +#endif + +#ifndef CFG_TUD_MSC + #define CFG_TUD_MSC 0 +#endif + +#ifndef CFG_TUD_HID + #define CFG_TUD_HID 0 +#endif + +#ifndef CFG_TUD_AUDIO + #define CFG_TUD_AUDIO 0 +#endif + +#ifndef CFG_TUD_VIDEO + #define CFG_TUD_VIDEO 0 +#endif + +#ifndef CFG_TUD_MIDI + #define CFG_TUD_MIDI 0 +#endif + +#ifndef CFG_TUD_VENDOR + #define CFG_TUD_VENDOR 0 +#endif + +#ifndef CFG_TUD_USBTMC + #define CFG_TUD_USBTMC 0 +#endif + +#ifndef CFG_TUD_DFU_RUNTIME + #define CFG_TUD_DFU_RUNTIME 0 +#endif + +#ifndef CFG_TUD_DFU + #define CFG_TUD_DFU 0 +#endif + +#ifndef CFG_TUD_BTH + #define CFG_TUD_BTH 0 +#endif + +#ifndef CFG_TUD_ECM_RNDIS + #ifdef CFG_TUD_NET + #warning "CFG_TUD_NET is renamed to CFG_TUD_ECM_RNDIS" + #define CFG_TUD_ECM_RNDIS CFG_TUD_NET + #else + #define CFG_TUD_ECM_RNDIS 0 + #endif +#endif + +#ifndef CFG_TUD_NCM + #define CFG_TUD_NCM 0 +#endif + +//-------------------------------------------------------------------- +// HOST OPTIONS +//-------------------------------------------------------------------- +#if TUSB_OPT_HOST_ENABLED + #ifndef CFG_TUH_DEVICE_MAX + #define CFG_TUH_DEVICE_MAX 1 + #endif + + #ifndef CFG_TUH_ENUMERATION_BUFSIZE + #define CFG_TUH_ENUMERATION_BUFSIZE 256 + #endif +#endif // TUSB_OPT_HOST_ENABLED + +//------------- CLASS -------------// + +#ifndef CFG_TUH_HUB +#define CFG_TUH_HUB 0 +#endif + +#ifndef CFG_TUH_CDC +#define CFG_TUH_CDC 0 +#endif + +#ifndef CFG_TUH_HID +#define CFG_TUH_HID 0 +#endif + +#ifndef CFG_TUH_MIDI +#define CFG_TUH_MIDI 0 +#endif + +#ifndef CFG_TUH_MSC +#define CFG_TUH_MSC 0 +#endif + +#ifndef CFG_TUH_VENDOR +#define CFG_TUH_VENDOR 0 +#endif + +//--------------------------------------------------------------------+ +// Port Specific +// TUP stand for TinyUSB Port (can be renamed) +//--------------------------------------------------------------------+ + +//------------- Unaligned Memory -------------// + +// ARMv7+ (M3-M7, M23-M33) can access unaligned memory +#if (defined(__ARM_ARCH) && (__ARM_ARCH >= 7)) + #define TUP_ARCH_STRICT_ALIGN 0 +#else + #define TUP_ARCH_STRICT_ALIGN 1 +#endif + +// TUP_MCU_STRICT_ALIGN will overwrite TUP_ARCH_STRICT_ALIGN. +// In case TUP_MCU_STRICT_ALIGN = 1 and TUP_ARCH_STRICT_ALIGN =0, we will not reply on compiler +// to generate unaligned access code. +// LPC_IP3511 Highspeed cannot access unaligned memory on USB_RAM +#if TUD_OPT_HIGH_SPEED && (CFG_TUSB_MCU == OPT_MCU_LPC54XXX || CFG_TUSB_MCU == OPT_MCU_LPC55XX) + #define TUP_MCU_STRICT_ALIGN 1 +#else + #define TUP_MCU_STRICT_ALIGN 0 +#endif + + +//------------------------------------------------------------------ +// Configuration Validation +//------------------------------------------------------------------ +#if CFG_TUD_ENDPOINT0_SIZE > 64 + #error Control Endpoint Max Packet Size cannot be larger than 64 +#endif + +#endif /* _TUSB_OPTION_H_ */ + +/** @} */ diff --git a/arkanoid/pico/tinyusb/tusb_timeout.h b/arkanoid/pico/tinyusb/tusb_timeout.h new file mode 100644 index 0000000..ce53955 --- /dev/null +++ b/arkanoid/pico/tinyusb/tusb_timeout.h @@ -0,0 +1,80 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +/** \ingroup Group_Common Common Files + * \defgroup Group_TimeoutTimer timeout timer + * @{ */ + +#ifndef _TUSB_TIMEOUT_H_ +#define _TUSB_TIMEOUT_H_ + +#include <stdbool.h> +#include <stdint.h> + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + uint32_t start; + uint32_t interval; +}tu_timeout_t; + +#if 0 + +extern uint32_t tusb_hal_millis(void); + +static inline void tu_timeout_set(tu_timeout_t* tt, uint32_t msec) +{ + tt->interval = msec; + tt->start = tusb_hal_millis(); +} + +static inline bool tu_timeout_expired(tu_timeout_t* tt) +{ + return ( tusb_hal_millis() - tt->start ) >= tt->interval; +} + +// For used with periodic event to prevent drift +static inline void tu_timeout_reset(tu_timeout_t* tt) +{ + tt->start += tt->interval; +} + +static inline void tu_timeout_restart(tu_timeout_t* tt) +{ + tt->start = tusb_hal_millis(); +} + +#endif + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_TIMEOUT_H_ */ + +/** @} */ diff --git a/arkanoid/pico/tinyusb/tusb_types.h b/arkanoid/pico/tinyusb/tusb_types.h new file mode 100644 index 0000000..897e89b --- /dev/null +++ b/arkanoid/pico/tinyusb/tusb_types.h @@ -0,0 +1,549 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +/** \ingroup group_usb_definitions + * \defgroup USBDef_Type USB Types + * @{ */ + +#ifndef _TUSB_TYPES_H_ +#define _TUSB_TYPES_H_ + +#include <stdbool.h> +#include <stdint.h> +#include "tusb_compiler.h" + +#ifdef __cplusplus + extern "C" { +#endif + +/*------------------------------------------------------------------*/ +/* CONSTANTS + *------------------------------------------------------------------*/ + +/// defined base on EHCI specs value for Endpoint Speed +typedef enum +{ + TUSB_SPEED_FULL = 0, + TUSB_SPEED_LOW , + TUSB_SPEED_HIGH, + TUSB_SPEED_INVALID = 0xff, +}tusb_speed_t; + +/// defined base on USB Specs Endpoint's bmAttributes +typedef enum +{ + TUSB_XFER_CONTROL = 0 , + TUSB_XFER_ISOCHRONOUS , + TUSB_XFER_BULK , + TUSB_XFER_INTERRUPT +}tusb_xfer_type_t; + +typedef enum +{ + TUSB_DIR_OUT = 0, + TUSB_DIR_IN = 1, + + TUSB_DIR_IN_MASK = 0x80 +}tusb_dir_t; + +/// Isochronous End Point Attributes +typedef enum +{ + TUSB_ISO_EP_ATT_NO_SYNC = 0x00, + TUSB_ISO_EP_ATT_ASYNCHRONOUS = 0x04, + TUSB_ISO_EP_ATT_ADAPTIVE = 0x08, + TUSB_ISO_EP_ATT_SYNCHRONOUS = 0x0C, + TUSB_ISO_EP_ATT_DATA = 0x00, ///< Data End Point + TUSB_ISO_EP_ATT_EXPLICIT_FB = 0x10, ///< Feedback End Point + TUSB_ISO_EP_ATT_IMPLICIT_FB = 0x20, ///< Data endpoint that also serves as an implicit feedback +}tusb_iso_ep_attribute_t; + +/// USB Descriptor Types +typedef enum +{ + TUSB_DESC_DEVICE = 0x01, + TUSB_DESC_CONFIGURATION = 0x02, + TUSB_DESC_STRING = 0x03, + TUSB_DESC_INTERFACE = 0x04, + TUSB_DESC_ENDPOINT = 0x05, + TUSB_DESC_DEVICE_QUALIFIER = 0x06, + TUSB_DESC_OTHER_SPEED_CONFIG = 0x07, + TUSB_DESC_INTERFACE_POWER = 0x08, + TUSB_DESC_OTG = 0x09, + TUSB_DESC_DEBUG = 0x0A, + TUSB_DESC_INTERFACE_ASSOCIATION = 0x0B, + + TUSB_DESC_BOS = 0x0F, + TUSB_DESC_DEVICE_CAPABILITY = 0x10, + + TUSB_DESC_FUNCTIONAL = 0x21, + + // Class Specific Descriptor + TUSB_DESC_CS_DEVICE = 0x21, + TUSB_DESC_CS_CONFIGURATION = 0x22, + TUSB_DESC_CS_STRING = 0x23, + TUSB_DESC_CS_INTERFACE = 0x24, + TUSB_DESC_CS_ENDPOINT = 0x25, + + TUSB_DESC_SUPERSPEED_ENDPOINT_COMPANION = 0x30, + TUSB_DESC_SUPERSPEED_ISO_ENDPOINT_COMPANION = 0x31 +}tusb_desc_type_t; + +typedef enum +{ + TUSB_REQ_GET_STATUS = 0 , + TUSB_REQ_CLEAR_FEATURE = 1 , + TUSB_REQ_RESERVED = 2 , + TUSB_REQ_SET_FEATURE = 3 , + TUSB_REQ_RESERVED2 = 4 , + TUSB_REQ_SET_ADDRESS = 5 , + TUSB_REQ_GET_DESCRIPTOR = 6 , + TUSB_REQ_SET_DESCRIPTOR = 7 , + TUSB_REQ_GET_CONFIGURATION = 8 , + TUSB_REQ_SET_CONFIGURATION = 9 , + TUSB_REQ_GET_INTERFACE = 10 , + TUSB_REQ_SET_INTERFACE = 11 , + TUSB_REQ_SYNCH_FRAME = 12 +}tusb_request_code_t; + +typedef enum +{ + TUSB_REQ_FEATURE_EDPT_HALT = 0, + TUSB_REQ_FEATURE_REMOTE_WAKEUP = 1, + TUSB_REQ_FEATURE_TEST_MODE = 2 +}tusb_request_feature_selector_t; + +typedef enum +{ + TUSB_REQ_TYPE_STANDARD = 0, + TUSB_REQ_TYPE_CLASS, + TUSB_REQ_TYPE_VENDOR, + TUSB_REQ_TYPE_INVALID +} tusb_request_type_t; + +typedef enum +{ + TUSB_REQ_RCPT_DEVICE =0, + TUSB_REQ_RCPT_INTERFACE, + TUSB_REQ_RCPT_ENDPOINT, + TUSB_REQ_RCPT_OTHER +} tusb_request_recipient_t; + +// https://www.usb.org/defined-class-codes +typedef enum +{ + TUSB_CLASS_UNSPECIFIED = 0 , + TUSB_CLASS_AUDIO = 1 , + TUSB_CLASS_CDC = 2 , + TUSB_CLASS_HID = 3 , + TUSB_CLASS_RESERVED_4 = 4 , + TUSB_CLASS_PHYSICAL = 5 , + TUSB_CLASS_IMAGE = 6 , + TUSB_CLASS_PRINTER = 7 , + TUSB_CLASS_MSC = 8 , + TUSB_CLASS_HUB = 9 , + TUSB_CLASS_CDC_DATA = 10 , + TUSB_CLASS_SMART_CARD = 11 , + TUSB_CLASS_RESERVED_12 = 12 , + TUSB_CLASS_CONTENT_SECURITY = 13 , + TUSB_CLASS_VIDEO = 14 , + TUSB_CLASS_PERSONAL_HEALTHCARE = 15 , + TUSB_CLASS_AUDIO_VIDEO = 16 , + + TUSB_CLASS_DIAGNOSTIC = 0xDC , + TUSB_CLASS_WIRELESS_CONTROLLER = 0xE0 , + TUSB_CLASS_MISC = 0xEF , + TUSB_CLASS_APPLICATION_SPECIFIC = 0xFE , + TUSB_CLASS_VENDOR_SPECIFIC = 0xFF +}tusb_class_code_t; + +typedef enum +{ + MISC_SUBCLASS_COMMON = 2 +}misc_subclass_type_t; + +typedef enum +{ + MISC_PROTOCOL_IAD = 1 +}misc_protocol_type_t; + +typedef enum +{ + APP_SUBCLASS_USBTMC = 0x03, + APP_SUBCLASS_DFU_RUNTIME = 0x01 +} app_subclass_type_t; + +typedef enum +{ + DEVICE_CAPABILITY_WIRELESS_USB = 0x01, + DEVICE_CAPABILITY_USB20_EXTENSION = 0x02, + DEVICE_CAPABILITY_SUPERSPEED_USB = 0x03, + DEVICE_CAPABILITY_CONTAINER_id = 0x04, + DEVICE_CAPABILITY_PLATFORM = 0x05, + DEVICE_CAPABILITY_POWER_DELIVERY = 0x06, + DEVICE_CAPABILITY_BATTERY_INFO = 0x07, + DEVICE_CAPABILITY_PD_CONSUMER_PORT = 0x08, + DEVICE_CAPABILITY_PD_PROVIDER_PORT = 0x09, + DEVICE_CAPABILITY_SUPERSPEED_PLUS = 0x0A, + DEVICE_CAPABILITY_PRECESION_TIME_MEASUREMENT = 0x0B, + DEVICE_CAPABILITY_WIRELESS_USB_EXT = 0x0C, + DEVICE_CAPABILITY_BILLBOARD = 0x0D, + DEVICE_CAPABILITY_AUTHENTICATION = 0x0E, + DEVICE_CAPABILITY_BILLBOARD_EX = 0x0F, + DEVICE_CAPABILITY_CONFIGURATION_SUMMARY = 0x10 +}device_capability_type_t; + +enum { + TUSB_DESC_CONFIG_ATT_REMOTE_WAKEUP = TU_BIT(5), + TUSB_DESC_CONFIG_ATT_SELF_POWERED = TU_BIT(6), +}; + +#define TUSB_DESC_CONFIG_POWER_MA(x) ((x)/2) + +/// Device State TODO remove +typedef enum +{ + TUSB_DEVICE_STATE_UNPLUG = 0 , + TUSB_DEVICE_STATE_CONFIGURED , + TUSB_DEVICE_STATE_SUSPENDED , +}tusb_device_state_t; + +typedef enum +{ + XFER_RESULT_SUCCESS, + XFER_RESULT_FAILED, + XFER_RESULT_STALLED, +}xfer_result_t; + +enum // TODO remove +{ + DESC_OFFSET_LEN = 0, + DESC_OFFSET_TYPE = 1 +}; + +enum +{ + INTERFACE_INVALID_NUMBER = 0xff +}; + + +typedef enum +{ + MS_OS_20_SET_HEADER_DESCRIPTOR = 0x00, + MS_OS_20_SUBSET_HEADER_CONFIGURATION = 0x01, + MS_OS_20_SUBSET_HEADER_FUNCTION = 0x02, + MS_OS_20_FEATURE_COMPATBLE_ID = 0x03, + MS_OS_20_FEATURE_REG_PROPERTY = 0x04, + MS_OS_20_FEATURE_MIN_RESUME_TIME = 0x05, + MS_OS_20_FEATURE_MODEL_ID = 0x06, + MS_OS_20_FEATURE_CCGP_DEVICE = 0x07, + MS_OS_20_FEATURE_VENDOR_REVISION = 0x08 +} microsoft_os_20_type_t; + +enum +{ + CONTROL_STAGE_SETUP, + CONTROL_STAGE_DATA, + CONTROL_STAGE_ACK +}; + +//--------------------------------------------------------------------+ +// USB Descriptors +//--------------------------------------------------------------------+ + +// Start of all packed definitions for compiler without per-type packed +TU_ATTR_PACKED_BEGIN +TU_ATTR_BIT_FIELD_ORDER_BEGIN + +/// USB Device Descriptor +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength ; ///< Size of this descriptor in bytes. + uint8_t bDescriptorType ; ///< DEVICE Descriptor Type. + uint16_t bcdUSB ; ///< BUSB Specification Release Number in Binary-Coded Decimal (i.e., 2.10 is 210H). This field identifies the release of the USB Specification with which the device and its descriptors are compliant. + + uint8_t bDeviceClass ; ///< Class code (assigned by the USB-IF). \li If this field is reset to zero, each interface within a configuration specifies its own class information and the various interfaces operate independently. \li If this field is set to a value between 1 and FEH, the device supports different class specifications on different interfaces and the interfaces may not operate independently. This value identifies the class definition used for the aggregate interfaces. \li If this field is set to FFH, the device class is vendor-specific. + uint8_t bDeviceSubClass ; ///< Subclass code (assigned by the USB-IF). These codes are qualified by the value of the bDeviceClass field. \li If the bDeviceClass field is reset to zero, this field must also be reset to zero. \li If the bDeviceClass field is not set to FFH, all values are reserved for assignment by the USB-IF. + uint8_t bDeviceProtocol ; ///< Protocol code (assigned by the USB-IF). These codes are qualified by the value of the bDeviceClass and the bDeviceSubClass fields. If a device supports class-specific protocols on a device basis as opposed to an interface basis, this code identifies the protocols that the device uses as defined by the specification of the device class. \li If this field is reset to zero, the device does not use class-specific protocols on a device basis. However, it may use classspecific protocols on an interface basis. \li If this field is set to FFH, the device uses a vendor-specific protocol on a device basis. + uint8_t bMaxPacketSize0 ; ///< Maximum packet size for endpoint zero (only 8, 16, 32, or 64 are valid). For HS devices is fixed to 64. + + uint16_t idVendor ; ///< Vendor ID (assigned by the USB-IF). + uint16_t idProduct ; ///< Product ID (assigned by the manufacturer). + uint16_t bcdDevice ; ///< Device release number in binary-coded decimal. + uint8_t iManufacturer ; ///< Index of string descriptor describing manufacturer. + uint8_t iProduct ; ///< Index of string descriptor describing product. + uint8_t iSerialNumber ; ///< Index of string descriptor describing the device's serial number. + + uint8_t bNumConfigurations ; ///< Number of possible configurations. +} tusb_desc_device_t; + +TU_VERIFY_STATIC( sizeof(tusb_desc_device_t) == 18, "size is not correct"); + +// USB Binary Device Object Store (BOS) Descriptor +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength ; ///< Size of this descriptor in bytes + uint8_t bDescriptorType ; ///< CONFIGURATION Descriptor Type + uint16_t wTotalLength ; ///< Total length of data returned for this descriptor + uint8_t bNumDeviceCaps ; ///< Number of device capability descriptors in the BOS +} tusb_desc_bos_t; + +TU_VERIFY_STATIC( sizeof(tusb_desc_bos_t) == 5, "size is not correct"); + +/// USB Configuration Descriptor +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength ; ///< Size of this descriptor in bytes + uint8_t bDescriptorType ; ///< CONFIGURATION Descriptor Type + uint16_t wTotalLength ; ///< Total length of data returned for this configuration. Includes the combined length of all descriptors (configuration, interface, endpoint, and class- or vendor-specific) returned for this configuration. + + uint8_t bNumInterfaces ; ///< Number of interfaces supported by this configuration + uint8_t bConfigurationValue ; ///< Value to use as an argument to the SetConfiguration() request to select this configuration. + uint8_t iConfiguration ; ///< Index of string descriptor describing this configuration + uint8_t bmAttributes ; ///< Configuration characteristics \n D7: Reserved (set to one)\n D6: Self-powered \n D5: Remote Wakeup \n D4...0: Reserved (reset to zero) \n D7 is reserved and must be set to one for historical reasons. \n A device configuration that uses power from the bus and a local source reports a non-zero value in bMaxPower to indicate the amount of bus power required and sets D6. The actual power source at runtime may be determined using the GetStatus(DEVICE) request (see USB 2.0 spec Section 9.4.5). \n If a device configuration supports remote wakeup, D5 is set to one. + uint8_t bMaxPower ; ///< Maximum power consumption of the USB device from the bus in this specific configuration when the device is fully operational. Expressed in 2 mA units (i.e., 50 = 100 mA). +} tusb_desc_configuration_t; + +TU_VERIFY_STATIC( sizeof(tusb_desc_configuration_t) == 9, "size is not correct"); + +/// USB Interface Descriptor +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength ; ///< Size of this descriptor in bytes + uint8_t bDescriptorType ; ///< INTERFACE Descriptor Type + + uint8_t bInterfaceNumber ; ///< Number of this interface. Zero-based value identifying the index in the array of concurrent interfaces supported by this configuration. + uint8_t bAlternateSetting ; ///< Value used to select this alternate setting for the interface identified in the prior field + uint8_t bNumEndpoints ; ///< Number of endpoints used by this interface (excluding endpoint zero). If this value is zero, this interface only uses the Default Control Pipe. + uint8_t bInterfaceClass ; ///< Class code (assigned by the USB-IF). \li A value of zero is reserved for future standardization. \li If this field is set to FFH, the interface class is vendor-specific. \li All other values are reserved for assignment by the USB-IF. + uint8_t bInterfaceSubClass ; ///< Subclass code (assigned by the USB-IF). \n These codes are qualified by the value of the bInterfaceClass field. \li If the bInterfaceClass field is reset to zero, this field must also be reset to zero. \li If the bInterfaceClass field is not set to FFH, all values are reserved for assignment by the USB-IF. + uint8_t bInterfaceProtocol ; ///< Protocol code (assigned by the USB). \n These codes are qualified by the value of the bInterfaceClass and the bInterfaceSubClass fields. If an interface supports class-specific requests, this code identifies the protocols that the device uses as defined by the specification of the device class. \li If this field is reset to zero, the device does not use a class-specific protocol on this interface. \li If this field is set to FFH, the device uses a vendor-specific protocol for this interface. + uint8_t iInterface ; ///< Index of string descriptor describing this interface +} tusb_desc_interface_t; + +TU_VERIFY_STATIC( sizeof(tusb_desc_interface_t) == 9, "size is not correct"); + +/// USB Endpoint Descriptor +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength ; ///< Size of this descriptor in bytes + uint8_t bDescriptorType ; ///< ENDPOINT Descriptor Type + + uint8_t bEndpointAddress ; ///< The address of the endpoint on the USB device described by this descriptor. The address is encoded as follows: \n Bit 3...0: The endpoint number \n Bit 6...4: Reserved, reset to zero \n Bit 7: Direction, ignored for control endpoints 0 = OUT endpoint 1 = IN endpoint. + + struct TU_ATTR_PACKED { + uint8_t xfer : 2; + uint8_t sync : 2; + uint8_t usage : 2; + uint8_t : 2; + } bmAttributes ; ///< This field describes the endpoint's attributes when it is configured using the bConfigurationValue. \n Bits 1..0: Transfer Type \n- 00 = Control \n- 01 = Isochronous \n- 10 = Bulk \n- 11 = Interrupt \n If not an isochronous endpoint, bits 5..2 are reserved and must be set to zero. If isochronous, they are defined as follows: \n Bits 3..2: Synchronization Type \n- 00 = No Synchronization \n- 01 = Asynchronous \n- 10 = Adaptive \n- 11 = Synchronous \n Bits 5..4: Usage Type \n- 00 = Data endpoint \n- 01 = Feedback endpoint \n- 10 = Implicit feedback Data endpoint \n- 11 = Reserved \n Refer to Chapter 5 of USB 2.0 specification for more information. \n All other bits are reserved and must be reset to zero. Reserved bits must be ignored by the host. + + struct TU_ATTR_PACKED { +#if defined(__CCRX__) + //FIXME the original defined bit field has a problem with the CCRX toolchain, so only a size field is defined + uint16_t size; +#else + uint16_t size : 11; ///< Maximum packet size this endpoint is capable of sending or receiving when this configuration is selected. \n For isochronous endpoints, this value is used to reserve the bus time in the schedule, required for the per-(micro)frame data payloads. The pipe may, on an ongoing basis, actually use less bandwidth than that reserved. The device reports, if necessary, the actual bandwidth used via its normal, non-USB defined mechanisms. \n For all endpoints, bits 10..0 specify the maximum packet size (in bytes). \n For high-speed isochronous and interrupt endpoints: \n Bits 12..11 specify the number of additional transaction opportunities per microframe: \n- 00 = None (1 transaction per microframe) \n- 01 = 1 additional (2 per microframe) \n- 10 = 2 additional (3 per microframe) \n- 11 = Reserved \n Bits 15..13 are reserved and must be set to zero. + uint16_t hs_period_mult : 2; + uint16_t TU_RESERVED : 3; +#endif + }wMaxPacketSize; + + uint8_t bInterval ; ///< Interval for polling endpoint for data transfers. Expressed in frames or microframes depending on the device operating speed (i.e., either 1 millisecond or 125 us units). \n- For full-/high-speed isochronous endpoints, this value must be in the range from 1 to 16. The bInterval value is used as the exponent for a \f$ 2^(bInterval-1) \f$ value; e.g., a bInterval of 4 means a period of 8 (\f$ 2^(4-1) \f$). \n- For full-/low-speed interrupt endpoints, the value of this field may be from 1 to 255. \n- For high-speed interrupt endpoints, the bInterval value is used as the exponent for a \f$ 2^(bInterval-1) \f$ value; e.g., a bInterval of 4 means a period of 8 (\f$ 2^(4-1) \f$) . This value must be from 1 to 16. \n- For high-speed bulk/control OUT endpoints, the bInterval must specify the maximum NAK rate of the endpoint. A value of 0 indicates the endpoint never NAKs. Other values indicate at most 1 NAK each bInterval number of microframes. This value must be in the range from 0 to 255. \n Refer to Chapter 5 of USB 2.0 specification for more information. +} tusb_desc_endpoint_t; + +/// USB Other Speed Configuration Descriptor +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength ; ///< Size of descriptor + uint8_t bDescriptorType ; ///< Other_speed_Configuration Type + uint16_t wTotalLength ; ///< Total length of data returned + + uint8_t bNumInterfaces ; ///< Number of interfaces supported by this speed configuration + uint8_t bConfigurationValue ; ///< Value to use to select configuration + uint8_t iConfiguration ; ///< Index of string descriptor + uint8_t bmAttributes ; ///< Same as Configuration descriptor + uint8_t bMaxPower ; ///< Same as Configuration descriptor +} tusb_desc_other_speed_t; + +/// USB Device Qualifier Descriptor +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength ; ///< Size of descriptor + uint8_t bDescriptorType ; ///< Device Qualifier Type + uint16_t bcdUSB ; ///< USB specification version number (e.g., 0200H for V2.00) + + uint8_t bDeviceClass ; ///< Class Code + uint8_t bDeviceSubClass ; ///< SubClass Code + uint8_t bDeviceProtocol ; ///< Protocol Code + + uint8_t bMaxPacketSize0 ; ///< Maximum packet size for other speed + uint8_t bNumConfigurations ; ///< Number of Other-speed Configurations + uint8_t bReserved ; ///< Reserved for future use, must be zero +} tusb_desc_device_qualifier_t; + +TU_VERIFY_STATIC( sizeof(tusb_desc_device_qualifier_t) == 10, "size is not correct"); + +/// USB Interface Association Descriptor (IAD ECN) +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength ; ///< Size of descriptor + uint8_t bDescriptorType ; ///< Other_speed_Configuration Type + + uint8_t bFirstInterface ; ///< Index of the first associated interface. + uint8_t bInterfaceCount ; ///< Total number of associated interfaces. + + uint8_t bFunctionClass ; ///< Interface class ID. + uint8_t bFunctionSubClass ; ///< Interface subclass ID. + uint8_t bFunctionProtocol ; ///< Interface protocol ID. + + uint8_t iFunction ; ///< Index of the string descriptor describing the interface association. +} tusb_desc_interface_assoc_t; + +// USB String Descriptor +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength ; ///< Size of this descriptor in bytes + uint8_t bDescriptorType ; ///< Descriptor Type + uint16_t unicode_string[]; +} tusb_desc_string_t; + +// USB Binary Device Object Store (BOS) +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength; + uint8_t bDescriptorType ; + uint8_t bDevCapabilityType; + uint8_t bReserved; + uint8_t PlatformCapabilityUUID[16]; + uint8_t CapabilityData[]; +} tusb_desc_bos_platform_t; + +// USB WebuSB URL Descriptor +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bScheme; + char url[]; +} tusb_desc_webusb_url_t; + +// DFU Functional Descriptor +typedef struct TU_ATTR_PACKED +{ + uint8_t bLength; + uint8_t bDescriptorType; + + union { + struct TU_ATTR_PACKED { + uint8_t bitCanDnload : 1; + uint8_t bitCanUpload : 1; + uint8_t bitManifestationTolerant : 1; + uint8_t bitWillDetach : 1; + uint8_t reserved : 4; + } bmAttributes; + + uint8_t bAttributes; + }; + + uint16_t wDetachTimeOut; + uint16_t wTransferSize; + uint16_t bcdDFUVersion; +} tusb_desc_dfu_functional_t; + +/*------------------------------------------------------------------*/ +/* Types + *------------------------------------------------------------------*/ +typedef struct TU_ATTR_PACKED{ + union { + struct TU_ATTR_PACKED { + uint8_t recipient : 5; ///< Recipient type tusb_request_recipient_t. + uint8_t type : 2; ///< Request type tusb_request_type_t. + uint8_t direction : 1; ///< Direction type. tusb_dir_t + } bmRequestType_bit; + + uint8_t bmRequestType; + }; + + uint8_t bRequest; + uint16_t wValue; + uint16_t wIndex; + uint16_t wLength; +} tusb_control_request_t; + +TU_VERIFY_STATIC( sizeof(tusb_control_request_t) == 8, "size is not correct"); + + +TU_ATTR_PACKED_END // End of all packed definitions +TU_ATTR_BIT_FIELD_ORDER_END + +//--------------------------------------------------------------------+ +// Endpoint helper +//--------------------------------------------------------------------+ + +// Get direction from Endpoint address +static inline tusb_dir_t tu_edpt_dir(uint8_t addr) +{ + return (addr & TUSB_DIR_IN_MASK) ? TUSB_DIR_IN : TUSB_DIR_OUT; +} + +// Get Endpoint number from address +static inline uint8_t tu_edpt_number(uint8_t addr) +{ + return (uint8_t)(addr & (~TUSB_DIR_IN_MASK)); +} + +static inline uint8_t tu_edpt_addr(uint8_t num, uint8_t dir) +{ + return (uint8_t)(num | (dir ? TUSB_DIR_IN_MASK : 0)); +} + +//--------------------------------------------------------------------+ +// Descriptor helper +//--------------------------------------------------------------------+ +static inline uint8_t const * tu_desc_next(void const* desc) +{ + uint8_t const* desc8 = (uint8_t const*) desc; + return desc8 + desc8[DESC_OFFSET_LEN]; +} + +static inline uint8_t tu_desc_type(void const* desc) +{ + return ((uint8_t const*) desc)[DESC_OFFSET_TYPE]; +} + +static inline uint8_t tu_desc_len(void const* desc) +{ + return ((uint8_t const*) desc)[DESC_OFFSET_LEN]; +} + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_TYPES_H_ */ + +/** @} */ diff --git a/arkanoid/pico/tinyusb/tusb_verify.h b/arkanoid/pico/tinyusb/tusb_verify.h new file mode 100644 index 0000000..56ba8bc --- /dev/null +++ b/arkanoid/pico/tinyusb/tusb_verify.h @@ -0,0 +1,181 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ +#ifndef TUSB_VERIFY_H_ +#define TUSB_VERIFY_H_ + +#include <stdbool.h> +#include <stdint.h> +#include "tusb_option.h" +#include "tusb_compiler.h" + +/*------------------------------------------------------------------*/ +/* This file use an advanced macro technique to mimic the default parameter + * as C++ for the sake of code simplicity. Beware of a headache macro + * manipulation that you are told to stay away. + * + * This contains macros for both VERIFY and ASSERT: + * + * VERIFY: Used when there is an error condition which is not the + * fault of the MCU. For example, bounds checking on data + * sent to the micro over USB should use this function. + * Another example is checking for buffer overflows, where + * returning from the active function causes a NAK. + * + * ASSERT: Used for error conditions that are caused by MCU firmware + * bugs. This is used to discover bugs in the code more + * quickly. One example would be adding assertions in library + * function calls to confirm a function's (untainted) + * parameters are valid. + * + * The difference in behavior is that ASSERT triggers a breakpoint while + * verify does not. + * + * #define TU_VERIFY(cond) if(cond) return false; + * #define TU_VERIFY(cond,ret) if(cond) return ret; + * + * #define TU_VERIFY_HDLR(cond,handler) if(cond) {handler; return false;} + * #define TU_VERIFY_HDLR(cond,ret,handler) if(cond) {handler; return ret;} + * + * #define TU_ASSERT(cond) if(cond) {_MESS_FAILED(); TU_BREAKPOINT(), return false;} + * #define TU_ASSERT(cond,ret) if(cond) {_MESS_FAILED(); TU_BREAKPOINT(), return ret;} + * + *------------------------------------------------------------------*/ + +#ifdef __cplusplus + extern "C" { +#endif + +//--------------------------------------------------------------------+ +// TU_VERIFY Helper +//--------------------------------------------------------------------+ + +#if CFG_TUSB_DEBUG + #include <stdio.h> + #define _MESS_ERR(_err) tu_printf("%s %d: failed, error = %s\r\n", __func__, __LINE__, tusb_strerr[_err]) + #define _MESS_FAILED() tu_printf("%s %d: ASSERT FAILED\r\n", __func__, __LINE__) +#else + #define _MESS_ERR(_err) do {} while (0) + #define _MESS_FAILED() do {} while (0) +#endif + +// Halt CPU (breakpoint) when hitting error, only apply for Cortex M3, M4, M7 +#if defined(__ARM_ARCH_7M__) || defined (__ARM_ARCH_7EM__) + #define TU_BREAKPOINT() do \ + { \ + volatile uint32_t* ARM_CM_DHCSR = ((volatile uint32_t*) 0xE000EDF0UL); /* Cortex M CoreDebug->DHCSR */ \ + if ( (*ARM_CM_DHCSR) & 1UL ) __asm("BKPT #0\n"); /* Only halt mcu if debugger is attached */ \ + } while(0) + +#elif defined(__riscv) + #define TU_BREAKPOINT() do { __asm("ebreak\n"); } while(0) + +#else + #define TU_BREAKPOINT() do {} while (0) +#endif + +/*------------------------------------------------------------------*/ +/* Macro Generator + *------------------------------------------------------------------*/ + +// Helper to implement optional parameter for TU_VERIFY Macro family +#define GET_3RD_ARG(arg1, arg2, arg3, ...) arg3 +#define GET_4TH_ARG(arg1, arg2, arg3, arg4, ...) arg4 + +/*------------- Generator for TU_VERIFY and TU_VERIFY_HDLR -------------*/ +#define TU_VERIFY_DEFINE(_cond, _handler, _ret) do \ +{ \ + if ( !(_cond) ) { _handler; return _ret; } \ +} while(0) + +/*------------------------------------------------------------------*/ +/* TU_VERIFY + * - TU_VERIFY_1ARGS : return false if failed + * - TU_VERIFY_2ARGS : return provided value if failed + *------------------------------------------------------------------*/ +#define TU_VERIFY_1ARGS(_cond) TU_VERIFY_DEFINE(_cond, , false) +#define TU_VERIFY_2ARGS(_cond, _ret) TU_VERIFY_DEFINE(_cond, , _ret) + +#define TU_VERIFY(...) GET_3RD_ARG(__VA_ARGS__, TU_VERIFY_2ARGS, TU_VERIFY_1ARGS, UNUSED)(__VA_ARGS__) + + +/*------------------------------------------------------------------*/ +/* TU_VERIFY WITH HANDLER + * - TU_VERIFY_HDLR_2ARGS : execute handler, return false if failed + * - TU_VERIFY_HDLR_3ARGS : execute handler, return provided error if failed + *------------------------------------------------------------------*/ +#define TU_VERIFY_HDLR_2ARGS(_cond, _handler) TU_VERIFY_DEFINE(_cond, _handler, false) +#define TU_VERIFY_HDLR_3ARGS(_cond, _handler, _ret) TU_VERIFY_DEFINE(_cond, _handler, _ret) + +#define TU_VERIFY_HDLR(...) GET_4TH_ARG(__VA_ARGS__, TU_VERIFY_HDLR_3ARGS, TU_VERIFY_HDLR_2ARGS,UNUSED)(__VA_ARGS__) + +/*------------------------------------------------------------------*/ +/* ASSERT + * basically TU_VERIFY with TU_BREAKPOINT() as handler + * - 1 arg : return false if failed + * - 2 arg : return error if failed + *------------------------------------------------------------------*/ +#define ASSERT_1ARGS(_cond) TU_VERIFY_DEFINE(_cond, _MESS_FAILED(); TU_BREAKPOINT(), false) +#define ASSERT_2ARGS(_cond, _ret) TU_VERIFY_DEFINE(_cond, _MESS_FAILED(); TU_BREAKPOINT(), _ret) + +#ifndef TU_ASSERT +#define TU_ASSERT(...) GET_3RD_ARG(__VA_ARGS__, ASSERT_2ARGS, ASSERT_1ARGS,UNUSED)(__VA_ARGS__) +#endif + +// TODO remove TU_ASSERT_ERR() later + +/*------------- Generator for TU_VERIFY_ERR and TU_VERIFY_ERR_HDLR -------------*/ +#define TU_VERIFY_ERR_DEF2(_error, _handler) do \ +{ \ + uint32_t _err = (uint32_t)(_error); \ + if ( 0 != _err ) { _MESS_ERR(_err); _handler; return _err; } \ +} while(0) + +#define TU_VERIFY_ERR_DEF3(_error, _handler, _ret) do \ +{ \ + uint32_t _err = (uint32_t)(_error); \ + if ( 0 != _err ) { _MESS_ERR(_err); _handler; return _ret; } \ +} while(0) + +/*------------------------------------------------------------------*/ +/* ASSERT Error + * basically TU_VERIFY Error with TU_BREAKPOINT() as handler + *------------------------------------------------------------------*/ +#define ASSERT_ERR_1ARGS(_error) TU_VERIFY_ERR_DEF2(_error, TU_BREAKPOINT()) +#define ASSERT_ERR_2ARGS(_error, _ret) TU_VERIFY_ERR_DEF3(_error, TU_BREAKPOINT(), _ret) + +#ifndef TU_ASSERT_ERR +#define TU_ASSERT_ERR(...) GET_3RD_ARG(__VA_ARGS__, ASSERT_ERR_2ARGS, ASSERT_ERR_1ARGS,UNUSED)(__VA_ARGS__) +#endif + +/*------------------------------------------------------------------*/ +/* ASSERT HDLR + *------------------------------------------------------------------*/ + +#ifdef __cplusplus + } +#endif + +#endif /* TUSB_VERIFY_H_ */ diff --git a/arkanoid/pico/tinyusb/usbd.c b/arkanoid/pico/tinyusb/usbd.c new file mode 100644 index 0000000..dacaafa --- /dev/null +++ b/arkanoid/pico/tinyusb/usbd.c @@ -0,0 +1,1416 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#include "tusb_option.h" + +#if TUSB_OPT_DEVICE_ENABLED + +#include "tusb.h" +#include "usbd.h" +#include "usbd_pvt.h" +#include "dcd.h" // TODO was dcd.h + +//--------------------------------------------------------------------+ +// USBD Configuration +//--------------------------------------------------------------------+ + +// Debug level of USBD +#define USBD_DBG 2 + +#ifndef CFG_TUD_TASK_QUEUE_SZ + #define CFG_TUD_TASK_QUEUE_SZ 16 +#endif + +//--------------------------------------------------------------------+ +// Device Data +//--------------------------------------------------------------------+ + +// Invalid driver ID in itf2drv[] ep2drv[][] mapping +enum { DRVID_INVALID = 0xFFu }; + +typedef struct +{ + struct TU_ATTR_PACKED + { + volatile uint8_t connected : 1; + volatile uint8_t addressed : 1; + volatile uint8_t suspended : 1; + + uint8_t remote_wakeup_en : 1; // enable/disable by host + uint8_t remote_wakeup_support : 1; // configuration descriptor's attribute + uint8_t self_powered : 1; // configuration descriptor's attribute + }; + + volatile uint8_t cfg_num; // current active configuration (0x00 is not configured) + uint8_t speed; + + uint8_t itf2drv[16]; // map interface number to driver (0xff is invalid) + uint8_t ep2drv[CFG_TUD_ENDPPOINT_MAX][2]; // map endpoint to driver ( 0xff is invalid ) + + struct TU_ATTR_PACKED + { + volatile bool busy : 1; + volatile bool stalled : 1; + volatile bool claimed : 1; + + // TODO merge ep2drv here, 4-bit should be sufficient + }ep_status[CFG_TUD_ENDPPOINT_MAX][2]; + +}usbd_device_t; + +static usbd_device_t _usbd_dev; + +//--------------------------------------------------------------------+ +// Class Driver +//--------------------------------------------------------------------+ +#if CFG_TUSB_DEBUG >= 2 + #define DRIVER_NAME(_name) .name = _name, +#else + #define DRIVER_NAME(_name) +#endif + +// Built-in class drivers +static usbd_class_driver_t const _usbd_driver[] = +{ + #if CFG_TUD_CDC + { + DRIVER_NAME("CDC") + .init = cdcd_init, + .reset = cdcd_reset, + .open = cdcd_open, + .control_xfer_cb = cdcd_control_xfer_cb, + .xfer_cb = cdcd_xfer_cb, + .sof = NULL + }, + #endif + + #if CFG_TUD_MSC + { + DRIVER_NAME("MSC") + .init = mscd_init, + .reset = mscd_reset, + .open = mscd_open, + .control_xfer_cb = mscd_control_xfer_cb, + .xfer_cb = mscd_xfer_cb, + .sof = NULL + }, + #endif + + #if CFG_TUD_HID + { + DRIVER_NAME("HID") + .init = hidd_init, + .reset = hidd_reset, + .open = hidd_open, + .control_xfer_cb = hidd_control_xfer_cb, + .xfer_cb = hidd_xfer_cb, + .sof = NULL + }, + #endif + + #if CFG_TUD_AUDIO + { + DRIVER_NAME("AUDIO") + .init = audiod_init, + .reset = audiod_reset, + .open = audiod_open, + .control_xfer_cb = audiod_control_xfer_cb, + .xfer_cb = audiod_xfer_cb, + .sof = NULL + }, + #endif + + #if CFG_TUD_VIDEO + { + DRIVER_NAME("VIDEO") + .init = videod_init, + .reset = videod_reset, + .open = videod_open, + .control_xfer_cb = videod_control_xfer_cb, + .xfer_cb = videod_xfer_cb, + .sof = NULL + }, + #endif + + #if CFG_TUD_MIDI + { + DRIVER_NAME("MIDI") + .init = midid_init, + .open = midid_open, + .reset = midid_reset, + .control_xfer_cb = midid_control_xfer_cb, + .xfer_cb = midid_xfer_cb, + .sof = NULL + }, + #endif + + #if CFG_TUD_VENDOR + { + DRIVER_NAME("VENDOR") + .init = vendord_init, + .reset = vendord_reset, + .open = vendord_open, + .control_xfer_cb = tud_vendor_control_xfer_cb, + .xfer_cb = vendord_xfer_cb, + .sof = NULL + }, + #endif + + #if CFG_TUD_USBTMC + { + DRIVER_NAME("TMC") + .init = usbtmcd_init_cb, + .reset = usbtmcd_reset_cb, + .open = usbtmcd_open_cb, + .control_xfer_cb = usbtmcd_control_xfer_cb, + .xfer_cb = usbtmcd_xfer_cb, + .sof = NULL + }, + #endif + + #if CFG_TUD_DFU_RUNTIME + { + DRIVER_NAME("DFU-RUNTIME") + .init = dfu_rtd_init, + .reset = dfu_rtd_reset, + .open = dfu_rtd_open, + .control_xfer_cb = dfu_rtd_control_xfer_cb, + .xfer_cb = NULL, + .sof = NULL + }, + #endif + + #if CFG_TUD_DFU + { + DRIVER_NAME("DFU") + .init = dfu_moded_init, + .reset = dfu_moded_reset, + .open = dfu_moded_open, + .control_xfer_cb = dfu_moded_control_xfer_cb, + .xfer_cb = NULL, + .sof = NULL + }, + #endif + + #if CFG_TUD_ECM_RNDIS || CFG_TUD_NCM + { + DRIVER_NAME("NET") + .init = netd_init, + .reset = netd_reset, + .open = netd_open, + .control_xfer_cb = netd_control_xfer_cb, + .xfer_cb = netd_xfer_cb, + .sof = NULL, + }, + #endif + + #if CFG_TUD_BTH + { + DRIVER_NAME("BTH") + .init = btd_init, + .reset = btd_reset, + .open = btd_open, + .control_xfer_cb = btd_control_xfer_cb, + .xfer_cb = btd_xfer_cb, + .sof = NULL + }, + #endif +}; + +enum { BUILTIN_DRIVER_COUNT = TU_ARRAY_SIZE(_usbd_driver) }; + +// Additional class drivers implemented by application +static usbd_class_driver_t const * _app_driver = NULL; +static uint8_t _app_driver_count = 0; + +// virtually joins built-in and application drivers together. +// Application is positioned first to allow overwriting built-in ones. +static inline usbd_class_driver_t const * get_driver(uint8_t drvid) +{ + // Application drivers + if ( usbd_app_driver_get_cb ) + { + if ( drvid < _app_driver_count ) return &_app_driver[drvid]; + drvid -= _app_driver_count; + } + + // Built-in drivers + if (drvid < BUILTIN_DRIVER_COUNT) return &_usbd_driver[drvid]; + + return NULL; +} + +#define TOTAL_DRIVER_COUNT (_app_driver_count + BUILTIN_DRIVER_COUNT) + +//--------------------------------------------------------------------+ +// DCD Event +//--------------------------------------------------------------------+ + +static bool _usbd_initialized = false; + +// Event queue +// OPT_MODE_DEVICE is used by OS NONE for mutex (disable usb isr) +OSAL_QUEUE_DEF(OPT_MODE_DEVICE, _usbd_qdef, CFG_TUD_TASK_QUEUE_SZ, dcd_event_t); +static osal_queue_t _usbd_q; + +// Mutex for claiming endpoint, only needed when using with preempted RTOS +#if CFG_TUSB_OS != OPT_OS_NONE +static osal_mutex_def_t _ubsd_mutexdef; +static osal_mutex_t _usbd_mutex; +#endif + + +//--------------------------------------------------------------------+ +// Prototypes +//--------------------------------------------------------------------+ +static bool process_control_request(uint8_t rhport, tusb_control_request_t const * p_request); +static bool process_set_config(uint8_t rhport, uint8_t cfg_num); +static bool process_get_descriptor(uint8_t rhport, tusb_control_request_t const * p_request); + +// from usbd_control.c +void usbd_control_reset(void); +void usbd_control_set_request(tusb_control_request_t const *request); +void usbd_control_set_complete_callback( usbd_control_xfer_cb_t fp ); +bool usbd_control_xfer_cb (uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes); + + +//--------------------------------------------------------------------+ +// Debug +//--------------------------------------------------------------------+ +#if CFG_TUSB_DEBUG >= 2 +static char const* const _usbd_event_str[DCD_EVENT_COUNT] = +{ + "Invalid" , + "Bus Reset" , + "Unplugged" , + "SOF" , + "Suspend" , + "Resume" , + "Setup Received" , + "Xfer Complete" , + "Func Call" +}; + +static char const* const _tusb_std_request_str[] = +{ + "Get Status" , + "Clear Feature" , + "Reserved" , + "Set Feature" , + "Reserved" , + "Set Address" , + "Get Descriptor" , + "Set Descriptor" , + "Get Configuration" , + "Set Configuration" , + "Get Interface" , + "Set Interface" , + "Synch Frame" +}; + +static char const* const _tusb_speed_str[] = { "Full", "Low", "High" }; + +// for usbd_control to print the name of control complete driver +void usbd_driver_print_control_complete_name(usbd_control_xfer_cb_t callback) +{ + for (uint8_t i = 0; i < TOTAL_DRIVER_COUNT; i++) + { + usbd_class_driver_t const * driver = get_driver(i); + if ( driver->control_xfer_cb == callback ) + { + TU_LOG2(" %s control complete\r\n", driver->name); + return; + } + } +} + +#endif + +//--------------------------------------------------------------------+ +// Application API +//--------------------------------------------------------------------+ +tusb_speed_t tud_speed_get(void) +{ + return (tusb_speed_t) _usbd_dev.speed; +} + +bool tud_connected(void) +{ + return _usbd_dev.connected; +} + +bool tud_mounted(void) +{ + return _usbd_dev.cfg_num ? true : false; +} + +bool tud_suspended(void) +{ + return _usbd_dev.suspended; +} + +bool tud_remote_wakeup(void) +{ + // only wake up host if this feature is supported and enabled and we are suspended + TU_VERIFY (_usbd_dev.suspended && _usbd_dev.remote_wakeup_support && _usbd_dev.remote_wakeup_en ); + dcd_remote_wakeup(TUD_OPT_RHPORT); + return true; +} + +bool tud_disconnect(void) +{ + TU_VERIFY(dcd_disconnect); + dcd_disconnect(TUD_OPT_RHPORT); + return true; +} + +bool tud_connect(void) +{ + TU_VERIFY(dcd_connect); + dcd_connect(TUD_OPT_RHPORT); + return true; +} + +//--------------------------------------------------------------------+ +// USBD Task +//--------------------------------------------------------------------+ +bool tud_inited(void) +{ + return _usbd_initialized; +} + +bool tud_init (uint8_t rhport) +{ + // skip if already initialized + if (_usbd_initialized) return _usbd_initialized; + + TU_LOG2("USBD init\r\n"); + + tu_varclr(&_usbd_dev); + +#if CFG_TUSB_OS != OPT_OS_NONE + // Init device mutex + _usbd_mutex = osal_mutex_create(&_ubsd_mutexdef); + TU_ASSERT(_usbd_mutex); +#endif + + // Init device queue & task + _usbd_q = osal_queue_create(&_usbd_qdef); + TU_ASSERT(_usbd_q); + + // Get application driver if available + if ( usbd_app_driver_get_cb ) + { + _app_driver = usbd_app_driver_get_cb(&_app_driver_count); + } + + // Init class drivers + for (uint8_t i = 0; i < TOTAL_DRIVER_COUNT; i++) + { + usbd_class_driver_t const * driver = get_driver(i); + TU_LOG2("%s init\r\n", driver->name); + driver->init(); + } + + // Init device controller driver + dcd_init(rhport); + dcd_int_enable(rhport); + + _usbd_initialized = true; + + return true; +} + +static void configuration_reset(uint8_t rhport) +{ + for ( uint8_t i = 0; i < TOTAL_DRIVER_COUNT; i++ ) + { + get_driver(i)->reset(rhport); + } + + tu_varclr(&_usbd_dev); + memset(_usbd_dev.itf2drv, DRVID_INVALID, sizeof(_usbd_dev.itf2drv)); // invalid mapping + memset(_usbd_dev.ep2drv , DRVID_INVALID, sizeof(_usbd_dev.ep2drv )); // invalid mapping +} + +static void usbd_reset(uint8_t rhport) +{ + configuration_reset(rhport); + usbd_control_reset(); +} + +bool tud_task_event_ready(void) +{ + // Skip if stack is not initialized + if ( !tusb_inited() ) return false; + + return !osal_queue_empty(_usbd_q); +} + +/* USB Device Driver task + * This top level thread manages all device controller event and delegates events to class-specific drivers. + * This should be called periodically within the mainloop or rtos thread. + * + @code + int main(void) + { + application_init(); + tusb_init(); + + while(1) // the mainloop + { + application_code(); + tud_task(); // tinyusb device task + } + } + @endcode + */ +void tud_task (void) +{ + // Skip if stack is not initialized + if ( !tusb_inited() ) return; + + // Loop until there is no more events in the queue + while (1) + { + dcd_event_t event; + + if ( !osal_queue_receive(_usbd_q, &event) ) return; + +#if CFG_TUSB_DEBUG >= 2 + if (event.event_id == DCD_EVENT_SETUP_RECEIVED) TU_LOG2("\r\n"); // extra line for setup + TU_LOG2("USBD %s ", event.event_id < DCD_EVENT_COUNT ? _usbd_event_str[event.event_id] : "CORRUPTED"); +#endif + + switch ( event.event_id ) + { + case DCD_EVENT_BUS_RESET: + TU_LOG2(": %s Speed\r\n", _tusb_speed_str[event.bus_reset.speed]); + usbd_reset(event.rhport); + _usbd_dev.speed = event.bus_reset.speed; + break; + + case DCD_EVENT_UNPLUGGED: + TU_LOG2("\r\n"); + usbd_reset(event.rhport); + + // invoke callback + if (tud_umount_cb) tud_umount_cb(); + break; + + case DCD_EVENT_SETUP_RECEIVED: + TU_LOG2_VAR(&event.setup_received); + TU_LOG2("\r\n"); + + // Mark as connected after receiving 1st setup packet. + // But it is easier to set it every time instead of wasting time to check then set + _usbd_dev.connected = 1; + + // mark both in & out control as free + _usbd_dev.ep_status[0][TUSB_DIR_OUT].busy = false; + _usbd_dev.ep_status[0][TUSB_DIR_OUT].claimed = 0; + _usbd_dev.ep_status[0][TUSB_DIR_IN ].busy = false; + _usbd_dev.ep_status[0][TUSB_DIR_IN ].claimed = 0; + + // Process control request + if ( !process_control_request(event.rhport, &event.setup_received) ) + { + TU_LOG2(" Stall EP0\r\n"); + // Failed -> stall both control endpoint IN and OUT + dcd_edpt_stall(event.rhport, 0); + dcd_edpt_stall(event.rhport, 0 | TUSB_DIR_IN_MASK); + } + break; + + case DCD_EVENT_XFER_COMPLETE: + { + // Invoke the class callback associated with the endpoint address + uint8_t const ep_addr = event.xfer_complete.ep_addr; + uint8_t const epnum = tu_edpt_number(ep_addr); + uint8_t const ep_dir = tu_edpt_dir(ep_addr); + + TU_LOG2("on EP %02X with %u bytes\r\n", ep_addr, (unsigned int) event.xfer_complete.len); + + _usbd_dev.ep_status[epnum][ep_dir].busy = false; + _usbd_dev.ep_status[epnum][ep_dir].claimed = 0; + + if ( 0 == epnum ) + { + usbd_control_xfer_cb(event.rhport, ep_addr, (xfer_result_t)event.xfer_complete.result, event.xfer_complete.len); + } + else + { + usbd_class_driver_t const * driver = get_driver( _usbd_dev.ep2drv[epnum][ep_dir] ); + TU_ASSERT(driver, ); + + TU_LOG2(" %s xfer callback\r\n", driver->name); + driver->xfer_cb(event.rhport, ep_addr, (xfer_result_t)event.xfer_complete.result, event.xfer_complete.len); + } + } + break; + + case DCD_EVENT_SUSPEND: + // NOTE: When plugging/unplugging device, the D+/D- state are unstable and + // can accidentally meet the SUSPEND condition ( Bus Idle for 3ms ), which result in a series of event + // e.g suspend -> resume -> unplug/plug. Skip suspend/resume if not connected + if ( _usbd_dev.connected ) + { + TU_LOG2(": Remote Wakeup = %u\r\n", _usbd_dev.remote_wakeup_en); + if (tud_suspend_cb) tud_suspend_cb(_usbd_dev.remote_wakeup_en); + }else + { + TU_LOG2(" Skipped\r\n"); + } + break; + + case DCD_EVENT_RESUME: + if ( _usbd_dev.connected ) + { + TU_LOG2("\r\n"); + if (tud_resume_cb) tud_resume_cb(); + }else + { + TU_LOG2(" Skipped\r\n"); + } + break; + + case DCD_EVENT_SOF: + TU_LOG2("\r\n"); + for ( uint8_t i = 0; i < TOTAL_DRIVER_COUNT; i++ ) + { + usbd_class_driver_t const * driver = get_driver(i); + if ( driver->sof ) driver->sof(event.rhport); + } + break; + + case USBD_EVENT_FUNC_CALL: + TU_LOG2("\r\n"); + if ( event.func_call.func ) event.func_call.func(event.func_call.param); + break; + + default: + TU_BREAKPOINT(); + break; + } + } +} + +//--------------------------------------------------------------------+ +// Control Request Parser & Handling +//--------------------------------------------------------------------+ + +// Helper to invoke class driver control request handler +static bool invoke_class_control(uint8_t rhport, usbd_class_driver_t const * driver, tusb_control_request_t const * request) +{ + usbd_control_set_complete_callback(driver->control_xfer_cb); + TU_LOG2(" %s control request\r\n", driver->name); + return driver->control_xfer_cb(rhport, CONTROL_STAGE_SETUP, request); +} + +// This handles the actual request and its response. +// return false will cause its caller to stall control endpoint +static bool process_control_request(uint8_t rhport, tusb_control_request_t const * p_request) +{ + usbd_control_set_complete_callback(NULL); + + TU_ASSERT(p_request->bmRequestType_bit.type < TUSB_REQ_TYPE_INVALID); + + // Vendor request + if ( p_request->bmRequestType_bit.type == TUSB_REQ_TYPE_VENDOR ) + { + TU_VERIFY(tud_vendor_control_xfer_cb); + + usbd_control_set_complete_callback(tud_vendor_control_xfer_cb); + return tud_vendor_control_xfer_cb(rhport, CONTROL_STAGE_SETUP, p_request); + } + +#if CFG_TUSB_DEBUG >= 2 + if (TUSB_REQ_TYPE_STANDARD == p_request->bmRequestType_bit.type && p_request->bRequest <= TUSB_REQ_SYNCH_FRAME) + { + TU_LOG2(" %s", _tusb_std_request_str[p_request->bRequest]); + if (TUSB_REQ_GET_DESCRIPTOR != p_request->bRequest) TU_LOG2("\r\n"); + } +#endif + + switch ( p_request->bmRequestType_bit.recipient ) + { + //------------- Device Requests e.g in enumeration -------------// + case TUSB_REQ_RCPT_DEVICE: + if ( TUSB_REQ_TYPE_CLASS == p_request->bmRequestType_bit.type ) + { + uint8_t const itf = tu_u16_low(p_request->wIndex); + TU_VERIFY(itf < TU_ARRAY_SIZE(_usbd_dev.itf2drv)); + + usbd_class_driver_t const * driver = get_driver(_usbd_dev.itf2drv[itf]); + TU_VERIFY(driver); + + // forward to class driver: "non-STD request to Interface" + return invoke_class_control(rhport, driver, p_request); + } + + if ( TUSB_REQ_TYPE_STANDARD != p_request->bmRequestType_bit.type ) + { + // Non standard request is not supported + TU_BREAKPOINT(); + return false; + } + + switch ( p_request->bRequest ) + { + case TUSB_REQ_SET_ADDRESS: + // Depending on mcu, status phase could be sent either before or after changing device address, + // or even require stack to not response with status at all + // Therefore DCD must take full responsibility to response and include zlp status packet if needed. + usbd_control_set_request(p_request); // set request since DCD has no access to tud_control_status() API + dcd_set_address(rhport, (uint8_t) p_request->wValue); + // skip tud_control_status() + _usbd_dev.addressed = 1; + break; + + case TUSB_REQ_GET_CONFIGURATION: + { + uint8_t cfg_num = _usbd_dev.cfg_num; + tud_control_xfer(rhport, p_request, &cfg_num, 1); + } + break; + + case TUSB_REQ_SET_CONFIGURATION: + { + uint8_t const cfg_num = (uint8_t) p_request->wValue; + + // Only process if new configure is different + if (_usbd_dev.cfg_num != cfg_num) + { + if ( _usbd_dev.cfg_num ) + { + // already configured: need to clear all endpoints and driver first + TU_LOG(USBD_DBG, " Clear current Configuration (%u) before switching\r\n", _usbd_dev.cfg_num); + + // close all non-control endpoints, cancel all pending transfers if any + dcd_edpt_close_all(rhport); + + // close all drivers and current configured state except bus speed + uint8_t const speed = _usbd_dev.speed; + configuration_reset(rhport); + + _usbd_dev.speed = speed; // restore speed + } + + // switch to new configuration if not zero + if ( cfg_num ) TU_ASSERT( process_set_config(rhport, cfg_num) ); + } + + _usbd_dev.cfg_num = cfg_num; + tud_control_status(rhport, p_request); + } + break; + + case TUSB_REQ_GET_DESCRIPTOR: + TU_VERIFY( process_get_descriptor(rhport, p_request) ); + break; + + case TUSB_REQ_SET_FEATURE: + // Only support remote wakeup for device feature + TU_VERIFY(TUSB_REQ_FEATURE_REMOTE_WAKEUP == p_request->wValue); + + TU_LOG(USBD_DBG, " Enable Remote Wakeup\r\n"); + + // Host may enable remote wake up before suspending especially HID device + _usbd_dev.remote_wakeup_en = true; + tud_control_status(rhport, p_request); + break; + + case TUSB_REQ_CLEAR_FEATURE: + // Only support remote wakeup for device feature + TU_VERIFY(TUSB_REQ_FEATURE_REMOTE_WAKEUP == p_request->wValue); + + TU_LOG(USBD_DBG, " Disable Remote Wakeup\r\n"); + + // Host may disable remote wake up after resuming + _usbd_dev.remote_wakeup_en = false; + tud_control_status(rhport, p_request); + break; + + case TUSB_REQ_GET_STATUS: + { + // Device status bit mask + // - Bit 0: Self Powered + // - Bit 1: Remote Wakeup enabled + uint16_t status = (_usbd_dev.self_powered ? 1 : 0) | (_usbd_dev.remote_wakeup_en ? 2 : 0); + tud_control_xfer(rhport, p_request, &status, 2); + } + break; + + // Unknown/Unsupported request + default: TU_BREAKPOINT(); return false; + } + break; + + //------------- Interface Specific Request -------------// + case TUSB_REQ_RCPT_INTERFACE: + { + uint8_t const itf = tu_u16_low(p_request->wIndex); + TU_VERIFY(itf < TU_ARRAY_SIZE(_usbd_dev.itf2drv)); + + usbd_class_driver_t const * driver = get_driver(_usbd_dev.itf2drv[itf]); + TU_VERIFY(driver); + + // all requests to Interface (STD or Class) is forwarded to class driver. + // notable requests are: GET HID REPORT DESCRIPTOR, SET_INTERFACE, GET_INTERFACE + if ( !invoke_class_control(rhport, driver, p_request) ) + { + // For GET_INTERFACE and SET_INTERFACE, it is mandatory to respond even if the class + // driver doesn't use alternate settings or implement this + TU_VERIFY(TUSB_REQ_TYPE_STANDARD == p_request->bmRequestType_bit.type); + + switch(p_request->bRequest) + { + case TUSB_REQ_GET_INTERFACE: + case TUSB_REQ_SET_INTERFACE: + // Clear complete callback if driver set since it can also stall the request. + usbd_control_set_complete_callback(NULL); + + if (TUSB_REQ_GET_INTERFACE == p_request->bRequest) + { + uint8_t alternate = 0; + tud_control_xfer(rhport, p_request, &alternate, 1); + }else + { + tud_control_status(rhport, p_request); + } + break; + + default: return false; + } + } + } + break; + + //------------- Endpoint Request -------------// + case TUSB_REQ_RCPT_ENDPOINT: + { + uint8_t const ep_addr = tu_u16_low(p_request->wIndex); + uint8_t const ep_num = tu_edpt_number(ep_addr); + uint8_t const ep_dir = tu_edpt_dir(ep_addr); + + TU_ASSERT(ep_num < TU_ARRAY_SIZE(_usbd_dev.ep2drv) ); + + usbd_class_driver_t const * driver = get_driver(_usbd_dev.ep2drv[ep_num][ep_dir]); + + if ( TUSB_REQ_TYPE_STANDARD != p_request->bmRequestType_bit.type ) + { + // Forward class request to its driver + TU_VERIFY(driver); + return invoke_class_control(rhport, driver, p_request); + } + else + { + // Handle STD request to endpoint + switch ( p_request->bRequest ) + { + case TUSB_REQ_GET_STATUS: + { + uint16_t status = usbd_edpt_stalled(rhport, ep_addr) ? 0x0001 : 0x0000; + tud_control_xfer(rhport, p_request, &status, 2); + } + break; + + case TUSB_REQ_CLEAR_FEATURE: + case TUSB_REQ_SET_FEATURE: + { + if ( TUSB_REQ_FEATURE_EDPT_HALT == p_request->wValue ) + { + if ( TUSB_REQ_CLEAR_FEATURE == p_request->bRequest ) + { + usbd_edpt_clear_stall(rhport, ep_addr); + }else + { + usbd_edpt_stall(rhport, ep_addr); + } + } + + if (driver) + { + // Some classes such as USBTMC needs to clear/re-init its buffer when receiving CLEAR_FEATURE request + // We will also forward std request targeted endpoint to class drivers as well + + // STD request must always be ACKed regardless of driver returned value + // Also clear complete callback if driver set since it can also stall the request. + (void) invoke_class_control(rhport, driver, p_request); + usbd_control_set_complete_callback(NULL); + + // skip ZLP status if driver already did that + if ( !_usbd_dev.ep_status[0][TUSB_DIR_IN].busy ) tud_control_status(rhport, p_request); + } + } + break; + + // Unknown/Unsupported request + default: TU_BREAKPOINT(); return false; + } + } + } + break; + + // Unknown recipient + default: TU_BREAKPOINT(); return false; + } + + return true; +} + +// Process Set Configure Request +// This function parse configuration descriptor & open drivers accordingly +static bool process_set_config(uint8_t rhport, uint8_t cfg_num) +{ + // index is cfg_num-1 + tusb_desc_configuration_t const * desc_cfg = (tusb_desc_configuration_t const *) tud_descriptor_configuration_cb(cfg_num-1); + TU_ASSERT(desc_cfg != NULL && desc_cfg->bDescriptorType == TUSB_DESC_CONFIGURATION); + + // Parse configuration descriptor + _usbd_dev.remote_wakeup_support = (desc_cfg->bmAttributes & TUSB_DESC_CONFIG_ATT_REMOTE_WAKEUP) ? 1 : 0; + _usbd_dev.self_powered = (desc_cfg->bmAttributes & TUSB_DESC_CONFIG_ATT_SELF_POWERED ) ? 1 : 0; + + // Parse interface descriptor + uint8_t const * p_desc = ((uint8_t const*) desc_cfg) + sizeof(tusb_desc_configuration_t); + uint8_t const * desc_end = ((uint8_t const*) desc_cfg) + tu_le16toh(desc_cfg->wTotalLength); + + while( p_desc < desc_end ) + { + uint8_t assoc_itf_count = 1; + + // Class will always starts with Interface Association (if any) and then Interface descriptor + if ( TUSB_DESC_INTERFACE_ASSOCIATION == tu_desc_type(p_desc) ) + { + tusb_desc_interface_assoc_t const * desc_iad = (tusb_desc_interface_assoc_t const *) p_desc; + assoc_itf_count = desc_iad->bInterfaceCount; + + p_desc = tu_desc_next(p_desc); // next to Interface + + // IAD's first interface number and class should match with opened interface + //TU_ASSERT(desc_iad->bFirstInterface == desc_itf->bInterfaceNumber && + // desc_iad->bFunctionClass == desc_itf->bInterfaceClass); + } + + TU_ASSERT( TUSB_DESC_INTERFACE == tu_desc_type(p_desc) ); + tusb_desc_interface_t const * desc_itf = (tusb_desc_interface_t const*) p_desc; + + // Find driver for this interface + uint16_t const remaining_len = desc_end-p_desc; + uint8_t drv_id; + for (drv_id = 0; drv_id < TOTAL_DRIVER_COUNT; drv_id++) + { + usbd_class_driver_t const *driver = get_driver(drv_id); + uint16_t const drv_len = driver->open(rhport, desc_itf, remaining_len); + + if ( (sizeof(tusb_desc_interface_t) <= drv_len) && (drv_len <= remaining_len) ) + { + // Open successfully + TU_LOG2(" %s opened\r\n", driver->name); + + // Some drivers use 2 or more interfaces but may not have IAD e.g MIDI (always) or + // BTH (even CDC) with class in device descriptor (single interface) + if ( assoc_itf_count == 1) + { + #if CFG_TUD_CDC + if ( driver->open == cdcd_open ) assoc_itf_count = 2; + #endif + + #if CFG_TUD_MIDI + if ( driver->open == midid_open ) assoc_itf_count = 2; + #endif + + #if CFG_TUD_BTH && CFG_TUD_BTH_ISO_ALT_COUNT + if ( driver->open == btd_open ) assoc_itf_count = 2; + #endif + } + + // bind (associated) interfaces to found driver + for(uint8_t i=0; i<assoc_itf_count; i++) + { + uint8_t const itf_num = desc_itf->bInterfaceNumber+i; + + // Interface number must not be used already + TU_ASSERT(DRVID_INVALID == _usbd_dev.itf2drv[itf_num]); + _usbd_dev.itf2drv[itf_num] = drv_id; + } + + // bind all endpoints to found driver + tu_edpt_bind_driver(_usbd_dev.ep2drv, desc_itf, drv_len, drv_id); + + // next Interface + p_desc += drv_len; + + break; // exit driver find loop + } + } + + // Failed if there is no supported drivers + TU_ASSERT(drv_id < TOTAL_DRIVER_COUNT); + } + + // invoke callback + if (tud_mount_cb) tud_mount_cb(); + + return true; +} + +// return descriptor's buffer and update desc_len +static bool process_get_descriptor(uint8_t rhport, tusb_control_request_t const * p_request) +{ + tusb_desc_type_t const desc_type = (tusb_desc_type_t) tu_u16_high(p_request->wValue); + uint8_t const desc_index = tu_u16_low( p_request->wValue ); + + switch(desc_type) + { + case TUSB_DESC_DEVICE: + { + TU_LOG2(" Device\r\n"); + + uint16_t len = sizeof(tusb_desc_device_t); + + // Only send up to EP0 Packet Size if not addressed and host requested more data + // that device descriptor has. + // This only happens with the very first get device descriptor and EP0 size = 8 or 16. + if ((CFG_TUD_ENDPOINT0_SIZE < sizeof(tusb_desc_device_t)) && !_usbd_dev.addressed && + ((tusb_control_request_t*) p_request)->wLength > sizeof(tusb_desc_device_t)) + { + len = CFG_TUD_ENDPOINT0_SIZE; + + // Hack here: we modify the request length to prevent usbd_control response with zlp + ((tusb_control_request_t*) p_request)->wLength = CFG_TUD_ENDPOINT0_SIZE; + } + + return tud_control_xfer(rhport, p_request, (void*) tud_descriptor_device_cb(), len); + } + break; + + case TUSB_DESC_BOS: + { + TU_LOG2(" BOS\r\n"); + + // requested by host if USB > 2.0 ( i.e 2.1 or 3.x ) + if (!tud_descriptor_bos_cb) return false; + + tusb_desc_bos_t const* desc_bos = (tusb_desc_bos_t const*) tud_descriptor_bos_cb(); + + // Use offsetof to avoid pointer to the odd/misaligned address + uint16_t const total_len = tu_le16toh( tu_unaligned_read16((uint8_t*) desc_bos + offsetof(tusb_desc_bos_t, wTotalLength)) ); + + return tud_control_xfer(rhport, p_request, (void*) desc_bos, total_len); + } + break; + + case TUSB_DESC_CONFIGURATION: + case TUSB_DESC_OTHER_SPEED_CONFIG: + { + tusb_desc_configuration_t const* desc_config; + + if ( desc_type == TUSB_DESC_CONFIGURATION ) + { + TU_LOG2(" Configuration[%u]\r\n", desc_index); + desc_config = (tusb_desc_configuration_t const*) tud_descriptor_configuration_cb(desc_index); + }else + { + // Host only request this after getting Device Qualifier descriptor + TU_LOG2(" Other Speed Configuration\r\n"); + TU_VERIFY( tud_descriptor_other_speed_configuration_cb ); + desc_config = (tusb_desc_configuration_t const*) tud_descriptor_other_speed_configuration_cb(desc_index); + } + + TU_ASSERT(desc_config); + + // Use offsetof to avoid pointer to the odd/misaligned address + uint16_t const total_len = tu_le16toh( tu_unaligned_read16((uint8_t*) desc_config + offsetof(tusb_desc_configuration_t, wTotalLength)) ); + + return tud_control_xfer(rhport, p_request, (void*) desc_config, total_len); + } + break; + + case TUSB_DESC_STRING: + { + TU_LOG2(" String[%u]\r\n", desc_index); + + // String Descriptor always uses the desc set from user + uint8_t const* desc_str = (uint8_t const*) tud_descriptor_string_cb(desc_index, p_request->wIndex); + TU_VERIFY(desc_str); + + // first byte of descriptor is its size + return tud_control_xfer(rhport, p_request, (void*) desc_str, desc_str[0]); + } + break; + + case TUSB_DESC_DEVICE_QUALIFIER: + { + TU_LOG2(" Device Qualifier\r\n"); + + TU_VERIFY( tud_descriptor_device_qualifier_cb ); + + uint8_t const* desc_qualifier = tud_descriptor_device_qualifier_cb(); + TU_VERIFY(desc_qualifier); + + // first byte of descriptor is its size + return tud_control_xfer(rhport, p_request, (void*) desc_qualifier, desc_qualifier[0]); + } + break; + + default: return false; + } +} + +//--------------------------------------------------------------------+ +// DCD Event Handler +//--------------------------------------------------------------------+ +void dcd_event_handler(dcd_event_t const * event, bool in_isr) +{ + switch (event->event_id) + { + case DCD_EVENT_UNPLUGGED: + _usbd_dev.connected = 0; + _usbd_dev.addressed = 0; + _usbd_dev.cfg_num = 0; + _usbd_dev.suspended = 0; + osal_queue_send(_usbd_q, event, in_isr); + break; + + case DCD_EVENT_SUSPEND: + // NOTE: When plugging/unplugging device, the D+/D- state are unstable and + // can accidentally meet the SUSPEND condition ( Bus Idle for 3ms ). + // In addition, some MCUs such as SAMD or boards that haven no VBUS detection cannot distinguish + // suspended vs disconnected. We will skip handling SUSPEND/RESUME event if not currently connected + if ( _usbd_dev.connected ) + { + _usbd_dev.suspended = 1; + osal_queue_send(_usbd_q, event, in_isr); + } + break; + + case DCD_EVENT_RESUME: + // skip event if not connected (especially required for SAMD) + if ( _usbd_dev.connected ) + { + _usbd_dev.suspended = 0; + osal_queue_send(_usbd_q, event, in_isr); + } + break; + + case DCD_EVENT_SOF: + // Some MCUs after running dcd_remote_wakeup() does not have way to detect the end of remote wakeup + // which last 1-15 ms. DCD can use SOF as a clear indicator that bus is back to operational + if ( _usbd_dev.suspended ) + { + _usbd_dev.suspended = 0; + dcd_event_t const event_resume = { .rhport = event->rhport, .event_id = DCD_EVENT_RESUME }; + osal_queue_send(_usbd_q, &event_resume, in_isr); + } + break; + + default: + osal_queue_send(_usbd_q, event, in_isr); + break; + } +} + +void dcd_event_bus_signal (uint8_t rhport, dcd_eventid_t eid, bool in_isr) +{ + dcd_event_t event = { .rhport = rhport, .event_id = eid }; + dcd_event_handler(&event, in_isr); +} + +void dcd_event_bus_reset (uint8_t rhport, tusb_speed_t speed, bool in_isr) +{ + dcd_event_t event = { .rhport = rhport, .event_id = DCD_EVENT_BUS_RESET }; + event.bus_reset.speed = speed; + dcd_event_handler(&event, in_isr); +} + +void dcd_event_setup_received(uint8_t rhport, uint8_t const * setup, bool in_isr) +{ + dcd_event_t event = { .rhport = rhport, .event_id = DCD_EVENT_SETUP_RECEIVED }; + memcpy(&event.setup_received, setup, 8); + + dcd_event_handler(&event, in_isr); +} + +void dcd_event_xfer_complete (uint8_t rhport, uint8_t ep_addr, uint32_t xferred_bytes, uint8_t result, bool in_isr) +{ + dcd_event_t event = { .rhport = rhport, .event_id = DCD_EVENT_XFER_COMPLETE }; + + event.xfer_complete.ep_addr = ep_addr; + event.xfer_complete.len = xferred_bytes; + event.xfer_complete.result = result; + + dcd_event_handler(&event, in_isr); +} + +//--------------------------------------------------------------------+ +// USBD API For Class Driver +//--------------------------------------------------------------------+ + +// Parse consecutive endpoint descriptors (IN & OUT) +bool usbd_open_edpt_pair(uint8_t rhport, uint8_t const* p_desc, uint8_t ep_count, uint8_t xfer_type, uint8_t* ep_out, uint8_t* ep_in) +{ + for(int i=0; i<ep_count; i++) + { + tusb_desc_endpoint_t const * desc_ep = (tusb_desc_endpoint_t const *) p_desc; + + TU_ASSERT(TUSB_DESC_ENDPOINT == desc_ep->bDescriptorType && xfer_type == desc_ep->bmAttributes.xfer); + TU_ASSERT(usbd_edpt_open(rhport, desc_ep)); + + if ( tu_edpt_dir(desc_ep->bEndpointAddress) == TUSB_DIR_IN ) + { + (*ep_in) = desc_ep->bEndpointAddress; + }else + { + (*ep_out) = desc_ep->bEndpointAddress; + } + + p_desc = tu_desc_next(p_desc); + } + + return true; +} + +// Helper to defer an isr function +void usbd_defer_func(osal_task_func_t func, void* param, bool in_isr) +{ + dcd_event_t event = + { + .rhport = 0, + .event_id = USBD_EVENT_FUNC_CALL, + }; + + event.func_call.func = func; + event.func_call.param = param; + + dcd_event_handler(&event, in_isr); +} + +//--------------------------------------------------------------------+ +// USBD Endpoint API +//--------------------------------------------------------------------+ + +bool usbd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const * desc_ep) +{ + TU_ASSERT(tu_edpt_number(desc_ep->bEndpointAddress) < CFG_TUD_ENDPPOINT_MAX); + TU_ASSERT(tu_edpt_validate(desc_ep, (tusb_speed_t) _usbd_dev.speed)); + + return dcd_edpt_open(rhport, desc_ep); +} + +bool usbd_edpt_claim(uint8_t rhport, uint8_t ep_addr) +{ + (void) rhport; + + // TODO add this check later, also make sure we don't starve an out endpoint while suspending + // TU_VERIFY(tud_ready()); + + uint8_t const epnum = tu_edpt_number(ep_addr); + uint8_t const dir = tu_edpt_dir(ep_addr); + +#if CFG_TUSB_OS != OPT_OS_NONE + // pre-check to help reducing mutex lock + TU_VERIFY((_usbd_dev.ep_status[epnum][dir].busy == 0) && (_usbd_dev.ep_status[epnum][dir].claimed == 0)); + osal_mutex_lock(_usbd_mutex, OSAL_TIMEOUT_WAIT_FOREVER); +#endif + + // can only claim the endpoint if it is not busy and not claimed yet. + bool const ret = (_usbd_dev.ep_status[epnum][dir].busy == 0) && (_usbd_dev.ep_status[epnum][dir].claimed == 0); + if (ret) + { + _usbd_dev.ep_status[epnum][dir].claimed = 1; + } + +#if CFG_TUSB_OS != OPT_OS_NONE + osal_mutex_unlock(_usbd_mutex); +#endif + + return ret; +} + +bool usbd_edpt_release(uint8_t rhport, uint8_t ep_addr) +{ + (void) rhport; + + uint8_t const epnum = tu_edpt_number(ep_addr); + uint8_t const dir = tu_edpt_dir(ep_addr); + +#if CFG_TUSB_OS != OPT_OS_NONE + osal_mutex_lock(_usbd_mutex, OSAL_TIMEOUT_WAIT_FOREVER); +#endif + + // can only release the endpoint if it is claimed and not busy + bool const ret = (_usbd_dev.ep_status[epnum][dir].busy == 0) && (_usbd_dev.ep_status[epnum][dir].claimed == 1); + if (ret) + { + _usbd_dev.ep_status[epnum][dir].claimed = 0; + } + +#if CFG_TUSB_OS != OPT_OS_NONE + osal_mutex_unlock(_usbd_mutex); +#endif + + return ret; +} + +bool usbd_edpt_xfer(uint8_t rhport, uint8_t ep_addr, uint8_t * buffer, uint16_t total_bytes) +{ + uint8_t const epnum = tu_edpt_number(ep_addr); + uint8_t const dir = tu_edpt_dir(ep_addr); + + // TODO skip ready() check for now since enumeration also use this API + // TU_VERIFY(tud_ready()); + + TU_LOG2(" Queue EP %02X with %u bytes ...\r\n", ep_addr, total_bytes); + + // Attempt to transfer on a busy endpoint, sound like an race condition ! + TU_ASSERT(_usbd_dev.ep_status[epnum][dir].busy == 0); + + // Set busy first since the actual transfer can be complete before dcd_edpt_xfer() + // could return and USBD task can preempt and clear the busy + _usbd_dev.ep_status[epnum][dir].busy = true; + + if ( dcd_edpt_xfer(rhport, ep_addr, buffer, total_bytes) ) + { + return true; + }else + { + // DCD error, mark endpoint as ready to allow next transfer + _usbd_dev.ep_status[epnum][dir].busy = false; + _usbd_dev.ep_status[epnum][dir].claimed = 0; + TU_LOG2("FAILED\r\n"); + TU_BREAKPOINT(); + return false; + } +} + +// The number of bytes has to be given explicitly to allow more flexible control of how many +// bytes should be written and second to keep the return value free to give back a boolean +// success message. If total_bytes is too big, the FIFO will copy only what is available +// into the USB buffer! +bool usbd_edpt_xfer_fifo(uint8_t rhport, uint8_t ep_addr, tu_fifo_t * ff, uint16_t total_bytes) +{ + uint8_t const epnum = tu_edpt_number(ep_addr); + uint8_t const dir = tu_edpt_dir(ep_addr); + + TU_LOG2(" Queue ISO EP %02X with %u bytes ... ", ep_addr, total_bytes); + + // Attempt to transfer on a busy endpoint, sound like an race condition ! + TU_ASSERT(_usbd_dev.ep_status[epnum][dir].busy == 0); + + // Set busy first since the actual transfer can be complete before dcd_edpt_xfer() could return + // and usbd task can preempt and clear the busy + _usbd_dev.ep_status[epnum][dir].busy = true; + + if (dcd_edpt_xfer_fifo(rhport, ep_addr, ff, total_bytes)) + { + TU_LOG2("OK\r\n"); + return true; + }else + { + // DCD error, mark endpoint as ready to allow next transfer + _usbd_dev.ep_status[epnum][dir].busy = false; + _usbd_dev.ep_status[epnum][dir].claimed = 0; + TU_LOG2("failed\r\n"); + TU_BREAKPOINT(); + return false; + } +} + +bool usbd_edpt_busy(uint8_t rhport, uint8_t ep_addr) +{ + (void) rhport; + + uint8_t const epnum = tu_edpt_number(ep_addr); + uint8_t const dir = tu_edpt_dir(ep_addr); + + return _usbd_dev.ep_status[epnum][dir].busy; +} + +void usbd_edpt_stall(uint8_t rhport, uint8_t ep_addr) +{ + + uint8_t const epnum = tu_edpt_number(ep_addr); + uint8_t const dir = tu_edpt_dir(ep_addr); + + // only stalled if currently cleared + if ( !_usbd_dev.ep_status[epnum][dir].stalled ) + { + TU_LOG(USBD_DBG, " Stall EP %02X\r\n", ep_addr); + dcd_edpt_stall(rhport, ep_addr); + _usbd_dev.ep_status[epnum][dir].stalled = true; + _usbd_dev.ep_status[epnum][dir].busy = true; + } +} + +void usbd_edpt_clear_stall(uint8_t rhport, uint8_t ep_addr) +{ + uint8_t const epnum = tu_edpt_number(ep_addr); + uint8_t const dir = tu_edpt_dir(ep_addr); + + // only clear if currently stalled + if ( _usbd_dev.ep_status[epnum][dir].stalled ) + { + TU_LOG(USBD_DBG, " Clear Stall EP %02X\r\n", ep_addr); + dcd_edpt_clear_stall(rhport, ep_addr); + _usbd_dev.ep_status[epnum][dir].stalled = false; + _usbd_dev.ep_status[epnum][dir].busy = false; + } +} + +bool usbd_edpt_stalled(uint8_t rhport, uint8_t ep_addr) +{ + (void) rhport; + + uint8_t const epnum = tu_edpt_number(ep_addr); + uint8_t const dir = tu_edpt_dir(ep_addr); + + return _usbd_dev.ep_status[epnum][dir].stalled; +} + +/** + * usbd_edpt_close will disable an endpoint. + * + * In progress transfers on this EP may be delivered after this call. + * + */ +void usbd_edpt_close(uint8_t rhport, uint8_t ep_addr) +{ + TU_ASSERT(dcd_edpt_close, /**/); + TU_LOG2(" CLOSING Endpoint: 0x%02X\r\n", ep_addr); + + uint8_t const epnum = tu_edpt_number(ep_addr); + uint8_t const dir = tu_edpt_dir(ep_addr); + + dcd_edpt_close(rhport, ep_addr); + _usbd_dev.ep_status[epnum][dir].stalled = false; + _usbd_dev.ep_status[epnum][dir].busy = false; + _usbd_dev.ep_status[epnum][dir].claimed = false; + + return; +} + +#endif diff --git a/arkanoid/pico/tinyusb/usbd.h b/arkanoid/pico/tinyusb/usbd.h new file mode 100644 index 0000000..e35a260 --- /dev/null +++ b/arkanoid/pico/tinyusb/usbd.h @@ -0,0 +1,851 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#ifndef _TUSB_USBD_H_ +#define _TUSB_USBD_H_ + +#include "tusb_common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +//--------------------------------------------------------------------+ +// Application API +//--------------------------------------------------------------------+ + +// Init device stack +bool tud_init (uint8_t rhport); + +// Check if device stack is already initialized +bool tud_inited(void); + +// Task function should be called in main/rtos loop +void tud_task (void); + +// Check if there is pending events need proccessing by tud_task() +bool tud_task_event_ready(void); + +// Interrupt handler, name alias to DCD +extern void dcd_int_handler(uint8_t rhport); +#define tud_int_handler dcd_int_handler + +// Get current bus speed +tusb_speed_t tud_speed_get(void); + +// Check if device is connected (may not mounted/configured yet) +// True if just got out of Bus Reset and received the very first data from host +bool tud_connected(void); + +// Check if device is connected and configured +bool tud_mounted(void); + +// Check if device is suspended +bool tud_suspended(void); + +// Check if device is ready to transfer +TU_ATTR_ALWAYS_INLINE static inline +bool tud_ready(void) +{ + return tud_mounted() && !tud_suspended(); +} + +// Remote wake up host, only if suspended and enabled by host +bool tud_remote_wakeup(void); + +// Enable pull-up resistor on D+ D- +// Return false on unsupported MCUs +bool tud_disconnect(void); + +// Disable pull-up resistor on D+ D- +// Return false on unsupported MCUs +bool tud_connect(void); + +// Carry out Data and Status stage of control transfer +// - If len = 0, it is equivalent to sending status only +// - If len > wLength : it will be truncated +bool tud_control_xfer(uint8_t rhport, tusb_control_request_t const * request, void* buffer, uint16_t len); + +// Send STATUS (zero length) packet +bool tud_control_status(uint8_t rhport, tusb_control_request_t const * request); + +//--------------------------------------------------------------------+ +// Application Callbacks (WEAK is optional) +//--------------------------------------------------------------------+ + +// Invoked when received GET DEVICE DESCRIPTOR request +// Application return pointer to descriptor +uint8_t const * tud_descriptor_device_cb(void); + +// Invoked when received GET CONFIGURATION DESCRIPTOR request +// Application return pointer to descriptor, whose contents must exist long enough for transfer to complete +uint8_t const * tud_descriptor_configuration_cb(uint8_t index); + +// Invoked when received GET STRING DESCRIPTOR request +// Application return pointer to descriptor, whose contents must exist long enough for transfer to complete +uint16_t const* tud_descriptor_string_cb(uint8_t index, uint16_t langid); + +// Invoked when received GET BOS DESCRIPTOR request +// Application return pointer to descriptor +TU_ATTR_WEAK uint8_t const * tud_descriptor_bos_cb(void); + +// Invoked when received GET DEVICE QUALIFIER DESCRIPTOR request +// Application return pointer to descriptor, whose contents must exist long enough for transfer to complete. +// device_qualifier descriptor describes information about a high-speed capable device that would +// change if the device were operating at the other speed. If not highspeed capable stall this request. +TU_ATTR_WEAK uint8_t const* tud_descriptor_device_qualifier_cb(void); + +// Invoked when received GET OTHER SEED CONFIGURATION DESCRIPTOR request +// Application return pointer to descriptor, whose contents must exist long enough for transfer to complete +// Configuration descriptor in the other speed e.g if high speed then this is for full speed and vice versa +TU_ATTR_WEAK uint8_t const* tud_descriptor_other_speed_configuration_cb(uint8_t index); + +// Invoked when device is mounted (configured) +TU_ATTR_WEAK void tud_mount_cb(void); + +// Invoked when device is unmounted +TU_ATTR_WEAK void tud_umount_cb(void); + +// Invoked when usb bus is suspended +// Within 7ms, device must draw an average of current less than 2.5 mA from bus +TU_ATTR_WEAK void tud_suspend_cb(bool remote_wakeup_en); + +// Invoked when usb bus is resumed +TU_ATTR_WEAK void tud_resume_cb(void); + +// Invoked when received control request with VENDOR TYPE +TU_ATTR_WEAK bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb_control_request_t const * request); + +//--------------------------------------------------------------------+ +// Binary Device Object Store (BOS) Descriptor Templates +//--------------------------------------------------------------------+ + +#define TUD_BOS_DESC_LEN 5 + +// total length, number of device caps +#define TUD_BOS_DESCRIPTOR(_total_len, _caps_num) \ + 5, TUSB_DESC_BOS, U16_TO_U8S_LE(_total_len), _caps_num + +// Device Capability Platform 128-bit UUID + Data +#define TUD_BOS_PLATFORM_DESCRIPTOR(...) \ + 4+TU_ARGS_NUM(__VA_ARGS__), TUSB_DESC_DEVICE_CAPABILITY, DEVICE_CAPABILITY_PLATFORM, 0x00, __VA_ARGS__ + +//------------- WebUSB BOS Platform -------------// + +// Descriptor Length +#define TUD_BOS_WEBUSB_DESC_LEN 24 + +// Vendor Code, iLandingPage +#define TUD_BOS_WEBUSB_DESCRIPTOR(_vendor_code, _ipage) \ + TUD_BOS_PLATFORM_DESCRIPTOR(TUD_BOS_WEBUSB_UUID, U16_TO_U8S_LE(0x0100), _vendor_code, _ipage) + +#define TUD_BOS_WEBUSB_UUID \ + 0x38, 0xB6, 0x08, 0x34, 0xA9, 0x09, 0xA0, 0x47, \ + 0x8B, 0xFD, 0xA0, 0x76, 0x88, 0x15, 0xB6, 0x65 + +//------------- Microsoft OS 2.0 Platform -------------// +#define TUD_BOS_MICROSOFT_OS_DESC_LEN 28 + +// Total Length of descriptor set, vendor code +#define TUD_BOS_MS_OS_20_DESCRIPTOR(_desc_set_len, _vendor_code) \ + TUD_BOS_PLATFORM_DESCRIPTOR(TUD_BOS_MS_OS_20_UUID, U32_TO_U8S_LE(0x06030000), U16_TO_U8S_LE(_desc_set_len), _vendor_code, 0) + +#define TUD_BOS_MS_OS_20_UUID \ + 0xDF, 0x60, 0xDD, 0xD8, 0x89, 0x45, 0xC7, 0x4C, \ + 0x9C, 0xD2, 0x65, 0x9D, 0x9E, 0x64, 0x8A, 0x9F + +//--------------------------------------------------------------------+ +// Configuration Descriptor Templates +//--------------------------------------------------------------------+ + +#define TUD_CONFIG_DESC_LEN (9) + +// Config number, interface count, string index, total length, attribute, power in mA +#define TUD_CONFIG_DESCRIPTOR(config_num, _itfcount, _stridx, _total_len, _attribute, _power_ma) \ + 9, TUSB_DESC_CONFIGURATION, U16_TO_U8S_LE(_total_len), _itfcount, config_num, _stridx, TU_BIT(7) | _attribute, (_power_ma)/2 + +//--------------------------------------------------------------------+ +// CDC Descriptor Templates +//--------------------------------------------------------------------+ + +// Length of template descriptor: 66 bytes +#define TUD_CDC_DESC_LEN (8+9+5+5+4+5+7+9+7+7) + +// CDC Descriptor Template +// Interface number, string index, EP notification address and size, EP data address (out, in) and size. +#define TUD_CDC_DESCRIPTOR(_itfnum, _stridx, _ep_notif, _ep_notif_size, _epout, _epin, _epsize) \ + /* Interface Associate */\ + 8, TUSB_DESC_INTERFACE_ASSOCIATION, _itfnum, 2, TUSB_CLASS_CDC, CDC_COMM_SUBCLASS_ABSTRACT_CONTROL_MODEL, CDC_COMM_PROTOCOL_NONE, 0,\ + /* CDC Control Interface */\ + 9, TUSB_DESC_INTERFACE, _itfnum, 0, 1, TUSB_CLASS_CDC, CDC_COMM_SUBCLASS_ABSTRACT_CONTROL_MODEL, CDC_COMM_PROTOCOL_NONE, _stridx,\ + /* CDC Header */\ + 5, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_HEADER, U16_TO_U8S_LE(0x0120),\ + /* CDC Call */\ + 5, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_CALL_MANAGEMENT, 0, (uint8_t)((_itfnum) + 1),\ + /* CDC ACM: support line request */\ + 4, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_ABSTRACT_CONTROL_MANAGEMENT, 2,\ + /* CDC Union */\ + 5, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_UNION, _itfnum, (uint8_t)((_itfnum) + 1),\ + /* Endpoint Notification */\ + 7, TUSB_DESC_ENDPOINT, _ep_notif, TUSB_XFER_INTERRUPT, U16_TO_U8S_LE(_ep_notif_size), 16,\ + /* CDC Data Interface */\ + 9, TUSB_DESC_INTERFACE, (uint8_t)((_itfnum)+1), 0, 2, TUSB_CLASS_CDC_DATA, 0, 0, 0,\ + /* Endpoint Out */\ + 7, TUSB_DESC_ENDPOINT, _epout, TUSB_XFER_BULK, U16_TO_U8S_LE(_epsize), 0,\ + /* Endpoint In */\ + 7, TUSB_DESC_ENDPOINT, _epin, TUSB_XFER_BULK, U16_TO_U8S_LE(_epsize), 0 + +//--------------------------------------------------------------------+ +// MSC Descriptor Templates +//--------------------------------------------------------------------+ + +// Length of template descriptor: 23 bytes +#define TUD_MSC_DESC_LEN (9 + 7 + 7) + +// Interface number, string index, EP Out & EP In address, EP size +#define TUD_MSC_DESCRIPTOR(_itfnum, _stridx, _epout, _epin, _epsize) \ + /* Interface */\ + 9, TUSB_DESC_INTERFACE, _itfnum, 0, 2, TUSB_CLASS_MSC, MSC_SUBCLASS_SCSI, MSC_PROTOCOL_BOT, _stridx,\ + /* Endpoint Out */\ + 7, TUSB_DESC_ENDPOINT, _epout, TUSB_XFER_BULK, U16_TO_U8S_LE(_epsize), 0,\ + /* Endpoint In */\ + 7, TUSB_DESC_ENDPOINT, _epin, TUSB_XFER_BULK, U16_TO_U8S_LE(_epsize), 0 + + +//--------------------------------------------------------------------+ +// HID Descriptor Templates +//--------------------------------------------------------------------+ + +// Length of template descriptor: 25 bytes +#define TUD_HID_DESC_LEN (9 + 9 + 7) + +// HID Input only descriptor +// Interface number, string index, protocol, report descriptor len, EP In address, size & polling interval +#define TUD_HID_DESCRIPTOR(_itfnum, _stridx, _boot_protocol, _report_desc_len, _epin, _epsize, _ep_interval) \ + /* Interface */\ + 9, TUSB_DESC_INTERFACE, _itfnum, 0, 1, TUSB_CLASS_HID, (uint8_t)((_boot_protocol) ? (uint8_t)HID_SUBCLASS_BOOT : 0), _boot_protocol, _stridx,\ + /* HID descriptor */\ + 9, HID_DESC_TYPE_HID, U16_TO_U8S_LE(0x0111), 0, 1, HID_DESC_TYPE_REPORT, U16_TO_U8S_LE(_report_desc_len),\ + /* Endpoint In */\ + 7, TUSB_DESC_ENDPOINT, _epin, TUSB_XFER_INTERRUPT, U16_TO_U8S_LE(_epsize), _ep_interval + +// Length of template descriptor: 32 bytes +#define TUD_HID_INOUT_DESC_LEN (9 + 9 + 7 + 7) + +// HID Input & Output descriptor +// Interface number, string index, protocol, report descriptor len, EP OUT & IN address, size & polling interval +#define TUD_HID_INOUT_DESCRIPTOR(_itfnum, _stridx, _boot_protocol, _report_desc_len, _epout, _epin, _epsize, _ep_interval) \ + /* Interface */\ + 9, TUSB_DESC_INTERFACE, _itfnum, 0, 2, TUSB_CLASS_HID, (uint8_t)((_boot_protocol) ? (uint8_t)HID_SUBCLASS_BOOT : 0), _boot_protocol, _stridx,\ + /* HID descriptor */\ + 9, HID_DESC_TYPE_HID, U16_TO_U8S_LE(0x0111), 0, 1, HID_DESC_TYPE_REPORT, U16_TO_U8S_LE(_report_desc_len),\ + /* Endpoint Out */\ + 7, TUSB_DESC_ENDPOINT, _epout, TUSB_XFER_INTERRUPT, U16_TO_U8S_LE(_epsize), _ep_interval, \ + /* Endpoint In */\ + 7, TUSB_DESC_ENDPOINT, _epin, TUSB_XFER_INTERRUPT, U16_TO_U8S_LE(_epsize), _ep_interval + +//--------------------------------------------------------------------+ +// MIDI Descriptor Templates +// Note: MIDI v1.0 is based on Audio v1.0 +//--------------------------------------------------------------------+ + +#define TUD_MIDI_DESC_HEAD_LEN (9 + 9 + 9 + 7) +#define TUD_MIDI_DESC_HEAD(_itfnum, _stridx, _numcables) \ + /* Audio Control (AC) Interface */\ + 9, TUSB_DESC_INTERFACE, _itfnum, 0, 0, TUSB_CLASS_AUDIO, AUDIO_SUBCLASS_CONTROL, AUDIO_FUNC_PROTOCOL_CODE_UNDEF, _stridx,\ + /* AC Header */\ + 9, TUSB_DESC_CS_INTERFACE, AUDIO_CS_AC_INTERFACE_HEADER, U16_TO_U8S_LE(0x0100), U16_TO_U8S_LE(0x0009), 1, (uint8_t)((_itfnum) + 1),\ + /* MIDI Streaming (MS) Interface */\ + 9, TUSB_DESC_INTERFACE, (uint8_t)((_itfnum) + 1), 0, 2, TUSB_CLASS_AUDIO, AUDIO_SUBCLASS_MIDI_STREAMING, AUDIO_FUNC_PROTOCOL_CODE_UNDEF, 0,\ + /* MS Header */\ + 7, TUSB_DESC_CS_INTERFACE, MIDI_CS_INTERFACE_HEADER, U16_TO_U8S_LE(0x0100), U16_TO_U8S_LE(7 + (_numcables) * TUD_MIDI_DESC_JACK_LEN) + +#define TUD_MIDI_JACKID_IN_EMB(_cablenum) \ + (uint8_t)(((_cablenum) - 1) * 4 + 1) + +#define TUD_MIDI_JACKID_IN_EXT(_cablenum) \ + (uint8_t)(((_cablenum) - 1) * 4 + 2) + +#define TUD_MIDI_JACKID_OUT_EMB(_cablenum) \ + (uint8_t)(((_cablenum) - 1) * 4 + 3) + +#define TUD_MIDI_JACKID_OUT_EXT(_cablenum) \ + (uint8_t)(((_cablenum) - 1) * 4 + 4) + +#define TUD_MIDI_DESC_JACK_LEN (6 + 6 + 9 + 9) +#define TUD_MIDI_DESC_JACK(_cablenum) \ + /* MS In Jack (Embedded) */\ + 6, TUSB_DESC_CS_INTERFACE, MIDI_CS_INTERFACE_IN_JACK, MIDI_JACK_EMBEDDED, TUD_MIDI_JACKID_IN_EMB(_cablenum), 0,\ + /* MS In Jack (External) */\ + 6, TUSB_DESC_CS_INTERFACE, MIDI_CS_INTERFACE_IN_JACK, MIDI_JACK_EXTERNAL, TUD_MIDI_JACKID_IN_EXT(_cablenum), 0,\ + /* MS Out Jack (Embedded), connected to In Jack External */\ + 9, TUSB_DESC_CS_INTERFACE, MIDI_CS_INTERFACE_OUT_JACK, MIDI_JACK_EMBEDDED, TUD_MIDI_JACKID_OUT_EMB(_cablenum), 1, TUD_MIDI_JACKID_IN_EXT(_cablenum), 1, 0,\ + /* MS Out Jack (External), connected to In Jack Embedded */\ + 9, TUSB_DESC_CS_INTERFACE, MIDI_CS_INTERFACE_OUT_JACK, MIDI_JACK_EXTERNAL, TUD_MIDI_JACKID_OUT_EXT(_cablenum), 1, TUD_MIDI_JACKID_IN_EMB(_cablenum), 1, 0 + +#define TUD_MIDI_DESC_EP_LEN(_numcables) (9 + 4 + (_numcables)) +#define TUD_MIDI_DESC_EP(_epout, _epsize, _numcables) \ + /* Endpoint: Note Audio v1.0's endpoint has 9 bytes instead of 7 */\ + 9, TUSB_DESC_ENDPOINT, _epout, TUSB_XFER_BULK, U16_TO_U8S_LE(_epsize), 0, 0, 0, \ + /* MS Endpoint (connected to embedded jack) */\ + (uint8_t)(4 + (_numcables)), TUSB_DESC_CS_ENDPOINT, MIDI_CS_ENDPOINT_GENERAL, _numcables + +// Length of template descriptor (88 bytes) +#define TUD_MIDI_DESC_LEN (TUD_MIDI_DESC_HEAD_LEN + TUD_MIDI_DESC_JACK_LEN + TUD_MIDI_DESC_EP_LEN(1) * 2) + +// MIDI simple descriptor +// - 1 Embedded Jack In connected to 1 External Jack Out +// - 1 Embedded Jack out connected to 1 External Jack In +#define TUD_MIDI_DESCRIPTOR(_itfnum, _stridx, _epout, _epin, _epsize) \ + TUD_MIDI_DESC_HEAD(_itfnum, _stridx, 1),\ + TUD_MIDI_DESC_JACK(1),\ + TUD_MIDI_DESC_EP(_epout, _epsize, 1),\ + TUD_MIDI_JACKID_IN_EMB(1),\ + TUD_MIDI_DESC_EP(_epin, _epsize, 1),\ + TUD_MIDI_JACKID_OUT_EMB(1) + +//--------------------------------------------------------------------+ +// Audio v2.0 Descriptor Templates +//--------------------------------------------------------------------+ + +/* Standard Interface Association Descriptor (IAD) */ +#define TUD_AUDIO_DESC_IAD_LEN 8 +#define TUD_AUDIO_DESC_IAD(_firstitfs, _nitfs, _stridx) \ + TUD_AUDIO_DESC_IAD_LEN, TUSB_DESC_INTERFACE_ASSOCIATION, _firstitfs, _nitfs, TUSB_CLASS_AUDIO, AUDIO_FUNCTION_SUBCLASS_UNDEFINED, AUDIO_FUNC_PROTOCOL_CODE_V2, _stridx + +/* Standard AC Interface Descriptor(4.7.1) */ +#define TUD_AUDIO_DESC_STD_AC_LEN 9 +#define TUD_AUDIO_DESC_STD_AC(_itfnum, _nEPs, _stridx) /* _nEPs is 0 or 1 */\ + TUD_AUDIO_DESC_STD_AC_LEN, TUSB_DESC_INTERFACE, _itfnum, /* fixed to zero */ 0x00, _nEPs, TUSB_CLASS_AUDIO, AUDIO_SUBCLASS_CONTROL, AUDIO_INT_PROTOCOL_CODE_V2, _stridx + +/* Class-Specific AC Interface Header Descriptor(4.7.2) */ +#define TUD_AUDIO_DESC_CS_AC_LEN 9 +#define TUD_AUDIO_DESC_CS_AC(_bcdADC, _category, _totallen, _ctrl) /* _bcdADC : Audio Device Class Specification Release Number in Binary-Coded Decimal, _category : see audio_function_t, _totallen : Total number of bytes returned for the class-specific AudioControl interface i.e. Clock Source, Unit and Terminal descriptors - Do not include TUD_AUDIO_DESC_CS_AC_LEN, we already do this here*/ \ + TUD_AUDIO_DESC_CS_AC_LEN, TUSB_DESC_CS_INTERFACE, AUDIO_CS_AC_INTERFACE_HEADER, U16_TO_U8S_LE(_bcdADC), _category, U16_TO_U8S_LE(_totallen + TUD_AUDIO_DESC_CS_AC_LEN), _ctrl + +/* Clock Source Descriptor(4.7.2.1) */ +#define TUD_AUDIO_DESC_CLK_SRC_LEN 8 +#define TUD_AUDIO_DESC_CLK_SRC(_clkid, _attr, _ctrl, _assocTerm, _stridx) \ + TUD_AUDIO_DESC_CLK_SRC_LEN, TUSB_DESC_CS_INTERFACE, AUDIO_CS_AC_INTERFACE_CLOCK_SOURCE, _clkid, _attr, _ctrl, _assocTerm, _stridx + +/* Input Terminal Descriptor(4.7.2.4) */ +#define TUD_AUDIO_DESC_INPUT_TERM_LEN 17 +#define TUD_AUDIO_DESC_INPUT_TERM(_termid, _termtype, _assocTerm, _clkid, _nchannelslogical, _channelcfg, _idxchannelnames, _ctrl, _stridx) \ + TUD_AUDIO_DESC_INPUT_TERM_LEN, TUSB_DESC_CS_INTERFACE, AUDIO_CS_AC_INTERFACE_INPUT_TERMINAL, _termid, U16_TO_U8S_LE(_termtype), _assocTerm, _clkid, _nchannelslogical, U32_TO_U8S_LE(_channelcfg), _idxchannelnames, U16_TO_U8S_LE(_ctrl), _stridx + +/* Output Terminal Descriptor(4.7.2.5) */ +#define TUD_AUDIO_DESC_OUTPUT_TERM_LEN 12 +#define TUD_AUDIO_DESC_OUTPUT_TERM(_termid, _termtype, _assocTerm, _srcid, _clkid, _ctrl, _stridx) \ + TUD_AUDIO_DESC_OUTPUT_TERM_LEN, TUSB_DESC_CS_INTERFACE, AUDIO_CS_AC_INTERFACE_OUTPUT_TERMINAL, _termid, U16_TO_U8S_LE(_termtype), _assocTerm, _srcid, _clkid, U16_TO_U8S_LE(_ctrl), _stridx + +/* Feature Unit Descriptor(4.7.2.8) */ +// 1 - Channel +#define TUD_AUDIO_DESC_FEATURE_UNIT_ONE_CHANNEL_LEN 6+(1+1)*4 +#define TUD_AUDIO_DESC_FEATURE_UNIT_ONE_CHANNEL(_unitid, _srcid, _ctrlch0master, _ctrlch1, _stridx) \ + TUD_AUDIO_DESC_FEATURE_UNIT_ONE_CHANNEL_LEN, TUSB_DESC_CS_INTERFACE, AUDIO_CS_AC_INTERFACE_FEATURE_UNIT, _unitid, _srcid, U32_TO_U8S_LE(_ctrlch0master), U32_TO_U8S_LE(_ctrlch1), _stridx + +// 2 - Channels +#define TUD_AUDIO_DESC_FEATURE_UNIT_TWO_CHANNEL_LEN (6+(2+1)*4) +#define TUD_AUDIO_DESC_FEATURE_UNIT_TWO_CHANNEL(_unitid, _srcid, _ctrlch0master, _ctrlch1, _ctrlch2, _stridx) \ + TUD_AUDIO_DESC_FEATURE_UNIT_TWO_CHANNEL_LEN, TUSB_DESC_CS_INTERFACE, AUDIO_CS_AC_INTERFACE_FEATURE_UNIT, _unitid, _srcid, U32_TO_U8S_LE(_ctrlch0master), U32_TO_U8S_LE(_ctrlch1), U32_TO_U8S_LE(_ctrlch2), _stridx +// 4 - Channels +#define TUD_AUDIO_DESC_FEATURE_UNIT_FOUR_CHANNEL_LEN (6+(4+1)*4) +#define TUD_AUDIO_DESC_FEATURE_UNIT_FOUR_CHANNEL(_unitid, _srcid, _ctrlch0master, _ctrlch1, _ctrlch2, _ctrlch3, _ctrlch4, _stridx) \ + TUD_AUDIO_DESC_FEATURE_UNIT_FOUR_CHANNEL_LEN, TUSB_DESC_CS_INTERFACE, AUDIO_CS_AC_INTERFACE_FEATURE_UNIT, _unitid, _srcid, U32_TO_U8S_LE(_ctrlch0master), U32_TO_U8S_LE(_ctrlch1), U32_TO_U8S_LE(_ctrlch2), U32_TO_U8S_LE(_ctrlch3), U32_TO_U8S_LE(_ctrlch4), _stridx + +// For more channels, add definitions here + +/* Standard AS Interface Descriptor(4.9.1) */ +#define TUD_AUDIO_DESC_STD_AS_INT_LEN 9 +#define TUD_AUDIO_DESC_STD_AS_INT(_itfnum, _altset, _nEPs, _stridx) \ + TUD_AUDIO_DESC_STD_AS_INT_LEN, TUSB_DESC_INTERFACE, _itfnum, _altset, _nEPs, TUSB_CLASS_AUDIO, AUDIO_SUBCLASS_STREAMING, AUDIO_INT_PROTOCOL_CODE_V2, _stridx + +/* Class-Specific AS Interface Descriptor(4.9.2) */ +#define TUD_AUDIO_DESC_CS_AS_INT_LEN 16 +#define TUD_AUDIO_DESC_CS_AS_INT(_termid, _ctrl, _formattype, _formats, _nchannelsphysical, _channelcfg, _stridx) \ + TUD_AUDIO_DESC_CS_AS_INT_LEN, TUSB_DESC_CS_INTERFACE, AUDIO_CS_AS_INTERFACE_AS_GENERAL, _termid, _ctrl, _formattype, U32_TO_U8S_LE(_formats), _nchannelsphysical, U32_TO_U8S_LE(_channelcfg), _stridx + +/* Type I Format Type Descriptor(2.3.1.6 - Audio Formats) */ +#define TUD_AUDIO_DESC_TYPE_I_FORMAT_LEN 6 +#define TUD_AUDIO_DESC_TYPE_I_FORMAT(_subslotsize, _bitresolution) /* _subslotsize is number of bytes per sample (i.e. subslot) and can be 1,2,3, or 4 */\ + TUD_AUDIO_DESC_TYPE_I_FORMAT_LEN, TUSB_DESC_CS_INTERFACE, AUDIO_CS_AS_INTERFACE_FORMAT_TYPE, AUDIO_FORMAT_TYPE_I, _subslotsize, _bitresolution + +/* Standard AS Isochronous Audio Data Endpoint Descriptor(4.10.1.1) */ +#define TUD_AUDIO_DESC_STD_AS_ISO_EP_LEN 7 +#define TUD_AUDIO_DESC_STD_AS_ISO_EP(_ep, _attr, _maxEPsize, _interval) \ + TUD_AUDIO_DESC_STD_AS_ISO_EP_LEN, TUSB_DESC_ENDPOINT, _ep, _attr, U16_TO_U8S_LE(_maxEPsize), _interval + +/* Class-Specific AS Isochronous Audio Data Endpoint Descriptor(4.10.1.2) */ +#define TUD_AUDIO_DESC_CS_AS_ISO_EP_LEN 8 +#define TUD_AUDIO_DESC_CS_AS_ISO_EP(_attr, _ctrl, _lockdelayunit, _lockdelay) \ + TUD_AUDIO_DESC_CS_AS_ISO_EP_LEN, TUSB_DESC_CS_ENDPOINT, AUDIO_CS_EP_SUBTYPE_GENERAL, _attr, _ctrl, _lockdelayunit, U16_TO_U8S_LE(_lockdelay) + +/* Standard AS Isochronous Feedback Endpoint Descriptor(4.10.2.1) */ +#define TUD_AUDIO_DESC_STD_AS_ISO_FB_EP_LEN 7 +#define TUD_AUDIO_DESC_STD_AS_ISO_FB_EP(_ep, _interval) \ + TUD_AUDIO_DESC_STD_AS_ISO_FB_EP_LEN, TUSB_DESC_ENDPOINT, _ep, (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_NO_SYNC | TUSB_ISO_EP_ATT_EXPLICIT_FB), U16_TO_U8S_LE(4), _interval + +// AUDIO simple descriptor (UAC2) for 1 microphone input +// - 1 Input Terminal, 1 Feature Unit (Mute and Volume Control), 1 Output Terminal, 1 Clock Source + +#define TUD_AUDIO_MIC_ONE_CH_DESC_LEN (TUD_AUDIO_DESC_IAD_LEN\ + + TUD_AUDIO_DESC_STD_AC_LEN\ + + TUD_AUDIO_DESC_CS_AC_LEN\ + + TUD_AUDIO_DESC_CLK_SRC_LEN\ + + TUD_AUDIO_DESC_INPUT_TERM_LEN\ + + TUD_AUDIO_DESC_OUTPUT_TERM_LEN\ + + TUD_AUDIO_DESC_FEATURE_UNIT_ONE_CHANNEL_LEN\ + + TUD_AUDIO_DESC_STD_AS_INT_LEN\ + + TUD_AUDIO_DESC_STD_AS_INT_LEN\ + + TUD_AUDIO_DESC_CS_AS_INT_LEN\ + + TUD_AUDIO_DESC_TYPE_I_FORMAT_LEN\ + + TUD_AUDIO_DESC_STD_AS_ISO_EP_LEN\ + + TUD_AUDIO_DESC_CS_AS_ISO_EP_LEN) + +#define TUD_AUDIO_MIC_ONE_CH_DESC_N_AS_INT 1 // Number of AS interfaces + +#define TUD_AUDIO_MIC_ONE_CH_DESCRIPTOR(_itfnum, _stridx, _nBytesPerSample, _nBitsUsedPerSample, _epin, _epsize) \ + /* Standard Interface Association Descriptor (IAD) */\ + TUD_AUDIO_DESC_IAD(/*_firstitfs*/ _itfnum, /*_nitfs*/ 0x02, /*_stridx*/ 0x00),\ + /* Standard AC Interface Descriptor(4.7.1) */\ + TUD_AUDIO_DESC_STD_AC(/*_itfnum*/ _itfnum, /*_nEPs*/ 0x00, /*_stridx*/ _stridx),\ + /* Class-Specific AC Interface Header Descriptor(4.7.2) */\ + TUD_AUDIO_DESC_CS_AC(/*_bcdADC*/ 0x0200, /*_category*/ AUDIO_FUNC_MICROPHONE, /*_totallen*/ TUD_AUDIO_DESC_CLK_SRC_LEN+TUD_AUDIO_DESC_INPUT_TERM_LEN+TUD_AUDIO_DESC_OUTPUT_TERM_LEN+TUD_AUDIO_DESC_FEATURE_UNIT_ONE_CHANNEL_LEN, /*_ctrl*/ AUDIO_CS_AS_INTERFACE_CTRL_LATENCY_POS),\ + /* Clock Source Descriptor(4.7.2.1) */\ + TUD_AUDIO_DESC_CLK_SRC(/*_clkid*/ 0x04, /*_attr*/ AUDIO_CLOCK_SOURCE_ATT_INT_FIX_CLK, /*_ctrl*/ (AUDIO_CTRL_R << AUDIO_CLOCK_SOURCE_CTRL_CLK_FRQ_POS), /*_assocTerm*/ 0x01, /*_stridx*/ 0x00),\ + /* Input Terminal Descriptor(4.7.2.4) */\ + TUD_AUDIO_DESC_INPUT_TERM(/*_termid*/ 0x01, /*_termtype*/ AUDIO_TERM_TYPE_IN_GENERIC_MIC, /*_assocTerm*/ 0x03, /*_clkid*/ 0x04, /*_nchannelslogical*/ 0x01, /*_channelcfg*/ AUDIO_CHANNEL_CONFIG_NON_PREDEFINED, /*_idxchannelnames*/ 0x00, /*_ctrl*/ AUDIO_CTRL_R << AUDIO_IN_TERM_CTRL_CONNECTOR_POS, /*_stridx*/ 0x00),\ + /* Output Terminal Descriptor(4.7.2.5) */\ + TUD_AUDIO_DESC_OUTPUT_TERM(/*_termid*/ 0x03, /*_termtype*/ AUDIO_TERM_TYPE_USB_STREAMING, /*_assocTerm*/ 0x01, /*_srcid*/ 0x02, /*_clkid*/ 0x04, /*_ctrl*/ 0x0000, /*_stridx*/ 0x00),\ + /* Feature Unit Descriptor(4.7.2.8) */\ + TUD_AUDIO_DESC_FEATURE_UNIT_ONE_CHANNEL(/*_unitid*/ 0x02, /*_srcid*/ 0x01, /*_ctrlch0master*/ AUDIO_CTRL_RW << AUDIO_FEATURE_UNIT_CTRL_MUTE_POS | AUDIO_CTRL_RW << AUDIO_FEATURE_UNIT_CTRL_VOLUME_POS, /*_ctrlch1*/ AUDIO_CTRL_RW << AUDIO_FEATURE_UNIT_CTRL_MUTE_POS | AUDIO_CTRL_RW << AUDIO_FEATURE_UNIT_CTRL_VOLUME_POS, /*_stridx*/ 0x00),\ + /* Standard AS Interface Descriptor(4.9.1) */\ + /* Interface 1, Alternate 0 - default alternate setting with 0 bandwidth */\ + TUD_AUDIO_DESC_STD_AS_INT(/*_itfnum*/ (uint8_t)((_itfnum)+1), /*_altset*/ 0x00, /*_nEPs*/ 0x00, /*_stridx*/ 0x00),\ + /* Standard AS Interface Descriptor(4.9.1) */\ + /* Interface 1, Alternate 1 - alternate interface for data streaming */\ + TUD_AUDIO_DESC_STD_AS_INT(/*_itfnum*/ (uint8_t)((_itfnum)+1), /*_altset*/ 0x01, /*_nEPs*/ 0x01, /*_stridx*/ 0x00),\ + /* Class-Specific AS Interface Descriptor(4.9.2) */\ + TUD_AUDIO_DESC_CS_AS_INT(/*_termid*/ 0x03, /*_ctrl*/ AUDIO_CTRL_NONE, /*_formattype*/ AUDIO_FORMAT_TYPE_I, /*_formats*/ AUDIO_DATA_FORMAT_TYPE_I_PCM, /*_nchannelsphysical*/ 0x01, /*_channelcfg*/ AUDIO_CHANNEL_CONFIG_NON_PREDEFINED, /*_stridx*/ 0x00),\ + /* Type I Format Type Descriptor(2.3.1.6 - Audio Formats) */\ + TUD_AUDIO_DESC_TYPE_I_FORMAT(_nBytesPerSample, _nBitsUsedPerSample),\ + /* Standard AS Isochronous Audio Data Endpoint Descriptor(4.10.1.1) */\ + TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epin, /*_attr*/ (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_ASYNCHRONOUS | TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ (CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 0x04 : 0x01),\ + /* Class-Specific AS Isochronous Audio Data Endpoint Descriptor(4.10.1.2) */\ + TUD_AUDIO_DESC_CS_AS_ISO_EP(/*_attr*/ AUDIO_CS_AS_ISO_DATA_EP_ATT_NON_MAX_PACKETS_OK, /*_ctrl*/ AUDIO_CTRL_NONE, /*_lockdelayunit*/ AUDIO_CS_AS_ISO_DATA_EP_LOCK_DELAY_UNIT_UNDEFINED, /*_lockdelay*/ 0x0000) + +// AUDIO simple descriptor (UAC2) for 4 microphone input +// - 1 Input Terminal, 1 Feature Unit (Mute and Volume Control), 1 Output Terminal, 1 Clock Source + +#define TUD_AUDIO_MIC_FOUR_CH_DESC_LEN (TUD_AUDIO_DESC_IAD_LEN\ + + TUD_AUDIO_DESC_STD_AC_LEN\ + + TUD_AUDIO_DESC_CS_AC_LEN\ + + TUD_AUDIO_DESC_CLK_SRC_LEN\ + + TUD_AUDIO_DESC_INPUT_TERM_LEN\ + + TUD_AUDIO_DESC_OUTPUT_TERM_LEN\ + + TUD_AUDIO_DESC_FEATURE_UNIT_FOUR_CHANNEL_LEN\ + + TUD_AUDIO_DESC_STD_AS_INT_LEN\ + + TUD_AUDIO_DESC_STD_AS_INT_LEN\ + + TUD_AUDIO_DESC_CS_AS_INT_LEN\ + + TUD_AUDIO_DESC_TYPE_I_FORMAT_LEN\ + + TUD_AUDIO_DESC_STD_AS_ISO_EP_LEN\ + + TUD_AUDIO_DESC_CS_AS_ISO_EP_LEN) + +#define TUD_AUDIO_MIC_FOUR_CH_DESC_N_AS_INT 1 // Number of AS interfaces + +#define TUD_AUDIO_MIC_FOUR_CH_DESCRIPTOR(_itfnum, _stridx, _nBytesPerSample, _nBitsUsedPerSample, _epin, _epsize) \ + /* Standard Interface Association Descriptor (IAD) */\ + TUD_AUDIO_DESC_IAD(/*_firstitfs*/ _itfnum, /*_nitfs*/ 0x02, /*_stridx*/ 0x00),\ + /* Standard AC Interface Descriptor(4.7.1) */\ + TUD_AUDIO_DESC_STD_AC(/*_itfnum*/ _itfnum, /*_nEPs*/ 0x00, /*_stridx*/ _stridx),\ + /* Class-Specific AC Interface Header Descriptor(4.7.2) */\ + TUD_AUDIO_DESC_CS_AC(/*_bcdADC*/ 0x0200, /*_category*/ AUDIO_FUNC_MICROPHONE, /*_totallen*/ TUD_AUDIO_DESC_CLK_SRC_LEN+TUD_AUDIO_DESC_INPUT_TERM_LEN+TUD_AUDIO_DESC_OUTPUT_TERM_LEN+TUD_AUDIO_DESC_FEATURE_UNIT_FOUR_CHANNEL_LEN, /*_ctrl*/ AUDIO_CS_AS_INTERFACE_CTRL_LATENCY_POS),\ + /* Clock Source Descriptor(4.7.2.1) */\ + TUD_AUDIO_DESC_CLK_SRC(/*_clkid*/ 0x04, /*_attr*/ AUDIO_CLOCK_SOURCE_ATT_INT_FIX_CLK, /*_ctrl*/ (AUDIO_CTRL_R << AUDIO_CLOCK_SOURCE_CTRL_CLK_FRQ_POS), /*_assocTerm*/ 0x01, /*_stridx*/ 0x00),\ + /* Input Terminal Descriptor(4.7.2.4) */\ + TUD_AUDIO_DESC_INPUT_TERM(/*_termid*/ 0x01, /*_termtype*/ AUDIO_TERM_TYPE_IN_GENERIC_MIC, /*_assocTerm*/ 0x03, /*_clkid*/ 0x04, /*_nchannelslogical*/ 0x04, /*_channelcfg*/ AUDIO_CHANNEL_CONFIG_NON_PREDEFINED, /*_idxchannelnames*/ 0x00, /*_ctrl*/ AUDIO_CTRL_R << AUDIO_IN_TERM_CTRL_CONNECTOR_POS, /*_stridx*/ 0x00),\ + /* Output Terminal Descriptor(4.7.2.5) */\ + TUD_AUDIO_DESC_OUTPUT_TERM(/*_termid*/ 0x03, /*_termtype*/ AUDIO_TERM_TYPE_USB_STREAMING, /*_assocTerm*/ 0x01, /*_srcid*/ 0x02, /*_clkid*/ 0x04, /*_ctrl*/ 0x0000, /*_stridx*/ 0x00),\ + /* Feature Unit Descriptor(4.7.2.8) */\ + TUD_AUDIO_DESC_FEATURE_UNIT_FOUR_CHANNEL(/*_unitid*/ 0x02, /*_srcid*/ 0x01, /*_ctrlch0master*/ AUDIO_CTRL_RW << AUDIO_FEATURE_UNIT_CTRL_MUTE_POS | AUDIO_CTRL_RW << AUDIO_FEATURE_UNIT_CTRL_VOLUME_POS, /*_ctrlch1*/ AUDIO_CTRL_RW << AUDIO_FEATURE_UNIT_CTRL_MUTE_POS | AUDIO_CTRL_RW << AUDIO_FEATURE_UNIT_CTRL_VOLUME_POS, /*_ctrlch2*/ AUDIO_CTRL_RW << AUDIO_FEATURE_UNIT_CTRL_MUTE_POS | AUDIO_CTRL_RW << AUDIO_FEATURE_UNIT_CTRL_VOLUME_POS, /*_ctrlch3*/ AUDIO_CTRL_RW << AUDIO_FEATURE_UNIT_CTRL_MUTE_POS | AUDIO_CTRL_RW << AUDIO_FEATURE_UNIT_CTRL_VOLUME_POS, /*_ctrlch4*/ AUDIO_CTRL_RW << AUDIO_FEATURE_UNIT_CTRL_MUTE_POS | AUDIO_CTRL_RW << AUDIO_FEATURE_UNIT_CTRL_VOLUME_POS, /*_stridx*/ 0x00),\ + /* Standard AS Interface Descriptor(4.9.1) */\ + /* Interface 1, Alternate 0 - default alternate setting with 0 bandwidth */\ + TUD_AUDIO_DESC_STD_AS_INT(/*_itfnum*/ (uint8_t)((_itfnum)+1), /*_altset*/ 0x00, /*_nEPs*/ 0x00, /*_stridx*/ 0x00),\ + /* Standard AS Interface Descriptor(4.9.1) */\ + /* Interface 1, Alternate 1 - alternate interface for data streaming */\ + TUD_AUDIO_DESC_STD_AS_INT(/*_itfnum*/ (uint8_t)((_itfnum)+1), /*_altset*/ 0x01, /*_nEPs*/ 0x01, /*_stridx*/ 0x00),\ + /* Class-Specific AS Interface Descriptor(4.9.2) */\ + TUD_AUDIO_DESC_CS_AS_INT(/*_termid*/ 0x03, /*_ctrl*/ AUDIO_CTRL_NONE, /*_formattype*/ AUDIO_FORMAT_TYPE_I, /*_formats*/ AUDIO_DATA_FORMAT_TYPE_I_PCM, /*_nchannelsphysical*/ 0x04, /*_channelcfg*/ AUDIO_CHANNEL_CONFIG_NON_PREDEFINED, /*_stridx*/ 0x00),\ + /* Type I Format Type Descriptor(2.3.1.6 - Audio Formats) */\ + TUD_AUDIO_DESC_TYPE_I_FORMAT(_nBytesPerSample, _nBitsUsedPerSample),\ + /* Standard AS Isochronous Audio Data Endpoint Descriptor(4.10.1.1) */\ + TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epin, /*_attr*/ (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_ASYNCHRONOUS | TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ (CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 0x04 : 0x01),\ + /* Class-Specific AS Isochronous Audio Data Endpoint Descriptor(4.10.1.2) */\ + TUD_AUDIO_DESC_CS_AS_ISO_EP(/*_attr*/ AUDIO_CS_AS_ISO_DATA_EP_ATT_NON_MAX_PACKETS_OK, /*_ctrl*/ AUDIO_CTRL_NONE, /*_lockdelayunit*/ AUDIO_CS_AS_ISO_DATA_EP_LOCK_DELAY_UNIT_UNDEFINED, /*_lockdelay*/ 0x0000) + +// AUDIO simple descriptor (UAC2) for mono speaker +// - 1 Input Terminal, 2 Feature Unit (Mute and Volume Control), 3 Output Terminal, 4 Clock Source + +#define TUD_AUDIO_SPEAKER_MONO_FB_DESC_LEN (TUD_AUDIO_DESC_IAD_LEN\ + + TUD_AUDIO_DESC_STD_AC_LEN\ + + TUD_AUDIO_DESC_CS_AC_LEN\ + + TUD_AUDIO_DESC_CLK_SRC_LEN\ + + TUD_AUDIO_DESC_INPUT_TERM_LEN\ + + TUD_AUDIO_DESC_OUTPUT_TERM_LEN\ + + TUD_AUDIO_DESC_FEATURE_UNIT_ONE_CHANNEL_LEN\ + + TUD_AUDIO_DESC_STD_AS_INT_LEN\ + + TUD_AUDIO_DESC_STD_AS_INT_LEN\ + + TUD_AUDIO_DESC_CS_AS_INT_LEN\ + + TUD_AUDIO_DESC_TYPE_I_FORMAT_LEN\ + + TUD_AUDIO_DESC_STD_AS_ISO_EP_LEN\ + + TUD_AUDIO_DESC_CS_AS_ISO_EP_LEN\ + + TUD_AUDIO_DESC_STD_AS_ISO_FB_EP_LEN) + +#define TUD_AUDIO_SPEAKER_MONO_FB_DESCRIPTOR(_itfnum, _stridx, _nBytesPerSample, _nBitsUsedPerSample, _epout, _epsize, _epfb) \ + /* Standard Interface Association Descriptor (IAD) */\ + TUD_AUDIO_DESC_IAD(/*_firstitfs*/ _itfnum, /*_nitfs*/ 0x02, /*_stridx*/ 0x00),\ + /* Standard AC Interface Descriptor(4.7.1) */\ + TUD_AUDIO_DESC_STD_AC(/*_itfnum*/ _itfnum, /*_nEPs*/ 0x00, /*_stridx*/ _stridx),\ + /* Class-Specific AC Interface Header Descriptor(4.7.2) */\ + TUD_AUDIO_DESC_CS_AC(/*_bcdADC*/ 0x0200, /*_category*/ AUDIO_FUNC_DESKTOP_SPEAKER, /*_totallen*/ TUD_AUDIO_DESC_CLK_SRC_LEN+TUD_AUDIO_DESC_INPUT_TERM_LEN+TUD_AUDIO_DESC_OUTPUT_TERM_LEN+TUD_AUDIO_DESC_FEATURE_UNIT_ONE_CHANNEL_LEN, /*_ctrl*/ AUDIO_CS_AS_INTERFACE_CTRL_LATENCY_POS),\ + /* Clock Source Descriptor(4.7.2.1) */\ + TUD_AUDIO_DESC_CLK_SRC(/*_clkid*/ 0x04, /*_attr*/ AUDIO_CLOCK_SOURCE_ATT_INT_FIX_CLK, /*_ctrl*/ (AUDIO_CTRL_R << AUDIO_CLOCK_SOURCE_CTRL_CLK_FRQ_POS), /*_assocTerm*/ 0x01, /*_stridx*/ 0x00),\ + /* Input Terminal Descriptor(4.7.2.4) */\ + TUD_AUDIO_DESC_INPUT_TERM(/*_termid*/ 0x01, /*_termtype*/ AUDIO_TERM_TYPE_USB_STREAMING, /*_assocTerm*/ 0x00, /*_clkid*/ 0x04, /*_nchannelslogical*/ 0x01, /*_channelcfg*/ AUDIO_CHANNEL_CONFIG_NON_PREDEFINED, /*_idxchannelnames*/ 0x00, /*_ctrl*/ 0 * (AUDIO_CTRL_R << AUDIO_IN_TERM_CTRL_CONNECTOR_POS), /*_stridx*/ 0x00),\ + /* Output Terminal Descriptor(4.7.2.5) */\ + TUD_AUDIO_DESC_OUTPUT_TERM(/*_termid*/ 0x03, /*_termtype*/ AUDIO_TERM_TYPE_OUT_DESKTOP_SPEAKER, /*_assocTerm*/ 0x01, /*_srcid*/ 0x02, /*_clkid*/ 0x04, /*_ctrl*/ 0x0000, /*_stridx*/ 0x00),\ + /* Feature Unit Descriptor(4.7.2.8) */\ + TUD_AUDIO_DESC_FEATURE_UNIT_ONE_CHANNEL(/*_unitid*/ 0x02, /*_srcid*/ 0x01, /*_ctrlch0master*/ 0 * (AUDIO_CTRL_RW << AUDIO_FEATURE_UNIT_CTRL_MUTE_POS | AUDIO_CTRL_RW << AUDIO_FEATURE_UNIT_CTRL_VOLUME_POS), /*_ctrlch1*/ 0 * (AUDIO_CTRL_RW << AUDIO_FEATURE_UNIT_CTRL_MUTE_POS | AUDIO_CTRL_RW << AUDIO_FEATURE_UNIT_CTRL_VOLUME_POS), /*_stridx*/ 0x00),\ + /* Standard AS Interface Descriptor(4.9.1) */\ + /* Interface 1, Alternate 0 - default alternate setting with 0 bandwidth */\ + TUD_AUDIO_DESC_STD_AS_INT(/*_itfnum*/ (uint8_t)((_itfnum) + 1), /*_altset*/ 0x00, /*_nEPs*/ 0x00, /*_stridx*/ 0x00),\ + /* Standard AS Interface Descriptor(4.9.1) */\ + /* Interface 1, Alternate 1 - alternate interface for data streaming */\ + TUD_AUDIO_DESC_STD_AS_INT(/*_itfnum*/ (uint8_t)((_itfnum) + 1), /*_altset*/ 0x01, /*_nEPs*/ 0x02, /*_stridx*/ 0x00),\ + /* Class-Specific AS Interface Descriptor(4.9.2) */\ + TUD_AUDIO_DESC_CS_AS_INT(/*_termid*/ 0x01, /*_ctrl*/ AUDIO_CTRL_NONE, /*_formattype*/ AUDIO_FORMAT_TYPE_I, /*_formats*/ AUDIO_DATA_FORMAT_TYPE_I_PCM, /*_nchannelsphysical*/ 0x01, /*_channelcfg*/ AUDIO_CHANNEL_CONFIG_NON_PREDEFINED, /*_stridx*/ 0x00),\ + /* Type I Format Type Descriptor(2.3.1.6 - Audio Formats) */\ + TUD_AUDIO_DESC_TYPE_I_FORMAT(_nBytesPerSample, _nBitsUsedPerSample),\ + /* Standard AS Isochronous Audio Data Endpoint Descriptor(4.10.1.1) */\ + TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epout, /*_attr*/ (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_ASYNCHRONOUS | TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ (CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 0x04 : 0x01),\ + /* Class-Specific AS Isochronous Audio Data Endpoint Descriptor(4.10.1.2) */\ + TUD_AUDIO_DESC_CS_AS_ISO_EP(/*_attr*/ AUDIO_CS_AS_ISO_DATA_EP_ATT_NON_MAX_PACKETS_OK, /*_ctrl*/ AUDIO_CTRL_NONE, /*_lockdelayunit*/ AUDIO_CS_AS_ISO_DATA_EP_LOCK_DELAY_UNIT_UNDEFINED, /*_lockdelay*/ 0x0000),\ + /* Standard AS Isochronous Feedback Endpoint Descriptor(4.10.2.1) */\ + TUD_AUDIO_DESC_STD_AS_ISO_FB_EP(/*_ep*/ _epfb, /*_interval*/ 1)\ + +// Calculate wMaxPacketSize of Endpoints +#define TUD_AUDIO_EP_SIZE(_maxFrequency, _nBytesPerSample, _nChannels) \ + ((((_maxFrequency + ((CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 7999 : 999)) / ((CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 8000 : 1000)) + 1) * _nBytesPerSample * _nChannels) + + +//--------------------------------------------------------------------+ +// USBTMC/USB488 Descriptor Templates +//--------------------------------------------------------------------+ + +#define TUD_USBTMC_APP_CLASS (TUSB_CLASS_APPLICATION_SPECIFIC) +#define TUD_USBTMC_APP_SUBCLASS 0x03u + +#define TUD_USBTMC_PROTOCOL_STD 0x00u +#define TUD_USBTMC_PROTOCOL_USB488 0x01u + +// Interface number, number of endpoints, EP string index, USB_TMC_PROTOCOL*, bulk-out endpoint ID, +// bulk-in endpoint ID +#define TUD_USBTMC_IF_DESCRIPTOR(_itfnum, _bNumEndpoints, _stridx, _itfProtocol) \ + /* Interface */ \ + 0x09, TUSB_DESC_INTERFACE, _itfnum, 0x00, _bNumEndpoints, TUD_USBTMC_APP_CLASS, TUD_USBTMC_APP_SUBCLASS, _itfProtocol, _stridx + +#define TUD_USBTMC_IF_DESCRIPTOR_LEN 9u + +#define TUD_USBTMC_BULK_DESCRIPTORS(_epout, _epin, _bulk_epsize) \ + /* Endpoint Out */ \ + 7, TUSB_DESC_ENDPOINT, _epout, TUSB_XFER_BULK, U16_TO_U8S_LE(_bulk_epsize), 0u, \ + /* Endpoint In */ \ + 7, TUSB_DESC_ENDPOINT, _epin, TUSB_XFER_BULK, U16_TO_U8S_LE(_bulk_epsize), 0u + +#define TUD_USBTMC_BULK_DESCRIPTORS_LEN (7u+7u) + +/* optional interrupt endpoint */ \ +// _int_pollingInterval : for LS/FS, expressed in frames (1ms each). 16 may be a good number? +#define TUD_USBTMC_INT_DESCRIPTOR(_ep_interrupt, _ep_interrupt_size, _int_pollingInterval ) \ + 7, TUSB_DESC_ENDPOINT, _ep_interrupt, TUSB_XFER_INTERRUPT, U16_TO_U8S_LE(_ep_interrupt_size), 0x16 + +#define TUD_USBTMC_INT_DESCRIPTOR_LEN (7u) + +//--------------------------------------------------------------------+ +// Vendor Descriptor Templates +//--------------------------------------------------------------------+ + +#define TUD_VENDOR_DESC_LEN (9+7+7) + +// Interface number, string index, EP Out & IN address, EP size +#define TUD_VENDOR_DESCRIPTOR(_itfnum, _stridx, _epout, _epin, _epsize) \ + /* Interface */\ + 9, TUSB_DESC_INTERFACE, _itfnum, 0, 2, TUSB_CLASS_VENDOR_SPECIFIC, 0x00, 0x00, _stridx,\ + /* Endpoint Out */\ + 7, TUSB_DESC_ENDPOINT, _epout, TUSB_XFER_BULK, U16_TO_U8S_LE(_epsize), 0,\ + /* Endpoint In */\ + 7, TUSB_DESC_ENDPOINT, _epin, TUSB_XFER_BULK, U16_TO_U8S_LE(_epsize), 0 + +//--------------------------------------------------------------------+ +// DFU Runtime Descriptor Templates +//--------------------------------------------------------------------+ + +#define TUD_DFU_APP_CLASS (TUSB_CLASS_APPLICATION_SPECIFIC) +#define TUD_DFU_APP_SUBCLASS (APP_SUBCLASS_DFU_RUNTIME) + +// Length of template descriptr: 18 bytes +#define TUD_DFU_RT_DESC_LEN (9 + 9) + +// DFU runtime descriptor +// Interface number, string index, attributes, detach timeout, transfer size +#define TUD_DFU_RT_DESCRIPTOR(_itfnum, _stridx, _attr, _timeout, _xfer_size) \ + /* Interface */ \ + 9, TUSB_DESC_INTERFACE, _itfnum, 0, 0, TUD_DFU_APP_CLASS, TUD_DFU_APP_SUBCLASS, DFU_PROTOCOL_RT, _stridx, \ + /* Function */ \ + 9, DFU_DESC_FUNCTIONAL, _attr, U16_TO_U8S_LE(_timeout), U16_TO_U8S_LE(_xfer_size), U16_TO_U8S_LE(0x0101) + +//--------------------------------------------------------------------+ +// DFU Descriptor Templates +//--------------------------------------------------------------------+ + +// Length of template descriptor: 9 bytes + number of alternatives * 9 +#define TUD_DFU_DESC_LEN(_alt_count) (9 + (_alt_count) * 9) + +// Interface number, Alternate count, starting string index, attributes, detach timeout, transfer size +// Note: Alternate count must be numberic or macro, string index is increased by one for each Alt interface +#define TUD_DFU_DESCRIPTOR(_itfnum, _alt_count, _stridx, _attr, _timeout, _xfer_size) \ + TU_XSTRCAT(_TUD_DFU_ALT_,_alt_count)(_itfnum, 0, _stridx), \ + /* Function */ \ + 9, DFU_DESC_FUNCTIONAL, _attr, U16_TO_U8S_LE(_timeout), U16_TO_U8S_LE(_xfer_size), U16_TO_U8S_LE(0x0101) + +#define _TUD_DFU_ALT(_itfnum, _alt, _stridx) \ + /* Interface */ \ + 9, TUSB_DESC_INTERFACE, _itfnum, _alt, 0, TUD_DFU_APP_CLASS, TUD_DFU_APP_SUBCLASS, DFU_PROTOCOL_DFU, _stridx + +#define _TUD_DFU_ALT_1(_itfnum, _alt_count, _stridx) \ + _TUD_DFU_ALT(_itfnum, _alt_count, _stridx) + +#define _TUD_DFU_ALT_2(_itfnum, _alt_count, _stridx) \ + _TUD_DFU_ALT(_itfnum, _alt_count, _stridx), \ + _TUD_DFU_ALT_1(_itfnum, _alt_count+1, _stridx+1) + +#define _TUD_DFU_ALT_3(_itfnum, _alt_count, _stridx) \ + _TUD_DFU_ALT(_itfnum, _alt_count, _stridx), \ + _TUD_DFU_ALT_2(_itfnum, _alt_count+1, _stridx+1) + +#define _TUD_DFU_ALT_4(_itfnum, _alt_count, _stridx) \ + _TUD_DFU_ALT(_itfnum, _alt_count, _stridx), \ + _TUD_DFU_ALT_3(_itfnum, _alt_count+1, _stridx+1) + +#define _TUD_DFU_ALT_5(_itfnum, _alt_count, _stridx) \ + _TUD_DFU_ALT(_itfnum, _alt_count, _stridx), \ + _TUD_DFU_ALT_4(_itfnum, _alt_count+1, _stridx+1) + +#define _TUD_DFU_ALT_6(_itfnum, _alt_count, _stridx) \ + _TUD_DFU_ALT(_itfnum, _alt_count, _stridx), \ + _TUD_DFU_ALT_5(_itfnum, _alt_count+1, _stridx+1) + +#define _TUD_DFU_ALT_7(_itfnum, _alt_count, _stridx) \ + _TUD_DFU_ALT(_itfnum, _alt_count, _stridx), \ + _TUD_DFU_ALT_6(_itfnum, _alt_count+1, _stridx+1) + +#define _TUD_DFU_ALT_8(_itfnum, _alt_count, _stridx) \ + _TUD_DFU_ALT(_itfnum, _alt_count, _stridx), \ + _TUD_DFU_ALT_7(_itfnum, _alt_count+1, _stridx+1) + +//--------------------------------------------------------------------+ +// CDC-ECM Descriptor Templates +//--------------------------------------------------------------------+ + +// Length of template descriptor: 71 bytes +#define TUD_CDC_ECM_DESC_LEN (8+9+5+5+13+7+9+9+7+7) + +// CDC-ECM Descriptor Template +// Interface number, description string index, MAC address string index, EP notification address and size, EP data address (out, in), and size, max segment size. +#define TUD_CDC_ECM_DESCRIPTOR(_itfnum, _desc_stridx, _mac_stridx, _ep_notif, _ep_notif_size, _epout, _epin, _epsize, _maxsegmentsize) \ + /* Interface Association */\ + 8, TUSB_DESC_INTERFACE_ASSOCIATION, _itfnum, 2, TUSB_CLASS_CDC, CDC_COMM_SUBCLASS_ETHERNET_CONTROL_MODEL, 0, 0,\ + /* CDC Control Interface */\ + 9, TUSB_DESC_INTERFACE, _itfnum, 0, 1, TUSB_CLASS_CDC, CDC_COMM_SUBCLASS_ETHERNET_CONTROL_MODEL, 0, _desc_stridx,\ + /* CDC-ECM Header */\ + 5, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_HEADER, U16_TO_U8S_LE(0x0120),\ + /* CDC-ECM Union */\ + 5, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_UNION, _itfnum, (uint8_t)((_itfnum) + 1),\ + /* CDC-ECM Functional Descriptor */\ + 13, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_ETHERNET_NETWORKING, _mac_stridx, 0, 0, 0, 0, U16_TO_U8S_LE(_maxsegmentsize), U16_TO_U8S_LE(0), 0,\ + /* Endpoint Notification */\ + 7, TUSB_DESC_ENDPOINT, _ep_notif, TUSB_XFER_INTERRUPT, U16_TO_U8S_LE(_ep_notif_size), 1,\ + /* CDC Data Interface (default inactive) */\ + 9, TUSB_DESC_INTERFACE, (uint8_t)((_itfnum)+1), 0, 0, TUSB_CLASS_CDC_DATA, 0, 0, 0,\ + /* CDC Data Interface (alternative active) */\ + 9, TUSB_DESC_INTERFACE, (uint8_t)((_itfnum)+1), 1, 2, TUSB_CLASS_CDC_DATA, 0, 0, 0,\ + /* Endpoint In */\ + 7, TUSB_DESC_ENDPOINT, _epin, TUSB_XFER_BULK, U16_TO_U8S_LE(_epsize), 0,\ + /* Endpoint Out */\ + 7, TUSB_DESC_ENDPOINT, _epout, TUSB_XFER_BULK, U16_TO_U8S_LE(_epsize), 0 + +//--------------------------------------------------------------------+ +// RNDIS Descriptor Templates +//--------------------------------------------------------------------+ + +#if 0 +/* Windows XP */ +#define TUD_RNDIS_ITF_CLASS TUSB_CLASS_CDC +#define TUD_RNDIS_ITF_SUBCLASS CDC_COMM_SUBCLASS_ABSTRACT_CONTROL_MODEL +#define TUD_RNDIS_ITF_PROTOCOL 0xFF /* CDC_COMM_PROTOCOL_MICROSOFT_RNDIS */ +#else +/* Windows 7+ */ +#define TUD_RNDIS_ITF_CLASS TUSB_CLASS_WIRELESS_CONTROLLER +#define TUD_RNDIS_ITF_SUBCLASS 0x01 +#define TUD_RNDIS_ITF_PROTOCOL 0x03 +#endif + +// Length of template descriptor: 66 bytes +#define TUD_RNDIS_DESC_LEN (8+9+5+5+4+5+7+9+7+7) + +// RNDIS Descriptor Template +// Interface number, string index, EP notification address and size, EP data address (out, in) and size. +#define TUD_RNDIS_DESCRIPTOR(_itfnum, _stridx, _ep_notif, _ep_notif_size, _epout, _epin, _epsize) \ + /* Interface Association */\ + 8, TUSB_DESC_INTERFACE_ASSOCIATION, _itfnum, 2, TUD_RNDIS_ITF_CLASS, TUD_RNDIS_ITF_SUBCLASS, TUD_RNDIS_ITF_PROTOCOL, 0,\ + /* CDC Control Interface */\ + 9, TUSB_DESC_INTERFACE, _itfnum, 0, 1, TUD_RNDIS_ITF_CLASS, TUD_RNDIS_ITF_SUBCLASS, TUD_RNDIS_ITF_PROTOCOL, _stridx,\ + /* CDC-ACM Header */\ + 5, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_HEADER, U16_TO_U8S_LE(0x0110),\ + /* CDC Call Management */\ + 5, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_CALL_MANAGEMENT, 0, (uint8_t)((_itfnum) + 1),\ + /* ACM */\ + 4, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_ABSTRACT_CONTROL_MANAGEMENT, 0,\ + /* CDC Union */\ + 5, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_UNION, _itfnum, (uint8_t)((_itfnum) + 1),\ + /* Endpoint Notification */\ + 7, TUSB_DESC_ENDPOINT, _ep_notif, TUSB_XFER_INTERRUPT, U16_TO_U8S_LE(_ep_notif_size), 1,\ + /* CDC Data Interface */\ + 9, TUSB_DESC_INTERFACE, (uint8_t)((_itfnum)+1), 0, 2, TUSB_CLASS_CDC_DATA, 0, 0, 0,\ + /* Endpoint In */\ + 7, TUSB_DESC_ENDPOINT, _epin, TUSB_XFER_BULK, U16_TO_U8S_LE(_epsize), 0,\ + /* Endpoint Out */\ + 7, TUSB_DESC_ENDPOINT, _epout, TUSB_XFER_BULK, U16_TO_U8S_LE(_epsize), 0 + +//--------------------------------------------------------------------+ +// Bluetooth Radio Descriptor Templates +//--------------------------------------------------------------------+ + +#define TUD_BT_APP_CLASS (TUSB_CLASS_WIRELESS_CONTROLLER) +#define TUD_BT_APP_SUBCLASS 0x01 +#define TUD_BT_PROTOCOL_PRIMARY_CONTROLLER 0x01 +#define TUD_BT_PROTOCOL_AMP_CONTROLLER 0x02 + +#ifndef CFG_TUD_BTH_ISO_ALT_COUNT +#define CFG_TUD_BTH_ISO_ALT_COUNT 0 +#endif + +// Length of template descriptor: 30 bytes + number of ISO alternatives * 23 +#define TUD_BTH_DESC_LEN (9 + 7 + 7 + 7 + (CFG_TUD_BTH_ISO_ALT_COUNT) * (9 + 7 + 7)) + +/* Primary Interface */ +#define TUD_BTH_PRI_ITF(_itfnum, _stridx, _ep_evt, _ep_evt_size, _ep_evt_interval, _ep_in, _ep_out, _ep_size) \ + 9, TUSB_DESC_INTERFACE, _itfnum, 0, 3, TUD_BT_APP_CLASS, TUD_BT_APP_SUBCLASS, TUD_BT_PROTOCOL_PRIMARY_CONTROLLER, _stridx, \ + /* Endpoint In for events */ \ + 7, TUSB_DESC_ENDPOINT, _ep_evt, TUSB_XFER_INTERRUPT, U16_TO_U8S_LE(_ep_evt_size), _ep_evt_interval, \ + /* Endpoint In for ACL data */ \ + 7, TUSB_DESC_ENDPOINT, _ep_in, TUSB_XFER_BULK, U16_TO_U8S_LE(_ep_size), 1, \ + /* Endpoint Out for ACL data */ \ + 7, TUSB_DESC_ENDPOINT, _ep_out, TUSB_XFER_BULK, U16_TO_U8S_LE(_ep_size), 1 + +#define TUD_BTH_ISO_ITF(_itfnum, _alt, _ep_in, _ep_out, _n) ,\ + /* Interface with 2 endpoints */ \ + 9, TUSB_DESC_INTERFACE, _itfnum, _alt, 2, TUD_BT_APP_CLASS, TUD_BT_APP_SUBCLASS, TUD_BT_PROTOCOL_PRIMARY_CONTROLLER, 0, \ + /* Isochronous endpoints */ \ + 7, TUSB_DESC_ENDPOINT, _ep_in, TUSB_XFER_ISOCHRONOUS, U16_TO_U8S_LE(_n), 1, \ + 7, TUSB_DESC_ENDPOINT, _ep_out, TUSB_XFER_ISOCHRONOUS, U16_TO_U8S_LE(_n), 1 + +#define _FIRST(a, ...) a +#define _REST(a, ...) __VA_ARGS__ + +#define TUD_BTH_ISO_ITF_0(_itfnum, ...) +#define TUD_BTH_ISO_ITF_1(_itfnum, _ep_in, _ep_out, ...) TUD_BTH_ISO_ITF(_itfnum, (CFG_TUD_BTH_ISO_ALT_COUNT) - 1, _ep_in, _ep_out, _FIRST(__VA_ARGS__)) +#define TUD_BTH_ISO_ITF_2(_itfnum, _ep_in, _ep_out, ...) TUD_BTH_ISO_ITF(_itfnum, (CFG_TUD_BTH_ISO_ALT_COUNT) - 2, _ep_in, _ep_out, _FIRST(__VA_ARGS__)) \ + TUD_BTH_ISO_ITF_1(_itfnum, _ep_in, _ep_out, _REST(__VA_ARGS__)) +#define TUD_BTH_ISO_ITF_3(_itfnum, _ep_in, _ep_out, ...) TUD_BTH_ISO_ITF(_itfnum, (CFG_TUD_BTH_ISO_ALT_COUNT) - 3, _ep_in, _ep_out, _FIRST(__VA_ARGS__)) \ + TUD_BTH_ISO_ITF_2(_itfnum, _ep_in, _ep_out, _REST(__VA_ARGS__)) +#define TUD_BTH_ISO_ITF_4(_itfnum, _ep_in, _ep_out, ...) TUD_BTH_ISO_ITF(_itfnum, (CFG_TUD_BTH_ISO_ALT_COUNT) - 4, _ep_in, _ep_out, _FIRST(__VA_ARGS__)) \ + TUD_BTH_ISO_ITF_3(_itfnum, _ep_in, _ep_out, _REST(__VA_ARGS__)) +#define TUD_BTH_ISO_ITF_5(_itfnum, _ep_in, _ep_out, ...) TUD_BTH_ISO_ITF(_itfnum, (CFG_TUD_BTH_ISO_ALT_COUNT) - 5, _ep_in, _ep_out, _FIRST(__VA_ARGS__)) \ + TUD_BTH_ISO_ITF_4(_itfnum, _ep_in, _ep_out, _REST(__VA_ARGS__)) +#define TUD_BTH_ISO_ITF_6(_itfnum, _ep_in, _ep_out, ...) TUD_BTH_ISO_ITF(_itfnum, (CFG_TUD_BTH_ISO_ALT_COUNT) - 6, _ep_in, _ep_out, _FIRST(__VA_ARGS__)) \ + TUD_BTH_ISO_ITF_5(_itfnum, _ep_in, _ep_out, _REST(__VA_ARGS__)) + +#define TUD_BTH_ISO_ITFS(_itfnum, _ep_in, _ep_out, ...) \ + TU_XSTRCAT(TUD_BTH_ISO_ITF_, CFG_TUD_BTH_ISO_ALT_COUNT)(_itfnum, _ep_in, _ep_out, __VA_ARGS__) + +// BT Primary controller descriptor +// Interface number, string index, attributes, event endpoint, event endpoint size, interval, data in, data out, data endpoint size, iso endpoint sizes +// TODO BTH should also use IAD like CDC for composite device +#define TUD_BTH_DESCRIPTOR(_itfnum, _stridx, _ep_evt, _ep_evt_size, _ep_evt_interval, _ep_in, _ep_out, _ep_size,...) \ + TUD_BTH_PRI_ITF(_itfnum, _stridx, _ep_evt, _ep_evt_size, _ep_evt_interval, _ep_in, _ep_out, _ep_size) \ + TUD_BTH_ISO_ITFS(_itfnum + 1, _ep_in + 1, _ep_out + 1, __VA_ARGS__) + +//--------------------------------------------------------------------+ +// CDC-NCM Descriptor Templates +//--------------------------------------------------------------------+ + +// Length of template descriptor +#define TUD_CDC_NCM_DESC_LEN (8+9+5+5+13+6+7+9+9+7+7) + +// CDC-ECM Descriptor Template +// Interface number, description string index, MAC address string index, EP notification address and size, EP data address (out, in), and size, max segment size. +#define TUD_CDC_NCM_DESCRIPTOR(_itfnum, _desc_stridx, _mac_stridx, _ep_notif, _ep_notif_size, _epout, _epin, _epsize, _maxsegmentsize) \ + /* Interface Association */\ + 8, TUSB_DESC_INTERFACE_ASSOCIATION, _itfnum, 2, TUSB_CLASS_CDC, CDC_COMM_SUBCLASS_NETWORK_CONTROL_MODEL, 0, 0,\ + /* CDC Control Interface */\ + 9, TUSB_DESC_INTERFACE, _itfnum, 0, 1, TUSB_CLASS_CDC, CDC_COMM_SUBCLASS_NETWORK_CONTROL_MODEL, 0, _desc_stridx,\ + /* CDC-NCM Header */\ + 5, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_HEADER, U16_TO_U8S_LE(0x0110),\ + /* CDC-NCM Union */\ + 5, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_UNION, _itfnum, (uint8_t)((_itfnum) + 1),\ + /* CDC-NCM Functional Descriptor */\ + 13, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_ETHERNET_NETWORKING, _mac_stridx, 0, 0, 0, 0, U16_TO_U8S_LE(_maxsegmentsize), U16_TO_U8S_LE(0), 0, \ + /* CDC-NCM Functional Descriptor */\ + 6, TUSB_DESC_CS_INTERFACE, CDC_FUNC_DESC_NCM, U16_TO_U8S_LE(0x0100), 0, \ + /* Endpoint Notification */\ + 7, TUSB_DESC_ENDPOINT, _ep_notif, TUSB_XFER_INTERRUPT, U16_TO_U8S_LE(_ep_notif_size), 50,\ + /* CDC Data Interface (default inactive) */\ + 9, TUSB_DESC_INTERFACE, (uint8_t)((_itfnum)+1), 0, 0, TUSB_CLASS_CDC_DATA, 0, NCM_DATA_PROTOCOL_NETWORK_TRANSFER_BLOCK, 0,\ + /* CDC Data Interface (alternative active) */\ + 9, TUSB_DESC_INTERFACE, (uint8_t)((_itfnum)+1), 1, 2, TUSB_CLASS_CDC_DATA, 0, NCM_DATA_PROTOCOL_NETWORK_TRANSFER_BLOCK, 0,\ + /* Endpoint In */\ + 7, TUSB_DESC_ENDPOINT, _epin, TUSB_XFER_BULK, U16_TO_U8S_LE(_epsize), 0,\ + /* Endpoint Out */\ + 7, TUSB_DESC_ENDPOINT, _epout, TUSB_XFER_BULK, U16_TO_U8S_LE(_epsize), 0 + +#ifdef __cplusplus +} +#endif + +#endif /* _TUSB_USBD_H_ */ + +/** @} */ diff --git a/arkanoid/pico/tinyusb/usbd_control.c b/arkanoid/pico/tinyusb/usbd_control.c new file mode 100644 index 0000000..e9e775a --- /dev/null +++ b/arkanoid/pico/tinyusb/usbd_control.c @@ -0,0 +1,233 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ + +#include "tusb_option.h" + +#if TUSB_OPT_DEVICE_ENABLED + +#include "tusb.h" +#include "usbd_pvt.h" +#include "dcd.h" // TODO was dcd.h + +#if CFG_TUSB_DEBUG >= 2 +extern void usbd_driver_print_control_complete_name(usbd_control_xfer_cb_t callback); +#endif + +enum +{ + EDPT_CTRL_OUT = 0x00, + EDPT_CTRL_IN = 0x80 +}; + +typedef struct +{ + tusb_control_request_t request; + + uint8_t* buffer; + uint16_t data_len; + uint16_t total_xferred; + + usbd_control_xfer_cb_t complete_cb; +} usbd_control_xfer_t; + +static usbd_control_xfer_t _ctrl_xfer; + +CFG_TUSB_MEM_SECTION CFG_TUSB_MEM_ALIGN +static uint8_t _usbd_ctrl_buf[CFG_TUD_ENDPOINT0_SIZE]; + +//--------------------------------------------------------------------+ +// Application API +//--------------------------------------------------------------------+ + +// Queue ZLP status transaction +static inline bool _status_stage_xact(uint8_t rhport, tusb_control_request_t const * request) +{ + // Opposite to endpoint in Data Phase + uint8_t const ep_addr = request->bmRequestType_bit.direction ? EDPT_CTRL_OUT : EDPT_CTRL_IN; + return usbd_edpt_xfer(rhport, ep_addr, NULL, 0); +} + +// Status phase +bool tud_control_status(uint8_t rhport, tusb_control_request_t const * request) +{ + _ctrl_xfer.request = (*request); + _ctrl_xfer.buffer = NULL; + _ctrl_xfer.total_xferred = 0; + _ctrl_xfer.data_len = 0; + + return _status_stage_xact(rhport, request); +} + +// Queue a transaction in Data Stage +// Each transaction has up to Endpoint0's max packet size. +// This function can also transfer an zero-length packet +static bool _data_stage_xact(uint8_t rhport) +{ + uint16_t const xact_len = tu_min16(_ctrl_xfer.data_len - _ctrl_xfer.total_xferred, CFG_TUD_ENDPOINT0_SIZE); + + uint8_t ep_addr = EDPT_CTRL_OUT; + + if ( _ctrl_xfer.request.bmRequestType_bit.direction == TUSB_DIR_IN ) + { + ep_addr = EDPT_CTRL_IN; + if ( xact_len ) memcpy(_usbd_ctrl_buf, _ctrl_xfer.buffer, xact_len); + } + + return usbd_edpt_xfer(rhport, ep_addr, xact_len ? _usbd_ctrl_buf : NULL, xact_len); +} + +// Transmit data to/from the control endpoint. +// If the request's wLength is zero, a status packet is sent instead. +bool tud_control_xfer(uint8_t rhport, tusb_control_request_t const * request, void* buffer, uint16_t len) +{ + _ctrl_xfer.request = (*request); + _ctrl_xfer.buffer = (uint8_t*) buffer; + _ctrl_xfer.total_xferred = 0U; + _ctrl_xfer.data_len = tu_min16(len, request->wLength); + + if (request->wLength > 0U) + { + if(_ctrl_xfer.data_len > 0U) + { + TU_ASSERT(buffer); + } + +// TU_LOG2(" Control total data length is %u bytes\r\n", _ctrl_xfer.data_len); + + // Data stage + TU_ASSERT( _data_stage_xact(rhport) ); + } + else + { + // Status stage + TU_ASSERT( _status_stage_xact(rhport, request) ); + } + + return true; +} + +//--------------------------------------------------------------------+ +// USBD API +//--------------------------------------------------------------------+ + +void usbd_control_reset(void); +void usbd_control_set_request(tusb_control_request_t const *request); +void usbd_control_set_complete_callback( usbd_control_xfer_cb_t fp ); +bool usbd_control_xfer_cb (uint8_t rhport, uint8_t ep_addr, xfer_result_t event, uint32_t xferred_bytes); + +void usbd_control_reset(void) +{ + tu_varclr(&_ctrl_xfer); +} + +// Set complete callback +void usbd_control_set_complete_callback( usbd_control_xfer_cb_t fp ) +{ + _ctrl_xfer.complete_cb = fp; +} + +// for dcd_set_address where DCD is responsible for status response +void usbd_control_set_request(tusb_control_request_t const *request) +{ + _ctrl_xfer.request = (*request); + _ctrl_xfer.buffer = NULL; + _ctrl_xfer.total_xferred = 0; + _ctrl_xfer.data_len = 0; +} + +// callback when a transaction complete on +// - DATA stage of control endpoint or +// - Status stage +bool usbd_control_xfer_cb (uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint32_t xferred_bytes) +{ + (void) result; + + // Endpoint Address is opposite to direction bit, this is Status Stage complete event + if ( tu_edpt_dir(ep_addr) != _ctrl_xfer.request.bmRequestType_bit.direction ) + { + TU_ASSERT(0 == xferred_bytes); + + // invoke optional dcd hook if available + if (dcd_edpt0_status_complete) dcd_edpt0_status_complete(rhport, &_ctrl_xfer.request); + + if (_ctrl_xfer.complete_cb) + { + // TODO refactor with usbd_driver_print_control_complete_name + _ctrl_xfer.complete_cb(rhport, CONTROL_STAGE_ACK, &_ctrl_xfer.request); + } + + return true; + } + + if ( _ctrl_xfer.request.bmRequestType_bit.direction == TUSB_DIR_OUT ) + { + TU_VERIFY(_ctrl_xfer.buffer); + memcpy(_ctrl_xfer.buffer, _usbd_ctrl_buf, xferred_bytes); + TU_LOG_MEM(2, _usbd_ctrl_buf, xferred_bytes, 2); + } + + _ctrl_xfer.total_xferred += xferred_bytes; + _ctrl_xfer.buffer += xferred_bytes; + + // Data Stage is complete when all request's length are transferred or + // a short packet is sent including zero-length packet. + if ( (_ctrl_xfer.request.wLength == _ctrl_xfer.total_xferred) || (xferred_bytes < CFG_TUD_ENDPOINT0_SIZE) ) + { + // DATA stage is complete + bool is_ok = true; + + // invoke complete callback if set + // callback can still stall control in status phase e.g out data does not make sense + if ( _ctrl_xfer.complete_cb ) + { + #if CFG_TUSB_DEBUG >= 2 + usbd_driver_print_control_complete_name(_ctrl_xfer.complete_cb); + #endif + + is_ok = _ctrl_xfer.complete_cb(rhport, CONTROL_STAGE_DATA, &_ctrl_xfer.request); + } + + if ( is_ok ) + { + // Send status + TU_ASSERT( _status_stage_xact(rhport, &_ctrl_xfer.request) ); + }else + { + // Stall both IN and OUT control endpoint + dcd_edpt_stall(rhport, EDPT_CTRL_OUT); + dcd_edpt_stall(rhport, EDPT_CTRL_IN); + } + } + else + { + // More data to transfer + TU_ASSERT( _data_stage_xact(rhport) ); + } + + return true; +} + +#endif diff --git a/arkanoid/pico/tinyusb/usbd_pvt.h b/arkanoid/pico/tinyusb/usbd_pvt.h new file mode 100644 index 0000000..723e4d5 --- /dev/null +++ b/arkanoid/pico/tinyusb/usbd_pvt.h @@ -0,0 +1,115 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + * This file is part of the TinyUSB stack. + */ +#ifndef USBD_PVT_H_ +#define USBD_PVT_H_ + +#include "osal.h" +#include "tusb_fifo.h" + +#ifdef __cplusplus + extern "C" { +#endif + +//--------------------------------------------------------------------+ +// Class Driver API +//--------------------------------------------------------------------+ + +typedef struct +{ + #if CFG_TUSB_DEBUG >= 2 + char const* name; + #endif + + void (* init ) (void); + void (* reset ) (uint8_t rhport); + uint16_t (* open ) (uint8_t rhport, tusb_desc_interface_t const * desc_intf, uint16_t max_len); + bool (* control_xfer_cb ) (uint8_t rhport, uint8_t stage, tusb_control_request_t const * request); + bool (* xfer_cb ) (uint8_t rhport, uint8_t ep_addr, xfer_result_t result, uint32_t xferred_bytes); + void (* sof ) (uint8_t rhport); /* optional */ +} usbd_class_driver_t; + +// Invoked when initializing device stack to get additional class drivers. +// Can optionally implemented by application to extend/overwrite class driver support. +// Note: The drivers array must be accessible at all time when stack is active +usbd_class_driver_t const* usbd_app_driver_get_cb(uint8_t* driver_count) TU_ATTR_WEAK; + +typedef bool (*usbd_control_xfer_cb_t)(uint8_t rhport, uint8_t stage, tusb_control_request_t const * request); + +//--------------------------------------------------------------------+ +// USBD Endpoint API +//--------------------------------------------------------------------+ + +// Open an endpoint +bool usbd_edpt_open(uint8_t rhport, tusb_desc_endpoint_t const * desc_ep); + +// Close an endpoint +void usbd_edpt_close(uint8_t rhport, uint8_t ep_addr); + +// Submit a usb transfer +bool usbd_edpt_xfer(uint8_t rhport, uint8_t ep_addr, uint8_t * buffer, uint16_t total_bytes); + +// Submit a usb ISO transfer by use of a FIFO (ring buffer) - all bytes in FIFO get transmitted +bool usbd_edpt_xfer_fifo(uint8_t rhport, uint8_t ep_addr, tu_fifo_t * ff, uint16_t total_bytes); + +// Claim an endpoint before submitting a transfer. +// If caller does not make any transfer, it must release endpoint for others. +bool usbd_edpt_claim(uint8_t rhport, uint8_t ep_addr); + +// Release an endpoint without submitting a transfer +bool usbd_edpt_release(uint8_t rhport, uint8_t ep_addr); + +// Check if endpoint is busy transferring +bool usbd_edpt_busy(uint8_t rhport, uint8_t ep_addr); + +// Stall endpoint +void usbd_edpt_stall(uint8_t rhport, uint8_t ep_addr); + +// Clear stalled endpoint +void usbd_edpt_clear_stall(uint8_t rhport, uint8_t ep_addr); + +// Check if endpoint is stalled +bool usbd_edpt_stalled(uint8_t rhport, uint8_t ep_addr); + +// Check if endpoint is ready (not busy and not stalled) +TU_ATTR_ALWAYS_INLINE static inline +bool usbd_edpt_ready(uint8_t rhport, uint8_t ep_addr) +{ + return !usbd_edpt_busy(rhport, ep_addr) && !usbd_edpt_stalled(rhport, ep_addr); +} + +/*------------------------------------------------------------------*/ +/* Helper + *------------------------------------------------------------------*/ + +bool usbd_open_edpt_pair(uint8_t rhport, uint8_t const* p_desc, uint8_t ep_count, uint8_t xfer_type, uint8_t* ep_out, uint8_t* ep_in); +void usbd_defer_func( osal_task_func_t func, void* param, bool in_isr ); + + +#ifdef __cplusplus + } +#endif + +#endif /* USBD_PVT_H_ */ diff --git a/arkanoid/pico/unique_id.c b/arkanoid/pico/unique_id.c new file mode 100644 index 0000000..366a7ee --- /dev/null +++ b/arkanoid/pico/unique_id.c @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "hardware/flash.h" +#include "unique_id.h" + +static_assert(PICO_UNIQUE_BOARD_ID_SIZE_BYTES == FLASH_UNIQUE_ID_SIZE_BYTES, "Board ID size must match flash ID size"); + +static pico_unique_board_id_t retrieved_id; + +static void __attribute__((constructor)) _retrieve_unique_id_on_boot(void) { +#if PICO_NO_FLASH + // The hardware_flash call will panic() if called directly on a NO_FLASH + // build. Since this constructor is pre-main it would be annoying to + // debug, so just produce something well-defined and obviously wrong. + for (int i = 0; i < PICO_UNIQUE_BOARD_ID_SIZE_BYTES; i++) + retrieved_id.id[i] = 0xee; +#else + flash_get_unique_id(retrieved_id.id); +#endif +} + +void pico_get_unique_board_id(pico_unique_board_id_t *id_out) { + *id_out = retrieved_id; +} + +void pico_get_unique_board_id_string(char *id_out, uint len) { + assert(len > 0); + size_t i; + // Generate hex one nibble at a time + for (i = 0; (i < len - 1) && (i < PICO_UNIQUE_BOARD_ID_SIZE_BYTES * 2); i++) { + int nibble = (retrieved_id.id[i/2] >> (4 - 4 * (i&1))) & 0xf; + id_out[i] = (char)(nibble < 10 ? nibble + '0' : nibble + 'A' - 10); + } + id_out[i] = 0; +} diff --git a/arkanoid/pico/unique_id.h b/arkanoid/pico/unique_id.h new file mode 100644 index 0000000..7c9753d --- /dev/null +++ b/arkanoid/pico/unique_id.h @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_UNIQUE_ID_H_ +#define _PICO_UNIQUE_ID_H_ + +#include "pico.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \file unique_id.h + * \defgroup pico_unique_id pico_unique_id + * + * Unique device ID access API + * + * RP2040 does not have an on-board unique identifier (all instances of RP2040 + * silicon are identical and have no persistent state). However, RP2040 boots + * from serial NOR flash devices which have a 64-bit unique ID as a standard + * feature, and there is a 1:1 association between RP2040 and flash, so this + * is suitable for use as a unique identifier for an RP2040-based board. + * + * This library injects a call to the flash_get_unique_id function from the + * hardware_flash library, to run before main, and stores the result in a + * static location which can safely be accessed at any time via + * pico_get_unique_id(). + * + * This avoids some pitfalls of the hardware_flash API, which requires any + * flash-resident interrupt routines to be disabled when called into. + */ + +#define PICO_UNIQUE_BOARD_ID_SIZE_BYTES 8 + +/** + * \brief Unique board identifier + * \ingroup pico_unique_id + * + * This struct is suitable for holding the unique identifier of a NOR flash + * device on an RP2040-based board. It contains an array of + * PICO_UNIQUE_BOARD_ID_SIZE_BYTES identifier bytes. + */ +typedef struct { + uint8_t id[PICO_UNIQUE_BOARD_ID_SIZE_BYTES]; +} pico_unique_board_id_t; + +/*! \brief Get unique ID + * \ingroup pico_unique_id + * + * Get the unique 64-bit device identifier which was retrieved from the + * external NOR flash device at boot. + * + * On PICO_NO_FLASH builds the unique identifier is set to all 0xEE. + * + * \param id_out a pointer to a pico_unique_board_id_t struct, to which the identifier will be written + */ +void pico_get_unique_board_id(pico_unique_board_id_t *id_out); + +/*! \brief Get unique ID in string format + * \ingroup pico_unique_id + * + * Get the unique 64-bit device identifier which was retrieved from the + * external NOR flash device at boot, formatted as an ASCII hex string. + * Will always 0-terminate. + * + * On PICO_NO_FLASH builds the unique identifier is set to all 0xEE. + * + * \param id_out a pointer to a char buffer of size len, to which the identifier will be written + * \param len the size of id_out. For full serial, len >= 2 * PICO_UNIQUE_BOARD_ID_SIZE_BYTES + 1 + */ +void pico_get_unique_board_id_string(char *id_out, uint len); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/arkanoid/pico/usb_reset_interface.h b/arkanoid/pico/usb_reset_interface.h new file mode 100644 index 0000000..153acf8 --- /dev/null +++ b/arkanoid/pico/usb_reset_interface.h @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2021 Raspberry Pi (Trading) Ltd. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _PICO_USB_RESET_INTERFACE_H +#define _PICO_USB_RESET_INTERFACE_H + +/** \file usb_reset_interface.h + * \defgroup pico_usb_reset_interface pico_usb_reset_interface + * + * Definition for the reset interface that may be exposed by the pico_stdio_usb library + */ + +// VENDOR sub-class for the reset interface +#define RESET_INTERFACE_SUBCLASS 0x00 +// VENDOR protocol for the reset interface +#define RESET_INTERFACE_PROTOCOL 0x01 + +// CONTROL requests: + +// reset to BOOTSEL +#define RESET_REQUEST_BOOTSEL 0x01 +// regular flash boot +#define RESET_REQUEST_FLASH 0x02 + +#endif \ No newline at end of file diff --git a/arkanoid/pico_mountpoint/main.uf2 b/arkanoid/pico_mountpoint/main.uf2 new file mode 100644 index 0000000000000000000000000000000000000000..a6bf360e4faf43410939455cb2029a89684b2061 GIT binary patch literal 217600 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 literal 0 HcmV?d00001 diff --git a/arkanoid/utils.c b/arkanoid/utils.c new file mode 100644 index 0000000..96bbde5 --- /dev/null +++ b/arkanoid/utils.c @@ -0,0 +1,23 @@ +#include "utils.h" + +uint16_t color32_to_16(uint32_t color) { + uint8_t r = (color >> 16) & 0xFF; + uint8_t g = (color >> 8) & 0xFF; + uint8_t b = color & 0xFF; + + return color_to_rgb(r, g, b); +} + +uint16_t color_to_rgb(uint8_t r, uint8_t g, uint8_t b) { + return ((r & 0b11111000) << 8) + | ((g & 0b11111100) << 3) + | (b >> 3); +} + +uint16_t change_color(uint16_t color, float offset) { + uint8_t r = (color >> 8) & 0b11111000; + uint8_t g = (color >> 3) & 0b11111100; + uint8_t b = (color << 3) & 0b11111000; + + return color_to_rgb(r * offset, g * offset, b * offset); +} \ No newline at end of file diff --git a/arkanoid/utils.h b/arkanoid/utils.h new file mode 100644 index 0000000..1c46703 --- /dev/null +++ b/arkanoid/utils.h @@ -0,0 +1,14 @@ +#ifndef UTILS_H +#define UTILS_H + +#include <stdint.h> + +const static int16_t BALL_HIT_NOTHING = -1; +const static int16_t BALL_HIT_PADDLE = -2; +const static int16_t BALL_DIED = -3; + +uint16_t color32_to_16(uint32_t color); +uint16_t color_to_rgb(uint8_t r, uint8_t g, uint8_t b); +uint16_t change_color(uint16_t color, float offset); + +#endif diff --git a/simple-setup.zip b/simple-setup.zip new file mode 100644 index 0000000000000000000000000000000000000000..f18b6babcde1654a04c69f340ae8d952783d313a GIT binary patch literal 1839031 zcmWIWW@Zs#W?*1oFe|JJ0nsqb%fP@;oS9pYld4;sT2fk|4^zs)U{Y8Ya{e)oWD^qu zLlheWgEYEQXWzu^RG-Y^l48A*ijt{Q&gLyP5NW;sF}UKA-k}u+naghL2ss(AP;~pV zW!BWE5|b;s43lU7Tk&c){{=H&lb~4}7>a+M+k4zyEM!7;8>{}#6|7-z^3RH%e(>O0 zcapsBL;vSR8H@p%KidPD+1oOiV=X$Hm#vy9x#QrIV~6$10tJ3?>o>V@?w+E$Su(P) z+IQvF!=}5MpGa=G$gxgj`FE*Vyv?(;j-AS{Uc63xawX4ivt2FQ7KGX^3zGbn(w!K3 zMe5eJbrM$}2fa#vTauk|UsQbC-xVIEiXMR;yP_BV5B-$(;@xlOr4^Z<_D)*1<jile zj=fKci{<Z~i~n|JpVMznp|vw3M15}d-^s~|3hkA8vL~UyAbx@7m9DG{uXDF%id3Fv zIj+$g!+-wIi?7Ga+v^-d=A3%GQ9|bM+9f877iS(m{XA-Yl<@KgCX1JQnFY=EEAGi~ z4*BLGlFh3A>7(bKr0m*H0=Xf+y>?~hci(!6$mTN^Ok46%WU;|P<M-F{J@PGQ>g|za zP&sWdb<rc%!;+^fPx4M*+Qxi=yH-4LOU?8ieaG{A=RIB*{6*U((C7%`tjfpRbh`?> z-zzlE-WGpLz3<S)4_O>l-1WB-E&S5#4)L<BG3S2MdGXeS(CQnk50@V9l9{)Ei~GN; zOl>PnjdwhFT3Z~gxya)3`~|GvI3i1<Z)A!ryWINT$+|I~O?`&IlB~rFrHONts?9yJ zbC+Z+7Fu#<Rz*VbP7MyV(>D*UJNqYaZa<$<^y0gV7VdsmuCeRm^v_}+@36S;=l{yE zH$~{|UY5Eqx1@3$Zj`6~JTT?q(<*KU<-|CFy_v!H{mNvP^WXb-_lNBjuam2;Zrbai zEK(KtsM@gSQtBgiIk!xqWhV>EbU*MTlCDc$T?l)bLz_x8Gs78f9?YccZx~;mUzDAh zm#&wZllJE1-drX}k=BdW63O0W8$@qNTRGfnxxn}KglYhb>;)m!05;tT!3>{&aK3mb z^HMtV-raxy{%^fjWPUpQRe6qNn5SR&cPqQ~Mrrr9pRc*HFVb(b&T_Mm^`5JKZoT#X zeZbn~(_TF-Tc0|AdEBu&`Lg?-?-TF;iIG}e(!M>V@HQhXE0Rv1dn27)Ark)e&di(P zX8k9bH|?%`tK6u<t*R0*ae+_T;R$yanl@}}+_H;PlzmDW<5%u&w^|cgmuU&ydghp| z`{RXk?~N<r+kKCUUpua|K#%uT)P>O3$-241pKg4-bCZ|l{`|VSe~F*w&aHlbr~2K_ z=W{^By_o8Cw%6xnpWpiYR`J`N-!QoU*v}X2eN(iJ^|#2et>>?c_ps*5=E`0_`QR15 z(K=q)BU4MhZ?F3MP2u3ArG6e}{l@Q@lO|@B+%$JCI=SO-nNzUe?KJjh;tBKqNp5(y zsPK_d_w+>~;haef*V`5xj=$to5~H8I+Py@E_3@TtG4+AZxGULKIksM9)oraSp71yC z$D+#lm8RBr_D?MqDhyKnVJ(-cd}c%L=G@I@-@4Lv-z~EiW=vpV*uXf0;YNAGY2FW7 z&+htFuyA~MX73=AX8Yc@?lJp;la|Ln+~#b_SG4)>|G;|lC3V3#haU(3OFp<6S?^gn zC!X#6zE7X_z4aCo{3q6;%JYG}&r0Y)iK2e*{ky$;o`i>QX<)kAy~y%-(SCl@9<S5_ z&Bjff4Z@F}{A_*{a^>Cq?Nw|KZoXu(^xS8t;5UzN?Xn7YhB@2!a?ZK=UeSi(xr@j0 zN}u2Z>RWEzVmg_AJn`#%J*h*=$DLO*8W{yR-`IAP|6G690sCW2|IKRd*9af@@u9=y zU(e5(?Mp9Ytvjml`S4w()kQ`Xj&GySx@XMiu&PV$KAB(m<%9ZXzgs^N?f>_``gnMm z={&s;QHyTf=r?7)mKd^*^<_n0g^i+}P<8RHd09#}Zw2>soXo$FosoS1`i~PGF8k*n zuG-S~!0rf-1)pN8@+FyD$tLl29+!^kWj%N`@zat&)0!L_oBikQnKF0b@mZD0_Ii9p z2W}<#rS;FAe6Udc3WLheLbJ-*ZFd@Hw!eDH)BmQr@p=2sC-e0quUAYlW3}m#j(PTE zyPB=n{ik;}PtN)D)zjs~hLa053qDPBm-<jX!(rm_ZT;CAH{E|aeJ(aUpYmy8;);{O zmN)n(^@doA=DxWu^>f+!J?lLMcn<|X%D$Mz;p%ZUg{fg`zlZGE-;FHucmL??Zx7>U z@SdQj;HM@zQ^CR__YMCE-Kb+)Z3hxFgNx<QtH{q%m{)dD_{z@}ncYr@zw<o3d!W+q zz6r-$>4bX^%O&_`Yjx*6<CFe4-8Sby{4;~*{V7KcBNFy+XqB<My7irfOcL|6C!aJQ z2WS+X@%bTfs;NS!@z4Ukx<~H<D_(r|b@MeUv~DW9@M^8sLW`w~o*i{;P&vfG>i6Ta ztKFW*nPvei8p^$V`_ma2ZI7O4SbJFfXYI>P;%DyfIQnEG_mQ3c4_Hr0uR8tsFx!c? zofgkF->UpPKWG2$qfd%Bk6cz3>5AEM;kv}7V@bCvj<A*<P_vCH`q3`L^Ip=3$ufdP z^oHJ|w^Qc{+HU;(Y{}d6H=5lQ-Z3hAp9%GySJxRbQFXpxx8MF0xlOen#Uej(Y<1Wl z*OT^hMu5QAw}!l85pIDGobMR3FHLEgR_mlZb$e%uz@GIhp4pkr^k~(Xd*imP$5Z)I zt<4ipEuP|4dLX<%q%MNnRbnQuPQ;mQ8$8RkI``ym7MSP$!Lc(}z-O0^`<-@=h5B#w z6i&z{O!U5=v9y@skiwp>;^dki&o7<5)O$%wv#<7^wy3jZ3a_2cy^39m+v9i5J1NEB zFZ)B)uJUw6L>2#?G<!Dhz~y<__m-4&7idX*3G0!QpVG1Y<C~832^B`Qwv61&e{%zp z1ERNoIQhMQvel*>t5;#~)Z_&oeePxzZ?SzFv0G_Jpwd>}^usr<&B}Z|*^JemeUZuK z;-fp9^P;`yXwS1$`0Cy7<?r!$;?APNgoUdmj@RW>*?zMV^8J2pk(j~hel5N$3b$^b zb-EL5xY~UACciAv2y<nNrX!pEUWv+G-TL<C5z%=XC!AHgKa@Y*owuWUg~<os^E0=7 zR{O@I6Csk?{;D9)_T}c2s?iI?3*@Bd+=|#8rqO>dQ0>{u8^Xa2yL=VJPrLbArWZXq zxc0$c)~LzzRg0M1!u!r#&+gtl@mJ{OX$Nfew4eP=IQD1uGTk4)U%!-$+9k)hFq?zL z>%6&c=BzU_@>~~eNquaS=dK-O$ayvFtJO`utKH&kJA`d_NL@L_%_MEDxi@ag?*qGM zJXx=v{Uy@Oe#1Z8Bi5pG^@HmwnfAV4X1Pp=Pg=@`@zJL(6H>05JhRa|v(sRE?Jd>I z7mf7z+^ZEs>zMDnXDtw}{qj8MkCeq5##6k)&(1GND@r@_S7B;v?&V7EXZxof+E#V0 zV`qBseCK<YHy)}!XQ&#_wjepaF?pSHgX<|a4r3-A>mV-WAIG>3war~-AW*qPcgw78 zi!-aUt$g1`th0X;$8H-Pu<l~c&26cNw#t8+<ZZG!hdXVjtn7n(5-O+Jo3@wSP~5*S zo%^b&((!E^Vs=8u_Fb;fDT-fybbi0x#p}V(OwU(z{9YRNXwlF1pu6+REPm<PO<Gnx zo3p~p*xqKjmAmdbz2IC9og32mn)bJ@=ow9QuU&dTuhAmpm*<UOr#Jh21Cowg?s_J1 zF0gt-!%Yd3-3mV!de^js{Ife4@=tGZzvmP~_OvaLq7!td-_X9xe>bUhXRq|pufFvg zE}CtR{q%r`Mf{fH#rrJ$W)5rfu5t&x2{3Z{+O|&Kry=*^v3K*9nS4)-4Cl6RJ{+?% zv{lRKyukWnV*1%BFLTq}=BoRxSg-E%YnStetKl0&*YbOCGxDWoer=fjXm|1~*`^c5 zk~PL(XB&O}S{HqTA$WOj=gdvT#$UEvxFk1sp7su2UA80Vl*)dEF1TTQfBCws<MDaZ z=cMkpv-`5=QnKWPPd4sLz6LE1(fH!6|KzKuZRL@ZT+NqwE7=syuWS72sMPyj9XVU2 zeM0ezeL8*_QzIt2@`q0Q)pA$p8tdu_SG8wH9=w!o%KJ=qV#Es<@5FaoqaqGo(T>h( z`q-c&S+(=9Wpj@HXN5|Jclpy@PF_gz+829TdRNlQNgm73dR4f|h5XoM5HOeZ%kl}| zCou0=ba(UP%v_z7wP7YJB8%qFsGapM$}ckGuj=s!;cH7ucek(07HrPp(J7O>Xm`c0 zPvF7+euu)ltv_0GzPw*E#oe-K|BP}g>H5w7ivQlp`lqw<y{vtIt*}&C&n}5)MoRkM zB3Wr`OQo~N+zV6FKeV=eU-++Zeskp=X0fc-cC)9~95#88+4S=0<xR(>PZj1*Tvgat zo6BXxcjMNcyzAcis=R6ME3Wjs{wHVfu<PPYpWK>-{tn&7OgiW88CXwpzpj+m!l59* z_}9(g_3E&dN;|AuC!SJbOgGx5xl~uceZx*p+etHj8K>GUJ(MXtVSR)cTX&q=^zY_# zTfRPJ_HAzn{ZuR6l2g9VA)Ik`Kg&gb*@bU?t75}8&M@QHQ77?cbCyEvq0mx`y?mej zUmH}({#afbv6t`XZL5IfK;tjLaSzRp9e#A(prGpJiKm;wg{S;0Nc+<yWESYx6qk19 zi!%3-(o*@&w||H<+5CQOCbr3O#pg45U&H@O9G+PxVUcKNS;@H7E8?O7hsuTZzePjX z9v@aa;n=;j%ByGTsb!y(eP<upbt>rKs^7e~Zs>3I{HzeOVdk9E8~(Pl?&u4CS>at9 zdhp{354BQFM&A&1uZu>1T^8?<Ii+ZDB0Y-tpUjp+Cp{l6dOzPMC^|s1VY3eZkHRlE z!n_|QM(vNe8Tqf^vfswMxSa;#zwh1QnY!#}WvFY>{3AzBPWr^U^i}0%$(8bVHptvL zq-fFmZ<e!##?;RGpwFe+w-$eoS;W(%!Mm;T`<_?R=UmwSOT06uwoiGl(9+4@<fY7< z%+4GPQ+%t`cVW@%O(!GU7vIr7;3Tv3_k?w47lPc%`L<@m%l9Yaepqi3*E=njyKs4Q zz+Kj3_s-qpYxb7rUiRYL0fqq2XOfRI_t(vysZ*$zaOL$8?^oHoT>Hc2l3#AWztnQq z*A4Gu)SuqZvHmqtQP`mU$MNo6Jnf(5wInPw47n_>o;^Kv>%pg7g|6n4<37CmAz8tu zvQ7M%;CWr9@*SH0j>QK3xjX6Yx~qjd*4f=!kyBGXd5Zq5MH@bpZgu_jCQG?sANTRe zog1nb^xCp)ZPU;(aPePnwDR);lY9GmLmr)2=)dV0?+b2WowNPZ53TMrS*BBHmn3!F zFwiF8Z&wye#0Cqm3-|V4@nO5ZK5Ee<$4eF(joEuy?k&Iim&d|?eU(@2I)mo?sa|<o zf3dWE6)kg6egATDpSoAx|H`I=wdWc_Wc>GY8^7OUu`qv0Yu}|F<tp1#N}-%zT`%XK zpE4uv-^RoZh1IK5cAdI*{#nxZ35-=sbDk(!&iP#M?m#1tc=p8Ztybdf6OM_VaJ^%` z<G$8`#Pphj>t0##TsfBL=)5J&vV#4}lLywj9<IG@b(-J&;f(daH*0w~ua2BMSzn!N zTh4^2C2O_|eNTKj{p|hd&{d1dqvIB{ynB$nJY)rrM?kfk?Xia4saG{iWgmZQoy%mf zZ%yBaKf#>0jHT~K+`E0mM2WZg-dkOv>Z=tzpE?e!Z+p1!(vz2;KbH37IM1!wG|x?D zMgAw@m%5WwdSC1oeZ{Uf)5Ph5%(mSHx;wHDvDm$sUS=*GqZ<_WX|HhN%8P~yXQ%gf z<af0y<gEYnTy?vT$@E_;%Ra8y@n=go<M-~_*;8~{Kd%w*$!pJRUt{Nfp*!w(w``p2 z6q>bL+aN+umN4{MFy)(aO*(Ve5r<FOFRCL~HZ=tP^V_Z*(c_Gk1~=+FY{8#CTmw z%eUM^`}W@W?s2GN^(*TF*_27;*~*u^4EYc7e_43>uVc`Z?mFH>LM;~x8fy+Y?p;@Q z@yWZdA9*WZ+<(2{S>RHhcgJOQDsH^(DXKDFoU`uAG!a(Ay`6zo=5MnT?#}rXwAyT2 z<l&k6f&b3lyZ!0#8m6hw&767H7j=0r-0UE>rf#)B+0V|?>AagxF)+#U{%Y?E%`93k zULe0_eP86hLkUI~k1$-}t*<!oCnZ!o#Hjsb;*NM}Z7<0Szx~s49{pQ*_mW*_)ucbd zOJnam=VIexU)^|k21~KMB}2RPLb+K1^S5mLn0Y$j);`t$iLYz!NM5?;|IhdJ=FL(6 zb$xID)1CG1kMx@C;Qw~MbL%hfste1mv)Fs@<t*MK$JusFyK-ax*BKKVHun7vxK|$Z zKjQjpai23Y7puMV(O}ZsRo1KC(Oq@=`IhTKe>ObK@_F%h*Rk{u0W$Tm%?Ic0>#)7} z{{M=8<LSSD2!1=Lb!~zF#OAwR{vTRCIZe2m^wwfy=(~jbcP}?yv})x&)un%9aS3~T zfFH}+=o@^Mr#sKh(|x11OK!GN-Sf}8-n%zWKA6h?&QX6t-SU5Ns*IxFee+GMYtlAs z3S4*e8Mpj%<uzwmt72r%^@J}|T$g!#g8uuboc~4kS?*-{TG$_;v1Mwx`O&`DJL)(K zS3C?6Tg$RKn(LSKOpg65g}-!rCd6&e`Neg_J!2LN*G9F3x%JPKpP%Xab>Zvl?NVPS zcXrhkZ;{JtnD+Mi1$RD)r*D4Uj%8c&>)=bl&OYAcbyjyD@65dQGx5mI?^$zh-RN+; zpJv;)MSN$n(;v615;q=4Jb5X~K0Aj={$Q=gBd&Al1#<DZA0IMUM)+vn+yD6GxyT#M zMV{fm3$xy@m)|RT@7f<09<S|NYHpX+TxYu}cuRv{!{9`){gSo*TFpYomGbZ2oc&~9 z=;uY-z0O?Ps(W?Y*Sg%Ch1=rtINA@rexl!MdVc!0{#^Cu_(K|QJM%rbJbZ<|WG1V< z&Emc%^x^c?ujhA0O^~m=yqamX;rHC@T4!c1cdv0O-llDyd1=A1j@2)m_f0Rajm@#z zZIaNX&%Z}9dtQ<5@mb=_PaTNZ`5-MKz;4#P?R>Y+z5BJQ!tk12A@5dQv*_HL!oSa@ zO}#c_(c893mftpQHT!Zi=<X!dIN1md?yrB>WgYpvcxA`(7Rf2APKzzxvTyFMoQl0) zj(n@MSa!G9`taLJ(+~Nl9{ZB8DE5`MZVdA`ON)2<%MJzYPSIwr=G|6p^K?S?!UZX@ zm#gAE{qh#r>3CTma(*aTCvqb0$oF>zv-GWvKJDUuE;UvBs<zhd`<K6{oAN5naw}b| zr@vM@_XnTyo-T(d2Dy5f2dAvIr*ouhPkp~n)<1uy>izPC&-9r7@y0jL-?BHjF2ZEx zd@;pe5p!%VXvVu_rp*;ydekBPi*(SL3sa|dOv~|kJI!JK+uOk+;aNU&ZfQH32HGn< zTO4xYKtulAo_U;mp6X^Vy*TOHGG06Hb9;l<7rFdt*u`_E&@$lNq^Ds$8YfRYy|nUa zLdn{_oLPDDQy<E1d!DfL?dwy4J&sb^;R|@AOC|XZa8+I~TTr9><I%d#w{G7L_{QJ1 z+wnS2zuxQ-%QNkVTjoeJEziy8cvAi~U!Uuzs#mh>D*KIV)-daQ`#T{ttu^XD_cq7a zZ_j$(e80Ww$>flKmlt=ga@eZ(S8Iv)+&eA5=1aFmsYO*Oi|ezUy}bLb>i4$OsqWXW zZ(BcEX5oAFY0bKEG8&WfSHCY6O<w)*<e~$~dhC7Y_*-ZEzmsyVH@7p1;d^tZa*~l( z;k;1pr;hDA3!8Tyk?Mb@e5~f?D{I+*A#UG{jh25}{%OglbLVatt`ZNqCg6E{yOmD; z+*fWwrO7du3v#~|6dXzCkvX=vJ9;Chvcc60x;#I)3ZEx`y~tr1(_ryBG2uY^hx_fn z?=ZEBx;=DtJp5O1YxkGm7PpMPoUY~0yAiqR#OvOr$L<+*F1OTrb;-TVCf3$_`m>XH zAAVf7y!31D#~tjY+C1OPKGX!RIUu}8*IZU)uU6)XxKowK7cFi49kcXPtj6!4Cw@Pd z=w5hQ^rBMw*>k1uO6!u&{9efMdFSNHj<qN9^K~b^jh%nz9Y^fON_oe%a{UG7ISub` z9SX?3{Os;#+uQrC|J-JID*aUXsq9nLr}wLk{zSLES77=S{#^Cx;>cwi|JJkZSbwnn zQ>(Lqa*FZ?4p$DdmY|jk1=sY_a|_RuRkHFPj`=w|_sC`K32y)O{uiz|DQnui`BmX@ z$HI3z<rap_k>+(Rdb+3K!KuR^?F=54w8`?_P!{Q2zak~_Q;Air=C7hA3)YY3zuvFU zSi^foUq|4;%(?zQo-xUY@B6srz~@804^$U3CwXph`L`{1`HyeQmLJelzqMw!$5X+^ zH5NL1I9Ij&Tx801Z_$g(4e1M;L_Lz%2RuAI`FPZE<tcqvj#O1M-uiwiY}1upuQ@-K zr>~98-la7&DBeGuGyGNc!qrD!eB8^fmvblOZ|;{Fx)WzCe7>$`SKQ1(U85Dt#EK8Z zOqa55vX09$oVVrW&fn_COMbnM%KW>0!#~EkWx^@b(_de-P2R&c?cp8SxuW;0bq(vL z%8RtAN#Az*Xxo2d{fB1v+0&O^&k~zGyYJx7Ambp$_B#%*?-}k4PdVqvX?(<8LtS0( z@>(U{dinalp+B5W;<#6C{Nu^2b1l5k@9_dD?=H2IlM;U3TlV8)KuXN|(4M82h1t%# zPT@4>3Z3up`^JXu5L=ZA=9Ld$H+jxqJoi!bL_g;T!MUl2b{~zN{jb2r^xN^yEQ$Uz zUpkAf{{Ex+F5ptw&uYzecZ^P@6s_6Dvwz;qf+XptORHx{Onm3{+PST3y>Gz=o8aHy zHPxrNs2x)-(YeNB`<;8`#`8W;miT)e@%8<iz<cL*81v6V$%_oFIQoD4{Oeu2a-+ZB zl3KC!zk7F`|Fq0Iyu$hGhpT_K=qcsBdFm`2`KeO+ZtH~?Ognx>9}Er*WiC6&$ojQi zp<Xw$penw9*|B@=6_+d4eGB~N_1(*8O}<>K@7d>42I~|L+AM#rTTr~2?R}Qr^IQ70 zTP;5ws||X?Ywof0<L@5DLqEk>W-nDze8<xEc`e5_>wEdp>5TfzZykK__i$wM>!(Mm zGMU%p+HuOBO|uBUuD9`E{T^*K_NoiX`mB<-CU)%&n#K2`mDR6@skexE$F=)h+s*zn z-n&`DSH7a(wBPKT=f|JgGj9Z`KT&J-l#f&w{lyfNxPj4+L+MzhbnU$d%RU7??7vvH zlK0ju_XeJzv)1A4%{dcffBCOi`9uAR$R1VS(?^cfyPxh5>0^#@otRQtRCir!2XF5K z-Luc9Sxnt~Dfa37%w67VX4uF7=t}u;>zv&q5uWNL(h0NQ@_XF0e4e*NYulCw$IO3g zJ=;HZi`Sg>u8*3ov-0+~{d(GT@OM_ug&lnsHQ5Q1b489vvOS-6jjgxwYS2dgYXO3H zR4Ug`3ZJFsrx+?PI`2!N;|IOa%OZu}w0^w1RP=P0!uBt3f4x8a!+O=6=trE(Hm>GX z&w02i_sDDRa9xvWtf!lf7WH3{HPNz6Jrc|q?@+z-N;-$slo*5f|EdRHCpU}AwO>fI z=4{dpJI*p$a0+XZRibw5dp*Y(pU?@>M)NBBLv&MCH$9hHu*u|y?v`qn`MVzK%*b3E zG&jw?d-ETO!{6_>f657Z){v{YvL@(+*x8F)H^^6KZ8|Cz-MlDB#cx&V#2@-5yy40h z{Hsg7ivtc_7E8~&WSGbxuUYtI^5nkB2^-(4>jvc+<u@_bRnA{7%XTDnqxI?Dd&g!7 zKK65aFa6;!XHUwBNryk}*zxF#*Ex%bV|t$|MLwAIRXv%W^ZID7?`s#S>jfMpYH^Cz zO;$hbSBV@FmT;XRUZe6tPx@l=Q@xn!ce$?k?VZ6f%W$rp@jT`8yk|<!9u3}Ec}r%e zK|;A`(ydPQ2{j829ZkNq@abtw#_ihdmtAK?N50e)*{5PBZM$lUgjdn7qwC$yYsdRF z82r8S#==GX*6eLghvbiy^DGp)tSul`Ra5n6#>C{RB{P>L9#ME8In&s5TMg4H?yCk> z-*)cU^!h=$Lw^v9dx1%cq%Hqj;j_y(rAYts60_ufdDdyyzS)~jEOS_Ty5(j5lC;Z? zh4<V39uv6N{XvwaYMuMeV{fDd?$@l^-E9)JS361lL+ra)x#V)mz4<*q%S5ZEAKg`M zx=6<F!TYZpgCv!`9CP0U@~$$pdu;dXo6xjE`>J5Z;1|gsV_#_Vtl=-3_t|`^1n;`O z**bHsrXSjVHGPTYu~)BoKh3**aL=*J9Z&PRTz%g&9kgsT==)%GXf?-r1r^~bWm&7Y z8nR}KufF-|rY?W(M9=DZ>D6IoSHGNlyE9VzZgH!B{&}IeTXCmFp6ochwXJE7yK~&b z8VwQ8&({=^bB;F%eNR4fBVlR!Os%KZ^5z`>A5@3@pXXD5{rkCJGv#DWEe>)oHk)>E zVpI3Bw`YFpooWo;7ksqU>389^^slC@T-Fv*$#QE0^Gp(~E>AK(m$&n@$?DYR{%vdd z*Sx<_{b|$UQjgo3=LBtTm2RKjt2<?))0w%~i%qBGovAFlc&Fx!sD$i6->P%Yw<R~s zomYIRj4fyRb1&n^zTYR>dlgzIi=?~uJksh9lu0$bwaw()rFFq#9m3}QyI)5)SJqj- z%JkWM;>g~OlXqmidp*mnjQJRM$M5f)kN(LX$``2XEpVK!__SE?kP+jY_p|v|)Ze<H zb++So#RsWHbMCA=b0_N3v8*lEg}2BpJ|ETIU-*<=a>W|`EBVSZ)*Y#Ld0?>Z_ywEZ zCCkoxFZ*I?QQf~Y`V^z`r5}NN3O_ENb9<(GkzBgObve#C)v7_uuWtP4{LOlHS$CSL z^o*lZ=J~FU>s}XK`cdcCMT7pG`&4ZH=PB?{n%eC+p=eV4vCFPzWwo4<U$UmyXm~G` z<!k+N`l;%fD#zl-F#-l!K1@RW+jbmwkG5HJ_TJK<*jdW+H!NK|UsdK*>q2$upBC3k zGj2}qYzX?F%kZ|B^YM23Q%CY`?Y1PI=-qHmTCDQ0uIABT9sYSuFCOnd#g=H3!@c~% z#pivyExh$2_Z*!*d5`Df(#$7a+%LA*`hDpV-nEaJ(R9u6^;)aWZZuhc*x@z9ys1l) zBg(|v&7K_)+55YMG56#>r9;e3f!j)ddb#(DSI?Ai3wGvlTTroG+2vyq?}Is(=JVyO z*UvZKo*?b`<NLX@yeHNlG?87wEOLB~$Wg~kftH);FGb~M&#tpyIloMMrkw^~)6(V} z#%KGJ&z!oj_fo9JjfVJXeVsS|M(!|MQr=r3)~23W%$$GQ#5~}Nsr)|WhTpwOeY50u zRKCtT!M|qn+F&`6pO<(3%d0rJt?=~ZeQ(a(>vv;*`P1l1Q&qy(iWGsKUpuEdFWmh0 z`;KE_%Jq&09A~erkIxiHJNH%l^|Ir6PQNmKCN8m#_4Br0__=#pyyotIMUvY2H*Re= z<u=RN8$Mm>XzsMz+rM?ciA+wg-M2jH?+ew<pAKBJRVvPUe66{n&h>Td#%%k`5*wKI zc8YJy&3Gl~YbbPAxyW!uqT5T^bpl@Vc-NF{)c6@^bN?ULrSb&6hv#3EIBm_mqVYYy z)ZzWLGI#TP6P|oMv3ixS$_l?rhDkMo8!uh07s%Nr_~x^Xn~wUOb_SaVr#$6m9-A$A zD?6h8!)!l~_sIcz^7lTLyj*kFCMJB@rN0LcX3oB&8x?AO;m*R$M~mLC%dA@6eNV)S zjkRcHZ83Z9<hAdQ+pn4bGyQb`p$6WVZ0i$`{JHwpRoC`SIOu=dZYon3vuc5&^5W}R z0j5nF%OmaVx2nsWX*Fty%k{Z(f>~a4=8fKq)kjRzC*GR3zt7fU7oTU!zx0-;`+|@2 zC%GJx-BCGtb&h?_ny-^zBs%_YOL%zAZKFce54i%fF15X(8~yV6FTFl^qt|!aRr~i^ zZu|b1I7x5LkQe1n_L;&{)?K;r#VQ-q@O3Y0jxXa<SHG|^xc;Ed<s1G#H%Y8pV1H2d zrzA^OJ)alzrNAxrB{?NNA$lQgQ#o`wOxD>5pFTUwluIhqjFrpU_urazjPcXfJwNkw zho1b*wdapTUX%P=drd87<2iwAxxsGFd(OSwnD5uW;Mh}@;^q5u6+;VRr_E}<Xy^PU zuisap)Z5W$vc;LrcRrju=U=WDAyn4J`J8!6$(FavmmmHhaWntC=f6xX5zkBpsV2Gq z*9+|pc(3xVa;~#XPA}9=;byfGey-GC^5OpK8xI(6-TX5%DnQ_XvC@n9=a;@O>d)SP zSL(}&LvJfS?Pr+4WFuen`%`n|rt;v3{qo0yv!7HxGQ0b&ZT+^ri9PoP#2W6+{m{L> z@>gxj#%(ipA5u(s^8EVJpH8o@@y>qIzU|YypcluiL)gB)xb|(5T;ZQJb@DeO#TVKv zd(Pr;t3{>g#i?28A`7l+D7YT@<?*0I{b=Ta_k67r&0m$?Yu@BJ{iaAli%yi==RXC7 z$Gm5B#~DPen59$NCv*KT?}}|M+(vS&@+VJDiSs#gCQ)IBT%qy46=vUL&rUfw)k7jh zImy{Rk0W>DWR74d#)=~f0ahj=BKAISPj<^z#PhCom?d`ok$(Qsq6doB0_*l9XmB-| zyQ{u)ny;D=S-kA<re|UcR}|-_=c{kk?N73v_G_`MNu2ZVg%*DOGup(~$<%Wzf7dkL z9+J6J@NvnN??$U+?)mIiYL>M7^Qc|-yY$oJUw=>PzHt0$3iGA&EY~haeo)#vwTHp6 zWg(}*kF{KNuJbnvoEO^cu-<sqy2Vc$**<DqC@oTW(Qxyv^|rekJ9pO9Thx}%=>1To zqNM({qt3XpD(55%yPH<3e)qJzs+^lF@`+IjH%%RnOD@W8JDrqr=UVQUd9r&;FMRWR zxbwoRCHsEsH5pyGeSP_bS<|iE`fujtR{7|-M*r)`=s$Sq(M73%=j%<3&i!$CY&P3M z-7CD^dn5a{x~MtTtKw@yS<@5mXr(V+dfu)3^9PG#a)!AFOYU2|?dHija*rcR#p0vg zoOP2+bSu*I?k#tbc6vP}N7_{Ke1KNx?VmDBi-VSL&X->L>9){|&;J`*jOG|Q#Z{hs zVfdSU;yI(ae(aYrrH>vhzW3Gbk<JHmg}KFx&pm&#mibY|o5#`i%~SX~#7n(4>j%G* z-yXB<%JN{V9ll32oMr{_)vn*av~*j42FoeSxmBv?YXe^8=S>XK=-$9`H8gO>`rfq{ zE2At|t)JNUPi@v}$+gV8xH6LSFYTWe^N-6^b@2;BJHPib?;T}awdO7DSbVX`VuwcB z`6Dw~j)hKqWHaUM`z<`@4Qm}2o2%3ay~^4WI_s^u(B7qmkCa{=d{g+qR<f42fBCC} z+>GPk!QDXA{2ll&U;Ke%X|1Q6E&kDob&%h}M16H|NP(iQdH%jhNTz?Jt(xaQ}Q( z$o5ma?RQUpWU6c-cxlJ;SHCjCSM~>V{P<tdsr@`O?zp}C)oRy2=Gifpi=$qi+HkmO z>z*oki}I(UUxhU!J@&;Pme76{RMlUeky-oiX{`Bu_uqSTFF&v4aNA{{DC5{{Ut2x* z^pnzfp|_mu9HlNEuP@s=%PbZ8bm9En3eMDLi&nm!et>!JlIbP}d*3kM`P+8bz<=!; zlSw}tR-c-lu=-1Yw9c9El}qcRy`+DqygK|yJFsZ)!(C5qs&yu1>`jsJdfk^E-Fjk` z`}T|9Q$i}<G0h8&ez-u>{?x8_UwLnQQvBWfOo9JdYR-h{yh+@J^NkkFn4mrX`ir*? zi)D@khbZ^`x_aeq>C5Uy`6K4C-<4+;em=bAUPFeBYfRn5dw2c*KWF_>7@y<!zn=51 z`QJLLT49}h&gIp5t<x{vJFjY^`F{!H9Amq?M>$tbwp<*(XP3;~)u)}-pR?)u7p_&y zUbNKjdU~+Wt;2`EEM9r@muv1;-<u0A?9khKwSNbv{pI7I|1au~kGXpMcluYsU+lFt zzl-Ge?0aut-1(yL&AH68k8k?b^4m@N_i65#>Dyn%AK0w<dFnrV_l;RQJ{xY-IHqYb z>8RPf?T)z%s{*#H>|Z=L(>3a5s^9H*6ZUeaXI&9ov|MIqqwczxC1)m|;(PL7<@d7b zqQy%!iw|_|l+_b{_H2p8%)?bO%RUGBD!RXz-dSsQD1L+RKZ#mpm0aV`%QzM+^Ju-L zWV+@}$geQxt%0S=%U4{j2wKe+yhkji>Rqr@m-)HJHHL>nl#1n<b$4+VoqGAFe)BBT zA7uus0$!F#P1?WTWtvUva=qSiJH;yh`+V=WZ_dvPdC|LPZtU0C_%}_>rUu)OPLSE@ z@|I)qrOn4CUX8r*$$h$5c`ENDwii=X0~alqP&eh<mV9&SB*C+p%B9D41e!hcc)5ao z*~MG&``#xW+jvgS_}72A`+k=$?47*xv$VBm?!%kC1*eYbsdL%xRpwoM{CfKg>uT4_ znjijIW=&n&an<Yjf0HY-Lc$`szu#ipU{`Uiy`pyhM%U{T${*A=ul}uQeKet5pp+$@ z)z<dJVaxNoJA@~7t6L_-US&ARI{93})pO;n_OeTMeRO^DddE8b1rD3?E_IrU`F;8& zcPECgVpnKum683kpqhZDs!z7Jcj>Lz+Y$Asb1$!5dh-1z+wb3C4K;6xDSs!X?YCP* zikbC#TR_zJHMh=Kp7u9UE6#7qST0<0_s*i*dsb?$`X62L_ju{gPcJ3~Z$56e?)>tk zE8^2n-MgtAHg})kz5L|+XSABX^?FQHw`$n`dGR;BEx}UU8#+SccL`^$UbO!f=e@QS z?52)3Zv*AF{cqi>-Ppg%;_>HiC*D0%5I_D-?T9VYlLs7}N@7=1#pO=wO;6GliWX<u zwPFkRjWR}E&jV(Rw}l=}Y}R7hnsnvT+T5+vyjJIK{Z`TMAl-3;p>g@vS6W`1PUda< zpMQ_d>Fv+oqILTD&(5APH@+WpzvjBp^J5A+d3*RyIHcWtyW-{28F$U)w%!u>7pQZ- zTJ(CzIp;S!B~lJ|oZZ&%{HEIQ_cXQb3nw2teD1j4@0sV>{x3-RJauBPO#cy?=v#M= z`5l_7?674^nVF7alm6oURZk3+&X;`&Z{8sHaQ)F0^=3A%HRo2;@+$1%=I?dXn!SJN z3_<-1`!{wJo)jr4*!_f&uS@0dH1WHtv6_q@o*4?oZ!2l(XxklFb<%cWHtXvn6|QIG z?`}IBtHCII$=@*TbcFT3ID_>ZZwstHd{y3gAo{`Vz`Eso8Q#v66n3!OH%TDpa@D7r z#}~Y`_f0!?X5U2)VLr7Z@AxvC+vGmfeN>%(t^Uor3tbAuWi0RcxcH>*C-r>sI>WZt zW#bja|857<UR<o~U6C$(U(&>|K!R`a`w6e(Zhn6*s3w_Ubvm_py8*jOeM6$eqUgPP zpURq4>W@!w=e{Ld6d9^4TIG3+YwGdB?G;IT3}-xwHdG2_*spAR>GV%o8~Mu@Yo%=_ zM>D5%yH1&rubSncXF1Pwj(TO8-ihmNcJUwLW=yqOvR3$V)w<NQwp#0thiqQtxc!?U zu&!Ev&J3fdS)xi&f0zCd`?&9dY0jkVMZaY$ODh^rsO>Mmq|9}FhI8kl&!5y&_jXk! z6}_0VDNEqE!{Rk8zk2#rThb-o@SZh(&+(3b)_ObfD>pgY{Z+jt{(8%zGqs89zgwmH z<J-&!I=KAJnUqh53CT9pJy^3j^rlvOLEUXJu5WuAEAE#?-1+t(_I7@>^!wAY0%}u? zjz>*lw%u7cRbF#hW6(CO3vX`iIMp_T&5*r6_ek!M$pOXx3zptfbD5?#Cwu?nU!P80 zX}z+@dgJsnjayxK?{R<JCtGs=^MjrVyu1%5-wIA!S{XZkiTgAW&e(o&ZgrFPrU%)5 zo?lw-bN)V{So~a`SN+$%87n;YdY_4{KV8LJ@?W@CnBo1wBe%P{cD`LAefVuikafax z4L!|WavPqN<QnViUY!&5>cmDnA-n9G-5>6Gnm^ggQ}Mj*9^ZVv-(0(NS1e4}-ui0B z<O^jxj?M|mzM#8~Bdvdi`2&6b(^FgAjl`CI&ycy*?5bn?>9oWe-orVcTqAcpd}{F4 z@Q|F@SLU7mo?q@xxUf>WF!P_mx`kV>@4V9J%#*y;-qE-qB6{wZGv9f>E<SF`nm=Rr zVQH>cXRj>cb}rj?FZgIsQ~_Jlt5d!!ej6XF>UeV5OhIs0x`*e(vMD<!oOr@=>(0&{ z-A(V?E@;dwTXL6UX3Es<#;c63O}AT-dZlj~Yg?<Po%)OQQZ~Q;-kAKxxz@UU#^e(3 zd#j|S6=&ag^o_UO{QsY8emCwIg||%$<Sv<Lc|q}_r&YI@)z&rMd&~ElIh0&~zh+C` z<%!RiGtWQw`LSSSiQsdEeZS5qr&w!7^gn2Oah9=n!sK<WXHJA{y}Wj+sVdvd)HGSM z2TMvnO#T*gh2htsljRflJCxa;WSJd(V6P>=O_+_IO-=un-dBNAt=YSDy&gZ_A-{3b z%t^)$U;1Yj%jfF*bF7Ftd&#?I4ri}v@B66p^7e~s?&rR|bNxr8zi+}$RohPo7i<n( zk-<MdFQqT+yYGbMPj}5J)iOz#et5BUynX)i*6o`$S1sc&w%&Y$-HRc&TJ-$46zSd` z-%~Fv?`rt4FJC?7R)z1T-f-318UEW0-v&uvH?fjl{dvmc^r@SB?;o5Sn)`HZ#?yHR zXZdg4^eleMrH-&mktKiaGoK26wBKHQ>i>;%X9VA_k@@pI_t%d9_FFxdu03wVEq&+^ z_cL+fxwcQf&tLyLPd2SE)>ro9k=O-O<E0mg9+K(Y=dag#r}JTeFh3{9TzM(J(3oFg z=YQ%QWPR{NwerjNX7;DITc*a$Qha~MW!t0t93d~>O&eY6liWGfgD!-)ZGZW250jHi zw*REfX1cehEI+x{sCA26T6U?iW<^D$hlZ)wghvOmGPgEgODJ<{2zkFSAYFrhmQ~fY zwby0Vdy206*Qd?;y1Xdl^tMA)J2<W>G`-bzUE6$Z`GYHLk*NiZEO#DU6aCayWD>US zW%AQmc01>}%eY4xXR&_e@L+RjTB?%mXuYx~Drnb{y1G!w7a|ebd{emBoSb~B=Ud2m zPkZme)NlUli!=AcO&3)^t#{|F(ZNMZ-SxWON8cUx>X~$LwrIuCoDXKZgLi$2dG7W4 zYIy2z`$ty(M`rIlfAqU+-g>{(tHt*YMRa<4edOGIGA;P<7mMfia!X1Qrd*8umpiMy z;*+JX$z^llIm>76%l`0v)~dwpcdPdr7aIFmd&O`)+?Breyj1Jz`K+~Be_~HJr57mo zetj#e@y*wDrci$Ig6I`%C8l`S>P4(vx8rh^`Wl8ksv7yvo?fo%s&T!S`%USN-+bQ- zC!h67rQ0xTTTWUXKc(f;_tamz1mg8Iwzc}R<aGC0yr{8|{JXARKu9yp<%Z0w>THF3 z<r-=(|E}bJi~5)PdtdiA!TKo`i}nB46?FVq>>T~v;L*f;J$ohiKeDij3C3_w{<x^- z#LAB$j}q_1H~qTXul~8xs<P+6<IBxfHzr7^{B>M-lIN72%+*J)AIt3CVZ9)STkcHx zmo4TSp9lR|d&HPywNaa4MC$JoMe^@AEmY4wfA!KUm0bBpu2PX^r@1G@6x}F`wY_We zePhtB-h~k-dx9T)ICO}$tgt8T{gZh&zo&l9SP*C+t=cMfBkO#{rQYfXPx}3SCYVk> zxYl>~;X}@<^Zj)@Pw@P>_u8)hQl73+aOdSyaofKIy@}-Bve7AP=FRVXw|Cl`#+}$z z<Gn`Ic;*G0ypLBeY?&dLF!^)pK{su^?0}5ZttuRUHm!TJ>e%j8&-xkPzp?F1%kew^ zk0DbwmV2h!U7z6lZ(L6rUy7aaR^IFPo!U>oYtrKPeZQ)f%4V`Yl&_`W0>dmLW3He4 z8ICWWHn=-&c_IGW^O3`E?qk9>+>30u7iazP`m32$%@*Z*#Yx>Fwfy;VCV$DIf0I7$ ztJ$(Vpy}_P&9bx3>jjESN?l3bF0)-_Q9$%@FO&Gim)!n{F8TYe|EW-f`i&dh+%-GC z?o+?3yH3D=ow$tpvCG?wFRWT*s~hm)z@6=f!(Z`UwEE#O)1*H&P+qqpy-@01-p1@b zd|T{qrV7_4Ctq1TG1JND?ZcE?ALaxuy>-pOwCv@jmQ`oXSMYrH>o8VeNN0(hYEmQl zwE1Mr%sIEs!frkDo4#g^^h2JNtu-e^mY=-a=x1NN?~(t@i%I%FT_*lv%3)#id=>5! zc0DcPK%o2q??*o_pNeef3~vtNeaI#B&2FAwkx=Xtu{*OQbvClzYwKdEaM~lA^@?c; z*YqIniB&zzKb1D?H#@(&dtKnBAnP2>CZCl{jO`b!$POtNkPDtw@UOwh<eyLZi9HO( zi3@o*)XU3;<Q<baS5x=n^y<Jv{I!Q)ioQIYqsWmd)6TTKf4||8t}S<+CWeVwol#t5 z`ZaEQ?EA}8omVx5?p0X#X!^BdMK-HHuK0E@=TN|X+rUSr{V&TNXed<Hudddy2;HsV ztNfRJYg=?c^D^t`poi{!%Nsu%@A|`5Ewy0wW484ZkMne-9xshsZ+p~Svh=l}`NF(a z;x@YH&Rb1b6aPW?xsCU}vaYQ{Z>4>%-Lw9F?*WryeD>=fJFD8H{9fLuF@C#CUY+I5 z(LhU&V$NTJO|ii%=e^&&>|qbX+q3W4HIl8THqV^&_-?YAtS|4D4V$#Kch|jmpC<CI zb?M#Y?DcJ8-5O#)t_JLj*SOyp{rbfP*+<v&>xHD=yjOjnbwm5&zSBh-w(lP7Tz;vs z`pgoi<o<wbd(7koikO!=K73`h-EYwkR?f$awfegAw|?0kpZTCTn`gy;lQTyb?#pJo zF=fi+4;KrA9#mvA*#|J&`L1~%@TF<d#@hm~I@~IDZsM}bznEU-cRMpTG&3XR|B=k8 zmM`{m^A~5vPXEk#?((-R^QTvop6gF2mirV^XEncB;og(5&$it)+!NC?jpS?WKm49n zP!N+E^~CcG^WrsL%nAAr+J5Qo%W9W+*JAu5Z+UC`#FCn7!CR}I2sQ;>Q*b>TY!}jT z+Wr1JmgRreZz?-?o2#}yn)B0NfwKD=y9Kuztnv4C@!{w&=l`nw*DKPvB>cj%q9ymf z@#pUHoaOWN_{wSfzin39eq`Ah`=eayKW`~MKl)Snq<6qA-N0YfOqOY0B2|oQW%O+y z&nqj+k~_-pYWilv?73R(b1!NCbm?y0_wGp6MHjY;{`Gxw8;%_8j8oh8!~ciBcHxKn ztB!7SC|5`}oV{e7YV!5MHA~M4?~-foxA_y`CwnX0#>DAUkKvMkH|H4`yqJC?srG(1 z|BWoi)rt3y)LwU6EaK@O6Y84j@3_qWeg4tU+6Qm<Z9Ji$WOd@Ol+ckvv+~ud#b@^I zTvH-*ZT+&&o2|>{XkBx$*|++UmD{vSDc7yMj{R%eYk7A%<Go@wxBWE&RmB|3m24!- z&a3Tte)Rs*zwDnA_fAg@wBG+FxyDvr`@p>3bh-KSTP7CeO?ETMd>EQ?-Dp?OHH$-Y z(rwR0KY6pKw=CDpGFp!J-X*Sx^G`y!M6dFco#LtT+4{op^fvLSnabVl_d~x-F5bm= zKzY)+q6gi_v|cD!S{<&=Pj=lqY2&mX%bj+nRpp&L{%JPX64g`95!z}wS$pix2;N~f z*wy6nyub4|ui%M(kDCeixi^Zu*z+e%;Qpk4j%>f@bx+ji`NZo~=kVj7hY0V-1(qVW zz8}*`>_4}U<>^C->LnsaS*yhs^vcaScdaT%M>mL3W;uVgA>)%>66@Q&6t`Kr8JL`m zGC$U*b+}Y$e~Jq42ZjuWg`S(EZ~Fw)NwwDtI$S^c`sn)2(a-)yXq2mIMICiI^V-t( zP^sL;>!+5*s5a*J#mFCvJFs(oTdiT(pM85A?r3azzIF3)9r1;lF%Pb9iGO;1TYtMs zK>g8~_Oo>bqFoYac?#tvTu!<qQ#Sv()ic5PhIOl!OxXHK?goRtuzpnMtP9>%_gOb5 z27Ud*zgwioNxUFpw@UlfdEJMWJ>9a`E14m$PsOCH&2Gm>u@C#~79O0lY^PK8nNOKo z{1166ejQxfwRElOuG1<vnY5WB+vPV3&zGnXJag1|Ld@K+m#uzre6?vVyqDenpJPwx zUpD1yj`?$z9G)z6Osnd?rO5l;it{F2xz6=Nz5XXd%7y3Cgznb9bDQS6=~>j7mm%{@ zb>D3&m9DFa-0#eP-ukflHLJShrL&s3HSFj5{(Nxpd4A=g+;_LcBw}~Ue#-t~YLL#d z%0aVl;<tw^XOD#6c*&8Qc5s`{hReDosfp_?h16cguhQRNV-}wn-|MvRX!4cg2`1(j z9{!8I9xr;~-^?rfZ-i#aTgI=<=$RsR;`XMqbMMaNySv^dk^Q;3u<3`Y0~umzoQfUy zwKmp0nj_@lv~2SY=6#$8x7=)5GqK?R)R+vDCr)Aof4KiS>Y2<t-D<RV=7u}b+2>iF zY`kdlUgJK`Bp$_SlC3Em8+pr=la8%8xB9tdX$NQEB;LQS3x7$U2|v~5@$Sryx6-$D zO_m?JWVZJ4DuLNG${+S5owm!!(*30ODRkQUjrvSW%zv-_VYb{@e?!;Ph>qQN<(Nvf z^*_vI4V(8YA~842UgdLLa`f!`SIREgn+9x5-CrH49yvENefnpcBg^9(&2sNtQWN68 zdr;?1K#-QH{6=ZlNzQ8z>+LUmyzgh8=hu~6rL~vdux|aHZ4~vnV87XgO|7D?DzB$i z6->ON!#+uxd%D;iiLARF$^Ld5CtA*KKHaqQV31vtq`U4tCOa!JhaKDNd#)dPI8!kC z`ugOxUfaq|{u@cfhkd`VQZ!TI*|)vY-S5(Kovi2IW^FpM?B&vuy2siaw{8@B1s>>& zzP<Bczo_(Yx#OiXePy$y>P6qb`q6(UzfA6y+N7Sn^J?#ZfBw|`yUp{z`_A+4dS`jX zZsGpJzjg9oZ|)HNvN_2y&DGRs^JLz$lbfp-8VB;NS^CDz<iAFN;ei8^^JPykZ#!Pf z$M#9*(3?F0vu7+XtV&y-VwQb=@jcsp0Y96+h0RH<?QGw(w&U$4`=$t$k1MuIepzyQ zpY+CZg|GgZW(R&V&pwb7tyeff%42fDsgRi(tuFi(*JI8<*nM|lLzbx~OUJwAcdoO( zyLm{h-1}(6%4)0EtKJ!$7l}Kv<Bs8aoeg#iUa8nrb=}$*)AQX{YIn^2{3)q>j;`IX z(q!{;F^Te-v&@QrD3@~ze~7!`TW?>T^(`uFSInog>nCn}&b!D}r#q4>YgcdXvNEfQ z(RWu{=I#~R^7ZZA3r4v@%d%&i@K21FpJY&%n~}_aa0aJ@ndQ>67xHopw?2y~KWF;R z%yjt{i74M(-wP}kPaNA8yWsN5Yj^UVU2&YYJ~!-PKrBo4&kKv@z22+z;n$A4tUl+w zYmQmZ?th*xuv@ROMx!@S=cax=o4I1|7M{gZ)z5#bV=G?Q|6I${=i@n+mfCNb9hSnX z_k{QsvTXcw#O1w;-0Y4UGhD7sdpkiPojoIW@5Gqi*rMlRFWgTYH(OPF@TTS&NscFV zaVt*z)hVt?TWU4$RmL-I%X>_Aw?8wy-@7pPLU}ZwclY(Px3b0A{53Q0Z9KV^;oqqX z8u?oDmDP^?vzbzMl+*3E@w1vw=L#$5NB5Zu97!%-@%n+C^rstFwq7{!bcL2XkK81! z;J1+%RBP?{WLsPP(mtf!%xzTs(7Yvv?Q_%{+d1~99lr;}KAvuHDeyrmYej#{)j8qM zXNT6!p8Mvnbeo3!)t_qd&4-N&j9&&e6kXnMMJvkr+={dFkA`1<o>cvpiT|$1>yN90 zuH+xj={cu!W$C4$3sSA`*Z+>b8F8cf>Td3Y*Hc$VWwCmEK3HbI`S|a9avSdU8y75K zzrU{k?a});4Ie!})0JBIck<Gw`yWcov1IuxeB|DS*MhUnN_OU7dADiJlb^}|kN;id zCv$g~v&?0#+sm4lO<35u#3<a-)PMEwRiZLYVjri;t)C%$;^4X&mtKnYC!PO#UN|k& zsd3)UICJ^KJ6C+3{3GUl%q(A<Z*?~J(jQBS%=C=amA&35w1C<4=M$gzrZ&%gp4bSk z{}A>ef;Gwganob9?d#dM&y!<L`=0bN?4qg{cgLj5n@rBT3u#aDpSJnthS%?Ac-!ne zes@316Zbp%%%2{<>&%h*+^L<>n=ilfSo`lK+21-M($8L9bb)7`r?KOzC%>W|Sc$xu zu=<FW-Qw6q6JIw>%9l8M@cQ;mkLI5^GW%>&__>g03VY*bKmH^mYnk84{(jju8-q={ z^&Hkrr?>qP(7w8}Y<cy{DKlqr9Omzv(w%?VO8A_~^-R6)<+9Un#ufQb%c_{&R$7}l z-=fsy{M@s}m!(c~O>mvHD^1pDv*44>MisBLtEXH%oG$R;b;olhx8!Nv5pgwE-^_o^ zWT^dPZFzWh^7$`o)#{r)PIp*e4>}!nH_`Iw?}ocAA{Pog5<gB%|9@hiaQ*_0%r|u} z4mbX4O?{bs^UNc`6vkzz>_0Bw<`*CN?*0q^?AZOAvgaJQv+m-V$5Q9H*502Z%|6%h zb81Y{zKEYSlI?-Amvt>n&rW#WsH84;Tt~0I`$vC8U&<@T%ZIN`Juk0(ORTRkY@tN_ zPT7shk9Hl+c{1a}*6-a6A9Y@|?J{qu4r<B>x)bpKWrk&hm*`s=-@oB~OlzMmQ_X2v zcel)=#rUSf{qW>98t#4v*Z#O;ap}MH8@bkfHt+qM<1hL7ee`?!c6QUZ(Bm)G>+$8i zX1VkK*UJBo-7{`w-kYO(`K{T-a*cBw>}UBz*$+6#<()lx_k0KI)bO9T4CFJHMpY%e zKf17=_0GwSsgIUtCe2@Q=}4ZSiQ#m{%6GSn|Ic0bYxlREt&6LlefLUz6LsP4zPh`q zytZFTRrth}{>XjsvI(9#?bt7sS$qG>mo8iJ{Ogs^Nx~(|uBkOW@$cI{AuZ_pf@`av z8tNt;XIn3`JdyX;l@kdv`xFme=O~g{Zftuoz_X|4+eNLiN2l`wf+X|P4yQHToOdAZ zYTfjJYmBQI_Ls&TytmWJV^yxc^Lp0ed3*LqO!{f(^{m={X8*ehhijSrZ6EMS)LcDr zlTEfh_UX6XEVr8*G$TFPr@ynG;_vid^LfO%iGDAoVk4`=n{O9}IINWUd9p#M<LlN> zw`;4u_n+N<zP9tRs!zqtv{&<9>=!mydbvSxl1ZtUzT}nPUpQV1u9Ff;&|P-Td57hb zfRBqmR{tsSZ_g^9cFKIUXr_J7*R{_~pMKgqA*=f0-0oX^J2wa1UXjPYBW?Td??3z< z>&{fB#C-GIV?W2Lc?t8fb#r-cIIUrQGqLoN#p}pxS6zKNY7DEK1z&T?*~u#Hb5t$4 z^jr1UKCb(|>ibxG-x@!=yzs@FBRO8{d-pG1VVU3Se0ahK*64Dc=!pumC3l>dc!Z&_ zah~%|sfy#4NolhcWQ$!zp4G%x^42hVeXKCCX{`|Y(rY3*|M1*hmlm%!ni;%IS|)9p z)K3ey$3>|#cfQu2zHt5No&Bqn(-e!OWcX{2%hav=z%cvyP1$W5*BJeM6xGcjoo#zN z+w)7V_XM`{_WJeNUrv1riQ0Xl^^$I&{i$`HER$bqzWDsjyOwX!dHx0Gub&Kg7k8c| ztm13M{pz$s4;TNP@;ZMKYn@HB<+Z4!FHhHek$9!%{V^tf{mrA6Z;mKm7Ekdy-<YjZ zWu%p@TdMddGhk)>$Ds9|OW$1Ynziov%PHRsF2ymG#fMy2uW~=;t>Z%;<ps?A4YrbZ zjH>kC?PrvdPt7p3csAp7V5*89*W?`$yfObazu)O8BdA~W<<Rqt*xR`hD?K-|lt|As zK3%;mtia;cw|tA;2Va!rwdm?^-W++Eb9&6>t&3V5_s!X`IeWSKhpiiY4usb<*BMq! zkum$N`tyN-?iK5h8y6k5bY1$si=SH{cjCglh2J|<q?PCBbFKW~;+x5}<j}03wKf;s zpD$;#R`}Q@<-|ANa)zAO_A4!1-o}c$`@XegE;BB<_~&uK`kDKdCh*4Fc$M$xb>7>R zxkzqP@2m;yz6kG33(k7!{%OgDOz*z_FC~$i+2-xZ-13U;Bv;v$Gu_kV+x@j)aop?6 zXUmM|xaEH^@rSyo*~jG-aSV6vs~>-{{bZrk*&?U9biJf)L5p*4hcHWiHN7XJw>a;y z(W_Y#7JrG#44J-G#Ov#Z&*B?Y<0tT*%ZytUC~V1Kd2Kh>i<V2<6>C3wO~?|RKefAN z%@+4t@>a4&nK}(e_pZ48Z;gZ9;bNJoZ%=%5&$M}RV23f&vDaM(Gkp);>G`2Qq1@*D zZ{y1P71OKNT{!&Sb(((t->C1mcCK&Vyzsc)I{Vx0VpHvO*BUj|m5CZ})w8%27!t9W zVYRKKp8JnPyZiqd+8^HET>Nmlx}@B+IIi87HvT^QrL?_l*K|+gnzt3VRn0Q5sq)`C zWU7De`~<U{S+Y(0_S#5FanFCivsXd<civr>t^3yp{4c%avSd&16wXP^%D)}%@I@S2 z^7ozap6^ngx!NkbH(Y5xR(kRM)0!z3JwoeG=A2r;v~NoILFrsxM?0yXHyai@sB=%= za4F!K|0#_c^_vn)V`VIs*vQI-PJLN@_KZ@zZx7R#!w-&y=6g-q$1(4_zsliBy3@h} zBWe^Z|HW2Be3E~^pZ)%$&X!l~^M5RudnUqjN`m%|D^8VZCtZJ*SgtjTP0doVaM&iD z^0DcTcf9M(s44}m9ha6rUVBgM`NyXzy|!;28->@Irykl^Ui!N4?%L$z`>zFe?eDc^ ze{THpq1@rAbqv;f;<DFXXXh_*j6QlYAyo9Osq95B`I}8q*9ESGeLU|q?Xq^1t?#3+ z`@WSP**a0>6W>jz!i(27PtAPD`S4t2bZewt)&G*?-HK5k&v;&t>lKp!W6pef!PVPu z6uX<U*y^62=}w%~T;{QDCA(@rM?UvE{-s$@GNV6-E`D(5g-}BJs=KxF%J=10vs!=O z;W)u9`D>}?daab^RohOTDP6yyey%`6aA=UjH5bdM*Ry_4TyH(ozu?7$Q{T-uvBz$9 zRDAvIp^2^kWq03@pbhJGI<FMEzN_P%=WF%*vNsb>sS4dTWHXUlqf`AdJEm=y=<|E) zeYPKL{v~^;r<Gl&x>-T@*{|j^*Mw`5Ztq*aNpt5XPP3_>wZC&Loq8sS{ntT`*-D#h zwi|HHn{gultIB)N8)xSw2v7d`W=j6lS?^<4cHdkrr{cfPHulUh=k1%cyr(9_?YI>4 zGXGBH;V;r$^FL&G=}b!f*yCWjdRqwh&F*`q`(Lg%4F3@wZ1nWas#ZPu@75k6_uh%L zv)B4J`fmO&y0mL<sE1miaf;B6!+cAf)e5_9MIRbFU%CJGO8lAKQB{vGK3ur-huW|E zk6O;F+MJ%d>hDs&u$}K}Z*1RsPyB7vow!vq#5UBKxm3z8`7`~K(Y)^_=YJbN(e-&& z`zg5ctI>4ngs02+QW{VHGTL#)ctUjho%_fB{$#lIIrGPzDrbwGvn*KF-zwc#c~U68 z(MGfS<%vI1r&e0-ob`fF>h{FKQ`{9P^~_SqZw{3_|7U$XB=Gd@U$GgXdSThw_QgAP ze0z9Qk?X3`mxlr`t}7mV8N=Ic@%QG{-E&snGxpZ(XL)twMQo1wuW66}xyk(2bbckH z9d~pS$MeWZ2i&&l>xRr-G_h8(R<rr&o4yGQ_l20dqS{_)g-ucXZ?@(32J6c^G9Rk_ z`pP`n?ZcLqgzttbH#qj!Gu4Hwf2=mFQ(Y%iYtQ(+HHGQs8Lo)TPhqoppPk&RmR88A zxqvGorEtoF7Y2S-_xHwJl0E*n{`c|^e6u~%N|x>{{gm(f{e0ebr{I@;QSIG(^NJ46 z2nv5{^qeDN>BMluS6X?T$DS6IoOh1%n7EoHcIjyz-DU+9>rkCb7ymD8+H)XYNifD? z?L8TFiIV*DDf48%S|5M*p6{`XZQz9ej|-~fd~Me-MDBc^lVKAb{o(A+*ISZpnvx~= z7+z_}^O%}d_Mm1$X1&CF#*ezb7blu86mQwgI4N$*X7y{cl<xb!iTD1-<G*gn-lRRt zr{A~U&id)V`;?%#U*%uUr>$vntJyYZxv}i+{f}cm|NHgV+WO8R&Kr$a#0{^`dwl*| z;DKvzD(2-~`RLZvZyI;#8`Hn(!Y7TgSL^-`pBMJ!!s+_ce#s#c=k;6WE7%l&FcA^T zJ9*Af)++wb%1xUR*RHwJT5Tbl+ErubXgn{hOLLP-V$rn&v;TTT2h7s1`CpXv{_B<e z)%UkeGVt7Q?OeNQM}+6HDQ_c}`P;|IpWqF7eYx+T-=V3m{WYfl&*zRP(7M`skHNWE zdryA$-rUnGkH+^p-!tTxul*p^Hgv^3dz;24hRu`voj=Jf{_YU`U|yN?xs87phFV8- zDwNJPdK$QoNqp@DuJfxL*6nWzp1sP=xc374qyvv%a_)71uUr1M^<UPy=X0OjVUPd# zyW-!Zugc}N#d)jQ<G<b8HFedWx%cbeB?oU>k-taun+vbgRiEOT|9+cpsr`^Na^u{4 z^VOCEyJlQV%8OZRX!>!V)BA5MvmL&Dy0ZTI4~q%%JLezYQJ4Ir^53<*S?up6`NRw7 z#&K>vynD|wli*9!o=sjOoh^3hYj*9s=;vw0yHBfa=N4NiuRSZt_EPM*G`at?Cms8{ zQomH+_060`(^eF@?|5D)E-^XFa?;O<FIlC%9!&Q+F|R{3Z|;)!CpjL5+Z+m=R{QRX zaJSPhP4TDstq-Oi-`W>za&~)3&9~atKijfy9%{O0u%=g~mSgq$<3dF<vkzZ=R<-@% zk+lm=K7~gA*;vC=w46UR(J$Y^@TP*OV!LWc?!BjV>nGPNa=6a4O>*}k-aOy*Xyxrs z^Vhh}d%zU>`qzxF4m)_`pPQ|7d-0st|4{m0<p-K(Pfgq6Gja;D`}4A5^7mc5C9!W? z9b4e!$usZN|1hlB+;GI?&y4C1M;s0to!{Dc{jBSZ%ju7s-ZHo5F=#Geo7Jn$Rn~s; z9{(NNX?s=dzx=!)a+c-%ynuyyP0!B;B%Vq+&$E9WlU&vz{T=obSOY?O)7BPG%_#lp zx;A>k&b=#yOa28fJJJ8hsk-&QaO(=ARSy+EDn8a~vbS`XI=o@MjwiQ8GwaH77Vb;) zd7kxJNnbhJ5SRF4!*6B2oo1YsTVMD%`EfIRatvOg=(lSIOS#Hkx7rMmNY2Ui7e03% zJ66!F@g{?3^Vu~S(`r^E&hz+@HDkTyu6fCRCr+Qq=P^%om!AH==!ZM6|5^RlF7x&< zKYY*R?pnF^VZYR-n=$^$73~%E_oPmz+n#UB|K`JQ!x7b)_>OaF@Y3@ecE&6+GZb7o z`{=qW=D$4;FMjaLyHehChpq2tsU!EbAK#EZWfK^-ukrnC+fb#qn&*DZKIOYeN=|;g zQ2vp7p<)KE$BwE#@pjyIH*v|LK7EzC#Tg%8Yv;~On>RnhXl?Pzj55JmbKgsrpVwUb z^R0lrDrAy=`@;E>Z0+0<pG8XAzjqwEy!~vk(cGoxb3~2UTZ<Mh(%vI`W&g98S3hql zKE-4=ult?(naXF|;va42@ME$L-03EwRp9n@iX-2#C+t&%!dUe_?r_olwK+DhvTo~x zf=loJE|K@iKf&<*kJb&XH^*g4P46YB-f4PY{>6I6;?s>+pG$8~?qiegK9iQ6yJJn= zu|DR9nLI)Em139Wz0_@mCf#{%-&ObInSI~I3uV0hUYT*$ZmQhhU*0OX+YzYAopXG} zgxK8ycXaLFoqJxf*?3{=mWh2@{lz`OcSLq-e~Uh<t+c1TAWpd0=)R5dY&i|bH`{KU zZ%EcJ*b}|vPRZ=0JFbSRF58*Tbo_0Yx6tvUKi9WjXFPu6?d<7=ckbHwS6?{k#(el% zKvuvCfo1b~>{)nTTeK}_Kho5lSWwn*|NgzQw#Vh-A9fr5FWr1$U2Dno57qJ?x~mkA z{#a#X`=PVRmUZ5OY;JDT-yOlv)~~N!8n*wT+BWMwYZ9XG`sS6(p8H^xYx`X`p<8pk zNmkjGw%cppK2&>f|E|ZvUu|oi+{`_<y!Oddw;Y2z?mq>O{EO_o)uw#1#Oh#NrbyWv z#wl4#Y)-hF@++S7`q%fr@}*e0ZjJMb)Rq6zwy)bPYJKV3G4{JrZ(_`6-d?*labcXT zd)>_))@$xwl=E}o_c;G1V)NI;S@)wKnbn<|UieqE=}6fI&O?WD#Fzdn@;JLXQ6&2C z=O*SN*Sv>8@A|Zh^ySX=UVd8i*85T99+Rn8SDM<knDGkMZ#L_>lcDSQ&o5$gviSSY z!FgvpL-(BjEww@Y^tQ7ptp7GxZ{OT;mC63=jLqp%)2imod1ZJoFR)<6w`R$Y^Q;cK z*(~`kx@m0-zk;7C7l&=n1gllIrB+2&SGYRX#%{gs{8OAm`bECj_Em@F+QatCzFz6< z`LFex^^MY_IbUCJ7VKAFbN^$>4yo186noD7apSVR@IiLXvG+-)*A&9;-)Iy3XtFQc zt~)N{wW)PkyZ6pC?c!xue`VGFoBMCmVdd)&4s+a}vfcWR!J%IVHa~Oy*M4W0aOPH? zbt}q#-4EMlUUPj`;OyzwGrwKUdRYHk-%CI@)7g6-XZ_yBs15IfqV*P>(|*k*$G3ay z+}(`-1rOBAJ!D?-{iJv4+v3;#?=~+}%MP{+mA)x5;pz%eD@%c8I%fKkSDmdy-EU4~ znEU@U)17Y#Zuu7Mmfs$4Prebdc#FK1R{GkziO&?)cJsX7-8K2Ew%Us|Qm3a~)HiUo zGiS(Mu}R0B>7lgXIql6KH}Ko(Y}aS_E>kljR=BOS{Me@JOczqU=kQKxezZvH;Nve_ zbNKWY?AaiFt41Z$e95ut`C)$}V*JW`J=pd6!+u<CGdEt?UuSeQ{caB1@zXJ@6ulD* zdOEZATS<jp*;93H=fZrsJ6dgj^Y8C(OYQa9o#%4Pe4<*#>baM4v;O{laNbH#{jZs$ z(&=dzbzTdp^|>9_*OKxtpI@B)$<pSt)1?nO9zXsjTV6Y^C$(4QG1r>sY$0>{rH=g+ zIrOu7dcnVab6)+GK5jX8S?%91-(UZg+Tyt3w7Gm(h>b}|%rWD;0r%tsO0^%pO`gm5 zE#++C!JT(XRsMJy*`M_Akb2B0|4DA;67OIu`4HvF`>qySAAc@;+<yO#q|N6pzFB!A zK_|UzQDoMla{@PCznpveTKyhA>rG!W`i)t%g8v2e=k6&mxG3HqyeCLa=iH0=*B9&W zb^gW}xBcO-$DtC^b7lXvne91xI`8#LhkHkZZdO?T%<BkVGiAEWb^Ddit)7Tg<n390 zS^5rFiz&xyfxKxeU9vX)5sb6red>As$OY#DpTB}jr(D;QQQqk%nD3ai>Ce~jDfdsG z-hcY^e@jQHyd{%`9=<Q`O#kt_Bx$+PIrr4f>oua!pZ+&*dadC{tMk9vPOVxg{n&ld zLj7a$K_ND4d;eSf%q{)He)7WGkLhkby;-*N-vt={Px*g0>EN&P>yPjJEpk_Fg?UWT zski1W>6a#N-*ETu<OLJsh3D+pH$(NkUi+2%J_}-YNM5_uq$z6ZxY(I_h4k;MF&8K9 zUvOZnpz+T3<zM>t2>j?eFERN-_AlE-#u*HMJYUcMvOaQsP?UP$uS@!h3!XZ$Ym3Mk zo!g<i;^xxaQ)y{#Wl>A&SFQU$ci{r&S&no5^URN&{nMA-YG<v`$3n&X-V@Hv-*xTZ zk!Y7qd&Dl@=!*~4l&J6W^?1n`%Fbu;<>WfMH*)2h*zR=3{47~<@xlzt@;bdt=b*Wq zmvryQTV)D)ojbj3+nooNu3y`n*5(TT-gsy+*Sr6HA=h6oTgns0{w(YBnyz;N+ZS^0 z_Ux-M_HIpa{Tr5RARB!wXpj3@^I7S>^~y_{!{?bdP5;iB_1<7fkN1QbYo*K2Ej?56 z(%ZB>*JfwWOSc1AY-=9=eae5*E`RQXhrbqU9yq3}WAZ&J?d%KIEpg4?etdY(a`*72 z1FNl*W`_P~iD1vyb$4=l$XK{F<MWFJt3PCI==tK+(ERz6)wD;y_dI1jy(XK@ndy}j z4`17sr(fO${kvZ(^#9lXm6Hp;w!KtawzlbiNW#Od6L!5`{kc9nao6kb%R+Tz?VhgI zZP{MNY%OQQGcRLN+fto3rt95apKCLbXx)5p^NPlM?~`Tz`Tk4}x%Ywp>FleY=4Z+U z{`0y!-6cNN{_RrlbN><_%8Oe@&TBStxuxLxyxKLUR=%(Q{ZG@kAB5{4-&NiBDp%<E z#_DrY^R$`ObL>jC=XXra|Fv^{Zu6!*vu|COFRl5=_J(;eTd>4Yf6pAP$=v6ptioD) zRO?@7rM=gyk1;8k5m=?<bvr3huUPTTyr6jt_g+-{FgIu0;;-AR{9m74yZxowKZg8; zH5Pt`hl{T#upHdobN0@Y_WpqXS9ngEmiDB)IC1;R+)K7y-`=geEcNHCJ+p36=PmED z;M47=oVHfnxB0T<lR?%$52e>esTY2jY(DSRSGanO#<rC&Gk!)|E?r!;dF7P39P<_i zSZ9AJ`}8f^JbjwX>s3cJO7hoz-XyfQ#Qur@*}UL%>$!PL_fOj%COKctx0j#2UwgaJ z4bRQ`)%i#M&KBLTP`g56ev|L*1q&CK3Rhm(r}ob^|6N+I?b*q@6I+Y6udgaTb$QmO zm^T&2nlnOEE<O-Cdg0<W&l`KCGVdmyxUqC9N8@uf?zcO3o{s<E=v~r0>$a7Jx8e%> zZvF3DJKoNYcFj6Ioy}J1orUx{?bF<SEstw`Yu=b^Sg6l#RL`9I>9jBR#Q(=~81K#2 zU1zdTc2et}vytEC&bxavG-=gqwTFr~VxLy!%!pq7p-p@luUbSw?(A^+DpeNk!1LN^ zzMs1neVaJDdX?)N!3##GxVN6)y)<1pdwa>|)rpVS-v67vIeN+cq$<uUjT=3R4=Lvr z_uF}0>eif*YG1N>vFoW6{hO)(F4Qi2&6HRyr2TfP_w+e|S`ONK6r?1w#TD)*FR|9h zyuEJKDzV$nb2qrupRGwTcDXvqabuC@g=p!PPm2?;-DA`9X8kkazLuWoLw)0qm-fs_ ziItyweM|WH`8A88)*OpU-hJ6?{sfIR%x+Z^w>ha;?RWKYtb3cB_+j!LrJKw5D;>7m z_|u~(_NBvYf!;%t{&xweSEc@WtCQXNL+iijQ_UEru%^N{Sr?Ycai&lEwd>Z6^Q+5r z>O*=CzH>TUG-+||=>zA_?e8$U{xNi6VyVpTOgYoig9kQ0H(eTeiGM<JmJz$Q=G0kE zbCrwEN@Q5ezpj=EP+oEI(uu>YVV=@Km$})?=G<rJ*s0ah^u}BBG21(Pe%nx+*&k{| z&rkoDb7ZsJ`RV7Rt#(Ow{Qq|I^Vu1j-R#n@PRe&pe%=;*^s{y4t8?Bf>wET<zk6+W z`q`AeZGYx!-ksU&*6Ulauw<>;&G(Zpng`nD7pq;nedKfWp1Bdx(LZi+ecbvq<hs~` ze(V2JpS&s(Hr0?_SagH^#T(OwtygCUrE@ndvOTYKQKNr)-=r&1Wp4cQg0Cn07TFs8 zY%Z=3TM>Jv(=>eHv+O=Qo)y#1I;Kl4*jL*3?W@{H)5}I}*8A6|#m(FKJNtCS>%1px zrAt?q%75FiGI^<Mg!i%K&p&Pb?zrXi9WJ-s+2*tRLmd{1P4vC$ZDPzf_xI{YZh2YD z(-uu_wPiB7&Uxuy@r9?!*MHqQ6ZtGM^$6?Rb4%tvG&&a(_}%jGW%q}ZMT!;$b-Qf+ ztM^Qh^WD|wZLj~=P5E}Jda>}{Vu$<XkB`hO@zY)3ZFMfNZ}G-B)=dGgKB~QXDPM5w z`NN$2<C2$IU%uy_w=N;vqndYb<VlN{YSX&IY?F3=*ecW4tkcKrF2pYUG_af3f99>b zvm-K|-E!tu+I!gW%>5VEd$+hvORC)<_}}f`@_h&N5^B8mY-iD%b@Phwr>R!$t#dx5 z9<RIl`hoUq@x9>>-yJD9bt&dwW`3Q~U-!M0Hh<aoe)+pIu2lR}m)5`4*C*-R{!kLO zB9-y2-R7Tl7w)|lJ6V1)IdAD_ruW_~b7pVf_}N7?+1l~;#q6xi$Pc}7bFzcd^)u&M z{@7`Mr{916|E<%{)lXty`n%(@)s^iD6LKC^``V?gs=AxANnr1ihhHv9TWr0$ecPOS zk?qUxoZPg+rclZ4cZ}%$%r{v&+m<y>=DgY{toJ<mq0f45<=tDa-1y3HQ~CDgJ)(1% z=9x>_{ArLjlC;ju>Pvk3=7Fv283{|{fNcH5`e2ED`xk!^T6-k(#unA<#@BroFXpLS z!kBSl&Ax!|hpp7lom=}Syf|LmqsrgP;4#~8{@|U7`375+{yu8HkP~Y%b7z`_teL}) ze+RyYJ8$3cu6?%MJ(pPmeSetmOq(%x!!z^N%@-zb+x1}?_v{yM3>-F3eZx?sB5u)Z zEws{B^nZYMZGExAOVhT?JNC*fzjf;3g2%C`$4*>p)VZe?aeCdtYLnLHC&?8qv#%`( zmtB4S+S~QqpZ2)ye!jV=Z-3t9*URR<Gu)v)x%PTU-TAX=>t4F-)xMY%f6po`O4aw% zu2ZIe>iqY}qzip+TNktKwOp9V>^J%W=f5<53|)C9^xn;m`|Moh*G%sm*5O^<-;}K4 zVeV5_();j2(2^JjVG9!vnWZ{>Z!h2Y#=mFXifLT67o+~|YuNqgG}qEvn=e8y{)=y{ zt6#LDR<54?w9@T2|MorKsdr<I*P+Q5KbBux$GT^wR`mMG&pl^vd&!(}IpER~)?1%E zq8%1$DQZgJYT$BZ?JDwe40hCcu(<DW#DSg8M`vcvZpvj^v7mVBFNP`BeOAURJ_nQ> zYdOxd{@jv&l{nesD~!M0y|?w8=P!r7<?qV#_v`zfv;6&L@3(u|>-T=!e=Tmd_QS)B zUtAYuue{IkGj`g+r#@emY)u=!{b_mgWcH4g$0Ih`pPbkd_-XRAZ^<<W=dP%KSf{XF zFZ{Xg<KNdGR!+TEaU<>awiSFy;!h(lKbTeHdvAHTPHX0eLJd{{`Ms{M)U{s!%-OR0 z;q!=XBEM&3vAR|6SQ~$2gN$KAhv||@HbS{GF5Ud6{YGPRmBzh=GCvk=_1k$fH(ck$ zsksG?d?$CF;(oGtLs$W~lGLP=;zfs)6m7q+?zV2--nu46bl*~K6~5<(t*icvO=1q8 z7`0=?qRC0Q^Fs8)^__FPmwzd`F6%f~B)Z;hegE+a_9xHXHgcGC)y=*2^p>=|$A5kw z_Q*f-J1oz7*R@TYv3vK|!>^wH*>1D)-%^q92`0-J-+n#1OVLO~e&y{KwyqVgCzSO6 zdTe&(^#4P7E_ZGClAZ^(?C3Q16)&+kbpOlZlZ*YQ&&`@9S!-T5bya(*U!CJ*-kSZN z7H>V`nXXf6F~4x0m=w#oD>HW;tJFPm<2sjs-39lIYl{1&&g(RP_Wu=sVB__coqw0C zXa9arcFV!m>9^(@KFI#Gc;&aG+}~R@&d<AkMeO|cJ-qh&3!}B{|2wO{<NxgD9XWH} z1n%6=w-mpZPk-`^x#xR+!c@QMwQDQv#ozBQT*-a^$Ek3J;#EJG7JYPFvhmQ(r1i-g z118Ozz?{p!Eq}eniiSDQ^=(6MZIIA=bxZ%_oSlx_uUD~cvy{G^^p^LWtW*1ko(n29 z8U-_Vm+)Q_yFH70quEmbyj9z$Hyje`-st|+<L&MXhx)|pPn2!+Dm(h~P106<_LU8% zS>MK1u-XOh&TToQf7>EiceO|GEptwPYi7T?d-<);S+##VS?IlZ<K1e{WiPmn^@|2a z^Nl>C{nvPoEn0m}Y313NjCIVbH_p5(yz9}F$i4-20U}Z>*ME0c)GKZeUi5QkchTo; zzpUL=Wg>-VH<et;yY=nI*#!M{8c$<H`NWGit87_VH|vyWLw?=ww@E%9zuYLX+_9kb z*^9{9q8pvxBtF!>UH;-if#I9@#=2h*Dx20G*uvMCebJfo+Sg@eS9Z*uQWUzoxls3M zRe6?VwDt<uY_{th`<|59T|W3qLh0kt3rXcuM5@0$t+IN}B(<*9<by#^>h)~%fH=M~ zFa7pUNd;3kPVM>jYP$Gz&ZR4M&lfl#o4lQKed7CB8*4Yd*H78Dy7w0A?l(=7H*58F ze&c#5`DMvX<p-O)i*I?~G@4T$zTvx}mTq|(>+giaT+43WNow9~e{k24uy<dD-R9-^ zZ^`#seZbB_Ge_)%c}rDd;)zrLWMZTjpSW9P$XZ-|dp^f&u2Y}SGw8p2YBTXxNX*GQ zevjJJa#*+DKNqI3f2z*3*qjnG-FM&Sy4n=AZ*GzmyVa`RQhey=15KOl>^&m8Zgk%d zn-a)r#UN*|c{w~TrZqWnf4%lIbK7m(e#FUen>xycTfJJOeN?V&WyGg-Oz-oXPyb0i z9=-gtfm>mL^3#8Ei}onbV3+?~lNdI^m^*Xw#Mi5|bwuBD>}IjGkl6ZQ>xI5M-}cS; z)x02jGRJ4`bw_8Jw#04bjC&+AsVeoQ`$avUIh!qAWEy{q_N-?;J#pWyN2MOIeiQoN zWR)893(q|!Cft;nUbJQ9yMlLH-wSvxVEy^*tHKkF8uezbn3vNX+zWNwy7$k#D|bb- z>Gj@(xqe|=uJ1Z4+5K{^;)j@SvrQ$c^O6PBKOR-LJt2N?eN%(($MX+X-MPd4>xRpY z?FrhKtnEv#^u%RITwcF+#mw5CwPDRATUk#{$UmSv&nSLRScU3}z^3m<6?ViI-|E`= zN8&fzL-~V6ZFe;HNW>ibCl{mgN2SDMGmF8e`>ozHs(lYOnCc%O01`o8+hC2Mu- zSU%UOI{apz{ULVW3Zb16F)r7+9ly+GwTl<5+r7VM?=zj_Vm0Ox!JjOC&Dy=S^Ml91 z?}q#P9t1q&FW|B7O0LLHIPs<VjN1-@I}h*p{5~?3VTttx^?#<9a-OX1;xC)TYxPEI zLgE(gpBqDJ+zJgsR5MDmp3c4ad^h`|iw28|>ZS)ve(Qc-;hJi9_owl_h0jI$7rv9= zk81d!ytnHbr-ookTBvgRq@7Xb+OI9U7kS>*SYLm!b6;-U+MSR2KIU*tX*&5$+1fm( zw=iMJ8ta{lTlBRI*pzMxC!Gn4-fVkpk>itKo6XzSE4yqgYWw(Ro(6A*yL8_<>jby+ zZ&JM;9PANnc=vj_o!eSA?>FC{C7zl1NNCpVX&da7`ld0imf79!Tc(x3zsSKL_*w2< zo=WMxn{Hb4pKI&>UGS87y3}7GTmCO;d2KTHve~i|yM3Q6t&U&(Ep;8s=ZRfjj@{~0 zUWA&@-~8z39`~|SY4^J>TE0uWv|F96|H{dYeFmrBEWPTpEFx&$^m~lvQQdo<1beJK zaCX{H3*o<;3@0b7df+=xxIFB|+R1yTU*$g6{FCvv;KOv$ggH;zoy8RFt-Ai?9Q@vY z<zn=d_mT2bGhhDJaJg^%>)T?z(g=y({>hQ9-)H|`@ns6f*7M3*dcvoV-r~?W&waLO zCzIi;uD%QBSq%P(x(9Gqi%y&sqVsj_JZZ_PzxAq=g7v~?$M+okoY?Uz;cj?^*n{kp zv(^<nMW6NG8=ao_{lL4qo7mPhl^GVN<vH%mou06|qFkN**fq^O<pMnp`%dLaySH4= z5j&vcEHmTWqkr2<cDrBlwOdx*UEl4@cQ<<)w+rJ<-!1DS{rt*gj?8P7+4x1=wxM*5 z`6C(KX?FYXeCr7aytwo7i*q?k<rc++yBD364*z9-S=9Y<;!81|ShZ>ABtNrg#Y(B~ zzIs`p@xWB&tlUpNGvoW^5?<s6b_kuC{>(??s&2K-*TUT=r#%Q3S!S8+y;M7H&m-mV zc!g;PMK8_%yD!AH>V>2ATss##WoKvStv}4g{@47TA@+k!{PNC6uS6fdWiCqBTC%I{ z;yJ^O|2$;p6_wnJSz6Tj+xzf-xoul!o&0U4eS7LtuVe9=>o|QA_8rmD_b*zyGpV3$ z$>+ShZ)x2xxAUw`GO90&n^?{kaxKS*!OcrMdH(CQ_l&|cQmW-d^p+?3$%$4SOW%2= zvNHTfrQwT@zs1fa8?HMg_2|o4HuJ+pee-H3l(A$<os2f#78rivhz@JDghb*j!_|z> z|DQFD*(cY-9rpOlj<t`!KJ6_K5meP$d-nJ52|qRN3teBsbDPb8Z_4>kpV$}X=uEw4 zdQrWYy`q2lx|pMLmv<-{p6x#N(yD*6>zTtDsmBzredtM^^x9W+&g&NevrE~p6!YEi zols?UZ|a35*;8izzVhqyM_tZ5xsq?3ao)=wW+Z);GCR6&k=4ETiT%b^pEu_3IXSa5 zVtduJPlsNzo1QhhVsr213e&UgY`b?g7F~AglHFtfegTJ=K%Rs`%oF{$a{~EX!`7bu zB=qFs-{R(|{$p#4cIFg#UgdbEBJSBMwVq2^X?4u^#GegMm&usc{jjj^mOFCA`|4q- z@|lfwm2DZhOZog?ZeM!&orvC_Ab+pdPu;ino_(|C?<bYLq5)d3XI=5nit*Ho&zNPq z?U>vp*&U0g9RKrZqP$SdrbC)#&a3xrJGSN4!t7a3iVSD&G!$98{b6(z&zap$SM~+H zmV0w?=g-T#j+t*zSFovH;r}O3;@7+`Yxalo{6}|u-73#g%D!yhk{=fi7p*=x<x<s4 z$8&!yE}O25iCW^g$S*By_sQ(ow$kZ|cjXVie#2aqZ5#Y6$yV!oaMcXn+}GAC>l!SQ zPF>VYyJW%5`bAKDlg*tuE>BLqQG4W_ar^Gc^Th^T6-gPoA}L8+H+P8G9}p=E>ppSf zw5(LW*`)vXt**>F?PXD4+kVYB+~UBCy}d_gP5hoU;qldZMO#1p(eRyZ_0s%ng3*y3 zvu`jKnjGNyz*pLE^Hb5Z(~VWpuR`u*TlQX7oX2nT$#<Ii&9i4C^DV;8JS_@0FnYp} zKCio4XX708tDAS4ar~G0xFN*6oOfQ!!;OZYs`RBlZ%J)9UfQ#N#>OenICW3HYv;Yg z#D95*l*HPgiKjj|tUpryj8R%UQHtNZJn|z;VynW{mQNM+AAFnHEd9bOdQuyDeKUQ< zF4?U3$|1F8>y&ryxfcb$*9val!oHb5BJN*Zhq=FFo)L??yVR-I4>#U1k}O#vIN``m z4(Xp$x81j1=B!rq`nBM$7RGa5`jVIW?y_F!zpMH*!&P>l6XFlsl{M!}E{e-fdz#}Z zw>9+cg_BRWK3o2#U!?cxg08|XI#SmZTdm9s3#*skTBBERd*>nMo|3$|tIy1Q;!|+c z+(|Cx)r%=b*DEquh3@-V9^Wl&)48C|i1+x0MRUKsR?c$U`*RYT_ZcpyZA)K-#_WEX zDE8rlmQu;n56eS#YFyUguDI~z-(w}u?Kl3KZ?={=wS(K9uV<;BX^dXd+;t2ymhGDo zuG`DG>MZlYsEw)bc`bP4#G)r_dp-MmxT?YDG?VXP)h$jL0cl)~E)`SPx=0<^A$?&M z=j!0e*?Fc*8dK{SGm8Ed1_saP580(G&@Fb>vrO!P&qmX)I_Gz2EGRyHO~U{9yTcc4 zg!Rtz-^uOHJyLw>$Rut9+pk}AeDY1MZNAgc9vIyv^zhGjrb`v?gHN8T<zH{Bu3~ve z)XqXL_IUY{+Z{IyrW)N5&E@~_v^6M7-^RjLBzm*!n%w&b*vwA;`@U|Y?zW_ieJV%K zOE0o~{QkVP!TaL+*B#I7G#Au$ou2(rmHXDzZ$F;3h;6-D^hMmFD&)61<BxP_RqfEz zYxh64f5QEyKP7^zbV7J<!lJ+2_nCHduH-v<UESo%s?X=6Kc!Xcrrm6MlI6YHeSPW5 z`EwX98-B0wKg2jg@$<scw};r@PMhAhIZ~ir;i1BF_4mCJPokBdDA><`^Du9Nh)77Y z<uR4Jl^fa9{+(Su^W(|ZAIn;5iyykBW$OAbpToZEg#DM#?(^M#eo(4Ab#s}`j!&5h zB`Q85Yvb&*zgzCG4D6hK*QH3)YMMCDhtFz@eF|?rnSNF7(8TX0%c?frZPl<<vE1f3 zC0TRAU5VOsyM2@2M9yyvdef!-AuV&7`o=)>*={q67IeNe`WPe8woYxq=|1ZN@<G3T zGTn80`LmhXd#2ue?JJzyId1Y!iI;fF;_4I7HrHi!d0BXw_q5|hCIV6ur-XYkw=1Xm z<SzbGx~%I_RoHPKfpUj;*L9yff0?#?+tdv;iGr6Go_}uUxacc)AY0%)?js!m5@*vK zwj12;{keb5Y}q}Nm^$CBGpSnaP!Z7K^<%r0=ep0Imu#BMwEMq*s`eq~!$CLSfBSzv z^?m;H=do`lsVrCeb3O6Z-g$aG8CT~&ofu_cu%S+K>suX<HT~8r7#1<!F8{W~Z0^J; zGuIuKmo~+BiA+%YpVrb8>(O{+*RGojwTn--doM|{;hkUh;qyDGg%1;+-0l6VvVXPv zJ9C$J>&4#Rzi(=P$?Ms+i}U1{u1$FPBToI+r^cw~^E~W|k6knq+#+~N?ssg<I_<?K zQ(f;}OuqSgmqpL_b#+}iyOt@OywCDj|3-GsCB@U;GAdEq*Unz#cd_8Q|K{f*%QKS_ z?Q|MUWVV`b{Bev$ymyJUWUp$^%p2?LvSw-CGyclz{qSDsoXFQ+nS0HDGX&f3Tv;LU zR(yw>-?8F{g>!uK8fA8D+NgZfn03;JnDC6>-qvUOa!-FMS$Z*Iru8z@+kx>f+~;O> znV$T7y<|pj`K_fN*{0XupZ7{nK<&|;{jn#C7Vo=oLi9m(Z`Kj9@JH1r-z}MDTy@2- zFh{L=lED3}v?b3~x2RTjb@M;SmzqDjYpKy<)qgQp0{&&mA2a$thwp^xj@b+U7cHrO z;N|FE((_4IZR7H92CecxD->-_OQ&?y%+bGN-!@s?@YQPd_9bQe7yCa-{&LuGWpq+b z$@{hcb{_iHF|W~N%V{oCy}NrJzALbQ8SHX+`CqF-F+GWjyAwGlD_&eWd-d!r=OsGt zRu-vwb-pe!e&FTFUgY(U<>9r$ni}0{_0dcI^w@O<H!aj~pW-%8<(r^6UwQm({gb6V zk+;-O)`*@{>-zjs<GsGWS3zot=lvBc%O+mqjpU2ItaK?jy(@b{n%Uxv9o1#`bu*eR zFG}mC1}&Mg|4UTVX8si0t3Cdwe=qj`dE#>aF`L*6_GfcW&Z)Yx-RqI+Bb8wJlj&Wi zOAgJ5SNU9bC(~qoYK!@5Dbu_|uIEd14$jozEA1-M*t9xUa~`Kf^?{|Yt%Gd*yD!QM zUA+Ck&*yP&`j7woZ?(=R{i)lbygBsYsf?++)wZ7sFux|lAb#Cto<QN*O&{*b<)rW6 zc0cv+oMh(T4Dr9U)ytOK*xod~Ir&LY<+KI$u9Kcma;%GdT&7%~_kKdBMRfYdo-<Rf zeY#?*b8>FjUajP!;CYhIH+jcQTk|3E@0l}G7HbDjUTu1#eB)eA_imTJza**~QyHGm zXXWZRX_6Eh&VO%y;>q(X%^q#liZP0?RIXVnAW@udVr;p@CVt9KiOmT;2f7|TeIfeI zB57&s+|3jG56+L7{HZ4AYx0^CXGBAk`krn3d%1k?&0`$wvr}&c+&QvLX6gORbx)>k zc^2_;OP*~;tW4jf&$7aSvnJQ8t<Bled+C<i$*&34>kL|qCtrKC@BFiQnvxgHRA)$s z>^`5cT7+%s#O>GF!gCH*l}W!^cld7buM@wf+*CgN|6JVH6BVm6_E*IP{Ps7TBz)1Z zH2Amq^Y#xX{(RWZ*qI;qcA{Ho_=#DP*KMxs-8%pK60Vh^ChT)wZJ1SA9?9yq>4oF2 ziO-~~RNj8ttkACfc5=cL?t1ByZ#(7YyyU-N?45n^^w}OaCzG?QCz{-UJ<;v-wtE-0 zzhb|TcHk#RQQr5$9jm;ysqLQpb`JmE9o50MOXO>c=Q8IW`^NNuJMZ)3KV<^Xx9?0| zs_5C+UfsTXzl>yHwDOcQZxyZX$w+!jD}66k5}DSwr_lRJC*ypN_ZC^pZtkqvBEa`} z&)cAd@<-(VM)9u|^4D=+dHM6*E%Uw!ubsd=ecKlG?FFqnUZ>viO5gE2K|kJLV%6U1 zQAU#U62JOz*C?*-5#nDbP*SYUA@zOJqZL>5xD?NeXGs05yz=OFb*9|!xQsV5ru0is zj`{IcQC07bXy&v%?0Y8L#;)AL72Wk~wN_2;e#sY44*B$}e&(oZS#O$Rwk$M#k?qd! zhi({h?_0A#gL_Y9$L{P2#ocR8md#q2b-UB~U7r7^3tWnUTb{rF;w{8?MoQfE>3-?k zFaF)jzwG8!aQ2te^eMBlHm{rR7m$<adxq!9c|+mU3(<`k`>%Wr-k;F2=HW@XS2LHp zr@emfKJP}m`t}Qx?O8)Dwx8pf*rs*$OKi;HtG_zR`s+5m{;eETTl?hf%15(RJ}&RK zi59G!X5~|P@6ytbQ#O^heZ174%@iK9d2ZpuikzoKZn;~v4U}^uJ)(Ac=59!|I63*w zrt4vKJNb|QJO8(8M~;8X>B*PYl+O(1z2(NgT0*llX~~ssidv>Cy<08MNMtgXK6xqM zKFM~nU~9o^UH$X#7i}u>-QpKwuesJb^Q!08OViZM9(lZ59(u;Wjepuc`BxM7-51$^ zaeZ#bm%d^Rf4&FpPr6F#|8AJ_?)ALRc_~v0JXfsDE=>JZFuUWSz*mpmHYJmNr|0hp z37d3d!RdbX*k^KT;-*EHP6w!+eaNNmRx$6{t&G@tFDJixbYzxS@mkqpkDQlY%D#Gm zJA6A{rM?op`FZgPYjd}Ik)kRsCTy=?Nz9s>Y3Tj=NRCU9&B|$(ZCS0BXQ#@}c;V^v zs`K079g}o6sqH*4TXe#!1z9#ia~f)97gv_3=I5Mtndf^v>aw4Q+^iePN2O<MGZeU# z<af4ew&U#|9vMPaEh=Wu*cczzcxXS7XHl;TlQ#JgW-w(-&5GUm7N>5fI~y%Ia^Ll} zGw-6-P2Misk3C&+(R7_7|E~MIS$uy?SC}5(Ik|O*(klPw3SSR@{!uArFLZ9#jJq0- z)>KC-8#^?4bIz)&{4ss6&?T?J`D)h=`>-ngZt-Y(-+QhoEc;U0x}A$B-mX@<x$NW7 z8>b7WzPlH>>FfC&>1DjdcV1d83=f|de|pj?h4Q`O{mX5RKMAeeFFUtaY4h|M?1fRE zT$cn*EA^0g+wT0@rKjwxM9(&vz~B#}rBmv)y>>s5*3kX2$=XcXCb=NWuIaLwfm7DO z9n&N?uetn9$SZmR+p(XkFV3>x{P*V5(txeMmbW-8IP!b;3DuYzH^R?-QS+C*nkj!t zDF4#~&Uas@pWR?IY12CWWpangd4=Y_uZS)bStL63SwkY{{hOu<l|PqWkUEkYBN(!A z>G#5zw~Ips!oMdTQ4n?uP+hCNPIKW#k-$^NuTDPSs#~a(H(TmpZmF*Js-+fuoOQDM z-U}5+{OpynC}z4^A+>P(o{oFl6sw{SaqL}cqx$9Ab;qc=i-Hej#UHr4oKJ20vHk_y zXDzJYx98j2dh<c>7Vj6jTVBUBJl!?pqjOd|=U!g^kAh#my+7P?Z`Gk|^E9foolkze z?w)z%i20=%o*6|3rq2#`zgXKG=yK-CteuaeylzK#t>C_T<Dk$TIl<CW-oE3zg<SS% zpK}dr-QDtSx}#RRyVllwQHAUacLl!g`|M$OUm-^_WHGPD>rUs`sjn*2JSHEHZTTSI zzHH`}iKU`}$7Vi`4XpjKaKcgzUWMBS`!>$aQTi}}S?hXS#N?=mV5aUD1^1XvZxwbl z{wpt@EFGfj9e7;nToO;^>n44RZGP(2C68pvkJ-z~c9*aHaDA3{#H_u1w;xta$Y~B= z=D8!Q=&UZ=RXeBC8ovaCk~W=rE?w-{Jg3@VhfHOydeAi=!|z$A7TQd0j^+(q(o-(l zAR`gowd-Af(@E3QGnI_b{bO3qYZWo^#xwr@3+(%X1lL9hEt(fvWARn>(3VoY&SNcV zi;OO1|2J9{`%8b(t?&Q(SCn1lSXG<L{=T#S$$s;uto_&J?Afk9bHBIyXLP{Z+53dA z+VxmuOnaf6TRHQ~B;m%K^O0&N53QX$abxe|yEkv1ku&?yp>KaUXx*i)KLlgD3p9Qw zu(>vAJ_x)o)$R0IS>ua#?!}t!BU7hsZhrPQ-T9<a(9a}>?=PjlZ+gzmse97&*!Se` zswM*KewHjaC3f3D^GNT9Gm~c+?M%~8TF}e*%KqQsAUESmnOlw-Jh6IHa}=k`aAt5T zzP_-$afM7|(ZAV69A~C8XV1`X3cS@OT<}cs<rR%6$9r-IcFcaXerEHF{hEDeUpA)* zdh!XFyDom&QS|OlH{;9PD)+j+OTt-NfyYJv{Wib%<LA!ze)0Vp+CMFX-}~|P^yzZ& z^Y^Yjn&KhReo<b;uqxF;W80^Pe&??AaO^EvU(xZ-wA?MwGj&I4z@+>C1)g@EQ(pLa zI@|mRJx|d?&mVKn&tI}Jz_zb1p5In%>WAl#-Lw0`x0iI4T5ext93@?<VA;eooo~tp zUmf<}pIoN1g&$J?wI(*JocZx50a@M?pVocNn*CVdvu%T}%Z~M@N_#waytn?-`^wAg zVxRKeUyA-G^5eF$a{T1|z2$46#zZlOWb=g~Rq?jm7w=0ZUx=5wDD2Q%QlKOn&X&69 zkG;+*&q;GQk6r)Iy5^PNHkPlmEd<w2T5=?QSBc!As?@iO*Jdr*_Wke9zrPBzE$eu$ z{eHr6ZMDG0xOXw%8hajG&Cs`Jd)vA#-O7DqoSj83&$Zo(O<!j%=zF;-+%T2Jc~N>h z`#QIY8GC1Qnh41YY)!f4DIEL0PigORrjHYa#I|_ueC<=3@zpioC@Qk~nS;=}wI{{g zHdX6<^R?P!+J4!y<IR%y4k^VhXA1M|3sVw*Ysg7E*_esvIi7tx`?W%r<x>XFqZ(>^ zlt29Dm|A(?ap|4^>o0t4&5-<k=l}YPjJf|CSAX2uxWdKSIsbPU>$y$+f5M~L9-eyj zZDW~Z#^&<6>7fF*mX+6CR+D)D$UUd&)Q9Ow-BY(r)_Hb3n&qV0t&htZ<u|gQ<9FHk zDxTLyDe3C=O-Ft$_F<gW9OzQ<X#1k8KNsnrnVYow%o~}b&G!3>xGx{#{Fa+hD)Z_2 z;n<62ky`tz>pPbG;dg%*r+;s6^q$?@vrCt}@5xnD*f;f8S4LEz(Y*BiG7lr0XE-lV zz7_0pIdR%2-kx1$OMG_zXk$HHvtaeqsm3RtGaNe48}qhUVd2TG$rqm7?_F^6PiV%c z^!pBz|JyaG?Jp9Yb*A5O^6CHL8AkSezW>f{UvTnNW8jz9eSI5)9F&vdugwX3ll^o1 zqm$Y$HkHx(TQ4qLaAny+j#)hS(wmYuKAA1x{mfOzGOt10aDBGb$wjAjKN7qjdt3bI z^me5mMgI=O%PbSDx!L!l=ufbgeZ0pDqotp}6<>eBrN&*ZU>kBsT-nO0&*S`Bm-E5X zu01$WmAt89zlnyT-}mqC&t>A~*iP-x$`<tPbIvmR?zw+Q@ecDH{b4LZn|e0au|&?Z z?49uRTimRLFM9vK*eknnYUtkkM>_3a_dYn1vj5fOX90^NpHC}DiaXM|U!?HS{E`cM zBKfMW9AE6Qk$LOd<&md?Z*a*S>eTPH_}I$f_huiL`ZMJjSD2oZZMnqz%0|eqX3^z? zX-h8hN!<_i*r?Vd@>wb9&t<;3?qN%c&z|rp5)N9E9XWMk*x$PrAFl|`so=6XZ}C5e zQ}x&^y?50qEUIB`&%X+K*>v&kpXm7G!y^tmoj==u6r_HPznuQ?Kl2L7d!cvgMXhA? z7ahJ}c~RKDiSKy-g2UCv797rYE%`BPfo>C@HHaf9yU$$Wsc>(`!8zg+CWP0qRNCHC zUpk?^x=quytifXC8t<r?g{&t{E7bD&&lxCH?Udh|8^wPns_%wh{=E|(yLbM*{d`v7 zZQqOK56+m}K5;m|BXz%A$E~~-ZO(V+^F_y59ZPHc=5Qx;TSn@Sd-pbO%h*+%o_|Gb zZElxybV-PEqEGLhJ6D{O;}5M`WLg)Z^Y!Su6~0dnuX{21?W4)d-RAANbM@!iS=?J{ z->HlII<`9CMfp0Xg+C2nORnv3(*NpydY7Nh>Q&xS2c@gyQ;V71BN89%4#*1EpBpP& zTfON=S*G~j-TUmT%suz)E>JoDe%Z6_$`+qv?>8FnmpC{x{JUTK!FT6>pFC!;usv<Y z^y7<<hxcAN{5SB+4|e4jAGdDk&^(-J`(LYS4S$!=p=_RMM(5^SnUwSNu29__okz#{ zJAV|`u-NBG9qg|ZKh`2!C$Q6G_50mhr$ra^{s;;W`S$RoQEiKof8$1tPu`6gv#pfP zw$%O=3e(|toj=8W-kX=xKRi|6?a?mx&g}b20pA-UDzY=O)^W%S{C?^fv-hLYygkY) zXQiT<Ow?ApozfC0ULx1K=(MrB*Xb^sXvL`Q(}N>BnB^p%*>XR)9gxPm=#0R=JIh(- z-dHxZ!zf;Q(be87ew>0mKX090+LLl({W_<akEKi3NxOUT^LQ;)|LVPGsZ>Cs-YvmX z=iTR>{^efyOfpu;Oj(ID;?aeGNgaCkZ`yb9b=P@^-}xt4BjN4K=b2ITbV7^TenH2% zhn-X2PculDx_s%f<3~-`u!%vslG83c75#6tOXuo?eIC5?UUn}!eeJ!&^vlf`%dffJ z`x*FTuBl+jOr7udTlKV=Tjb8~lZj3D%bwl#=T~BXi)C>46_3?5*+I+|)w>q0_&o1H zMTzCUkKF+^EU|t0dz4KaU8a9jX?-Yi=Kali8uj%OlRl)qYPNRWGxK=OEhkRhKfnKQ zY&x_1RF;rbNS@8<!U+?e3&;Lx>{B>-F3@M@p2d?L`_jK2W0=ePrJeE9!s(B?PWSvu zJujNQa9!T=yC=)ut+_Gl+J(69-_Cv0;$9)G_3oO<i}(gMSLfVkzZJ3r%p8`jTG(~* zC&wwCw@c41($lif@2zO@Z<n8~fB4{|SMgzn+yxJp*mb#{OTC}GSfcan-zV<!+@FLb zKb)KEXCt4QP!cbmWaIF?PT}6{*9-2puJqIOlIvmbocAp4V)y-0CEvNVcAL41(yH`V z{`~yJF)otzSkdi?T%TqfH_q}Ext{2JHL=kz>&GqipQq|OO@vzSY@Oe_<3sDdj5zW0 zu^~_A>W43%b9&9Avr`T=f8?m$x7>H@F}D@0drPOk-4fol)wcYFM{L^F-HM;i_ILhx zroHD&N|pUn_kTYlcRXh~Gc$Cm)3OiCCmidUck9LawcF+IWp0(_4vby=n|-;??NXi7 zCrxc<AC<ksVSN3-8JqWF&!<RkUN>P4Yw}V@v*(dFbVAm2yt{qJ_-*=!qFd9ocVxG% zuk0>dCf@x%seLW?+^;WIw%yA*lzdsPb$!^0Wxs1H6H@K<Wc03B3r-i)YuV9!XW`T0 z_UGqfKeAse|5u~ITI+cH-R#R@Cs%8foslbJ`M6E2-Yc!^CFil&?-3i<{^0l}`iN6; zT}e7?@n$FW>jy-a9X#uE?Z%-GZ@xRK&WYReLgzZui@@JHyJtEsW4xDOWd7#4f4auA z%<Z@0Q{B6+Z!CG6_B-V5LX(}vePvxq3%^|qIr2<Y>h0oRHGk%>)4hJ)U(<iD<HTu3 z{<GI<Z27$Wz~fD^mXjHa&buuuzjthbV9{2)b89u6?mTQdwO-@Vy5dBijV9_(zErGV zy}<VNrVoc#SV!tL&z$|+q<W%cL-s_|<5s=zUy6F(TCzp5OD8v|YFAmCnXRp=s;#bP zqKD_9Pm|vMx&1%w_Y<DydTuq#J7o`AwtnjUS{t5uIq}cS%7i~wF1b~UZ>-XMU~eh8 zLzlh(ZIWfXi0`S|35!1#rQH^rzEwoIyzrqr+rggQ3(d}*Yw)gIk*wd~^w6Jgujtl< z`)l}G-76JDjT+My&-itN?PT2C9!nqh+kxvWn&sa7IWVz1JZ9n@)%<xjeNwgB&%N?{ zEd{CrY`!=D;tqT%{iw|NgIehe+p{`%ll9LvZ2!Pxzj(*3NTY<KlK<E2yZLLE^TU5y zUnhm8hb!DWI@4e8ao&X`3v&;CS>-GkXZ#^cv({ex=exJz4XlqG1o!1Vh<I7J=dzD_ z(ZvsktLHxmt}1)YFr&=Kz`NYuNkrk=ZjqnIO(w9b?Gb*noTG|w+PeJ2vNDZY_FqL7 zH(ahH?Y2&ul^m_t$e!GGA+o&dgW(~88u>C0b)lx20(PQ{*xnv};w$}XL8(kk-S)*( zR@&4oc3)pK_2wf3U+&qj9&XamI=S9@O64ZA6G0-rrM_QJxcc}ScNj<g4(V_D^Thf@ zcJ?gxBhxIc3?wJTN{N3Bzj@5l_+{L4f%G7eY0g?pB7_>XEACw@-q^GDW`*(NL+2PP zZGD#8)LVxfGYEU=*2`X7yYWta_VOQ#cHjP)Hp6e{40d6o)D0&ElWm#jg@i6TSh@SN zc46uNTMdWSet97!9H<|#BOz>3`CZ>RJ1>Ym4z1`pAgUE(x#7T1gKciRZye%(@gqCo zTDo0qaT52}?MgB)u3uF*JCZD$w09SCC;P!IcNDko(`%Z&*J{Oqt!}RS&&_=i*iwJ< zyi7t+i|}u8>yQtDSx<U4d{B(hUcSpjuC@Eqv8`tF4CZaBKQuYpcwM2u)z=05%Y@W+ zshKL8>CLNATN-`G{-W(kXZ70|v!Cit+c|%3MB0QXS38blGgZ3^g6q4gnWp8uoL<e9 zP*f@?aJ1{gWx-!vY%iy%8u%UDBAHyYuHU9#GN?kuW=o;NyK^ir=cqlAdeUkVZn@}R z$otJYN55L^KE^LlS0epNk(H}K<qyM)Hijy(up95!{`oFHH}c1;>O=Ql_W#dI{O|04 zcTP-ASz?ynDUUhsjErs!&7u#kFf`OJbh#WqVOeo)khit+yvOcrqVq1VNi_^iajyG+ zIiq^^Ija@ZbqwU!|NO@i@bG(k?be<*k3)=KdS=U~tNm%&Gkuoi(UsT3gC(zYy*=7h zpg8S|_Ismgj}&j`tZM&q!L+C1-L*Og-K#OScNh12wAZuo913SVSEFxpYI08H)rB=d zQ}p8UAM8lp^_#77(}E9Yy3cM{{;O!|KDXRguI+b@icbo$ls_@qK6;ki>h1RZUo8%N z$(XC`-)`MKIc6{8MxK11=ZQY`S`2BreafFI?@6?*F`CBt`pCo!H`UkI-*U5zX3tdd z$-b1oWTL9}r3HH}4^H*l8S`uH{PN?<+rDi3zg)?EsnvCh<&_~{U$OQ4DCqoQ@RF-y zdwEkPzt{9tc2bfW^;L;dKCLfXVtqcJ;NNod|HXwCOKQ5#otqq0oIGD?&HLa->(5tz z)Z6!1;_|isZ_YCByd5+n=B)DcAn!*St)Xmu<;smO^>i}*<UQkas(tpxyW~x4d-6iu ztLB*KRt2%;4%$C2zcIPIV_xDa=2y*ybp~sXnXC8i`6>6Up!Y{!uKHJ%slMl5?s<Rr z$D4xnN1UDaE}mk0-#aGYT+Rvhp!4eC)#ASmiq5^g@mlJ<(X+H8twFDTCf(JT+ah}G zms|9L4zF*uVt+(R7x_0$m7JXYMIk@%_fA&br1cu?YF8v0v}f6Wo*&2O{^H3id-kn) zC+<F+`%3Lix%xYwowmy7E_a>i*{pm{c>8-{+Z1z=)lnw%_`gnAzN4lgbK#;J@oTak z7_B@W{42Cz_Wg4!;`>V{<b*x!c*42ZiLY{f#FYKwVvEx4Klv=qIT$j1Sz(mRrX>G# zwcUCA1<FEmpZrkS^KHrM4}QkpJadvRRh-#$slsmt+Xlho8s-KzIuFcyBO64t)juh_ zuJ~U$q1<1%TIZ(gyzt3_jThN>yt#6K^~s%6dNZWT16nP@W2C2wT~2Fzbo4^m#@MIt zF3rEVS}K<(-9@b3X2ticqlKZ@`HV|*e@@^Ixj*aQ)*j}mKYkyzGxb>farxf-N7mVw z5AI$Zn>F3GLvI!1{rv22{$Cx;rnkSSw_ZEhP&vQ5zUyM#oGjJ#TFP!}VGk}Zx8{8o zviH>FsZ|W&d{cKMM?MWwWIeUb)W`qn!asL<H#NOG!#+FW-Mu=~Bi+izvA2wiTC=Zr zUEf+4H$`kt<h!`zHoxLGa9YfYPo1^=%0C~4n6`WS_m%5uICMSwUOE5hrmF^fs|r7A zZ##cs|0lIF_U1RrXBbxfGVKw*JpJqW_Pam+mer@aNkuxXm&tSI%MMd)H(f0Exu$y2 zk$B7a>YabKy!xqh_k#DvvwZ9c%Pv(5l`nbLQU3qtWc|AOi<|Wm4Bl}``gWyVayy|s zqd90}UH*4p*RS(#=`EAp)V=CStK19!*tbs(*}q&`rp@1IDZgabpPlNG?yOr69+x$f zSy-cdCLn45%p*bj-US~lbPH7H-<o}==!w9V|6-nIY3J4)FuN4p{Xl22@I=$z?jvG5 zH~aJ5s`6I+IeT%w_l&Q~c1=^(9{Y3c+y2*gj#}uvx0)|#@nvW9L6NUtmaKDsIPaC` zwrmdWk9Y5V+;GtMY1}Tp(%zG0ymbf6*T+6&{G{v>vUP<O+s10Ah^2K4ZMJ=Fh;00N zs{QJlV@EsVt{7H%&B%IE>3TjlM?IVO;(JkBkNvNk1<r9+gtJ=T3|5?U);w;a#lwde zYR<6w>%ExT{mK8S66cOn4tE%Dc0LM@Qclc|+b8tI_Qv%c#&b8=WNnwUjXIy__H#<h zBt!d8OxJguV|#o@=y`kKs=o#rhc~L~@44gpx=w0(m)O$TewshFCm5-mJh)ri;`sT6 z-*1_Si~D@Lz-KUN-<0gA1Urq5{}p-+ts8|iGgYG2WibCdvHQ=#(6$ttLV3&1f=Lh0 zX6P^KaQgS)`>r=<WI{T2wls$<3c03!@buCNb9;1msjP777Op&2uxM&l;)icvrX8?! z-xFG2{`2mV)KiC-N~p$Maf%UP?s&F!Kg*;$BC30j|8JB?bb6YnH*JsLBfez{@^82_ z1cHBD703+yw4v^Y?3G1NB<8!Y=3Co&u?oM`*<ZHc|22V=IUj9KeaI1vjJg^(du5>Q zoG67?r;0A_vpwv+`PM%@t8^FDMMt)?F)BY^Z(QIyZI0dhw~kq?uMA)5*R*Xa%62%k zbl;cDs~n$u<xHB{S;r?h+nXo(Qsu0`<PRGp{NFIPdf!YrJ}pXn-mA0KeFmr8A4ay$ zkUqCLcjCm}A8SlDo&Oqi+uwEHoc>MkwZF8V)mJ&WrszCt?bqHMr-Ip&s~){~?&A5d zHurq{A+6kfw=Zx+b=$mg(6toS*e_jGzA5O<+|)-r&)oi5U-A#*tgLuG;m+cM;MwvC zofgx5)`gj*Fi)S|xA{XE``P4AAND%0Fnn14a01i+&(0ea4*wSWGuI?#=Hd@$9QqbW zZn%2wsc}b?(hRet+1n?vb*`KzvX|5DL$G|~$3CITAFoeL-rb(jc1Mh9KcklM7t?8X z?AEUcPyD_1&HVIh%Ac0=#NLh5+PL@G^W1N@3VIF2KZHc*bkAoybyIL#*G@_Od(llX zwaUe8F6X}0N=-TD9oSJG|NMd25;G}ApDXVTRMt(LRqEUM+ahP{GsjDuPhMPQSavg_ zduj7#FVAUzO{P|T-DP*rcy-BK-Ge?d+1ujUHb2_s(HF-U*?FbUVDT~Tw3{Y*ubw;& z&h^S)S8Qzem-*Q5r|WL6c>MfO&-$7!b<f9(IkLa7RhfT(mj3zO$*WJ8jqlX%%inkN z*fXZ9S#@ctZe9&LKD8|<5!*92_E6P2V-FjTIf9=Sxny&*?{|6A`7HI)Y;IA8#Z|>! zp|dvsT@>fLw~*C+aRxuvKg$`f)}494rFK2wrvCT-SKGUfUR!rYAy4q@>1_cGDMt@B zlspw*@6q&vN$C9l72&UJcc$;yy)NESD)V}&MgO|DR`XXLoEXXU=hC}(=D#bZ1e9zt zn|pNPUG2qF{X2Q)@3|A+yT!gu{*t!cL`IK_-fK0#`l6m$Eo?RU`l+~riF<ladP@RN z^PSzd=IxeF({u5QIHG37xLD%|$J@~9B8M#fdiH+(BeZ+rsp=)~cJ98t`qb4`pQoM+ zuKJwz>Hh0GHD3LHS%PK-&6f@2%T0SK`(&Y|<@C>fXV!j-Rd(}bC|;Vd&WO8g+D=Pn z32Es=rxgAa>L>aqOet8jGSp!8@$4c$(Qiw;GiLa^98S|(S0grSx>Yd0@&C=b{9Ft6 zo;vkz*YB^Y6_aj?uI@CJTe<lb2jgy;S2uW8^zL?g?tH9z9=Ghu*&QYgnav5SyzC28 zmV544Q}K9D;pNvBT9@V?x%qYB$rqMpg37FJ6A#3<n5a&%yQa0&zUSrqV_y=^2t+vx ziG6?H(SGr#<t51lfph$uCu&8#XHZ@=KTcEZ<Do>CuZNs%MVKX$6H+zyc(J=adU3=< zrl@^Ui;~Mq_NpTl94*;*Kf7OOl=wQ=@6}7;<PMu7h04#@M#(Jq+ZX+Fm*l1=YW#nm zrMW&#dTwq0x%K@Lt*(1JBU!mVm)t0N&Xd^vVbO<`28)xtk9LcSyswb$JLCV`m+!J~ z-n8uppZutC=Dxj0@$$z=*Vk>6{dy{xgJtf2lzSwb`lFBe^6i_?rK8Mi!an+|&s)nq zpX;LevE~1N&iJxc+T!!`AIDZtUA%nNKe5+8A_Yq9c^dV2?Xy2DX5^dXz!viT)#P() zF7<?dt2oi}`_u2;?_UO|Wdx|raL_Yw%&v?pSY+L5vuAg_)%+r^M{6g~)mkt^Zs)!0 zXXO-5e@uJc?RR9_Iq5&=EMo$1Mdm(ZdvaDzK1Evb=*E}lauO$hm~%lhB|K+UMPAD{ z)4w;T&ek%|t;t&~_<7z#m$j#7^NJto$iB{B?cC+V{Xj!LEX7BB-<Qm@t%uZ=<W4q< zq`T^U%V@iiUo!t!-uJY-o}O`%8?I{}JM-iGi|T*-G?x7_+jjBA-(uzO^*;q4{5%yE z;8_2CKfgqNm9U|>rQ6R_1!p|e^QW!3agy)dE}fr@vv=_t>CVtf`{0{i8D+d^Z^_ro zj0Ys%i<<qiwMZ~OQfYa4_PLoah2L!F=Cp`^Ial)~TMx(Q4-DylR8*dRn9rPVQT|%^ z)4xl{rf19v+q<bn+~P~0w(z-jjd_=zb21$Mp&7^JrXS~C8OpibFU$B^<?oL+AABA> zzyIXPrh;omvK#kLKQ-s~+v7Lqn$IhE=XCd3UA^XJ&fP(?Z<KD6iEsM+_sj9Q(=Wfe z$yPRdvbpKT%xl-X?kD^^y1mNZdiIRoyGQ@&<T$+j=9#G4d?!Udy-1{f$}h3%Gdn-2 z?ft8J=4180V88tzW(0J-oW#2Hzu9w>+soscYiBBmdwIuJu>DP~t8m<$S8-4;d+TST z6K`&}I%lr8`rq;5S>eM)2C}d3-nKur`E`<ru~>}70>eXpEU!oHO7N4azni$cCTj9q zw)bbxU4MJltjo$(y<tvqorX=H;hCC4Qw7fKJNmuva$wABlN<L1U$v$lVmDu`Ui7il zY^wgT$mRDRe_1lG?2_=gCEKTS-CTOSRb{!f|5vleKfIhR7fSwf)ktmo^=Or3rZ~?= zw;ko@!gT&#S5#gzJGgKEJ%`=CYxB&nIre>=eUEQz^2w0r{DzN0H$C8#HH~^`Xe0QP zYhSeSbH|#;GXw4f?J9Q2ZgGEBBmdr{y=_xnLXFrgr=Z_g+Ll;E{_|L~rg&mR<mxFV z^9Af`W_Rq~J!f~n<6f~>l27hFz8k&#c<C>*dLPl3v%mkywV1!-<GH{8PVG*dHG6J} zLm7AW`lgw}dn-4{Jl-!`tizD;O;1twt<Ab!w&z+k9)8>+bWKO+TiBx>=j`78+UpkY zkI%@JRkV6|?5s@AUg5u6IP~ZK^?%RQaZq%XP0ij8(LWdCk6E04|E2YV+TqX>uKdPU zzM)e?zgA=&O?-avN?44n`LEL->(|#`zN_6i>)G?^8paP!+5KmJIcH*6S*(((d$+vr ze%rg}__#`LDN7tb-gMe!mtooV7rfWHO^-&ly{g)$SK=94%;&?qW}091+-FJWEqncD z#6CO9amp-8UOsid%dWVO*Jqz|*pxfXd~?>uf39jFg}-wqOnK#dV`@}##7f~V=}6mo zwcEN+E{NfL9`{i_sk8R3JiqeVedd4WSa0@{d-vWlNd3W^Fzs_5+LF&tuKQu}mAB0H z(F3<c=c9s+e$q~rcZ!cxR{ttK^wneH&B(AEu@!ClBJQuA|IX}KVH3o@Il7kh9Q$0} zp84N%GFVTuTFyJ3UY6!mIV-Z^S>l$;K<)6>6MC+j^`>^G?{7I!GpA9oIy;JO0)M?< zN7OP6k+*Z#+D;O`ak!1=1pmy{Ww+Jlu03+ER``6zx$+q9E8)|YY8yPgZJWAg%FVY| zjAy^AldF8Z*G$!B*1wpJTW_mUbXQ&MjZmJv*`_x2mf%5^3p0ggI(&)k{v!L?cGkbi z7rtg3tu#@&J6AJku8fsX)aeyHH*K>ew{bk;kT`fUvhOXUVn$oRO@VFe%5ypR(!wV0 z`OXuxMPvHkeXK9li(2csGtV}hP`bJ|Y>Ug^<}XJZAG*uC-d2!P{Px12F3x=Nv8Rpq zmmfN5%k#nDRm%Ir=eEz;o}O`DcID$wA>xle)~*Y9W_oC)s+RRR-|O|2X^NjtEVtwK zunO>3d3Wvg<*b|Q6Fm#(&hYnAnQvhzU#cQ+dF%U{H+wz&;yWyBn=D<G@3iY)^?tD@ z=Y45HPfc)*_lbsz&%evx94{78NI&#+_spIzUtjJzohba=bCPQGW3TMqEpai~+R-5z z4{p{?P-id~JfF!h=d(eOP^914hKqCl33k~W-F$R|?VlyWZ`a;dofq*gaP|5A-ifM* zziZyQUhrMNeW5F-*o)Wy4hl@`F5IbRv2T@4P`ZdfdcpGfHv$gs?0;htHsP!e|IRhB zPb{}@dOJsE@l!9s9W@Ipihs+BO=#^`dTS)V^oNCt`0t*>A}=d08N8HQvUu(-r>Ll& z?V|TwTf~;BSETywWk{<$y1RnUSIy1AR7rO^+h6I6uU<1hws*R7W%}CN>gG)9c9o*u zKThqA_+h?Ko5fOV{o$8w<=ZFts=IjzubS?W&i5w8=1P)`f9_S0hBG4FcTPT?Ec!95 zde^oy|4MI}-a4K6StNK%it?8wAD7Q_$l*%+d@t;|p!A~h$+jOdwSKKzWM^8tgx%bF z`X<x1#4o!RcqB~@Sbs)3a`CA{d!1)b6k^}4b7_*ckC@ozjXz_!PRb@&&D4zkRr)=c zdAY<|{y#g~CRX^cuJl+hR?)3i%ymUsyx_3Z7t3d7CPebZ)NNk-zsuF8pJ&<g>dOAT zO^3xc8~fgC(UvlPq*Xjk=bF+t2`}kuv$HKWh#Z}vbKtDxySjoOx?k+NuQ@hfTb*8D zUtCytFJslt9ZiyTe8Hl||8}Jw6%V{!q3@DC)4uD9o@~b@E%upWJrhnpyg9+D+iu?H zkJCzK+BJUG)Ok5adVi`Izr(yYM(LXD7V&$JXv|AgEMFJ;IV012Uh!(*=a#{i`r;)L zPxXBn)lM9|vt?J)!!st*&%!6jO<s2F57#AA-5<KzA3lg*-BcXIxbN{)?zxHvTa}l6 zzdnKe^Msjt?HbFB+gIz$7p<3hJL{<EC$29(CsclUH@x`2!`|!virA?+SA{Qz$+Ay= zVEV;QzlBBSmhb_F*37dK(*G5g*BZt=`eb<N=!7-%mQ1@nzv);18D_ORH_ry-Iad}+ zow#VXrF`R`o;|J~^SW~%I0-I!5T|->YEqq8)C|eK!`w$jkM<=M*fxsEp1ryCpUzvI z`G?-5J@_a(U$;yruJGbPo^v@zecp=4xwskcT&{EAf8fW7(t-^stdYAnU${1B-Znkc z$la52x2b2^u2lP_acRq>qmg=hw(fY{)clm2Eq&Ux*ShX6=fB%Cd2Qm#2C;w5h6dIA z8Sgjg`|Mq95nHJHOmq9^_aEvbUin-PyJfj$*7W6iM?OwiR@<a{==8P+ttpCL53_qR zYF;uuJp3`YV}r=cxf51@yg5Tg_h!oBX+L+cE;*}wzA7hT(Y~ZTw!iy)9{qk;^NO?h z|J53O^Xv1LoVcnvA!qNg?`!l<cN;$xo3Zl%cUoQ)_w2Ob-)65a?YSHn^x$Wo!P#qX z&$iYqh`6%yuz|Mh_0#Fw-Z;cwVSeHI^3Dov0V5XC13d>MZqDYmd?bC?na@o2tCs4l z^3VdcC7MsWY#zk%rp2)Ht$Gly7|OZS+P-Dhc{c-XN4-6be|}qC+T&~X@6KTh4eukO zF<0Lur=H+{&9l~TU7gYt3;r8Va%1W&Wey0QHog4wuJuft<j!(cZ_SoFGq#EP@FyHO z{2;=s&eQPwxyRcW<0A|6Liw&7776yMYn<x-R=Q~O-g2YGD-HL`J)g5XqUSSjc4O?v zb-j`I|4%OMe>-2?h~<!WzX5xam-ozlO-uNnOHQ?W{8i=X@2>LiH|+Ll)RxD;;E9#G ztiSzh?>BFrUj+d%XVPjXtrrY>w(QCFW!IJ#{cGMf!?;W7Xic;6v70S>FSIN_Tlg%^ zI(_2<8_nKTw~v&0t~s^3s%Pl|*{Tm=zn449-r5$-^=75E;q<iIX{S;Tili_4ynKfD z&zoAy4-~NfJK#5EWqI}IRdwnz31<_IeVf51ccXX5&my)+&7Ydr-{{uuwMc!Z^Wgq- zJ0<;|DJGKt?AMrQJiX=jH$tE1=$(|`fngeZ_F0r9zJGL5{Bfa+XPxv6FY9yBkGHSa z<BNAF`4P43KmR}b2Vq<OuC9F|c;SqQxrkML^Yy!N?6(_q_e|;CqVXw2t{`~xL56mx zj>$1?EAytz3Yje5ZF+H$idO1L(FDE26;r;>)XI5n6_6Bde_4BafYP70FJ*JTGf6r$ zDW9FCFmE}RWtW-3!lhD|0{o`kFcCf>G-J-<9YNVFmis;U;#-2A6(8%7k-QtYH+^d2 zo%};*IMf$!K9W(Qxhm+HZMU|{=P4)8-I{z^k@3Xu>joKTdM@e<BrSWs<!Ib#F@H;C z*Y&kx8((NzocnSw;>$dZrl4=muOqXgPNr1%*^1Sr>=k}G=bP2y%h{o~#RXE8A9F8z zSo6YL<6w!$^_&?7_F@0SvvWMTXZM#UNF6r!F36kt?9U0SgP)vVfBhEo!}~>hm`m8Q zi`Mmgp5J!7nk<q1OTzQv!*~DRgs0wlVtU%#sp`!!3&~fi+D~7kziyg2xuzuS>QBaV z$y?qWsGM+GZ%u<_WSsK0Ij5Sn--k3Ch;Otqbz8lGA=Ao_?e~R$&9|1HJS}T7t5`Ai z{Wi73`D-6M`=)xkJY>$A8*>T^1kKC!o|T*w*MFuWvYe~1&p+6<Lh8_~RS)0YYOJ={ zn!c=VQ-K+a+`9*SJ*j?wS7`+%#?Nz!e{8?t-%s~H5AHj?x-MbK@b&Er&WP$6Z(8Tx zVBg%vnZC`)a^6+rT8URX+k}>_oODn)N3iaFqUf1ZCclK<ajNA{+nVvE`bK`2w#1Vo zTaRkpzLds%N%vM->O;=Ii<hT-^jfDH#@{=q`<!{mfh8|znHj9|KCr}1$4Ttp9{#j1 z9qHTuvhifPrMGTY7unh@G;bEqRrTqqDq*=kPo6Cixpr{#j@O|Rw~4#&6Ivr5QGYw> z_5Oh6^9}a*J^%Fjz^tzHt~eIs`d5Z?escVu$Qbg{Z<&aWcg?M71)1hbr}A#6$h=?j zTyu}Gva#Ew^SQ5WSO0!0So3eo+s)fF-Ol~$y#B!CQ1vz2Fg}aN!WE}-t+T#K*vf6> z?-F0nGD~^Ui?~JKIh4HIS++#RS;aivl&N1|s>EivKXLKR%#G_zXSDQWz4Te;@1%A@ z{O`MeR$tBs1hLG&<h8MQzv^-e!{swp7cHvz|JM1x<)rKSZT}P>wV23Hc%r;B{B&J~ zj@{v-2fkbXw-U2nzW%qv|09y;xOeHy{dpouUGMSFR({K;%PelBulIaB@6JiSMW%aB z{+}JRdh<oi_0vtK>9O69t~+<-L`uf%8>#t8@{5)~_ga32?Vj8IJ1Y6>wm*M#$Kkhh z(CzR|64877=j}Z3vu&SXux;M;rFveErJ{1U^<{mZO5NS&I{li0_}5bNZxdW*Ijt5u zw(u;M?ac+O?y~zAY`T%ke80iI+)K>uk@UCc)=ww&?5}&Q-(Zs1THM=^{+7e!HeYGH z%%VNdzI?8`Gd06J-6ZzXtlW+l6YQ@9nbn;u-w;$LneDo9hi2K&+()AIys^de?r5eS z)$Q>rN$zxwSj1L4FRCT?T(^_eJ=?eT@2-e``h2P7t>3!`Q4d=_v+d}8IQ!Xq%jL^o zujRb_RlMl!ec=}>6H}@+wS_x21>7(E=GJk1+bvnC+ghdzU1CgMRGnC7X|KzAdHJpV z`Z}UvRzGX1Zg;)sFTHPDqAHU6kZqZ<=|Yp7_&uL4WgZba<@|Z>{mZ9~k8k@V+!15p z6tX?Tw(@hv-haHWOH0?5^{o`W+8L#$o4fIFSEfb3-CSegcUvaCN-@20`i9lQ^}i?X z6IJ9ZUQjIhEJlN2-voV&cW3yYGFNI``+kSv&cWL^z6o59dGX*<6bpOzv&|<e=NwJ4 zJ9@(`#yS4`t9_D+ucpR#eAy;GU(_tI`(9J&KUVGIFaFG5x-Xzc`I$C%{;R;&KI?L> zc#D@J?G^cqFStrse}=}h_gi1q+E=h{<%v_hpPz*<6?^sUERSeNp~7m7hF7buG%c;z zclhI~z68gqyOUIJho$O#36)vzHFx>(nqb4{+0}ItQfHmzPCjnDaP{STN1fm(>FhaP z4KklLzLT7%S0(#iUd1x`SfS6oq}{pPd*A0R4CD!pzIGui;PsM?yQ&S07hnJWQtarS zTaod<E;YQfHJP!w)vtB=eQUP)rqd7CuUmH6Jni78%EO=gZZCSDCv~P}zG78GslUnB zU5=AP4Db1yU)EG?$+|rI3(t2?o^baM35(3_cBj~i|C3znqBr}!r@v|bs(()>TFuO; zeyM7G^!ee#2}?|0xy)dSx_r-iOT(nIA?3$aRqOqNtz<P+BSm%=d}lbfTJ6g-etp?R zUrYA9oM~;>{lqZpT9e{#$JUMfeAlOTU)<4~)ETqH#cQ>-=MSb|0SnzrDthL*%}@-N zXXoX)@XzApN$dFqV#-q2qSPNIT85hK?Y3OKC?mpjQR3?E*RCdOrkz}Ht%B>xw(LEf z2TZ@0ac68-&Cy-n#eLuWPSkW^$HP(Ow`K}n+axJ^{Dw?K?4F&67SGq)!ew@(-eODq zb}QbOmFL7+s|)8%;1aR@AF!)gR><d`(sO=+<R|MZXHArSmA>t9`m+Ou*94X3-m+V9 z!s78`z9%7)8|&vuT$pvXNmTQBPe_s`bI-wdLZ?`E%Acu7)!FSOeQlQIk$xt{L*2(- zebJYF{CeTR!{4r%8g)6yMjv%m3dol-*rK-Mz@Dy$|4gSpoEkCxP^y^n1dZEEE7Won zq@VoD*)#cqow(Wc9Mc8QUTFK|r=`5#wz<94<$P&`|E>RRK|2D}-yM<s^!d7mP1zUo zJ37z4i7$z${_@7GEA`Te4gaNkC5|77xNu+%>vzer3p1;48f=|cSiHz^dH?qR%a#bf z5HX%>dHCNdF54}Cp8DhliSK%|V&UHPSs}Z>8J!b(-*5N-@OB&aPm8M_Hs?x(&#buQ zD)#Qd>En@2*#V}jqn`+5v*$;-OMc>dYo!{m+$_O->qF4O(04)a9`D@}Z@~GTJ1bhe z>o@Dv-%sS^iyv$4V%7bcZ5-1b)s=eVortm1v#FgsJ|<Vpy|HF{mQ-Q={Pis-?`#iJ zxV24NmfPX?r|bM{4L`6x*?h|P>b@oOPDid2uTxOD_FC$S<&7fQO^2i(FkC*{-Rc=| zkgLJ)KrqMS=x&yok!h6`Dyik{OCNmt$#iyM)RC$7`TM7y<hPsPr~0&fL3xhzM1}7c zA}@a7+pAbokR-yn<V5lAc{!Kn${O`EzkZa^<-x<*>V0SSO~y3YqNazUSu^h?D1FoY z`zuwwVv%*u?q8y3jgNnve?)ZFh46zdi!U5fcE5aYe#7|>Uj7BTkNtPwm@bi9wp)U| z(dJq}eeqeY+S|f>^HbWiBHQl9IICM~*hPda%3_(^zEXNEU*tiT>OU8c+=`ffMnqrf z;QwoyPm7#-EPt#13olE`d!90vtLNDU{fuKjSRTy2ywccrOT9!%$IpG@OU$!B_&$=` zZZ9?Y=;2dy);&^Leru`FV}ASF3v>7W37FFSYC<#L&6Di{sz>U&?Ehr6)ITe0y7^(! zY{C0~e3w|hRONqsMx=g8Yi7K~-rji$cfak9WVr2Ib}L3XTOfH_%so+^ttX|XFS^bj z_|4#w_r7p`Hp|6^zxOSOU9#P3#-!sf7gc{cYbwgNPI3C8Nu{qCH|cQm8S4f-d3d{d z^$oo;mP?llw$77^-h9Quuz%;o8OP0yy*v&3r+4dq_|CULqGO>-&l4fZrLDS2y7TyF zW{ccNYW3hhcJ=%`-DUf4I4b+)Z2c_loOJ)8elGjg?aP#9f4~2vvUN3+psx4CHG%w3 zbp*?d4KB`P)GJ69c{a5orABH|#k8MphWonLOe|i%OhY#5pMF_|ce1qq3b7;`wbEs~ z7)pg>INqhLVk=#I<_l|7O;D3b)l`9W_V}6$Nj>$A>&rs?w|u_wY7_q!cg><nn;yQ| zW@IRLrdRe#{`@W4{OeLCcvij3Rf^lc@9;dm^1%B=zfV@*Ju7tdleTqV_tXEs?no`G zsMr6^l>Oc7x7nJz-ES+TcLv<;2;1l^6Sc5x>*){w-Rl;)=Puh3$<~u~aHqjF7MVnm z>yO;N=2uu-pY`9W&UAEJhugM}jqQf_SSmjj>F&7RtNH!zk#9z;?&kjyd((fgth+Ma zEpF?=tuia0eAE8ES9r(7lYIMp9{=uATXFdRWb1EJwD^yiyz=>)!|202?~&r2hTVtK ze6wzcF50ZZ)jc6Se8Lfd@6DH2sLXHNz2e`!EeqbY9Z8#eydcC}yX2|W6x9q)SF0U| zws$4p*}7x@h9BQA&Aw2!p_W<srPHL>dfys64$CvS9NzeCw->+hBFD-N^ISD{v}xQ3 zShZP4Ajjk2_kE5BLnbzHH*&D97huiiaoxam`Z@RFrS7VC?f+B-p7Ui4SI~-_lEi1v zuVN<M*LUx&@OL{K*$m!*_c@u*`4azEq_=163EFdO`OR#dZxbHYcQ6$RYp0piYkYT& zj#s?)_1QN`)r`Wd8EmJTqdK;k9*a0}B~s&<)0U<CbGk1TJ8gN8%hR*%%kd;{?eBrI zI}fpH{9K${!}$En{&Ls*chvXoR9Wy@#caJ{ij3)=OXi>6xIfzbGkG3wnWlHiycukF z&%80a8}e^u#Q&8Zd-`Tc&dKAiE4i+`)>wU;=@fyrorl&w&RDux>U!tSW9%i@-81I? z{5W-nn08QRmAcd8sTVkSyN_PE8{2s{H};NVR{V+GCzqd$txKHc`P8%P$hW88PREMI zPI74|&Sp08JCL*aZLG^%>)<J7QsU{e?yB~#{xNZ8a?_0e?{}~0lbRlKdfB>_C3R){ zlTyzA;Qs4%<x*1nldr!Pm~P%)?XTZ+<WtSLeA8x$)1QxjVOy5>#{7ZYoAetx3i)3? z?%r_HzVeM;&aUDm`n$MyGfep{X`HY|GIVm){5xBF3V(OrUUcQ(s{R#g-%Z+4xx>0_ zfl#UBq+3@eUkq8BwCeV5x8J;bSF=6Q6LotZH1p|;saFpb$$DMCziUdKmiN0wL3Q`% z^F%H+?6q!E{(C>XB{xp0>(n|UHT9pa)(?JPHdt!DA~*MTS^e~HFMj5pW&9;CzQ9`T z<9FXj@9)O?>g+QSOOmQAtXHpW_mx@@dFAY)-|BbQY&v$-qUU5(NA-^iLoNBGlNZlz z|Izhr{`a06ax&3>)um@h-M+F|!)AU@)VkB0mBs>!enr=eqZoJHsIxoE9cg55{ycq~ zivF#w2e<!<I>CA;*Eq+#=Bcvmbdx(9J5(~yXU~*5zwP@A@0s2TnpYctJe8D}XkK{m z-2;Ppd)red^7owSo+x*LeVGqK^8Ow7-{=d<{+OCv<g!>JDWQiuQ2I!8N|MW(^@i(Y zuHQM4c{cyPqAUB9#W{Y=ufx8dE0?KI+8x@($MM{6L8#42uWKIn*!6!cm1unMo4?*| zb-QZP@Ac}Z*^UKv6|YpX`ZBxDvwfb4#MOoIpW@d#?^k$r;p8H|wd^(b563Gz+gfoR zpS_K@=;hyd9u>K#QBQ7s_I5pgBkh0HGN-puq8HcIx7;fIBk?xsqkY!(?WHz`ZoB&m zC$oK7+`%@b<CgLL6@^DlCY0I!s`(sx{-DTZ2Mte~SJx-yZP8j3ds^y8ny<@lz0M5x z`@&maS6o@A8<zU_ZBH4?-xP<JAG>y$yiHS%-L*5~x}T}+i+_bF*8>hMkkdUD^u_5` z;-ShVKUxb;iY?-3n<8~+nPX_}rueLjvo7eqsP^5v`h(l;w?`H8T=IGOR?JH8za0JZ zvSIJyU+Vf<%cR0<U(Eh)x#xd`M$xOI2TGR~t`In|^Y-nlGY#LZSa!%fLn`@|s&8s` zN0ig0kU5Iof#MfK%vzFcKDzhHpD^&h6ujg{vp4$=r(g4I1g?gp*j}2q;VbjElBL>m z$E&$tz1#HH@KHs){KW~AHIBJ(*3Z(olCWe8&+c`mYs;FHml^VzK9Llxy3TiG$4a*) z%D=7mi`-tczkavG*EPH2TdO_^2Kq1i#P-`Wn9t25^_H>k#y_*td*)44dOFis;p4IQ ze;+GL9qSO}%?xM!8sfU#W#<vqSALfkRBmT8&6v5uk>9Q2iG5)6zPUSRUizA9aBS`; zp?a%-td~6P9eTG&mhvo($i7(@!|uB1+esJyug5=FNnVfkoYyIEd&jj4F6j!t4crbc zWIs|G?s&YW<9Mm~{PlSakybI@E4jN_=FHWx`1ES>krTGIZ(mJI@nEo<uN|PA#cNr$ z-Y=@SciAo`S(D96%G`dg3i~qW8{75GD*Yc@pFG>jR_eTFht%x8)rP6vA^#4)^*aBR zY3-3kmPfY++67xL`ng8<bEV+d>rc|QdaJFwl;iWzQe)jEwa0bgn{MBlskO-~c&A3K zv-OOPDc9dKmz1VIKM`SD-+N^DkJl4cOs@{me_kkdZO5}#4c*sYJoi-po0;I#{pjxu zwo65}vP+(tm7C04P_cN{G3JS-9_|g-6zh3CRyUqz%ryP*+@VK0++evVuVL?&wx1dS zS-~cCVw0{Jyk}h!dODwJOVGql?Wu=WhiTdK|5>d)wVuCcT}a76k*JjujwtVQ$or|~ zk<IJ6c#WO#39g;eL5AkqFM_^qITbNM^Vy0O(@p;?7~FXKCY&v0(YJqmS?`PYm^gWs z>nG<c=4-~j-WZ~(bk}I>+@&{sS8V-nC^YdL$IpO<S=RCEGbhLfEqb<(tCm$>{A*eL zZq@u<;g@cmj<oCxzxi)|N7V~uS)(h?{=Yk(=cjWXyB@$l)mHMmNajNRwWkHPURXIv z%<HH7mJ3O4L1EuQO!U(m3|&wAyWG94{p!E{n-v;!`J=AvUGB&n{EJ^=(!}~w^A~AL zw@+RCO}06rXyt}$3Lo!0S2}<7*J7J=A=4Lc8&&$>wLN)O%GUGGeD!CpexbjSWwI&` zu^X>7S5-W`bU)najN_I6byxi=Pq_aOJ7SZ^cjr`(zDng4-cw>y%&%vj_#R%?9nyAd z{XtQtKuvpxkX^hT7vr5nUft$8V(O&%Ykp0?8(Y?ImsGWrxrK8dh;DUQ?4ta%$D~ZL zm%U(JZFbAP7ZU$=?{D&a{9SLG#fh02C3E;(Gi|lj@tUz#@7|$fus*T8{fOZWx!QMP zr++QUE>T&ZUfa0U=lU$4Acl)(=TdS)cTaNsd!;5P-RmH`=W)3iCtq&aY$1E~TgLDC z-U3e#nl@F<7t@+?s(!+&Xos)9+0n@tQeW$69@3q7tL^rQCc&i%y&ea-V}o+@%@b~J zW_nch&~=%e$5ve-t(*KU9{F2h4~ZU*a;{~#5Vm95UqzMADp#kkp5E)xr<&W*v2)U$ zT{8=wp8NK=FMY<frL$M%88%${zr@jhPto4Iw5-|Zg3>N<nY(@Z%al3G$|<<X<MJ=P zGf#g#d3L+QJB@9<PVy_Zt<kSHE>ra`UC5CX9#uHySnr;nOIN(TwQJJs`CJ8;4{T}s zYxl+1vP|H(QZM%j<A<*fcC2Q<H(4ms_Ck;QirG2;mnChQ;}unF^1u9-(#2@DNj6vF zub97%^mN$vzx0^=C7V{Ow)tx&E_pcFSMX3iU%~Zgt|C|7_+7<G3~7to>|amj{!@2$ zviA&=Yae<V{w+E7b%nqF>*-6>=2+iwEpm$5ePPEO%~SKmToek$UQB=Tv|xKuL)rEC z$Gt_pAEz2QrakFua$My1=*0f=iR**6h`m<cTCsF~mZQwSJv&a#)R>nsvFXI(D{NPo z&ixZo`*_#)&0@W)C$wJdwR;?Bdg=5`zf#}!dGGEXKJ_c{3;&`>@lRYeF2WVjO&3Fs zA1x2mK6K*3sb?n-Wi=kYapKsuCskWthg^SgO7+U}o;AKx^p+mqvPZJCU*dXcY?h0t zy7iWI(#Nj6a*vgW{Iz12Lx1I3*V~i7v=~n-J;}GU<ye+ps*hykT8Da@b?z^6_<z~m zbp8LB>EqhmiuXD8weMd~TF3XjIO3l2iuMZ;i%Z?-JT_~-_I28hvcR1gdslojS?IR> zSV?<f+O8^D;maC_OV9BCdhz$8VSGmU`TvH`xUW6^d+)#Hv(pT}zQxFXZmp4ebnHfh z>^<dBcb2XhmkN}^Y+3!gTWpwb<=WdX+;UAS+wz>5X!-h(khxd4-$>h1*m~Y#=g;#T z+B`E4EqTQonzyAuX650I#m|$|o>fc~zc6`*&6{S8<;#CA+8OX}Ys_KJV$t;74<_H# z-X?cXGF~eAZb7>1)RUf;^LI|-ba}s0@s?q3QPH!@3mf0@xAnI!`Mv((-~J<2H4>9b z4sU$EHo0Zf#NvdL$Idz{HF$14qw?aR{N1y)_ieb#{#0%hIQQe4$&~44&EMT_YsFh_ zH}!wkyi#n%v0Z-dxBew>_?#y?;oJQ<)w%WaOK1M^Ts}{_K2K-qUK5|{W~~cN%LLY+ ze^C1L7~>~*6ZxB#7xw1;;JNmDS>nn${Cgx6(_T&7#h&wW6}Los`@J7WKis_V;^%h# z{wvn6q&NPK&|RH;WB<eLRXbi5$#lnD44C(Hk>rl>YogOO{dB0FlJ_pO@$Q7@OLyki z@usZ)o2DN5@^ZoRd!DzK81vti+xom-^Va8`rwuLV|MXe({d)X`ux~5<S;Zu5Bfq&_ zlRY#kZf8YOovHa(|AiX%|9by$oqc}fa~-c)>-mKITRXE>-;67JUhw_A%Prx354{&i z+bT-jUyxxdy-n@5_Is82jKbf(KF-iyGOZ%}#pDYwZtj1T8niz+U+>M{Rpy3w&41VU zz2E-*XA95L@Mxz-HMv)c`gdleZYgeycbgW>aliZfzHh6%mOXy2^+)!bSKT4DIsL)Q z3#^=_mS-EC_BwrVci*=|Ke`WC%nSejW9}ZVhx*m~deykUt$Ni^V`);FdN$(o7a_}e zojyO`S-EZOS1`Zk9q2kKJBc-xckbMteOBH(#1+14yXaIo8GS6dli%09FJITYEl$a> zEF`~1^7Q|6n)e>xkDq!kWq$J9Ctv67s5rFhd`My0-1Yxlxc`O~e3O{(H%+Zs!j~uR zw8ic-%e(y#>+ZR_zvTA6S6BB={B}%kOG%O2m(6DLHiiEW3KNb#9J!<B#MO$sFQ!^l zoqhQAd7S>flMm&KSbv=5>WKYyW8?j`=a^3fR`nL}ls{X!m+R9lvqF83>v!!Aobc;k z?Eh`L;>x{`Wp8vR6#P0{xU^sPxA0!u*tflmeE*)ytcW+@e<NKlwtY_2?x>vXE^(7N z+Pe=(Ca+pO-A2x`bcZ?1v3D1;=9F8sUtQ+DKQrrae%xu9ge9wk-`t+}eU8o1st+y? zoq1|+f9$XJ-S)-s*j`ng#(4Sp497NJ{~lj@S4q15@9ov|idTKS9vW_2f6VBgm2usl zuYZ<&yuN?OD=P*0`oB*9e!QNvdR_c3t^e*t$KwAl&-+vA{OHGPv(uq(7s}PgmWTd* z*STM-_S28ouEOh9-4A{HHRjrn*E7SPUQd#!w^e+%>Wksy_54Yd0zXgROFVNgL*&2y ziESbt|35U%n|gPDY4TBLhSTq-?hC)WKa>6Mj@-+~)?U)z^L$Tz^%M0CZ$lrg-_-T{ z-F>;8;ZYmE{_A?n&v<)F;_e^J2K&3-PWAf}7qWM67I$p&rAxoJ=P@z-xu>)&vgCj4 z_xC&aKi>+ey}zv5Eaw&<gL&w^a{a%%KHg(rw0%KE@Y56T>sJ)UHp#R0XAA#X@<^TA z-uOeYZrz$6k!|xse?+#+Gur$833<Gn&A$KPbIv~|m;bU~4}TjGzjNuLSMz+Om*=n8 zm4BQ^`Coke*3!qzX2~?%JXihxrpfL{^V-wG^Y?#$=R5WL+Znb0udTW{_4~bG+v4NS z)@fm(XYU1;`hT6~Yh0eQ>;1o1H?M|H{eG@2Ea(1@grnblHy^D@4`pJQrX2U+zprRS zx9n~0>-TroUN(EodtLga^n?F#*Y-}GT^^8lY5mu8?CJM5)L!oUU4G_Pq5QWie2+sG z*WUCkbH7>j+vxbOO{S@@!}aubFU_gFxyp5QUT4e{UA?$`?a0tJfxG{m^={N{&$$~C z+#7mx%SDaUj5W9R>8d$B{&lK)`@P80>wj;X_g;wESo(OH@9U#Xjf?GDgBAuP{MV09 zS#xB0w0W+g+qzqcYi?|+4L*9Ty=US+W`{b%KF>DIZTUuFHUWWKmnI#a=Bx0uP=49n zf3lVreqU4x-*0PsyC~PUudw;cr?Qu?9baZ2{%b9_=>6|)`HS_R#2KEAwch5k?|=8+ z*FC+9I}Q~;Z`!EgF3xcwNameWPEIn1s^PZtE`~=~#jSW=-?ptjdGFn(qpX2EOq@zC zh6_0w8#?$FH48YEusA6QEb>-xXn5hP$l~(*-kUY=bI#qkVgIApzw&q5{XH|kKYM#- zws~=2(XxPy-ZqyloRx>$oL#mb@e*lvpROIQHS<7e>FMxuR^Atn8%0RB<z94Ix-;Q` zV~X<iFKeV`)CF-Z7qf3)R?=x{y*=%=X&aBX=}r^d&<kvTi}%cIOz(Ly(P7`beH-(4 z|CBnmY1u2@V(Zyor~IATBb)F?J50+~_GR9_EZ^+=S@*6NKAO1aZOcF9-(r@23q5-T zjW0N5uPKi&&s16D6}ibpkhO>5V8WS#Pcq?K+e+5$UbWoc@S@fM<Hc!hUt7O-PUP8{ zwXR}4_lD9mcH_6|ae{v*Ex&0q`LYB<;r!ppH8;#m?Y>5y;mKHgX~zr8bd$6Xsvks* z(*k%+!oMD^xV~aqT*_P}v&>yDS9=w2zH~ugiP%c{j~u_AN-f%YyfUG6a?s<(<-28s zwg_;$d@2?zopVp2ZAWs1$d%G}Gq;^@Pc&)$Ud1NyQM1Qoa;=#uPck#hk3)U$i|kGJ zMso4#uj!pKdt%wb8_FBoLVDBZth{}5$@ATg$HKc#FVo1l(r=n_V$qYJ!=L_y6dUh3 z#Zc|5do8oD!)2{PyXmb0gVU>)&2aA!kc;WsI6)~~ws(rEr|-lc4#oV%p3G-gW|!J^ zSa#$vuI+Z`dzl@2dC8(0R;A9|K9|^*qIL5&b4yE$#k}zr<kK_f&CcEDFW)%t_qHE3 zD;7;@Ir%l<cFwD76YOQ!7U$i&c=h^y>k04Pzj*iP<-5jp|BfDyJ-*?!(U$)%iU*3X z^h7WRtT552o$Iy9?QnXo*V!1}pk?z?6oOLx7iZntU8>sdkPz|f%wAuur<PZvwVyGb zb>~fV^N|%?(`u`J(8q4c=_eYU+plPPuyf7sw(Xc4Bj%(u&Dkz{ckn^hhOD2ppYFU_ zkk*s1HNh|NhtT>bADE?Ii@%P(+>$@J@9j^Sxn>-yOO($y&U>nv<m+jAZVHpThoOU_ z_I>WNhjq^L&iB0Y#N!y>=iST(N?V#l3uZqwZg_qAPQE@%yX$$`FKr)PYbSlW_s>K% z{jKcrPv_bU<_dqESU0iiB3InP65f(e`{woO=>_d_z5S>+I)!J!c|)B`#?hPFDqng| ztXIhjIk?g-YEM*Ie_V)pc+NCqF@=8;VQh{EwjKR<<>J-)0^#>LwsjkmSFN^w@Z~^M zb%Xu87jd$4(_NZ0gpys7ygH<rQjd0Bu=@1+(c{Jo3Nn%wQek@Y&1~2@Tq;+H&Q)mH z88L_ZifwUE^~C>g8?IID@F+bW{b5JZ2~o#b+d0xZ4_rS!A-L;&_6oIcnz}nxf;6&@ zT4^USeRFRyI>VEbS8!~{`pN(Kc@*q-uU~fM^9uJbj<Xr}7CkX;i*#|@zQw8Y<=+*I zxym7V4;HuCpJ@#>G0%xN6@RDB6Z`9g{OVjWz1dN`hvc7_RbN?D;`mtk!`x{ii<+iS zdRyWp;JQlen6&K5?i=3D=eu7O<g}T7IbU^OmOu4ESsM4t-lTo=yr<`A{ua5JC0O~0 ziKn+oe_q5Xk0o<%J)2{7OgH-S-qxSj7RDKDWxT=S%lmKfro};i?c!X=SVcLEPM-0y zv8}SGSR!I*cU$e{(Hj#4cTP3-iC!rYIO)b|k(;Hfw%s&l^R1a_`PAw0%%%NB`Vvp< zio|)Ge|dK;<j>L;{w~Fv{=P{sQ0!&DMCFNvzcQ-B))r1Y=Jz~P$(w8G_FmtZy?2kq z^G`WC?W&zef4kPl1M}OHqitfhDb^h{-Y7n=H+=K+N3W;Z$;W@c%e^sIq^w}gs|^vX z+R;&d+iibe{_K|U)4lV@yXc(#dkjNoue$j^Kup`aW{$?~<nB|uQdi#Ewd<+7ftddr zgTT47F3d<{zo9L1ghlrFgtVn=ckkZ+{)Fk8NngKxvEB3WnRQvW>MrK^jhnsr%630i zI=`i9&8&~i=4TFANAG3}+q&#GdsY9Nr+aN>x%=|_R{lCsSa8|-v*#Rvs;KJU7t<Hd zF!oEX4YvJx<Dv4d*MZ-(gEVH{Nl(~0tBUV_pxzDETLo?l*p2qN{e3v$z`u;d&ixJ1 z+czEYda%%8QslA}X749u?VXitt4{R4486Jg*zM?(NygW<9-gAp@jxfoK)LkHe5v)v z4$EXMa1@hq^*M7(BS7~?zn*Ky90}L2mzH`zJhHBDOH+{PYO&8Z!uK2~%(;Gip8PXb zuMCUHzRQbb+{=sG-gkZ$cNO~SC-?nJjD)XBe&V)8;x{a_Wn4_fCkMYtRx>Uw%*%?{ zkZ%(&+|JU_{rp-1$MePOUR{Vfryx7yu9)V5la4oTDk!`$ZkxDE>5Rq;sT{MdW&3U@ zPm?(CXDQd=q@Gg~1Lm!l5%{?3LY~pY{P?ZuI*xnZM$X%=ToD*K@#|#nudHk2`1c%C zS}7_0B71h?y*G88Zz`p}eOWcH`Lu0$%uB-~JGrYmw%s&2dFgHDl<KG7@7NuCbpLp= z?(0_{1d}#aMD}ddef*cF<k1_gKio?{T1Y%y;k<B9Q{GqYZ@n8Me(w8Nadh8Qoo%j1 zD^o*%l>a_;QPB5|uGXWEVoJ}O7pTtqe^fw$arVjZA8X$~6kDd^P|ohQulVn+X9j<b zO=iWkZA+-Xv}pFW=T_T#Rc(u(AKjNR>xN`IFYA8!o~1|rxoqFDuj_Ks4$r62Nvkgv zPFk|Jt95p}n(oo18}7_DT9wJSD)G#MX+<urmhz?o;VgVk`zAW>Ueb7ZzoE$<omU#F zx&N1&E|gU{IAhP&DVoNav!^vKQ<B~@`H93Q%WY@g_$x-Qn8Z2FM>=ie?5)4{%`1NK z>h|%><5x=E8)Ms+U0$~&>ZkP77j`cTSl<a<KUouET66S-*5k4TPhN-%ajtv!LThc5 z+&m|x|0hfReu{nDwex$0!IKS4yY@^ftp2uj()XD;Vw!qaPCqRd{Po%MP|r6NJ$qM0 zd7Ja)Z$CQ8Z8^ZPa+2U5(L*~!{+U;^FWPOobn$nIrFCo4*31%(nX9R3Sj^U(Bi78$ zy}aYsK{iImu6;#+m69h<yI8T~qx=5<2LeLxb*Q9g_+Oml{NmAD+r4Y&KDxqH(4M)P zyZ7M>26dt1$2crv@)rjOHHLq9d1p@jb)J5SN3y40Jic5b@_q~7!}Wn{mLEvm#QS#U zrZw4p=X2e+bKO6lptg9oXT%xfec6YiQ*v(~(3<z|eeB_I-Zhbvqvq^SnbflA!}a}{ zNep)<?oaPq_49UXlXc6Mthdj#J6K=XUl5gQOp1=EKk>idR=}cfJPzB%V#=R<PdFo! z-YML8ohh98zTI?HGsgGsI|a97H>v8`&sL2|kiGX?b?-Z$X%Y2d5p^O@!yDQcyyN?D zk2P#jO~(=2#s>>+tnK=KY5S#i$~RUQOsnAjaWhk?UihcW=1m878+yzU42a?T%=xG@ zRP$%^mgftnCEH#ye8Ts~wzc!?hr?49`#OsXWnAul+_aB<OVG6cEO|486|MbkSSrq| zOjWj$&DVTjYu3GYy7-6H>t^kLXReptdH(w3dp31D=2cYAJiBQR<EH1#{;YERDsfwv zyw*E?di%mPXBvJ<UbwimOEPR)>DDqs@2wHF&W{^?*=6_qncy6K`_d12UrB}Y!R*Ez zn~r!#HD)H2M^~wP=j_ovA{VIF*S_#wN@V@Hw>lSDmVA1*pug!{tMv0uuA7D8Aotwn zuCPA+$>-0O1ey0-Gk-qJl{j6c@UpjH?h{v|+xKNJRWE!TlpwZa^P1|H*Cwo+G^OCO zZgKr#y{+A)5s_RwA1mz_*(h^-mXF(Y(^zG>OScx)7o0QiJ;>Z3X~h>1`8hXK=MmR~ zbq6*_a`?ymd1uPMukdddbN>FvYirF)Wp;h~*88?Tr#kyF@Aa5ZQCA<UUtRLHdP~Yv z@2feF7C(J_e(SRGjaqV*Pc~|Y|NZk?Fn(I8{H2>a-2bj$?S9_A@M!S8o$@8`MGTn! zly0B!?zYe+VW(R~kskV0dP|n)i<LZT+7-5Feg1sGFHPm^1Vie-hA!gTuX&H{*U=NN zp1PQ?xv$H9>(kAzU!@)N?|=TOevd6T>eJ_2YcEZl`(|0WzRkK!m9ufLq)youm(N<e z=g}7b{{I$ti%u#hSKrwlTz&rg{5^kP=DBb8-*+|g=PiEWx3l|x{Wx0jR{1Ue{SWsl zs@|;r_W!}{IgejGGOPX|J*^`0QKw7#!LkSboBoJ?V2Uhj@ZL99Skc=4PwxwxkC*hj zKd)u__xr!&_k9PZ@0)k7`q%51d)QNd23_!cQRvXF`rc~gY26F;kG2=DpS|8}bIbqi zj%uN~tg9P*rkOAHovWkI=y#6!Z{?#W&wie++q}`@|5T=blm9QYe=9ysgI(;?zFQ`9 zzyDh{;U51l<}W@?>n86h^NiQOaNg|fU*4)+zpXS3*Csb;u2gCK#J@wsQ1;Yv2csy~ zBV7&=_tg~QSXP83{<ja=`}6ru!wbs`um7-q=i_%QvQ}b;)D7kwrgaQ;%zId$mxVP6 zO<BOAs^Q4#6@Zob!MwUafdK@b{J+Jq3I%ArIoJr2VVLkgTX_YF6dFhCO%!*9$W>80 z<IS`0rkKBb#`^nI+NRx{l?-hx8vZlq?vB~CyFp4rsZlD<Z0%CsEm2yzu^cxPRyb^E zWBJ&+cI`EGp{%PRHDOC$>2#>J+=w->UMuFkT34h0?as~K97(yqYu|qVnmzaZ?76>f zp4&g4SN(3M`p-W|aDGKk;`5>vCa%i&s%qUX2y8OlSJb+0S?E8DQ|*@hi&tiz%G2^= zx@gY1=0M}sTb*xBbA#8!?$+GadF1Z1=c~UYrYnEgy!7rpz73u=H?AFcHdA>{%Dn@g z$F1)#njY*`Uj9l!dQ*;Ie)|QzaQQRxM$3+dMO_Y($eF!qQeWoE%)&&?MN?%WqLxm5 z6LG4+p!Jke>x1>)GaL7pv7TbnJ}F$T9zSzawbzm23(?1?H*=hta(tPJzs;Ny+s%!6 z3%_4{92@y?&4m3HtHUhpUZsTH5a1G%-ca-M<XsaFMz!;7D`xXJa2_Z>JLhYGS$eI& z{^K8QZ~ipf+vT@>awgBj^@~|2%syuK=zi1P^@-~nR=>2o6Rx7Zq|n~Qzbv)Y=i#4M zH#_Fq|C_x;aZ2abwj}0jQ&Q}|X$Req%sa9^kw4+*o^#=sycOg>?R|UY+M?B&i_cA4 z*l~)%c!S@Dutw9``rHmR)|gqV4;W}a+QU*PXZ`!h6!zr}Gi(xl4qYfZ%DlU~x$3b% z+?mduPOT3&z4F+|9k|x>kilLi(WazdRldUJebRH;<0dU$^ZS*H#*~~-@}d$|J|~OQ z!k@|U1V1mjy!8&tx!qHbF}sKGtt_8^x7VuT@0*`nn-dL}eBbtI+N^2Y<FBoKer@IF zRIa&_3B}VjTOTmZ-QN4@@%Er%o;EQ}btz6+{d5g~lV_%i>$CJjCe=)NWARPrh}`5L z&SSHFr#hG4n7Z@NN4C60vI#G$PYF)_`!DRO;-ts1zB_(}l~0?*yZz>mM~i#Qer^fc z`R5;7-WBCfoi8pPt7?ANaIU!i@kO`x8m%nfUW@B-XKuZ{ajtSN_pDv#9_B7I+pgbR zq5ZU5GEUsNRPf#$lY1MB(xlezn|(oDK%1vF{$=pZ_Y+Mn)kjGS<}v-3ycO~MRL;+w z+!+DVn;)1}@3)J3m;d1Z<X;IL|5IxjOiH!l(%mjSjyNOw{Mx5|cQX4_EjLAH#&7ca zr}67J{~B}s+fO4V^$VSe)3H5${MPh8A!ZsDY}H58Z+@ThX<^l8_G{Cwtf;hD6`uR5 z$lU(N*&pTWqvDrdY@bva-q@e-Ql&lp?WydRQ<qO|mX9gk{bBBGEnfCkx3DtPH7;6@ zHosr_Yw1d{4;EXtt*V>zpg5LQRs8bB%J><j_NTa~w#~b8=a9+P`zv=XePSKsd!BF8 z6#qccwNdgRO_#15ZEw9WBZ;y6`8wlE3Fm&P?c4ez%9@qoSo+sZu{FveOMX_|N_T8s z$$m=LD~!40T-}`26Blju{`e&AiJ8^3qDS*X1pcouy2G>~?1|Osqc7G*Zae*%vr5u- zb;?|(r)9m%6w{)uo?FL!-6vZ-fiFa2%IBDC3e%VA#d^q#t$r@@TA=i=q`>{~^5C{; zuVnw5J$zgTc$r?ESZi?CQu?+AkDz4Rv(()?+%)_XHU6FRefpE#R;vFX@7WUzdE6N4 z@6@uL3SligZsZ*Kkn^g!Sh|w^d&!wq)0Vk87xtOW6Ar$1#9+%3!#OUqw<?G}<e8WG zu4!Js?QDiU$qZc&D}IRZtDV>y|9rpqHkl`jW~Y93Tyf^r%BCls)sxkC8#%RoIP=Q$ zsN{+FdoMeAB$(#*-m^SgVKei5WW0`rdV0$&#@t6gUN4`x`1Y;G2V3u^#6P^R^jzUB z?<ZA{+jo>NKIzO?Go2%Tq5c=sFKhM-`y=|}eESWaY!7Gr)!S{lQhS~~_bK-8f1LCJ zf}}oOp2H}$_n*lWS=U~%BWo11e`H_XE*3rUdGGReo!A9yzc(#Cn#pat>`N4@=$=W3 zbXtrGj>$@$`nkOPa^tRPY%i>9ekIjzulw`;Ywc_GFR{gqc5QWS``G_F*T#R={3WKh zp#IkthhNvu`F|IPWS<=OP}t6~>ROl8#n!b~?JsKleRd_!>T=ujdCMm6_t*Ze@RKiu zFKEZdGs+H2b!V;lX>v<vTS2J(vZG@5maQ9EugP6c>i+E)Yw@f6mBYT>AA7eP=v$_F z?VSJT3M>E5(=T|-?z`}O@9Lt*vz5gcTckHOALRXOw*48??9a#cvpk(H^DV15b=D`r zWRvRI6<nu&UAVU?>CTO6<$H~BEGy^V-pcSiC;i6C?%e0U`p?}yr#kEHjDlKY)7zCi zx$g4kIF^Q$UC?~y9sD}W_UN@Ot3F(Q^XzfIeWrQX*}P2?*LiN9eN}U}q{HuW`T5Ih zpFD2dvUcwLb&q-E>wS0Uyn33YcTHP8YPVhv^GAIxhIJ7;7ppU;ub<5RHKQav-edaL z2>!J)4uz#vOL-KNZ-n`pa^L*%QQdvddZRt-cUZh`|IySgasA}|Tly*MCa=G#pR#r` z^KaJ6Ry%X{C&a0zzxS^)`gv!0#LWBiXU{&V9~QB`*8Ygm=C}hw+w0eFxE=UB|Jte7 zTZ}HAN?faxkvci7PSIQXeD>q5pRCsUY$=M+=8n3#WNQ5F?@r6inlGniJS~lynelW( znAnz0otG^nwtigDYo7IZD_H-V@&k5#*M6?ulIa!n)XK5tv7~zC9%aX$oKM-dW^(Q3 z|Cze@iPp0{ezDT$ST>igG4|F@l{{``yftW9o=*Mz(sfS~9?xBO$jRK!^(DJj@uGml zPA5y3g+1X5D)<d|@mT+i`WJWdSiZo7`_od4G~eVbiBZ4LcD#N56RT~3{|rAH_uTt< zj_Iz!W>yOcKK;vAMM{3A8KlqBoarWYqDJYa`>a~C7c~xIyOb9labIB{kQA3R+kd^9 z`6R8_3-2yBMs8WVb#Av=@b<;qGktd7%ssSX@6U~;MOP0ddQFIPeE1_+{WPO9bHn4g z>e(_o_8%|5Fw6Y;1<5U;lQIQ2te2LXdR(?9r0vD02-~~w-h6UamDy#-Cimfx+PbNq z&m9bWqy1Ps>U7fTC+54(f1PE$U{Y`l?`Nq6y|<NYuGQB&)fkEHmF=^t^7wSwhT~%N zl7kH~CoR|Me+y15-<<b!O5)6mjvBFvdsMznIOF>MaB<4+$9neazutKN2{;q`Y_sp@ z!ykB_D*pVNw`SwDhw6)aifvhchYRdnzg+0q1%|u&p$7y{vVPsduwc`o<s#cWO#`@s zU+6E*>af`MBawOg$Gop~KW8?d)pF)KD$93d^TgXnD)~I`ESr5*<R909EwP^tu?ICg zo7fm~-$v!Kx8s*-hvo*gKhDjxxiaCpL0Ho7n2tk*hdnoT^-IPU%&|ZD?)CpAZ*R_6 z`+{ZO^AC+*CVwiN#&s!|X<>*$-bo&&0|lB<4A(jj8_6#_yn{Vcg<<2z4^NLxI+iVU z<=CON`(`2snR~D4-?^F~>#6o%bJvWhJ!$ghSrXz~o_kJy`*TxxWc}B};ji5COSzow ztu%g=JhtwM@nx@AlDy4!TV$S?e3N)mTt(@-nCrWZw<pHT`!?@DRlmFcip_Vbel)*o z*uUz`v9A|$I5dqn>Mz){&za%i;p003@3eIO-Z|@`Z{??xD-6C|dbdQ~Tk8S0N9($V zh_=30a!l7eCmZQME(<cZIAHbbmV@JAap`v%78erM-fJw@S(?WGz11^j<(1_BOchTK zo=SDy-D90-UD~j^Akd-apWU9v9CmqM^j>W6pOCO3?&jvhsoTv9O`|_<E8df>QnTV& zGsF2+&I-%SO80GBeA6IkW~0SiuKj<OZ;Ew%nSAHRpTBFStu6>vy0@&wODsPnQ@Q69 zx0&5BFQ#v1i`5)*UU^lWk+duB3-LK)^|-|Np)~J7)=N{j^`^Acn5>dszgkGk-lihr zY;*I9`5bm9H>aOpc5Sn(S^4_STTjmXEy3qlS^Dm?@y?ISzb!S%S!p2ellgPK_}YVp zU!ANa>L$vDI4SaEZt2s?`e77xxL^9cTla>(Ke>mO-*!BAe<O1mtK3V;+}`;IP5)V* zQV0;<`SR@l_rYm#Z$h~>93wXzs`H$u*qE-J`lT&%)``3Iw>D36ez`H{-u`K~r)>5! zTejcoPhYUvQ-_?~XZyKRzwhfV)N@(#HB9@dfPBcI#szmwQWe);|4=knXLiZo%zfOa z{I!}t)WrC%UB_BtyLGo%P{-S4u5%0asBxy=nH}(_E9Oe-(O=)sJvyVcI!rII*0y0H zpSscgW4Gq4S^NFaw%zBGZa?I{{VpN5{nzaa=`nuy7fnfHW;eTW*HS{O)iN^CTdq>n zEGX`W)sKaGulc9FkK{VRd-LF%yVF9yB+hC{?YnB^ayu!2u|53Qjg@<}x2ac1Z`18| z?>c>9q14GNt7S}8`$hB*-T(f0k%gGp<&MYfK_OAfsgpMr?EEeMPyh0LkEctHOD>8p z`IGV~sy<-d@y(M0)cN!OS-EA{#?L?cYQ@nP7c9CJWYaAS`b2G09Wv%7&t2lN-HXZb z+}`HL+byT>l-MqR{AiLiPy5!s=%r#Wbu;&W5&gdQpVlR}g(3dyj8nA4@|P}IeMNg} zEB{IR&-xSPc|@GLUO&4r_hIU~vMEp2&6s~r&@OF@x7v!!?7UxVEDLA7+Eo0t@`-Ho zbcus}%%4g{U3MPr^qJcABjlBmK<}~iT|2ot#AGw)eG6VTQ@P^Fv6;ti1tf3!Wa}H> zo+SQi^_-WlKkz@YT%lX|CVNuE!eEs`yV$2UG$JoWomM+nVcFv<H+Q49sT}{&{ZYHQ zR=({>XAImgwCCPb-R4hjJr6T`*;mFMHlF`T=BdWDbm?yrmY0%sdY8V)x$@%0)SFUM zZ%;fm`IXBIu^DaIn+z_vH5Yj|1nd(rEqSn4qWoqlTfnnbE&uLW9G~F4YT<E-Lo<(d z1+TblEL-c#YIAk}qOb!NpF~w#{wzA?e5~WTrbH+6W}l}8XCgGXFLHTEW%DL;Y_wtj z+HunFlLEI)hsJx4Ba^kC2rds0E}F%p719#?t9R8#@9c1;Q`V0J1xuI`qm*Y&{kmYP z=%JD=n@o4ST706UYI8{I?7m&{pYwTNoHVSSe&^x(=`&rXAMiCSf5GNH?~2?1NgB*& zzRo*jYp`gA4B!5V2j1M8k;duuO;zkdp^E$EUxzzCSN(33T2j1WPV-awl{XKnO&9$7 zcgwQ(f41yf@4t59r@xH9{#pI{u!K=z<{r&TvHgy}W)<7boxAO?*r`SrV_97j;je#` zx9l&PQy<J!`f_*B->X-u17F1-RkE9Zt~=<w&6$*cr9NM-UV6)?_T5(FEAu2i)i?+D ziP?9p|NfSZ&gA4gGDC#*18@0s`RgWUSL;sLR5ANk#SH1azI<9nwI*jot(VyRSY;Tk zrEs^cDp~rhTDP#7#;!LOw-zn%IJ(^;YN^wqGLc7Gxr?icls-mYi}KUy6gZaOS}^yw z-v94&`X5Q@Ecp7V?#@f&LRp^9s4VANTfyB<o1eb<vG!J7rNXi1(6wx7o{cRLHf-NN zCskR$D|h|X_q%NWJRg-a^<Qq7uby~;ZO+H`8xb6AO_R+Rp1pQbc3YhDg%c_#8gf1{ zB)urI(OU0%&+$p@`ojKiwP!y}+&E)T`jvyR7Ka?y^>2!uB;UK>+}uOPH_8rlu3mih z)rGXerTt%8GemUful?6A%>B|mVxDK@+j)$W{%K9*&l6Br3DB-`{dBjzDp|(tQs$Je z{Ys}p!`PqhI#Swks82(Q^H}Y&LmB5xMU-7-&-@X2V)ejl{cGutwRZ!b-*71Y`HFeI zSyicgkdN}bc|T6v$apYew*Th5FONHmKP~yTg8A`UwqHW;0%A+l);9F_97#}5JU#E9 zt(D2dO=tUmADGSh;PG!&i^YYjj(_BynBQMm(DZX+>#VDpbt<`~duxr(@)s}V%VhrR zJAZ0s)|u0qzMZS}E`<~}U4P?{Wb|0i?)}txFPf9|QkrJ%EB>AJ;BJoU)#k_*t-f10 zuGu^@_Pn`1dcm8lr|b{S-u~Hj?i1e*j#E9>t9s4a`yJU?_3u4px?trP!5AJef2Eyu zX5%S+ZS%IM)Y(PJ0o&Fre}CYr$$S?ZZswi4_V(3Wa-7dDke$$a#qaQyAkMq>J*KSI z3Gd(RerbNFv_$*sgvE?27@qb;O!yRM9qApIoizW{H?t{M0+-+O{wDd!L-K}W{lVD2 zuh-lAS0<h^a4N~=X>&3W6Tg_gweAQb|FVs(_p00{L@kUq>WkE!nJ~+&thXffEz822 z6DM&-v7ahV-@<2D8<@By?rMf^;?D(zt#N!e&R(?mHepNLDfQBd@-OY_>{c`UjznM9 zSh7M;Gp(n6QreQ=qNVJueEUABcQrgOIVZSoQ>diqtiw-iZ4}R)>ykg-FUk4#p%LGM zy}D<v**v<*Ud(j((A!VB?H^UHpEo=6^y`uISrhlh)OOuFoL4D*@5o=pikY$;NwRxo zYW1dHlTp96D$Qkr<v+Po0#jC6sV&^zTx1%+v{vbr>7(rB0h46EaZX<?xPHDBtM#p| z-sd`Yb@*3sS*Enqs_mEhDELY^;x^x@#M3jj^gr`cpPYJCp-6r5$sC<}1qPLyvyVix zd}CKTyw9<4iut+9*H71$Sa_UxpK;*y^Y}+fexJo&T@{^K{8Qm*^|!g{{x#Mo5BDBf zBAwV5V7=4TtaSOa)LY4oUpKvbplfvh?wh>BRov^IMxNQ2_UhVY!Cl#!*XLzU>ts+a zn6}RP^10r4{lf?6{D^AzNsL~1&N1tZYl3P1f|~4k>!Qq0#PIrkmQngsz`8KSQZlEm zt?Y(4+qR8w++Onj@w+8ZFne`QbBW*GjL&A)^OpVIc1)ov{f%Jyvc<uDKU8ma2+B?F zRV-B5SvJ{EP5De!!U<lU!$-buYM8O}o$0&c4r4pfjf$-nw!0+Vxo=;yT9r6s-GmS2 z;jbhviKb}l8V65Gzt_1h$#SParrx77u6ty+O)WZB7x!>a>yxi6-JIXmp55N}ZlCza z{C-2tZwo~3ZVW8&dFnOoM9jyi<1>n0%$=36{Fm=Wr7PvTn-kicbgpYM?vltY*&O1u z@72D;`5!`rwphk5eB!Y4eQ%`AgJO?eT+dWxTHi+9`Ov4!Z}VbzUVq`Obzjx2Qg7_{ zP%Y_`w%T^-Xrs~&Z|Rp?-fvtx{rKDLiQ;lO0cIDhME$qCD;I9rmpdbO&$$<B$9dkX zWd){NPs(8z?-5uX+i`Is$K{YGjgpIx+!X%4_@L#21yO5?9>%TmI<w^1$BO$C-Bg1F zbzEKxRZV%N_+*uIsJ^`MHdd$3ub;dxx<9>pSNes*SFtTq%7uMiXDw0+X{+wLV7(;l zrD&(8>;k5hD*LBBlQ7d1<Da};wQ98$SHN_yh}LgmfBXV-JKdkGy}KuE?FB(@1JCoP zfBG#_*n6E>>$&Tb#xqBf4lCVDe`P2p^dav>bMBubsT-W@uGLSrIXEw~-FH3zjnW+P zy8ZmOZa*#m-rppC^>hhCUToERNroG;t&en5jqiHMI;}ftmRtTjWCO?S7cwUrIOe82 zI^ue>TBr1;?X>o%I;~GR%#!(DuR3}2)XyI^N<B*I2J63yf2r=yWc?XDML2%upSqIn zIgNH7?!HJ}!WA*6LoU*0)v_O(f}d#FxR)d}M?6<3;PMOpYSJyxq&ww6*)NGt>zvPh zt<e9qGNx~*;cO;R(Tki<>UKrM^;jC(SxucbNs)_3yJOvy(;{(Cj!CKJopJbY*UP6q zJ*n(-?VROjrM^|Op6XMy^Q;qJ{6R>`E&Azqkri*Qu8{5ew&JUZ%ZfLF_kwOeU2{0= z{L{&c+1GM){J6{hwD2g$`jsy8-ag+uDaW}^f3;0ewPS5z(RD|G_&I-0*S@c9>rwu< zuE$a%+3r-uO9si$rXiLWMV1}xGCgMSTq!Ml%E@WHn_m7(J?&=8^XfYDk&2H^o7cT* zQTyJm6|!&j#n8q3oh6N{*u5^d>+W}-S<RQ0Vf1~`8TY_vc~kUPo&5f6-~NnGygjV9 zRzz|*vmIlyujrZEl>b2Uhv`yr|I&_oGLsF364a~K>CG=`k83(xqIitq&7C(3T25Wj zeY5$><DWYl`;P6@N&anhPA4Sp`Xk00n+!gLNBFZVwyu>B);S{7%`xGSnA1+d*O?R6 z9q?JVRA$$H`D(j8V(aGBTCY8PH^kRrrf9tt$I{mmlP5T3Ygs)wx}(cD+TDrK<Z{)i z@H$WHSo@CRsS9pAdXOmB@%qHoYLEVdj;9pZdBl(KsxD9$_<H;%=l{(+IMV%VzMt8d zaggh4pP&I(#Fh)a-wTazhTVQ+q5l5tDmgEK>DqZ;3~V0U?pUjR#i}b~ab#f`_in|w zR+02MKU2;W%r^1pmRyjWd*PWtgXhsN1&dF8SjS_#ATCR;ZRZcK6Nb+hh0kxi=pr}e zAlIhWYm;s{7*Acnd0<c1xn<fXL>c#$K7G>ju1xCVwa?KnRyRsk9OF#ersgO6;O0d) zRt3h`Y~Fd>ry59|-<+>>RBFj_rHz$Oq?}%eGn;Kri8qaWkrs06Whmp`pSHXAO}*gc z!en(aF6rCLnrDgyqCd56I%p^C**UlEM9m}q7|9I2Elbk31zH+-rW^SirN8=iquoKe z=!e-%?|pvHCVo6ozq>Zefsdp7kH@v8$Ni5<-8b|MmoIQOp0_$q_TF?WwVBHkzEm~8 zHS0-U&Z1Je=&j?eu8VJUzqB5>`$AQDvU1(R#{zvb9aVp--E^pV7PjZ=ohHLCD!(7* z#2)`zqnKH;{^R)tr9}bfl+NE;#`14gt+0L9nTP5Vn3}?Gn$PbpJi4;_j-WGRWQq>& zIev$qYvOeOKV0b$zdl@xtA5o}d$F6`4>Xor3uu<Le{<MpVjm!JOT&4+e{6z9TFepl zudEWYTQ|k~6_ne}+|b4{@om3ARJNAgVNw4t?&(YC+?Zof9Wh^S#?u<jiCyOwh%Ppc zXP-OOLOk9yspe?X>c&FR?mG)q1Rh1z9?IqX!q#V)dZD^_(TX+uwx4+1YW36Wc-%?8 zq?rqP_;p{{AJkUpmgw5dSi>6B7qdR1>)>?dm#5M-EL)|Y`u?-3+^x&Kr{)L4^0#x_ zSa!eO@x<q-uJj_)BdP*X40gesMeDpbym7Xh=QnS{`6G8F4{hG@{mOyO6{Shj%Ea;~ zUrV|#y_{{{qszj|h3SqbvohV9j<VL7n!jlL+4!(vbxHS^P1AZ;sfj*u&1_2)f0Uvj z-)FaOncvykV@yo*=G3vsD4p<Hl60v!{qf1V{mY!!_imJ*(ZV|I<%d~I?Xq>!e48TO z6%sVn&imi>Fu!=WK-uL5@6A$)pZDAE<)!z0u8pjkRhGC@b=&2Qa~Jhn>}gK@yh#73 zm9zbkZ>8=t^v@`AZ&`C?Z&Y3C1;N4&$$6zV${!2(V_oJ?>GNQm<zKPm(B4z`9p+EA zX}Rls&HCNkGhgmroPSzcX1~Go?^}1YY&?G=*hb=b=TRkrUDpmKO*%WtVM6u$(2w#~ z(|2_ll--sVw>8sfwK|@b+5BbKmhh+t_vV~?`tpR6?)2wZiz@FO`u+6nKi5yTjN(gn z{4?9;bvno4ONh_1i65-prrnNMwf=C-Joe(sgKvEP8tz#+O<0@f&-=qu+|s@q)#h~T zUj1TdXBQxU{%FLscQ1EH9x2TCl8bOTx^Tu%38Rxgxlej1nK(S(ef{_6laCEc^p`j# z?vh(}X8x|Z?|5{aZWT{G>-VJb=Axz_CQ%*=znp3|&UW_Cwfl7RrS-)7Cx0CNB6Q~P z#~bEW?-=uBUe{XM)xP?6QsA$_wwZkazrzCyS1zo(B~Yt8ZJFF$>FLYgC(N8!v7}_n zx;C9f$!$*Wg+D6&ku7%7k$qco(C=l@sj%RqTjx0FEw`Vp*POq*{-wO<x~1|S)j4*z zvvjXzFK%9-YG4~C`fHlDeC0mT<nj_V=h``$uNp<7p1!Q;h|9f^e&$fj;Rz95P5Dbz zFKFlS{!cqnzcosFg{$?-?HhSq=k8f(fB1(|nuNHN!^uF-yPaG5GPdX({5n}R)vlDw z(KgyT@M(wSjCsr1mMO_DnQ$)iDBp{q*X!=cN;5uS^}p7zM|$^pL;J%9<{2}VYbsia z3s!p^xt{!mGww{lzC4|yZ;snUF`t)iZqq4RnkxV1vX|w7P1WlY=2-_D2re&Bcwr*z zCByNqXokV`8#5Es->(0lm%BR6tf>0X>{F`0%v5_`&fTQ)@zs@7J^n|(Bcs~=-6Ut- z%;b%;b!awU{rvR#mHwGC4a;qUjC{gZu6?%WaE|WO84;gSt<G4^-SuG2mklOD#q;|; z7C)HsrL=r`eSfmX%)U9FF8?lK-h0fDZ`p-fziEa|%&!Z|D<<TNo;I20BYnVd!Ksqy zihbMiE&T0{akg)nlVJBzU1o;xpUoy5M~WOL+Jq<R-E+NhkLA5bZn@a1`FpKxo_wzj zUO9b7!oup+@z3|TZ{D=`h4Hh6OJ!fq_Pe{{xqH&}tly7(a*jSdzu-;V55HRz9lGYl zESEI%X1k$a_<HJH=|9{i(tTdS9er1B+j-O^Yke+bPukj86`lKPJ@>Z5Y@JV8CN}r| zu{vmEwAw^^>LS4@cQv1^Og#MAjeVy3cd7V8dv0VMx2-69Q@X(X@`T*i*6Zi?3q3E1 zn*Z*(SH9eZ{|=A#)O_tcdWHAVk?*R4<&7amXMRpN^3Sh8K20(5zsIM&jC1Pedc6O` zn5(Vt*8FGL_oZ%cOy9k5FXsJbzciJ3y>-FIIj*(OGq<UpJG(FD@eakk!VxNWl8^k^ zopWTafyXuX^2KkZJNa((&B(W8a`Zj+^zY}@!n3ALtd{nDn<{G{|Hk9Qmq{h_^z93E zb(ubH64sPm@V)X8ldO-z`Y%s2esA6N{*aBOS6f`i&n}U#_rGU~N&gLeba&rpjsu5T zKP%YVZeJP9|14^=0Y}pVfma9H?UconzfaW&b`v;Kx=CQIT3Eug%U6zeI-gwmV*cei zCGJ&LpO>9$@NwjysV4Ax^Y_Si(@XbGyOlQc{ni%I=+JPNDJ*>{*WZ<iOqHxYyH(#} zm#XlYX*c7a<$l<gHRso)EwYQ3=-!C({I_PFC<E8cy<)Aa4(7}4JMO1C*>`S$nMY;f z2k&i_m%67JSrk7ynBu2#ePXEDiwzC$wk}AUo$~3HjJ~Jwm%}ZI8jS+X^0!w8yt)#e zRo}ge$=alJ=CL&wk2z>cm&&9jZfx2b{Ct~Mx?hccCa3kptaFKzmrE4M2CiJ7<-Owi z`e`%5c1T>_9X#LNWl8GWPYs!8v{uH=*KX+l`rp$v>ek`6PqM><-_2~({E$<^7r}mQ z{^}hY>bCNP9Z=2JVVU^I`uN;mdBxwaZ{)vUBE5Px`yT$s*2_eWWP1m_XR6shtuB3f zVy%PZ{;0p}ozLw*pS+tb>XPRz^GUy!sWyJ*w_l*cqoE!=|J*INyd$|H%S<kwF^t)e z%2iTobujDbx||y0k7o~EZ&}ZHf9lo)yYv#iR_xMM@3>!b`&huLHT-k)vsZa0))gpq z%>I~~y0$K|K2kd7>9aLqH8Vw4XFG0blJwq~a&hNJ)91(Y<#-=u)`-_K-u~w;ulINF zl4o1n-Ja=r{&|>d`|9)O=bxYFznSBiBjYOKuzT5`({ldD<Sq-}=G?aYmRSPJW#es; zIT_N<5oeXeI3*dGs%Lbvzv-OWYN4Z+H1QClrjSe%OUK&-jEXEWMGqPrJnnQjI2AN{ zG#pW4d?Zr#@Bd$0!vuvEj*UL5@BhbNy}Ex@y>4u-W#*Fo%6~gD-`f4)dnbCN?qTvn z?}rT!dRn(|a4wAAaA?8=(PJ%|4{II<CA#g1n;|}}B{gyR2JaiXZv^Fp=ZVb|{>G)x zy`KAbOL@!RL&pzIKg4)Yl0Q>W$Z2~*tD>TI4`=Y9pNEzn>M7W3ps&Mu`jB7Z^bOHB zlx@^(bZyk%h{lP<iGSmK&+)spzg54Lxv4nHqkDqDE>>+G&d5Zc8A9j8^+eNJUbj{z zdPazqaqVuodr0n~;ls>_mWk^>Z2GWkgMWql4gDIO8ci92IhUQIT3RmXMkIQi;7UF; zrC?vdN(1E>{WIL&hc;~pzM=X?>>Ecvr$6_3&g$0bt=C&?4~aehetG}jUwan_&7Kv~ z^hPmWm2KiY-}*EC_TD9VmY=(H#bZ9)<~{k<*;DqGr;X7=m3{k9d)9~?Opa4F4I+dt z?bn!FDbscH&zqQwfqOF!X@)P+FFVurta~xnf6=yED|VG^zqRJv?M+WjtW9b@Wj=m6 z@y&;dU(Y6Ax_K*RZOB?)`TXO51?z7F{VXVZl42clPX9@|_Rq&}ucpV<6{c<5Gege* z{M2;sot4q&?gy<A**^8niIvOe+1S;s4KBA)>vO;SqVSBoX#dUN&5N^b^UglKl>E9v z`fT5vs<oTD>kD7#OcDH=8+~Wue<!xUee)x~zjrFkdwpn|SL?5r7CVbfU&l9^Cp4Y# zyyf|#f66DD_ZELUA6Fl*u*zb0vt57xbIEMiW}W;4m+xClTUU9r=lc9!l?_iT-<{ss zenI@DtKRgJx!R&#(TCS1Tr5}^b}E$bo4REAn!1IqFCU)pTblRf3)^c~k*a;qPHZ>5 z(w4hdBKXbznkRqfd;EK!AAE0@=B2LOoWI>`&*?tg<9EO4)T4u8;w!GQPsy6OB+SS| z;=prJ)2~10XP)}GmODk%duQt{-k<STPyV^s``U%C+wG6c*VMXgM)7m!et!Pa+$AGc zRD1J`i-~I6L%5BP1}&Z9ratvm&dR8j;SP&mE;wAt$Em?{%2;H|@>wDo*Gm@$2QsDJ zT3F0*g>!Y$4XOKDsZ&jVw6}&7DfyoIq4Cv(GufH*@0!Ufx?d)KS}-|8KS$xJ{Iefi z_l2zj7kH{3_Hx_AR(<f+Q!ByV<dU){^)^}ew_Z%U;Io+RR7r!`_ZMNU%hqWbR5>%8 zO%r<L_H(AlEV-Fty*e(vPIDD~r@m_rTf^cTaa+Q?)s2l;^p5G;={iSB&Tbdm`#QKr zi_JjzjbpND>KzBikn<uJ&Zj?Ne|`S<m7aIp8v1!tc`ryUdCgq$yj4Ki-%ds6<Tb{I zxD3O?7oIgeoc)DQK59~oZ*t}8LdKv7)#44OI9~ef-EU`hyG~I;>%#(BZYG1vc2(C| zxu5Z@wwB*|`SSi1hoyZVp2*MVS1TyF*R5Tb{J{F4^uyY;mnXJ=;o177BIfTivntN_ zxz4Zr_lS7^e0w8^?PRLfRp|ihnNdr9SZ%InKAN^|>ZeRA%ak9vvGF!DcSaRHWGkF_ zujuL2=Win7&h{pqeRF=#>DZa4`c6H(+u6NjR=i%=;jL|R_bSG7OutonRo1&Q(&K5( zz7XECt+_jAJ89P##U(sSdHbvCL!SD=<6+aMw}$C6Onn$=Ghg}E=lQ)Ed1Z`?zg$<+ z3asf`WU)!gl}BlXh}Zofo!JIO@&!8ki~fDwSR!Vr_4F`@_r4gtT<)_`D?7Gt(iN=g zR4Q38`~JR@d9qJ+YXTdsIRfwI)m~T@Zx$!Jbyw`m89@TZyOt@u`psaK_H*j$8X+!M z6NSVZTXNchI?oDSapOL){z}}muGE4H&t^TCY|yndHe34s@|u><g8Me!jF{H7RDPO^ zlEsSO6_0nnEoiUY7;#eemx6U`(#jvJ3nx{S-*5hSPo_<JN@nvs$0}t>)q@`rgtJ*= zm*_gIFj=`p@?iBQt)vf}_nxO$mG4deCH?I2!j|6j$Fmexm`*lTnmpBK=9(N)@#$Gl z_soARS@j@a)=XyWt9;(uBD~S}XC->C<%?duw*St>HNlDZxZ8D7-P#r&*NF0%>AZrE ztKIz7gYQ@C|Lomap;A^^xGC-U{&u!koL^V#&M&JeKAE+0S<sZP-w!zJioCt}zhX=O zgWJuo*YW-_7WvWMAGE-H=hq|MuKF4`mP}?1s5-bkCCV;T{bxz-wT{fq49}MM*<Eiw zd4TO&@P$M1T<OiHe>ru$l1p97dfw^EQK7r*)qX#)*t7WN(aAdl_mpe>Ju#OtW77t~ z!%>ctww!;vcHg--JVy>~cW+pv`JnYi?lz~MtxX!4@m;?cI(J!~zi;$)Ug_p{&;9#& zpXp?{zkT)APK+%mGwH6Edf?|>VrD`Q`R6XKeV1^kY2l6-7TGImW|vM{olbn{zh>9X zQ}6F(3QcR-SbF*SA0E$8@oB6+i>%m^owAI#Om?c5U80*7IWwS9a_U2gw#5O*jRhXR zw-SH!W!)vu`Bp(k)%|vTNns4{Ej#2UEGHu5CZB34mi*_;QieqjjgOyEDUocgVycSx z{yE{8@3kFbyMi(*CF3Q{Q*{#3AL-4y7V&u5Lzc(M^XyJd5_sRd<>P@JSN5hz%<>Os zn<IWi01=On=HI){d8Zwg1fBVez;qIe|@~YhuWSMfnd4J=n94EsT{n=AG=OpS;8D zbH|os%j>@{d|YX`r{S;p>R?@7_sO4D@aHlf`I^05`$Fu)MFodfl)jkJAD;CjO`vc2 zq{j~`_A=XcUsJn$*3L2MvRpvov?_=AsTVGG-(*~8B(k8A)0XE|^o|v4`F-r?-(iy6 zyE;+$)ncXtvsGQhPc2=;ZMbV%(+qW?GaD!HCQsO^!g$=Ik@cqVg4Yoqa}FfFo|M|1 z#}ps6*vo*mQ;y;1llHofZx<DIOuqC$EF-m6vOML2)1^y2O`cH~G({#S?swr2_?lVu zCs{>B{FIoH*3Z=$Re>U3qy?YO%8_@my`cGcX72@`#!m?h+;?~?7YV%B9;V}ej4?>J zrXwfS@#k5!1j$>MRcb}1g$M8V*kzIMXP1o0v=j%YkA6*O=X@63`Te9JZ_B@PD?h1S zU$fXQ=fZ8>NU`Tl7ne3|oVG~ny{Tk&<-X;2f6aMTx^({DVkvH`3dXdW1EzQ0Nbx(T zP1+(~_4Tj73!XK%nS<;~Ui~fiDXzI!nzO?uu2<t`xLQR>Rpohy{gZ{?C>-O9i~g8d z_$G|?U!aF^-cfZY?ybo&i?=`a^1Jl;gV#L`?VXjzJ04a(xA-KP@K7YbQdTm<Kk?k* z80&_*Pk#54uHV~p_*Q}Rn}h5<8fI%Q+TRJh!4Y}cPgrkt{#JuT#m32e>PheQm&+ef zXD$=G9RJx*{ClKB&*^hBm)$X8eQ<GVR_)S?9d5I9eM4?>SuxmTcrRRH(DNxO|KQbp zO{T!tjn~{)SAB^2awF}_-SQ|S50wv|C$BvhITUl`MR?e%9d8z%e5!FY{KQp<gtR{! zw#)v?eYaM6f(FC4E9V$qT+S6>bYIE+gT1$!?`^@Rf1VX)=J7gDU-~G8YhNwexaI5o z@}z^!$KN>p+t6?M^XQ#ReTOYWo~=$iU9u#y_!!IaoAYMR*KJ=Gl4#BI!2eAwYmc$3 z$iBCCa^9c1xHyO3c1LER^d0ebhVJT#4@ABn{=4CUo}$G;)g8_Syh3;GGPCdtJ*mEb zJF|MnZ-0r~FJH_yf4?_B&F`=l<6gyO8)iBNFOx~!b$sI8v|z(Fz9nS=*RNJQGCgW3 zsh!|u&1kkMs#YnIx6@_W<fW52dK)hJY8J07_L#+ZU+Kr?)6+Yp792IYlE+<J<LlpN z-Km`V^<3`anTl#_XDK<$N=`6zt?_MVI{r1JwOrXy_K&veUHgf7b#>V)rM5E@S?a7A z8%6#pF<I?lVwx2cGM(|l`GyPUzdcy6tYzksJtsY<&A6%OYPGG$YSO{krLXlKcjpvu zUipA&qfor>&HiNJzfmHeo7k?Z*z?tuPn<j9Na$}xdv*8zUvs{nQ_ijad(7xpZC90J zzox5B&e{&A{<)m{Z$<4}^Lpc9MWc;E59WmAsQ>xCDoUj*-p}#=)zs$}0$Nu?7O-Dj zwCc#5cTXRz{Uptn|5*3`vE=Qd(~cB;zAnjn?Pi+u*)x7+dd_XuTf<}9vnF~iU3&O( z?w+H2B#tM%o!B^k!Zo?qtFlZagnLTFye2c&PrAZV714Y`_2P+*>02(koa?jgEG>+! zPcLJOpZ93Dy^e@sC3}I@^S{^qo|hedQoBFNuD<Hgji2Y9Zd!ik*4)^MrJa0#BesQX zzi9JO=inP-v$J*uuM^9JqE{(!U%&R_j%4^BasOl6_UEY`GBDqMKXG<%d+P75x_dl@ z?XTx73Qq0HdoMI?8TT?9d9fZ{|3j%0LsA#7y8X{HrEiksjvodqWuw3KH+rfZbqMgv zXmmIcc7?y&<XVQvQ9HjyDvLH;ZBv`J;F7KLVYf7n8EX{t7;bjdX?d5PI`(}gZ>GYX zZtc=d@!m2rxAq$r=InlFHv8Y9(qEU=4tnw*%JE<BR{UvS#)WTwTJLsDc66DrbI~`k zYU#5Q7iCzJW`x?fPwo4>+K4s$h1j$BvwDiodHdg$?XUU$dujB%bLWzbtk0JgR-Mo} z9(UGF`1Z!vF+o=~PMPa(PRQn5`tgU^yMXP>Q<Xl=4w6#!zOl$hZMohJW#3c5W_Pnv zTbOM2RVW=TTXO2$4E5ta%R0MX?UcJOFmu|GfIK#B=|7Rh_pbzTT5db6{9>Z3XZp^t z;^Rp*a#}&6`msw+3aFhtb%gP;%kT7){=H`$8m(3yJk>d)Xx5~c#aXo<L!M-A)n3H& zbK1%2A8nN1Ry_~YOV+!stUSH&QB`5YCHL4Lsx2QrE$GciF<t&<V&vwBEB1+>y%ooB zJ$iS7+R0w+<jeE#`El)k_x1;$VaK;wQa4XNob27TFfmGf?($s?>t?*ZP-S#z(RSOc zPaSiXZ{6k+eB3YY%IT@bTpHnpN7w#eA6ppx=blhHx8BdIhn};tC&yapc^^_wzEvS9 zW%;{EWMasL_a28YKQ-HxQDr@~!ddFDr+M$!?&n1&ELVK&vyN83RF{&!l;K;y$Wt-? z`TLSmb;hX7;;bLjX05oXx%sh=_^l3>UweZDwN~!T_dNXZh0}%SjC%cRH_KShoafS2 zVmzZLMkr}RGBa=c1cS_o{fSdpX8v8z8zjjj{Pv(x$drh@B}a@N*B{D~cqKfscr)*| zAEKv!?%wpuvOPieoKrTBuc38df3v9Dk0(ir3d@Rq?QJgOxmi~woj5Dy{fo2vgpH3d zD2X;aQ(fI}a6U~q-P`yEQ?6Fkp~oGCscioGf9B3yf9ZsL{&VMWmB7kZ`P)AK?Xudv zYg_)m2WgELtZwI;-SJFaTTs3{MMh&?^_HU->i*XWEtcSHm(QNK_~@P;xd}bi-)6oG z{Oz-P(T=$>GHWj!{AaRf;xmrwi0xl0AM={sSg`Zzc9C5_es5p5k?-gv%UfLgwU68u ze0`+QaEGwM*){U1Wj4kya`+i8&w4AVv{Bf~Rbge<*<u@u4?;(d&1LXvw$$i4ap`0M z=dv%RtMBkVai5a2%<MYzY1z|vrY#R$QuU7G*|WP(KliP;q_R@hK-^vKAp1nyV=o{5 z5m&l4m0|h89RHrW7{@CstZy+M`X*{!=bMl*`LxGI@tFaA3#u1f@>P1K^u4Tm{tY>| z#Wt0`(N}lu@H@rP^@`_GXd<iMq}LpY`Y-05`zD|%dpJhaa&z;R?}Cl@*%S}P%3Chs z7w)QJJn-$t&c<zui{4vB-m}Q{X!(*@_WtD!!@l<)lAq{x#EYiKSgXwYu%Op%Pr_vO zH}@PYMGur@I(xtBel94!`QV9&Z5nm9GAlRe)Lh+=`|M+-)1Ix-d{5)E-j;AJxm}T1 z5fu6UOPP-&+gS$JYa$0viXOY7eEY=S7$vW^>${At19RTJJhkTV_M4sxmNlC5b|&%X zFHe4PPj6+WX4iJ}H$1XThtq2<PTKbONax;gKQWWxV&KC^&DWJR?`F78wDS>{Y`Wq% zed}MT8REX)4rgaFa~Q7^DgLN;BGt}FF8G_z^koe!>XU`m_3R08XPUIxKwQkBX7VjV zwxz8zVsiywI2rruH*$$is{66D^UV+8+d{r73pnPSVK{O{Zhz&T=~iZw-Ij6ao-O<S zh{rSDu50p#o<Eig=EiLoF}g0ZX|Z_P8jc?+p)8X(y`3i_dQxF;c8t=NvP0)qJ>8oq z8`^HMI4DF(^89hlF6l`wNA}2<T7Uc)x`$EP*i`8H#fkG0|EBCyOj*f&#Bh7)#FMWq zD$WMHJY#U-+<~O&60wq(os899{V?h?Yi89~WaVz2A@$jAg+lGT^L_VkHpssS(A8h5 zQRf`|_-asq&a~RPPfIMDp0+Hph`Vado*LwpyP=@%>d6^eeZuO8Ec}kW3O?KUF+C(@ zuiQhi;#-eYHi}5duTyn+wsq~JOBel)xHisN&{bZh_SEv+<nJ4QZdl#;>41Ohm6PqW zehR&9thyh!RGg*RC-&*ItChb_aIW<*dXW${;m6(GmX@Kx4qQjWil66Ays*b~y7(OB zSiLJJR#vGkT$H1-VS44%#S>=E{LZCmnRIjOwAw<mDSH+Rd=ZKHw{2F_q4qfiA0L-} zwd3aTpUwYtPT-#jclm47zntt_xy!+P|DqTAW#3m8e4es)&popUPKh>w`m5i3&KNqY z^vn}x>pd+0ENabbgJo%+S^v*<O?5by)OF@qQ4gD*0^??>O|vv(4i`6Eh)%g&(Ep_- zD*BL=ntRN_)~oUUEO(_3S@oXX7A3mbrz_#6n7ZqPOX<(w-<YxT0_*fsYZ;3pxBolF zJHfx@bKbS;A|8`hukY4du($oVc-Lrdmg<}{M~yd~v@zb;Q}fAcfBKBJO{?Y36fE7m zB&2QUtp|x3?0(yre?0!i(QzP0d~>0lqwCy#|7zx)x?^o(C6Y8}&rZ{ey<RQ97C+5c zWuRKuyIoy+`KIS9eHTra<Gqy<5pkfUZ+>^$=7%D>vkcG9PBuHZ=mJ~s)td{{7B9?O zUb!RvYkAo2g%-*RQ9KFPA8xy0m)+{s@8en|!8a%WN)W&A*(WK9v&>pmedH<_J{vwN zjnV(GuJ)5{7HjompBSrkPfwIDc7JpCp~}p)G7(pj7u0T<ZU6bvrIT*|d18)KK6`Ab zb}cBY<8f494!ifwcbON0+CMOOY$*KkKCEKS&KmRO_ZKAZK5JRMBkh@cxNz2wk6A&5 zo8PZjn>R)8aHR9(S07KFoB4a!rHS#uv*lxFKao`4EavozwT$PKV{_U)9adGndy5X< zjEN9wo_pqWztW$Vb?1y`#4UD~S}n`>YySN9lWaSeD{s;I^D;nw>4rrcG(Jo6t>S&s zF8jDum@&*KD&uHo$KxnIwsp4Ufz>st?|*O{YOT?g+g4HaXa>ttZ-+9mkFD*x4};(R z4(^ST+huR|P%_tbRa&xbs<NVvldsY2UGJAHSu65SBXxHDny+*8RVRMYs}QYQ<FYp4 zkkcd|nd?Or?{s?g3;g;U`jU@}`MX`1a^Ruts!vvHTPvb=1twQKaSz-0|6yp&CN5Wn z`K~cN9!K}=+MPc^fa}?oyL&c$Wc$v!Ng;2`<{Ngu6!*>5&5Vh0cW?bG`6lJr)4Neu zD!k_yJ#f1+pL^0#mW`Hm{mVKY%scaLZS3c_!Z%NTm%75jCE%nkFn|8D>%4rK6Dtop z#7cXtx_akWD{sDVV07A-Yf5%uX}o=1VIhyB1GY)ubo#zA*{7#sZl%H@e%`>zk52}- zJi91%XAid&w{pG3{S{Trzm%7soS9mgT{-1Xn2uJ8v3Y{KzS6YzqZiWFy>gp)HKisi z`*D=@LWu`APRhNBJhJgZb>_V#ol75BY|rK@h%EfU=GnMtQbc`4#_6!EYbo2(Ict`9 z9P8#-`ckImw((rCcG=6vJq}*id|+wa+x~j9T2`b7>zU8xjiK`ozWtP&DwlU`!mBgs zyRGI0xY&NR$l`i?H+X{fm0jCsG@kHlHSE~9#69R_rJ2c7yRh!c?n~iyE%$6Y|Ly+b z$M9^@T&2D5j2iPF>j?f~&2gPw8&H1un#%DhPKTa_WMnQ?t?53})BS$aU9ZdG?=CU~ zdOueGq*?k_{+6L=#Ky;6)4BA6`5tY#qs3M5$oxp5uKJ_xiEAsra{RHnvS;n|uI^t; z=L>Q_Nf*}-e!1YSVO>7sM@@$b3NsUz%rdNa^lF0Bs;kd`Z+m}d`{I~|GaUZJG<&RY z10}m{wbRW`b|{#3o%dMcquKIE$2)oRp6#r~VNW!crPj4@ALfV+&$TgBUnp(3H$8T` z!|9YbJ0T%0*E2GgoyAW%J1u3kea&0{>teU(p`|`IIh_lYgbF3r@w%V(IboBzS@qu( zk;4Y!B2lxJnm-rYGv|r#qiZ>Pv-XwmdUR#y4Vlf_Q8T9(SC^}C?>s2l+3-0fb>f2< z!AzrTFLnuS4xZt^U|CPLp6SYfzpGm2{|-8LYx3^bdPX03(q_-KF-vlt?Au{D!$;D8 zvU7A`kD`o4z{)+>Z8j`^oOwpMXU?m4y+@oB*0jw!%&H@^<d5gU%}tXk3$LGOzoOln z{2)sGzk~nxu3sr~?>}k$=!!j{m*yAy<2}=#{N$c_o}y2gl{$K3+ZjsFKMp)_oAv#l z58v~(|Eaeep4@!oQ>>xSQL(}aXZao;=v|(hP_L->%_P*tnKxQhhx@tg!min6iv5wd zUiW2~c}AZws=N?c9l(3ms^sj?2Q#1V4$@Mav&?P=^9|4EsWbY_7IaK6^Q{zJuw_ZF z>jKAu2Gcd_mx~_B@v5Akdb!8)^s-gg=j;l8Fn{u~j2B@SE?z4=^j*Gpuh4-)YqvSC z^PaBRbADdm|NVjg>KFg9KcTVzvE)Gwd!A=okCd<dlr-hL{e6vmJHc7%;a@`zD!7D5 z%4gnn>NX48*|Xb-E6Q)t2Vc|QTaQ)0SQS@vu*Y6QwfAf6;@V%6-G0BUUwg4`-~7}q z;;a9fPBi&(@9xnJMWs(N*MHC2P%g{%d&Z&jFD>3B_B)q{T=P9#IqRy@>C?w7b#l^d z|5$JPdsy~WW9a&73-jyg_sy=eFP2jM*;zmFs@;+0{2!+k#_|>AFTS?ue#SQc+iAbw zlpEge77aG-_tfP2GvnbraqZ^2_ncWC&ExiNno|B@o!srU;l;M!JMJXB-Oygj+urgs zm0^~B%F#0_!8bpeTzL^Fket>$O?|$7Td`L=+dc~^BYxl6)o)+bysAI3?WXh6c^4Oa zvOcTKVf0reXZ@v^s<)XglaIWUG{5@9@=vzUyw5XK-8*!8e1o59bf@2bFtd<j#(H+S zTU{*kDkQkGk2ouTo9pI(p~uv}bYbJ$#C)Z+cQ2Cmt+lzxwath7)jBVhQ|jEZf8u^9 z{g&VNBlE{0?Ha~sndk0t&OH0raEAG@{N-lrWy62|_`Fkff#t6rU9p*2I?{hP9Bbk{ zAG)xzUasKdF+aPA&4RA;>zB#S5wV(_Kl8%d9}~`~UM;qLbaT0(T2^x|52tpiebcta zpSicv>gLUu?Ud)MBC5K>t#9XAH4%T=WFb|*&GAp7bLULt@My2KnZlC%XGP57wJ#=d zoK?vF%HQqWFy~>!lz(>LV^!28Tc6a}cO<{Hv1dM<cz3yYoBPZkv8!g8FI?kOWW)6P zd`5|a@;#nKKQqjaGsHTwyxStE$k_kv`+1ES4q0!-?zb_Y>Jbuqv7z+X7n8zA7uf=Q zOQeeLo3$GmIxxG}>6<i|y|r+f{iZ{B@tWV0dp5=RESdUy_oaAF$u(Xl6n+byc#!hn zTd?^@lUYQ;^!Jj#pU?c_-t^V_Z{UH1ulbB@%J=@)J*}5dbBHZgmcMXQ_124=Z<Al- zd}DsGW{2;)Cv!R8cAUuG;Id<x`|>T}_TK;H{)Jty)AO6iI_FWrQO#NQ{L3YNX3lY% z^W(`MmQKmbrE?S|1=z#vznbiQ9MQ?He1!4Ev;PiF44nOclN264dCw}eNo+!Z>Grqp zMES$bs$-|Hg*;?GW8W+9E-KaQ7s99z)~Ehvd-gfUS@#bKi~ado;dIm{$fHq9W}CP3 zf@bxcU)l?sukMq#nsGl$=E2NPhNj<Q4Gl+9_lw(09GY^iPPXO2#Pm~UZ5KKfcDz3< zoV8!be?!`2`F3Hi%g+s(-Zs7#=oIW(EZ-{3C;l_9>%O?(1=~$BN3XN}{%OQ3F!9#; z;>N}4dEaf>N}?{rc70jQ#jx$K{!xV;AuRiE=mxbc<XF7pf2`wQ<Gpo1HhKSk*%tik z@-gL&k&8dRcIaZTTJtz{qvap&vJYR{1G&|HiIo^$;*3q$(w(vAe{BE<-%7j1m!}l1 z@3MN(b}YWZEaC3YIor1V=1p+^m3@(I`qqbS4&my8c^nT8AK?@1;eX>WaRFcZn~B>3 z+j*H^E#R2(WeP`xAY1z5C<&JO|Bv3ixgy&7CS6&O%jLj-MU_XlE_$^5PgH5r{`BQ; zrnF@_|54?bXDvS;24sDSeWNJ)=AiImi<x?b9bfv7D|%gsuyjrTZc-=Gwjtx^Il;s> zzbTB#|Et2Sq~@Nmy3i>%Vcvg30j9<OzUoCDkeu=I>N<Hh)tsK~6;k)v?Ik{kzTtFT zzbHIT?{1w+%*A3c>x_`?waJ$9aSnZFdn0DIen?>X6*ljvTUz=P4gYs3@{ga0ueg07 zea@|<{SP@4?@2!7nloYh;~7U1PAyn>TJqS$gO@~3PqC^|wg3A!C^R!*TK|1Mzp0Dr zzII)<wo5DKTffxg-&*ri+y3v>pYr!qbV_e_;@9~rzSe!<kFRYvn7=juOtZl2bFI_c z;-B>XIQnmG@mA&w^WJXz^>^LvZSVg5J#zN8ZED`DMek3^-tL@ZI{8KRH;#ghN4O^$ zt2{W_7n55vz4*t>7vhEAxBA5EGfz7sG2zG)#hqEdYqw;Cy_>Pa%Dysh|MDsK)^6JS z=8WpE$1AOv`vl`OgNi*WUh~`CXW|xrHvP+&myeFC{>oVMBTiBNdZBfe*w>$0bK?49 z=be2$ciyD5?KiV5ZgfBDt3KRYkiR3^#`K@V-YXh~oW0>k*JqY!{6DqgS>IE^IU6OE z?hAihEdTS0nt$6DL&-~5{@?nZaV_dKf7POz-q)YLoB2$NpU4~&7jwg{>89vHk)M1Q zk9?`Rsx`-jt=41SmCtNnZZwz47-(LQOEk?>5lPzaySgk%XhPge86VZt3zolrFv;e% z*D{r@P4~W)`AzXO-1p(!cZ&}bWM?muylfpep=O_!@c*y(s~`P0(fI$};lu80^7o47 z+VgbsU-<RC>CxPZ>L0S7^R}L4d#!nO-R8I3q;rhVJmI@w6YyEv>Fi{oUnWbJu?qK| zxz=Z-GXIT?M7T!HYmWtDo^!)<_)Z=v4ZQLA){$-et9CzI_D|5{m&5^Whw%2CruES* z%Qjy16!@U)XRBtg;$=-h=CjZ>c@B$HD(5bcQ<%{(?Gksq`a2WXWaS0RSFSK_Xjq(Y zGCiZ_pC4;*#!2Ci?j=q^Cp@b|nl$!uTCM)J@Ri{eBmd7Swtpt&nbyn>5dK`WWs0B1 zjw6d3HyshZIP+q6Xw#482j$KY=eM}LocrFh<bZLWU24*9j#F<Guf0F?<DAH`aQ8$R zU%59qiI>Xu*=qE>I+1Zn<-Wbf!}3RdE1ZpPzBf@xKGTrryPRF{_#q2xm(H|vuj^_m zy!K@As4|_3nY`<$-9!zU$u3u2{$0L4Yx?Bf0>-@!f2J>cWNxb?CJ|5@-=1u3daP`c zqIK!nYZix;5<2Yn&edoSN#4g~wAxNXd;9GPR+`)Y&-iqvV#AJCF^SO%Is2DznH+g= z;>cIiiJxpTj`!YORr}uP(3VcUZLYcj(kaV6UumvxeR#elR&8ODtZts=Hos)OBVqyh z@7{NR6=-{?eYW=DQ^rcw7X6cbYo9FH6i|00kzw1@Gv}^v2)4AAZ>wjCH(M0dGXK`X zf`3<6Kf4}~s$uSS^5^}~)DYuu`&EuMJ_z1v?d=_F|4b<VwqN#H1s<`)<1TD(zkm8P z`DObJua>Bk1F|8K+<Q8whPUoqolx@Yi@Do<MLT{$V>PX7k4`IhmJ0b8mo$U~Z|vs3 z={VuQ7R^V(T6r^Xemt6evh{OE^j1-~Ll@;|&HIt|_K%ITNWp1U&B>y+FQzxiSE#lc zJ)K*-Tl42^yY)-t+uH?-Ru`{H3;KK7ns*J;PTQ9XS>H4qzx1y7Bco-$_j-`<{Dd27 z6|7#JW`T=%AH9@lKYYhV%rElRrIw6ShB=A4o0FLiuX$+x=$eAc>X%&3)1!?H?@rNn z7r5g-$uF<!xuB+x*|fUMPu?eDrt#%*wDm{SX)&F*F%vLSo%m#XxyKB5`QIMjwgsF! z=8zM0GFExkEGxMd%_Uk<Q!8#A%5X37x$;NUs_c_qT>NY{*7I4%mlTL8_iV4x`gQD! z$Sxz*TE}hq1#Z#vH0qT$Wj$@`$hH+QKJB&5s9V>s=drfZ1@*0pXL=<?)@{=BUbZq< z;Pt&V??3-mO<glBPIC7mJ!#K*_p=MT7m2oCifEqZc=@D9U4xC<M!w}1Qyw_vY?5Qy zDt*7_c<#2YZ8J?Pm!;_R8)bP+6))Wp{Ndy~gWuksr&j&6;{2^{nY`$a%VSa3faFx! z+DDeYPc}ApE5(-IHM+Ow{r4a5`a*6#|EMZz5_j?Oyk+je)wa@(+_n7ko1P!$pAoOg z+o|KDF>~L_3fY-wrcJzF|6qv=kF0pvDVHXd*XAB3g_}1!tz55Z`gOC>+Cz&=^+Fy7 zmhTe{G22q>u>5Nz*W21-!r`rlk1~p@o={r9<n-#7r=R8==RSG-;Zg3~63feZEI*Xu zW}QysxjW;PurlkH3%z%FOG4(HUi5Q@;Ko*6k9&ukZ$G<ych0ms`&St3QPL`YB6|7O z45Nk%YZ%WMEsL6QJVwIPx>0L6L&Bo?>SbI0PWFxrRsV80d#?Gri4%7%U9##h|Icd` zE7xi*U@`XVPg&)?bVH14qV&vpPR&1a%3aP(ZJlE8{&Di_JyWC4r@ZFWi_JB?G{eX; z_0Zz>Y)@GgFZG0TtF?qL*!MnD6{%JYlq#F(ylrpf59OPD?N<501qWJm6+O+bL>^up z#cMsi!Y?^vL)DW_Z@*u1e!Mg7xc8R7pZ(To-w4_N_4qZjH$CRJcp2}XF}b3|mM!;A z>RE6Y-$U`;bCQo_w`>q&S94AXEIMIme3P{)G4O#~@vV0&pEuR{N}YI`?Qx><Xyr|{ z=k9ga1KR9X+X-)Tc|L>vcCzEHeJu`>%`8UWZ-#FF<uva?SENQyYl!YmiDhw)&(zMg zSLN02mE0zA_f$G>^<>FK4=pwe*!{ZI)M;wHaDwKM<!aXJxL;-N^UYOje%Ekt#y>&p zrz*VbZpoey+qgu1uGB@(nOphyE1bR<o5++SEhRg}R(D3OmFu6Ern+*MDttw|#e9tR zZ8|pTf#w3ceD%bpE_-7S<6p*4z31G&x8catuA9p?ns2ggP}(`Mq4(TbX2;Z1$_go* zOAoyjbM9s^u(C_MtKa-IlkL;Fr)RFt+28(3LPfDh{rCx+D^s6tN!(rfpYiy&pPwxh z_|F^ujX2MFE6C09x>ie8^p8o$BTpHWxyD*7Y<m4Y!%N_aare)p@Z-L^X6&=n5|yVO zW(>)`d@OK%id&iccCBZtnkH9%ouX@zY}GO|Pwy<BtH&oD9pU4>4G+ZUPgFK?yg%dn zu0^U-mQ|nq*%Iv#;-x2?W^u#E+C7!cT1{p0$qTGr$4YY!B}UC*;rPg~@p|Z8=7QSt zKLJ;4&T(c=xx6^Z{pgyN&rhy%m0sSx`t95G4eEbOogJP#d5HzZ<UM@6`n%(rLnd2O zSH1i>iDmcpg_j@lAK5HbTY2VP3Xk(X&)JI)Ieod)u%(H!Na1F0SWfbcnL$(cCM8Kf zn-gn%d--;kUzPvm%y$}h)vhl|J+YF<>Y(}~i}!ANVmW84#s68brWMG|lvw5KbSL9| zLsIl#$vR_s))jJ=&wb3!CPuRgi<m~Oo%Zgc{|mF1e)4A)KQi(>zwcw&#dnh0%?**W zR;h-1Ii2!aansj8^w90woIj@JwkPaJ)SL1xuqQ?Rr--N1y+rRHXDfn2idCMod}T;s zUoboH`XiadL+{@v<r@`R#F%eu=e`(eA;hU^DS2qum1VDZ=X(b2aMpQt>2A!84@dm> zrDv|2b=g&P<Hnq=e8;8*+RR_)>-9x@fzf8k6s;S9EstK`@=h1_uVk0{C}cU6bF+!` zask0q%cs@TSDZen#j&C*uH*EhMYUfn8hINQE|_|xOI45~@k&Sr-)Ht!4^kZd-_aGF z^)xKkPv^vj69)n|JYumB`WzuqfBs=`5}%)SZ)sXY1NSn&?VYEb6b-bkKD^4yJht)v z_6b2x%6CQ{*t30h@`8hv%+IUDG<4ntxJ5e5%hz4Pld@;cmW1#7r4D48ncvR4-CL*H z@OiadPDpg({n`zp`xZ{ikMjL8^*yWR>=(g>Pc?Iv)SqmZ;JD8r%9@a)!Jzf<R?xqu zRUfygNXpsBrQ2||Cns`?c7=T~U3q(>$Im3r#TTBo@=x&RXmqI0|B(LoM$7Sq_O`3n zoCuXDI(4(fd|9HhiY@DE7qvNSkFkhYY+j=`sl@*8%jS61_3bk^TZz1y`tO+6M9sS& z%BQ@%wdu!>l$O)mMFh+}itqLqt(dA9_|aqOmzB&up;D~Dt=kiK_J6yyzB9ipV20<< z-)%ZoJV!3pAGAC!86=)5!);sEe7fO|)3K&2Gu}_SZ24_R{k@mDMuPKQQv0oUo!FuG zE_ClZ@3<Xn-xWIdv`0RhZ1vbZDrN7t#jf9+8ozRu&)V4b#-X<-^^}LYLt*v8WiyR0 z%#^h5lDIubZTFGwmfJO4wN#Joc_-q?93Er0iILH-X(roZxBJm?Ie8Bc7wXR7_~^P| zXQxNvpWv40=!Z(#|FU<UI2OI;{-5N82M>GA?>`W?n^<@G?*rZMq89mLvt~FYZv0tO zuAXv1e5RoXyELb><ax$}%eUlxdh*u6TWPbqL$j)j?G)|u1h?q99xt3Z{aDU0ZsyC? zj4=+Cid6qr<WTs%Lv;4jhy9D+ukBJ{m~?Ed&6~;}x8sFR@n^CM-&xNVA-d{-is?Kz zmAQ*8+<$9!#NUXWssHbc!P1+84<j!$$X@AlZc|@-WTnQ5H7k}l?RtLH;qA1@6<7O= zs=7<hZAu7aTKq@#?F>fKZkfP&I~M=b(yrSS`*Cm3M~fBTZrM8R-NWCMS6@GOL*f63 zR?*KzDryUZD=ruA4!ml2IMg;l`>zp;#m0r@Mo()(``7%|I?w83x^nK7&R$6iR;SEp zM*j2zY8UNU+m{)HK3&eWI?72i!>l&&#vBpX3KbP4(SmNNjQmiyuW7dy|4zPmYVTa# z>EB-l)^7c2tIOQ2+OFob!9T4cy8WSg!|8Tubp!dylbYU^pZO(Vl=x3up(Dz!Z*^<> zz4`;|*>xn2Nd03tHzoMy$JZ%A6Dv1)uWER}wd<&&&Gc0*+2?L63)u%J`>s>vZk{tm z{I|MEzUS?XRwZ{eE2UYU%{~{`oJ~4hC4GLD)LOrYDB&X;wkZa$m~7lQ{q;e6<$~;0 zEvHHgqcdHM)=5apKUKF`^7o?9M>WgWsXLAQy=SG~Y>@o=@%r7}|NnO{+5c95(!LK0 z7B7E4X4hQ1N?pX@%I2qHJM8|Qbz2aw<W<e>H9I|Ncf#$Wbj!)Y&z^lb`QZDDy9)lM zJd<sE7wcBns(;H|zdWuaS^oC%OdDIte8(?h{W7M}2d?o{Z%w;-=eFV>F2_CIYqx7u zuUxiT##r-DVUS>a$>x0t&$F%nZ`0bnnN>ve%F~qh^A6rJV_-PZw`cw$Mi*b!rYkQl zFp901u-qusbhcwrbzs*`jzc;-;~y;zV0oQ2Pv~nEd;it8Kf(>Nyib_T^tB2m`AX@( zlKiyx<%OosmZjI0v3uXRqqzG}y@wdH{yv7=Cmzn47A0kVyZp@JZLQsXk+Q)J|NKQ4 z2Awk2KA`)oe#1t^b>i+t*2}IveiL24zA)%|*@ZP{Z|z-h%%brv<MO2b?#G;0If85? z+UG6Ud%)dt&Izaa8;U3RUtRvul}XP@R<^uEv*P^XW92EYRP&|&1}wa_^64(C%hd_h zZRTzNTn`uQE;7iwQ2OYS;_^Fs-YwgXA7@!4ERkxjARXDOI<?cXf9k=NCb#R$0ya6a zK1~rh^}u}du|tj5{$B5@{dMk;ywdmD{aeIW{ZYJ_-`jq0Lz+<C(R$0nn?8!!1U=2! zW8lwlscBmN3C*BsTxo^IeA^dY=}W)nkoTCiBr4iT&z#49wN>OBNl}ma7hPgZ|4W%l z3TG~rzqrY&uxG0wZ__D9wRMZ@-Y<#RvZhwfVA0_nyZ$`8<yaYXZmZGKUkeYrDu21A z{U<b6H>2foxzZ1*cgON>3x`Dg3k^y?o*iA4eD7e$Qy%xrS6QSLHn@3<zE=A$*=^7< zW#@(O-$mSJW|xbf{IT!EP7n8EF*~b+Ypxglsj0c>oxb?k&47yXoLPkix--w5xEp&< z=h4|aKj)nJy4G^x;?NJ*z1ci+9gZLBvdk6Qs&389z9D%1rd67`zL)lvUhcNMeD%oI zgICr>E$8NxnDUcF>-3>@%=OPy58d}&XQJpB_VkSNA*C-W8e6hc=5}y$8Z+s<3U=KU z73*|LeL`!)kIxM@s{)@-@YAtKcr~%^q}<E?3%<Af7EJn=Hoe<+ed=YFi}%fv`zL<- zxlpmy-+Rk!mcn&8(;j+z?C#!F5c0%;`Mh$B$<vxQXA6JIKQ&=`P*?rr`P0Vwm7R~R zTJ?6!s;Ft&{qSZ}WJ#PFub7Cj8e{q1a^Zv>e?H{;CTG~$C|P|`?mb;CDfQg{NaFi; z%^#;4iaHo~US_$R8NwkZn-ns0+ldbsBUWElo)#;+!6(T&jq|jUg1{NUibhT4s;+|A z#Ag+1rwm0W`ajz`wR2+7^~X#LKIqP2+vvNn-l1rbll-<$%Zi+ui}i1hZ9Hr>JNH+5 zp7bv3H@_l&zdz*gF{rk6JyY`ol_zs0xOz|2PTOw#VE46^?DBFK;+rnsn4HHw;pLQh z%SH07vQ5O!K03hd94g51Qu^CE9k*SIT>idi*IvAve8#7Iwq)|I)w|m_Ub}I9lm0}x zY^5!>9gc7Qbd*kt|BzDoLFtIFoPeOqgbF1^xfX#Ib)`KW9Tih8?pub|u3ldKEd7nQ z)y~lEt9Gq=w|Dur&9z)_x9rx9%KLcT<i+-j3pAeYJALbhdfv1$m#?4meQYir^j^RF zo7l1iA!kcJzq%RtH*^svU+$CedLt9V=JlRD7v4{~B);Mk#}3(FOLspNNfyhv&AyR0 zHLlO+$&#fr+4d<Wn@zIIO0n6Uc=G)_F`ikACG1{JzHcJ@NA2j#{l=Ox#UDebyYARt zC;RfD2haY1_+LsNr1B3=xwv=t%c>Q2-+yXMj?{R~s_FJ~M%Bg;yBqnD8Foi?x4Fdq zVop3PBAOqazvQV)f3?y&>A9lo?;CecbDH{i=CLTr4OdU_pH=zLbnx_(PsvR;#I}Zc z8j5O{Prdp0q^ER328X{}$Flx=x3s4j?%rf6^Ysx!&i7+7*(=XkZq&^^aX&$%p=`Za zZPUio7j`dSEWc}UO`v4W>kW%DCOynI4dYsSsVU;{R*&tA%)+NWmamAr6h4J5V)FB; z+g=<w?h|tK!ctKdyQq6So7FXrp85Xq;eUl5;etEscYG{wEVN3=I`PU}c*fzAYCBYU zJZIL-NxGi)a)QLm_6j8<u4OuH`D?pVZCvj}*{tBK)e}oo_gUnfBk)z=r?qtIoq%X* z=e;}heT{v4$`3GfoqOcMo7OjL_Z?%k`?WrT{D1l%?2~&LQ+!u<`d?Rpck7#O@v+(0 zgdMefA*8YAN==ye7oW)a(>OLY<!j3=-!?t?-ZxXFnR_b_?R0puRMhr);EG2vVO)pi zXu7k;UVC!$u~GM~VEdTp&Wy6=3zLduj!Lh&6uX&uaZrNLWYs@i72SJkCnZf#Ia7X1 ztV%+a``zEOOi%yiiB7RF`Lq35;Q!4!D{jQSl+SW9{iyktc^^mc+ma)`>Otz!t1Kfz zGUMvRkGyZ5D7js7iu+s*ozBw*9BVYir_?G$aFw1}uQONdwRmhv;kRS=Z{_?5JhM@0 z_vY0~8?TpGn#SFXjXAX7!8(l#Cf!Op`r%C-2M$$DRIS;ux0UyhhVSyYldB>PKV_&| zro2uHuxf26GBa$*cac5hwBCBdt`OyuW@_b<ho?qZ`Gytp&77E^!?-vm<zM}-GTGz8 z$6C^rw``cRVw%Qmq4(~R?C<?=UrG+<NR&3wEt8XCoS|B?-I{4j(+1_06$dBHSrI+a z!KXE)c3Miyr7HbdFE3@SIP7U>)n~9rE9Y&DgX!WQPs9R_WxAvtOjxfZRVdan{Vji+ zK(*Ncqy6nWrk!{tvuZ{4VoQeC^Os7!{C$BV(R}i~&Adfb^$Ye0HY;%S+nhM=^x3{f z_TnZ^E|rHHvp#Mtx@yqpxwV>EDmvoVf*%=2-PZDV&%GJ*YQEc^2Gu27R8Ey`neZZ8 zx%BPi{o8j=UDvVmN>ks&%%-A<#wF*t6qja5Uh*l;S5Ug05~gzQt<Y!bt?^+q+8u8- z+LVS|6VdgW;b6@CYD)S0iVm@i`QO7oU0f(^|3Pzt#R~h`UibBush@9L=A)FL{i1kn zUgxS$OT#3l7;y-OZm4_q-M&lu#Hpy)0dbm34^(;Nsjz5#*OK3HYQw_weaoCf<GJk= zQ?3Ok+`cm_dh4dE-_~+%>DqF8<@c+q6&EJ`;jogH=So&SBU<On-_3E6$H{7or+c~A zhjryXE20c`n#_?_;`#c*YH#@AJwMh3PCghMtk7YyHR0FPSvSLe@F#3KF1}~+KCyle z!HL&Sw$DFsPD(EQty5aoq5rKsjESx;+y$>^dPyz%^}U5<(N9s~?4ocVSvS)ZAGY1T zdNaBIUHUI*xWwbg%lp2T&z5#-86LRH-W+wp(#EKS`Qu)<!uIf^;Th}Qx*O7JE^t;} z$h&{ZkGE>Zp3>77pZ+NMC_9ziCguO+Yfn69Z_Hb=tY5X#`^#IsuKRt{SFm-f>IY3( z!e4fC-n~UdcMrOrF>~)Z&-Z8oSLxjkI}eD3o5WsuH1E){r&0Si?rP%b=lhhnLDliL zo?LS(OXJ3uPYloY1-EGP<<2vD6Oy-0MEmA}EcvxA%f*Y%OqVPOTC~N#T*JJx=<d!n z2Oe5Z`F$_8%gnbnTJ%QQUIU(^3%|eL6q_B*{J`Ui+>HaS$Mau*GYi?-adHET?%9bu zZf#ChT)h0~|BIzbiV3=B@|w=9IA^U?BKl~F=e+Rr4`D^yoo>FJVCQt@*s0V<B`oc6 zT0ESrW~nv?y<Cf{S897_Dy?~*{if_x!ezsRRg<&Rs?@AB4=vq%X;SIJx?L~l+V+XG zd55_#=Q^u1`#hKK#hMANCrbQ(ifvS#xi@(7Yp*Ml-)~IS|90#AY`fiW)aLk|C|6Sx zs()_V(z^6p>wzB5fcx_Hh8hj~^VIWPj#d>$bZ!b3+h(Dit@tseYSJIJo5y>D#3pHK z`YHX2nLl~k<NOFs_PY~YZ4B!57BQ~KX*?2n#W}W1E$pem_aKen*LsPCx0MC-qSZoP ztnIM6!DFo*@;kXX-Y;ybDD%V3>%N%ByS=_{ktb`dC-^FNAM?Ynx*9qGZyQUd&OGS7 z;$^JUMA?%YRA*Wj#~7_B=Xj>NvLiuWlU2+wf3B!zw0Gx@Id5k5zB(-^#cvn$^m6zv zzWdLsuPw4|{UK#rzIdfRhsoiCAuASWrlwzxjAZzDG3-&d!n3PYe+-`AvIvX1{OLLq z@8^U_t3<}%CS7s?uLG{lIk9Zk%{8u4ua;T`#^2OnpSksQ!&X6FVea-|%Z@cOHM|b} zoBA=~%f^&@UiXZiv828-v)11H#IdHD*?;BIefj$DB^RsjTyCX)sd|pY<m%KCP18*i zO1Win`EGAYusL&hl~PQ?@mV2iXZ}of+U)y`u~WR7byeFV;oon2tQ`al-a4lUZV%Xe z!}ZxerN28fA7!so*_6P_vD3%>P2cR5uCLafIi740eOh9Y>!~6WVME2#%s2lEcusuz z_DD@@R`9e%$!%$m)}|j@a$izx0Y_@)BhwY{7CZ`lp4h<}oECD?)obe3M;nvF+zfRN zJ<fi3d-H9c>xoiD8~Wdbd=aTSIgP3PR_?8~)2rL+ykr&4DmqWtK6|&B`_;t%dd>2; zr&VShkG%AP%j)Y*4K-EQ`zMrM9eR{f&8GD}LEGrfV#kAdMcrr1jAo^)3a>Ynn&!rQ zBzW=lF0S1RpR)_S?G_W`N{iu`Iz?GhcG;rq`jrAz?|<ITa0yOyef5V=)P7f%<gG;k z?q*V*Mv=b?E+4u&d)q@V$yAvc1$PxAy5FC$>gT?~JU=sFcW<qn_&eW;Oqp>Srn3v@ zMNZoDH0{wXQ;FR|M>xAQC0(X(`|McK|Er5#@aS>t0|&yaFJCR4YW^xEahLez6j_;h zUGAGDz1vTj%~EFXvx=V3@vSq;ty+D`PtWCRoP&AiR|g!KmYE+J!c`%XajIqQ0X~)1 zb4F+MB2HKSy))0C_|)Z_9A>s2^7lpWXJ*Mg?-IP1d}gwlPqtj!O3_)Lg=StY`|$H| z=ANYJ)xA@NljoK#=~@%t_VJ0bM`nY&;idxx)*hZRI<K5|%V_oH%-xXkdxMEw-{#L5 z4D5Z|G;QS?woG7Xcgs4YW6b%x#_hGj>Ep~ZXIHD97UlcT-Lkdbgj>Sr&cfIE_k<)@ zzj&$UvL=@8)rVc10ux*2eNi=ZvKMh%5#&_<>%@_y<vbHD=a$+vs=vroOk)>{|Kwx; znC;vJ1@$JISo_-cuHp+Z>r7HL7wuob^nu;GaoNGPrlilxuikXusPF73o_9vcV9u0B z$$j_g9qRA>OZ{7^``$m~|Ksd?Yx%2oeNFP;-ex-STJM^eUxzQ;k1BB}`OL1div4ZL zg%itF&RyI5sM@n`(}s8tA(_Rq^)6fJ9Q@I6WA2fQt3Ig&*=X^-)5^K9{A9$<Lo<KP zljFJ{dZ?M_)_lo7E;-^$&qTYv`Dd^#`%!(n2*YuPSC<-OgpPjYlY6?<<%>v(%Y}ZH zH9@A**MqyR^2@3?78bV4)NdDwU##VL%<}Qd?XeeE-S_pg-+eLUb-`V})P8?~u8=(< zVFjEDY-XLiZH~_RWc2#UX-SWIPHwp)54J38ckIezdHZd}k^hsD4oXE9t&vDyaOKv5 zlN)=Og}zSA(l`^Wb##@?;lAY!f0=(AVGLDzyFTyq!YS+ZdS`F*l~?LbpUjaR$>?Z& z(sR$3WR<NMzOUb1`SDduR`cq7cjxYK*(EmnUYY&saI$_gFFB95xZU#sD;JC6>cm-J zcV(LREZ*m`FvIcA_N?7Uf>&(NJKDG;;>E}7mU$NTd^(=Dd*zt41T9z^?z23uuP#oh zc&WQf(|w{wZR07GR6WhB{(`4&Y}F4JdUIg=Ud5jl&Tp(H@=DwY2%Ozp>|<>lkkS0t zEhX*6-=w#HbuBesil^Ac1j?|<{Znb;Jegf26z`C?ex25#kV7X9TO8Wz;+r0vF#mdt z!)B(u!0Sz06T}$9%v7s)?@F{f<Ho6TOlkhB4{J)57PbC$nP_%g-LPxDUjOpg^B2CB zc2{P%zIG7VF!|Ah_0tynt-H(8w=ha?|E2JI&p7v0Z)`GhoPETlv?luQce5)y&Z<>h z)%+lqzWi)nVa2rn#$t1Q{|1LGy#MNXXqfu{(t^O4gYR0ucX3@(v|IDKR--U-=3gbJ zg@-tu)>$kqh!T{(m#ii6>ye<FPIf}RdNKFL*X3nOqH_*wCF-mQXDL5)qjC9)1qM%D z=bF4Juzhpo^rq9#X1T3c7AUr_PyN50UO{BP-K66mS3D0~duHRJITcdEhkyPLGfjPW zU#&y&*>b7Vf2W<%e8_W6z~|)4=n0pZ-nW+vEwr*|aD6RQx=QE6{Hqr`uFoha36Kl3 z;9{Nal`R%{-o!e}!Iu3|hFj^Ji7zu6x6bJ8j&5W={PHDFpe94tim8vEf4TPV<>Xfp z1wRG5UsP!wFq~G*9U|)Ac4_WL-Pn_v8=o#Z{AGC=gQx8$dy5bM9~`I`wfL~@L4*9i zwzfykhq+`p>`GY#3)p@daJLJ7P1*3c<vNeP;MOVMb><1ro>3!c-@!OXVEyL#o2rz* z?oe%GJf+6D{6K!B^(@7}9jA@lM0d+ZFI?#E=i<3?8|(ZBKPESFtYu4=yShxl%<RZ_ zwPWTR6S#lcY`pTALs;#(iOp<oJ8g?Ab&Eusbv{0ja5*u}?CS@2p~Td!#T_5-{fcT| z_p74BF}z27{f`K*mf4oVVzNKZxNM#it@8D3)Rx2kR!id}x6TP+x!-Fna-iVo#;Y^6 z7iLxL{abT`JLR(=XNvI^u3&>_YZ#n=7fh&pmsike-}NZ_ctMzUHpBF-b;lfL{rH%> zx8ZcCv7Z&w`(RPG{cCjom-8Ok<f|}kx_MK?H?DwIX=fez+x#1QCck^A!giwTSE-|4 znaJJ?f&KfAH}<98(Qv(=!+)wWV58)<Ygbt!B;!A<ov7!K*6q8)qx9LFj<q-E2P(~x z5ik!g{N?Z@$<lZ&M?s-AyWTg>w2ub`GYS;?KKd=ned$sc_@1T8qWzH3q`nC8nPsW7 zPi(1}ciQ?ubM>LT7Pr@|hVQ-~T&&t*);i(yEz5+EhGO2S|Dz0UeRE6LQdVma#i;g1 zWkt(nP8P+upUK;E-wLfvh@Gu#Hph~~qmN(e9IHw8@s;+xUzatt?Ax{3+le>XmB(It z)^69b65H1T$KM=sSjo%7+2?r4`Ju((__t2=Zxi;v-e}J|VWWGQq_A#XaskV<<dt&D z2b`E*26n|3xb3%pa`Rrn=>&x={*4{tlhP(iepr6-O_D;c{)5Jh54WxNF3|2?aO%@y z9f#?*OuCDc1rK&FzaIEPI72Gh@`jNX`^Eo7bM75`r+Mi8cIThg@0w?PV^&zkxVbw> z<8o}cSM|di0hjpKTJ=v}#1LCu=&8QB_m%6;Hl76iZ>x4BaMndPtebdGM_OCr(3F2m zJ}K7j*XzhX;L7soTGsK%=Zodf-RIr9`|i<&RpGxIe!RQ&uzP;9cCF05nJ*lxzAyZC zdVAxSdmY~kJC}b?JN#?MffuiuR`~_0Fhtb~D!rSvV72>}Tgl9?Uv$ZF99-kURrjma zdd}ln_VOQX6%OgSTO4CwT_PbOvFiDEBQ*o(j`!cR6B_#`9El2;enW!a!imv-zBA+F z%p=>4)~ny=wRGOFa~uD`tDjSoS;E`bEXw@exJt?Ja=;N=lg9mDqpxMACZD->?!c?c zt!y*Y9GR3>aq}_mjjssLGCs7C{XpSu#s@n-FK3X+UwUvMe{t@9OP84M+yaG+`;Ko^ zOX6vLeeY*!z>e3-57Sg{_}U$0_-D4FK5ibvkJs<t=d3^IZkwQ76EfXt@h*-%zh-1H zH}+2ms^8Q5ebM~Pep~ZJ_M6M+Zrpgq!D911V*v#Ly%I*h6--GSp$#uXz4e8-ofK|e ztn7&4c;YDM64Lk}P-T{e)0en<1(jVdWK||;*bDe7T&(_XzWM0%oCi*PB8(TS?^o=- z7yZ5}Cauh-SncZNyM?b-Ph{~9*|z(|wuQ|vvbKxZ?ViMP(BL&kTjnhh9^nfs(hJq) zUpg@O-T8F#rderU|HNA<ta58DOxW!Yt~m0yq{HCG`#;l{Z|11mado<E7|-m#&yD{t zyZUu;X}tT?12Iqb-Q2kKT*Px8H@mN~SEJ=uY_}G=W*cvvbo$WCL@UXuwr!$vy(!^$ zv%3H2ulTRO;(Uf<ZR7eq3+fn^WW?9~U6u8(Wo<3bB)=th=AChJnEXcN@}W0M<@)F5 z3vG~l<fv52VlQ8n-mH4$+?Drt8EP)LZc?14`7&znt~Ils?l-7<|LI?v^uaf!6OPYa zy5@(k8t>|BE3PS*xov1|*neIkmCtD5hwOlF?nX+N-+g5_TKh}vZsDArk!!NAD9==9 z{>`x3e7T8wXJYWW31Z2gJ>;iGhI~=kX`>@HySwUV=-nVSq2!HU?`Ujwl`H$V((|vu z?f)N={;U(~Nmw3o;;e+GWtkY?dha7Ca}pUjg733l7MmKYDAw%TlRc?*?hloq^GUa? zPwy`~?)!WOr$FrS+xmgO9x_f}KfALuW8wCi%%E_-qZMaw9Z?ed^~Z0P(}7=ATB7r+ zCh1P)I{x%m_}=JUO6C8Lbj650QH!2fz02=%lnwW^J>I*-?nhsHl%XEUe#e6ScjLXL zWlpiy?6ZCp`<aM|+dC}t*(G{WY^St0&-_lOx06mEIvJyP>)2zL+p<9y%YFx4EPEbw z@mpBOHbdhFGiLVXWV>$J>bvOer_(J)Ygt;p+-+T)Src_)lh|?j(6dWk&D^=;+xe@; zeN*)_^Vj(=n%h`C^?my%L#1O9hSz5HvKHT7ykR3lxJJ%}<aZgnR=%(Kx6E|qs}fPm zq`h1Tb#3<rC(Ju^e&R!p>zmc5t`eRmxj1d+MOLH5E!_S_qD<!BZ>b*I9o8It(Q`%r ztS<uJ<gYo0{8|-dYjN8lZQ5M(x4~*5%0I8veav{Uhxg;L`D=poYWVv@SD)UdQ`+2d z<*ttSzl|SsXBO?;x66}hIzPLaSpV$SHLny_Ma_@0pPc;dkMz>3ZI5>bnJ_#`-el6T zllg|sj__LBb=vdqd3tIcReQW7f_uS^KZ{n~+7cDXc4Li}$D8>f9tWO?{#x`Sw>_^e zEO4QHK+us}{9a;dMiUIK&U_<q>i@K}YLQFhUaQzg@*K@v*k#2lschi&ukg<2Id?ph zt9+k#Y%$GxvU0~0&4$L(={ByP7yr5SMML!K=bE33SqvY`9%z$diYuB^Hs@^iugf)4 z(i|7n%Q4U2<z8cwJ^$LP%=xPG98;I9UlqFcy1=eoGrzo@9{zJ$VQ5|9o!i?}t$KHS zaoV^_#_QAaii7sEMbEAH<|Sdc^t;>gowZkdR;_yBULoV+|0wePW4_yGlnYNO7jMk4 zsPyBx+nBrj9YcBTqa7;3!XMi9%H8}PUz+#i-zL7+-fQ|YejirbM*Zz#TbJr2C~@BY zYQA&decAPgTEkDzT=me@V0ll(jPQLA*>ewXW}h$fVB*WClXX_7ZrNq|Y1M=}`&Y`p z=LXJRnXyiC-Sw2SpBJz16ij=xDtG?%?E3$LBGdO)PfAVYUAOyF#q0H#U-kHHoO|@o zTOS_955Fg>v2w4gQ7dY7JGy;^)TS3}mb<g<HJ{k7Yn9gXubr_zhwt@2znRS$zUx0v z`moH>?b4d!jn~ZP6dsd$9)9c9J<A_ck8ioI=;Ruwe|hJEOX^2kPwveZ|Kv8ETiR@s z!2TQjeY>(m-sruFYTs)TnV-lX>D?snGK0CLYrS(v0{6<cj?CDav<7qSlIRrAOHc1x zDa-peZ{N>u_O*7wpMw$W?oX6`b9|Gx7w_x?>CIoGGkA}4*f;yOmi^y8i;K6~Jmr6i z$W#Z*NtxDVFBY_3^?I?gTd?!Cz}Cvdg?a}K5AQgo<nI>N)O5<vDTv!+i_zWNA~m6k z|57%XCOgiaJ6YBF)vODlnYxp$%55*mJb!!Vi=%Bw2$KWD)3dRqov)uA^7Pmd?!`1E z_1h<Q6`x$Wf;?BD+#dd<rF<LP?lP&&EdJp)<7%bLKdGFpWj2kX;lH-eGB8T^IeTLt zYxsxNlb^4<s%d=F=-T^7h7VLHK9sS(d85VI+B?Sn+N9J*j!(Ya%m3`Y|F_ZooK(*L z-S?T_*M(MoPbfLGEGJ=lczl8SRJRRxI97WpfAPD=Vf`Uu&&U0xvxDYFKa{_<qQvIb zG10$^R<S?$q;PrPtF<aDy+_1@nj?DFW&5Ze+EMD8q7^aCrckJJQaXFaf=#wdPDkud zoAmasRnMI>xl-0SFGIE}XrFz^*V(6O9#@j<yYl{rxg9H0W4wIs)Cvm3+n;+HJIC{( zl8U*u>eeSMf~N8T^Yc#Mu`B+0@_n`RybT|H?Q(qPZcSM<UupVUfl58=UX2^?EYGLC z_#o6dQ@QMTl9{=<*=~;=UQZ^!n$-2<Yuu3~v(HZxsh)dN#Wz1e?{M_>bNY98nH~7} zSu4V-?#23-pY}XhTWY=in631u%N#Mu4MN?;bz!=Eol&KVyjrJRkDNAop&6oV;}W_y zpk?I-hFccDg@jq|UCLH&Y*%(snJil&#FeISr!hQmU!Sz#t|`|i3cm~5{!{<m)PG91 zf1aKHeqXfNjq2lP_6Qh%-fLXdHtS#c+5N9}NUzK7&%JDZ?Ao8VZMKWgoXneP9_!k{ z6lfH`F4QQV??lZ`ub(xX(<C0do<3zfOLf`B745w5?q|%o@GbOoSw^dARP5F@YHKf; z|6Fyn@c5pxs=Bl3?@TWLGH#jwSJi!%-=&OQg?<-r8#}UombISsbjh8PIr`T%k{gu| zGMT#^Rnz#9BKW+lU|)jy>Pc2}dnyD}zP?>CQ9{5|_0X51pDWf1FwF?wDwM3h#D2#z zEAhT-Q+Ji9l+KTPd;QgRt<X&N^(x)}Hz(bn*vu|p<8s^jqx34)jrqnecfa<(SH64a z`+4Sj19E~tD_MVLmXs-VNWS)=@ps{DR@*YGOI|NxElYOIDSh?nYO4ED^G{AHiJbQq zt%;u)#^3YFj@!!R{WN{sy{jfoZ;c9exccYQQho7wu?By|AX9GD7Y`l(Nu^aDzGu|7 z(|O&G{I?U1%kBB^nESpzIyCA<zqEIKO!}vP71``@f8%6x3p>v%|8I1cz5M?2@wMes z?#{L3K5VbGoAK+Xc=^Rq7ruOZci_LouW9Z{Kkx0co5JzG;7#e%Lt5KE{wRF+|FL_a zYSs6Ry^-#+27ezaOQ=2h=-tjE8RFH}zy9JG?k4rk0p`3#aYiloxq2^zGf!~2>izS; zrKMMc7f;DH%doxn$c#t4T2<%U5e-S^<()g-k4s%PEz-(M5L_RwJB_Q;J6t?c`p&$t zXA&VxcdyjiF7~~lQ2S<5MN_MJczVF9;_8SmkGH(w5?-}ABT)9=9mDhgh2ta-H^tvJ zd}x@xO(<o-oMh?HXAv_$+~ZW=^V_|1dS6|--*$JGf~Ym>b01yve7Wn*!Qy*4?-ff5 zvW_J5oV68B7Js<GbkE{S@p;c48HHtRT^W_w^3A1whTCT`T?w;1@5ynBfgw@dCr!Ga zug{H|wLidnPrSV0s=6DBMu|VyH2%79k)2O$a_Hh~iC3O~o;bgE(d5j)uLbT~^xs}y zEoQLyPET*<y-y9vHJiVgpY6Y``zpUOYl`25*WcE?R6o2gwCehY%PIXkU#(hw<J`Y5 zdUw9R(Y#w;5VrSXy#2D|OH9|q&Tjkf$SxZaAN?z(YT=fLj+@)~4oHjN{Pe>4gZ-3u za_(QJ`^T09{@d@av2>&PRJ*7ki4)<ChvheaEZWQV{|{s4r2Vr5j%cK0ZIW?%a!tZP zcGV{ZOSe-W1&exaReVy*l-cXvdHnm&GwqtMS~@2-8!AqDUfaw(L1671k4|AH)}6{i zPpaz$GuaPS#=9C$xP1SY$pp0pvnMo1&t0bBa91FyMd5Rd;&aX8D|{W#h4%%j`{*p5 zxW=j@rmED9C4165k;SLF#2kD#RPij3;c>Xl@cE6e31jgM6Se}bv_v;)rQDw7vv$15 z6LYBNGi3N|wnE&;VHX42g6^iR&t6wO;p*jASoKNZ<z3sKeL9O1m&nv7$o-m`<i=Dq z^Rn{s6;Bm3ZJu#FDf3B6VonJC>?O4`d%>Ss9&34T1YB?Q$jf20N>fqD`(ThM)U^1x zhqc;~jy2DB&bl8wH&9ybfOV_s`#zS!qqTu&Ry=>TW^v)wXV>pK_?2g}t1$FUci1Yn zo>_xEmuZWGr<I%51dr(Sl51CY9@w^vZ;8-^&zuZf_suEUt{y%qc?m<Q(h;tO6H+4T zo@K?bB(2?85qSNf&WV(arY+N&1=h}4;kj~}!K$3)jk{k+c$`&OF4OS#){fF`8yJ`m zyj)vYWk1JGWaVK7cY};$8z0>;c(h2Eh1;OP<s8cm-XqCpLw6lhu{H2%*zXd>;p<@T zxzDveP|v~Fr{EFuC6yxvosz0^8=|*f^gOXS`c<C7^7PNyHYXWBXsZXGk@#fE_J6n1 z-Loxf3sUz4aRqvC{ZT3EIa6)VB^`St_ElGhrAgAUE*XKP4lKSCuDNj-I{sxhF)Whm z-!xM#fst*(iJ3C)AGp5<ozckDe#ubkwxxHi;k5-PSU<he54K87lH{GIa&$&uwBnTc zKRxO`7+)$?JNI~cie#xy%ZvqILMN&z7O8Y(=N*@vAi$e!Yb`tJ>5K*ZIZLx8<dYZ} zd)i}V9g2-UZkX05X_?#1bILg2o6A`b)dj&hPxqLev&y#l6;;<`)!eeeSJ<;9<*4(e zk_1-AxXvvCS)xz#)<3cm$ea7z!&*&b!Bk<Vn2H6ODos_1YHb_UJ=6~_N%|H0S>&^I z>2pafU*6V-wyWh%-?+B*dh+{?<~?0X(>6Bc9=La{X|H+CiVoh5;csFOHth{RBERTH zpw18HoEQAAfdQZQJ-3=%SpN0a*SebX)kQ^W#*^RNo$a~lX6;t@OKJs{*Gob*Z0?`E zJE`QhQ2uMTAaC(TgXckk3w`EgO__8?pMSqX?AySWE0cn*Ii9f<oz6M2NAY||rIV`o za;c^6yYBkeut*9>E{f7?pQyFdq-Kq@$1UCdV>X70lf1PBJx<TKKHc?4+*hsY<<XNK zow3Q%Gn%qqm+`*qRA;9T<tz9na!b0O&iU$c&LL~Q(quL7Dw%ROP2H&1=W=~FtDTiw zkkPN?93rhcwfhOvJU!KwZk$Vk_EhhgFC{6&uge%!AScME>&f_%_l@s_Amw7IvmRc~ z=4-8e-BY$d%C8f;n>=6n-;K#HR6qN@^Zdf&V|F<v{%@l5l7F|{Go6_uCteF^_>`V4 z#hmdqv)6%TO`Fy1KlA-X-D6!n<;-4bb$kpLtlzfGg7X4b&(fK?`DeQyi%V>o9Jyff zi|x%HG+G&U^)CIhC**rZ%s(Dc1>G-73b`37&bPBU)f$fVl(5fQa?$0^B;go=7zTr7 zCv_TLURcs;w^lG9`^AYpZ*Sxs$US!Q-qzk-uP@vw^^}r~`hIU;qLMfJ0fzgGOO`ip zFuT;gqM_D-qc>+g*O5e@)mLWM9GGRyl$DZvel6n^DJ#d`gHCTG>&&(V++=F!oyNb6 z`_tc|#%Gi5I^;80-DaPN4{nkD+dDI5so!Q<js46=j~v%wj%;+BJZ1jH|Ewkx+`@X@ zj~!&NU!k&gs%bSt$cag&ol;y4O`lgaK2npEzI}F6UqkUeh7}XSiW7Sm%uYF3@=Rsv zLzM@|SvD;(FXox*YktO+>BHv=c8QEhd0Y|6oNj9uGEOn$2{5`);^mxhmg9tlLAdv& zto5eMdQMSiODkrTa@Joe>6)FAlVg6`is{@}<^@hsXL%z&xv|JDH8xRO=$C0BCUqh! zW*=kf>Fu5j6@6z-CNY|rdv0f4vyt_4S$Ot~Wev3r)4t1zJ#dItS-Y^OA&o^#Zd)x+ z)}m+f#c!H}n9oUEj5yHtCpa>!VVZNPxj^H_p9~YE*fLIdl-IrX6`lF9ckA>GTigs7 zf|~72Hz_Su+`#0&smS1n&-~skf{mF~fA^N91>EY`8oJF$tfyhxl8GhNo__^ZGZl38 zt9Cd@>lqw3vC`Jym3x%1Pr-P>svvj%Z%kazTCYV!|9;?X(kmix!-U~dTbM?LxT(Or zyAj>1LpWDwGGu!79$W4+dsDN7m&4JDPU}?-yjP?)-I%+@J<56I!6ogjI;+l|-Z+iz zWB3!kT@EJazP~y6@{sob2>t4!zi({$?<H?|<YHc3aADKFDb2>ElV6lSzkgukcPHn+ z?;>M&ZY?=waX{?Jv>m~|8-EnNsA4}ef7Usx{j)ZG`xrc1M*Unp|I_jW?~-@nUrO(8 z&XfIF$DG5P)BH&5ke42N&F}Z?pYQ$lr~B2<zxP)>KWwmd+nqlP<+qC0?M=E~c1r$` zm6XF`Ny9H|7<sZBn=(9f4R&uoFlRTTrt>WMUa22nq)c44Omg|p#B`1;Nnmy>U%<0} z9`e&R_3|H7_cnTX-#A^h!^-9d$NQEa&wb;6{+?aFfB&k=`H?^D@9)VnyO@-7%`o@1 zev`%2gvC{S0dLyau322%^<bXw@5<%%{|y!`J#PBC`trZC$pXLS_uZG5Zr)Kh@nf>U zPlY3eHPUC?6(X)axZ&6##ItpK=a-EvE`P5n9AQX^vHfH4)3JlGQo<tZOX8K6f<D<@ z&ZP-&%9rs*c`!03*e8ps{%#PEV*i*gvvdW!M!*%G)aT!AR<S<_chmGTn&5WK%D6tR z-(m7O`Kzw%jp93|#oya+GfAM4%OLKm+JZlM5xFZTZcN>7%*mVEet2$k*u%?g4xWe9 zH#2)={AtzP&)a{lf8k8gx7$q93a(uKyYc1O=V`qGhcmVohaT9^V$AB0{LM-6r36Em zGJ}+7<`4G7wNG>yA9xprnFbtlJgi^2ZuZ*^R+e%HFX~xnhyU|^v7ojyG*^}_<L7PH z2<w%SjYpLnyp!FOU%tOC=rEmw(@P<8|Jn2pXUmqfUA0TK`n}EIW1n+1M`7NK#mD%( z5A&C^U6RvGh&XVnOSv<?wMs#7XLji^9<Bqo0{oxdIG)eL6;huQpwN)EM)qyv2mPg~ zD^Gvqnts*5aF*n?C$5{dp8elF@96U@_c|6i=T4ohWz1lvy?aV_<M#i3&x@X2;Xj)! zztnNo!9R{OF8e$`^ToXUBcE-}cKd5bt@Av~KJMVCSReoT>C$&cS7l{w%-_p;+3Ps# z^Z2~86T4;Cek?Jt4tA~+w%aeT<A?U7pwE__OQI%ycb)ia#y<ZgK7V|aR=S;xb(5Qx zzWR#geMQETk{)v>M6?HfnpyH#$h}wK*S@#Y6yCm{%zH}U@dS01d4{biR}ROVVLkUb zR&R#Vq^#bUDK!hirZ`BgWbV>u{vBEL?XKL}`kb{XKOTFl)<1vbQIb@~%9^oD+gCqi ztsGaZWCW{vlr7Ughe$@YmicSHa_D+8?k(PtX1rAHg4=nYHQRcYMCk>6X75xn_Is7J zgoE??%)1^&|06GU9lG*)(L^Pc>sLKgN*4&V+Iw0~Rry+^ytVDaG{J-_{?@(r1q@02 zT@6<A)meEORAtsPnH4-g_MpjRv&QoEJA_5W{Tsjkx_kfrT8}68S9+K5Y3z^aHQxNq zWB$9Y1q^c%nV!iq1Ud7j^jY5Wo7$!nHS^T_=+B*RLbtk0y>J#}GBa3^RdhnQU_ZZ? z%3Z#^^efvcK79Up>%z%TS@T}*;`BN;>B<8o=by7qpMUMCe00&wg_`-UW+^hdo39EV zzGCNEH+z4&q1L<ihfJ3Ga4wNzwUOlP;4$p`wz<c6VstR;p&ozNqenH)y_oJTm0=fj zB-q2VXysIwAoeMLzRH_C<F2R^c^f!m*OmII>)vjvJSnZVLiFi|JE?k;p4cr>FgoHe z&wJIAOCL_>scc<xL%>-qMQCl@naYjVZ-xFaX5(D)P)}{e((ZtOBhME-YI?DLiBd1m z*1x{pQn5?E#rEG`P;shrL-hpalbI=@>FJvoTF%Q!XU{kJrlqXGaOt+v&RYx@7^XE` zUBQsHBG}<ytw8BS!z(d$)?VJ5KYWhbYQ9Tr%E?b>K{iWBO3nVmbW`A@gh#LL#F!|~ z(-J4**HqU;ZgHR3lcn3KJ27UCmGRLNk;c{&Y*cT5c6d8+3+J7Oy>(m5OG+I&m(;f? zPKesYaa8Kr_QT)*tox?nl*Rfp^@1cvlZV^ZX-B4YobLD`_p;1>^U3(IZ<8$yUD_m0 zFs_{BeR%oq#wB+@t>~U86{|8m?9efTl&>jmN%uZ!|63sKc`{;>R7{FSeDTl9($pmq zb%i@-$lRPzxaCZkKTq&)k(nZ&C*7)NKPU1wFr_0)Bwc0ena|No^K>U(;p7x}ze|42 zw2CQw2RIaJa~QU$ux?4rS*+e1<gA-~Mk7V8qt0~I?4ZCkiTA!;o4ZTdi2wPeb^olN zU*fZWaKQQ7kM3oc*Tvb{F4H%$nfq*W=AA`Jg`U9|eq2iS@%cQtW7(n}(OEyYMA>E} z{YXpw%=xU6asK36{a1^x-8WA#yzzX6EnEA$&+KkG_ag1)PdSw?+V6QTRO~?C!8>=Z zUit4i|8W^(!_&hTjF@I+9k$OmZ$8J(B~ZU@nigY}l*3}rZPyN8Ip6m=o1rz0Gm5v= zOMGkf{sQBU{Tugvw=TGTnD1_S|3Uc`AA7@INbFyJTYJye^RX{@*2>HAZ~Y@NOXcnT zV={~rq*ND_M9q~={+4i)eTmyuzqCfb9zlhN?LX)2KgZ4Gdnt=$-(;Ip%dEfW=j}So z|D(CL{By@K<9ypt=F~|XTc18l;ZNE9L^rKum#3T6F|+7D+Ou>SuC?vIe)bSsO}!6u zU*4iE(ytd9@L3q->V5Ff@qc*x!@tJ0<vZ58y!Pib>zW~`&ykmCF1vqw=%wvn&iw!U zjQ@_`^U{xNU;Zmt`)6gX!vE9Jbp?k#@;krDO-wfb`{V6e#pC&WMs@uj+j90zyfioC z=DqxFZ+LQU^8b6hzWn~dkLxQA+Fz_Yc=}UitIyB<mCO&)D(YQp_q6<)@zXqBjeDV; z)sLA$2c|B6ai*sD7k~B4FaJwIE_TY9YA?PJJEyd*PuDQ{xSq#1<NX~`O@a5-l#*5& z22Ko|x@7Z`j=#rTa!;-h4;E3%^Zh@4n$4>{FN5mR`Q2nqOP3q}l?tx<_EuAbef>q> zqdvx^bF{Ypof5n>zvhU{YqsEnmRG|sJ1+Z^^sD3xYp`1N%A4U%p4@)3-#ksb&1!1- zR3XsZ%fjaGd@IIt$->KL7G0hhd}o#MT)*p<9nP(>r!CmyvoGsRd$jEC4v%k#H|N~- z{KjeVVdKpH<ZXHrgD$VN_O)^-cq3B$;`&RuZvP8fM<>q8+dQN6mq_HCrk6(_H7dm> z6`t*Rx#Va_XOu|rlH~5+lWcuI`aIflbfRX_uB2rmks|ATXRccM!=kY5(Up>ElHI3; z)3x4tsh*FCnV3{{bk@pOX_{qomR^1--oErwnr@ljyqjIomrT#Z-I?MwdvS$v?6WyX z(_Y@#*>(BS*E6wqX8-vtqQ9hj?)D0+o1aDX)z8Hz>^{ZX^?q`$>zsv`BR5zm%uQYR zXw#F(9Tt{Xe<>Z+T-hhC`_7+tV?<%@CUO03m%cP<zVrJw>1c4Lx2XKm6HB|7PTuRY zu}~}h=A+vp@>cd6%ik4-^(4y7pILs+viRJYdA8Nx-pt%QeRKD>Cqa{3POkOvSfMg~ z!nPp6T^&<8yf{QV??f+sBBdFmvVDTfq7I?eF+xG7l+M4ey+5<|xavdx|4%;8EWdaE z^S$|%>EC|unS0(nXWx6BMP1(|!X%qEbMaWbKF(yZI+*EPmO#_yd&UpelsgxMWpbSR zHP3o=CeyiF)_m!2&+e8KY1*7;_Fzq$r^V~L5_3fR4n&IHiBx4RxW><OPOI-gr2Fv) zYjoA-nA)+W`)+=)MxMvwbt}u9P=V&n_c#wn`oAi;HZ#!T^$m?VUn}M2T(##*zdOBQ zvs0qQYX$amRyKU;bEmPVe?8m0x$XJE$naSO*Rt5sU41NGe_^tC?IV27N@f0>)cGzi z>&nW#q;D_IEd71^u10Rs_r-<$8)o15a_siul~)_f#AjV~{FWiLeP*rr(z9>NSDZWe z?fjH&8|0T*wcpr%xrT4+_l1`Zzp2`?>+oCAE3Y_ybG=%=G}d?N+BdEy+m+vzUU{Wa zt-CcVcf0cMi)FU6LZz#1x7r@N=kw3<+P>afa_RQYf46MqSO5L7%=S}|^;rWY@c`#^ z;k7xov6WGOl-s7~STFs^+p|CPx2neesh@t@243^ikL2HI;PWU;QAXr_?xN-wEVKM8 z?(ZoQ?zeIL`7E{KY*KmKp1mS@g7aOMemiW%S>4pS_sWF#OM7edYfr@QIsT*jyT#$S zUGw%=Wc$8ZnrT>K)1IhrD|I+d>#_d5lr#7Fo+s<;7GyNd`k5_fYUh;Sy7Eqs`Hs+k zI#0YmY2Lq<x#D4QBV*t5pGUGbxl1qD5Sz7`)4s+n)A37Aw~zX>XvG;>C#U#4d>fxK zd1rDQtNC$F-58ft-@|*qEc&)2sQj>S?U$NQ$}8J_gPy-!8T?^c#z&dB2G@`alZ{+| z$h=!^nQ=}3$b9BAKf4V-{Iq(_o|v$MyVUM#$?+ZUeXSDgEPU!RPVY~i%WJXeRD*In zuj1Yd4c5}G6Y5e9u6*t~VOxSnyF@|3bcsvVK1=pi{+nxY$<gM&i2r)S4+3(VCgwfO zjI+D+Pwmoa8Jjt8tuC1sF4=x)(bMgk3yyt%C7QgkEnHUUY6Nqq{>EJ^gJkBZ7{+#8 zmh5a_QX!oyH#JFjjzMr2ufXOdKLoBm^SH=kJWu=R-5CdKG_wM78%3H8UUUcL989Zq z<zmi_o2<mQF`|oEVVc)PX<41gk1Wspvek5ZtrF(7QO_l5s>tKO+^r&8XPk@D<l2~+ zwd6(9(Y4c+T6gA7IdpKreeXcFjgei;eT1TyTJYy)Eq&2eSU2_290Sh70*lz?N_@H| z8(y?gtoW48vfFTfE=#Rpy6|1uJyJ`j-Po#eM|l0s69K2xqN{d3%|B!K#eSPgs{M)o zX*xX*ZS5!IpI2qQF=O)Q4XWw^Qk%LTiWDi%sjgm;q5tQpOgF1fmx#;(+XhFu-VdHL zXK(n}w#?A$kK3v&iG{~6+>E}l=<w&txvD4PRUIC`QhDnBY&!${jAveKGKu-0Xa8(= z-p*3pc1!%$l!%GERXUFThu&6STq@N$X{Fe``<iWRp^T|nlG>k|<#L^_cClwo)U8VF zb-lT-cI%1$svJA1DL%*Dvsa(H5H4dn*E8k4$ke{u>yAbT+u1(}*gF4fiF(JwjAV(J zDS3>B;Zjz+J{x%NU!5b+<0;|m`zO4N(<jxybehRbS(mG?q*>ivH0wF1zSsObJ?mFo zTkp#$*(<JZ)!x3O*86CoXK!>`P<i@<hb9vKAwA3|3mALUwU4b#nZffov#U^3a@v6# z#)0WE?rr{wZ$bjn&#-qgruPMAnJFJ;G}soDHP5x}a_Pnovoz)i7&<H!p3F7%pU=Bl z9#hRW#fI$a_9_p2si$?<b?NRECE`=xExPo-(JNGFFPDmy*4*2Qon9e-4y|%NI(1r8 zm&S)c!9#obE__wF%;?cn+t8K$@?@%>OJg^a%^&SjqpuB_{4?&U{}hWo%KYo#H4fdL zk5QiWzV%%<S1?`=xe#i^uuR3re$pL=%c%yUhg<SLc=q_zw!c~ba&sillpg)MYfp}; z89Y0DV<OMngg4B=T+1%1v>z(5^U?Ep?V)FG8M(09S0?CNBE#OaE&ggMFD4j$eC|H; zaK+k_iA`y%HvZ$^daO7@=6rUj_{8<sm%cpDlB(8oLCB&{w<|+NSTuv@Qqq==PqwAz z&xPkavH5x8XuLs*&@HjYwOhG<%1FJs)bT4<#GZe(^`WJIj@rnZ-3<B0b6}$A#KKvZ zxqhYxPnjRbu{&+9)5+`-S3`r#Nn)$}@($?TlfLWIX>vv3TYH5;$?Ue&ws*dhXC1t7 z#?blt&J-W<@5gW4y)?z5l6T^MCD(6NO9kh~&D}WV{0!f<ryCY>UkWJ*Q2Z3N=k?E7 zH+%Y%ZY^EscBpN`8_%Z#njFXL`le5DQh5~1o}E@Ky<2bT)7hdW+p|_CtkDa1e0+A< zN3FBYYnM1aUaPg_SiAdCuRceAcbB6L@e7xvhVa}la$Xb~!gE8S*hYwHLYT`V4ZWam z-7glHic9|13bCHWB9Wu*b*o_G>}fwbe{C!ItnxbK%tHG)7wz0Cg=!6R+BJ@RXzIT3 z>WM_yf|snKE3Qj&x&OLmw(GmmlU-U{jyw&ioRb$8Y0Pte;@!zp)HgCMa*xn?V^mU{ z_oa}T`>@ZMxThbEZhf*L&OmPg%k&pB)~ui4@vPTVnM*P$*X4VsP?q_YhEFQHrcT@u zQ{sQszj1ncz}tJzVpi|$WWVWeJl{7c^$B~%Gn<bAk43m=eO5knRMO}5&KEQ99KHQr z@uQ9S$BOH#icO0h53XkW^H)IakCV%e8&0!bH|E|s%I~me-du5}+i4#n#M15g88i6H z1Xn*lYVk?^qsDYMZBLV)a@mljGf!7s@AbT3a{uY&9KWV#JLeo@Y`m6mL6nu@;<Rtm zU*x7batpa1-TiGTUsxbJ!+EjaK_|2BEt`8+>~f^=?ny4y)y#LkW^UT-$++{c(Vea5 zG_Po0+dBWi;-5-=*I)TqH%8W<EcfJJD`39G<0DJA&sm1RgMNAM+^#8!EH!`U%WZsi zUR!HXImfOysR?pRz8$goCH3uy!K3M|PD>Z)ly3=m8ql|!=dGTJ&c2OzA4Yt3Z8N>N zNb&A!!_AC~&L4X>x5SuT>Sg<iH7lz{Zt)7Gp1s?@K+iPkv(BeE(cOY=5`S9rUfS`P zhFr;cYj!5#cE_gVyTKRpW=xFAnE3t9^}ymCD{kJi6?&zm-1W4yh<(vB5#>wwmDtlZ zygmEUO|k6P#;P>cRdyLF8z<j>Inz|5_DI3Bz`LPtYK@oFdycH!^1#$B&G?$d>5jF_ zF0JSN^zyNy{I_lmf3Y|5|5UEEF!?iGsun7)INO?V-!P@4mDx1$Q&yeqq`jf5N&_Zw zoaWE#-ca+IXW{LtS<9-d!{Sy>&v9E)?vz}U^!?J>!jQvH-~YC&V&n{ZpD>rV<m0TJ z=8M-X?9*isGtK-uWzpkD2cI<VxEZy5+TzJodUlajlUP=M3&?HZ+O52>@8aaUADgno z@=QyEbtAL-jFjwMSKRaok;zS2(GZfpBD+^bZtlyv=E~S~m4J&yl4b|Kwso&BURo`E z>X<~ythTowbe`2TUo0@V&v0}_<>J65hmR)TMW@_NS@QAHm$K7=W??Jp-U-=UDs<v4 zyMOq_<6f6Di_WjyEv9@YN5#t{_I028P2HqDzwf-$n5}Tjw{X6@{&udf8*U4x3b)RB z+UIyP*XeBW`-WYyE2iH$IOC?uM=srKIynnxsLl=1Dd}9U?DYO|X1MmxYkQ7&lrSXR z?fjm*DbTCw%Iq0gTPMDB%i3^k|AD)E(jw0uT3bI?@9#C4M1wusQ-2uED3>VnopEIQ zi>Gymk98!yVc+8>scXGjU^dgVPnFYd%rQ8#Wx^v--T1Vtxlg9v+0zlk{X1jv)Auc1 zD<z&WJX_S<Rjn{<lg>GgGV2+8gx`rC54%zOpNB(I+D3?LdxuaFZy96UUCpcCEew0t zz2YqvY;7}G)}R{jY-`BQPcetiJmdT`)k@c8f_wP7Sy>C#?7J729~1xnfZ5BpuV2ef zw2xd~o_gNxi$tO8C#PE;e5u?{c2l;V<<OYzv^OB^HR}Q~lVh{Y7X9JcZW*U`FmoA$ zNiai{2h*$-iVSB(8q&Pf#2eDM9E@2P%>1+<fa#WMgAQZH32uk#NX9L~A`Z>5n|B3n zl4-cMhws8R&4y{gjBo3Bz0-s)TsUJmlVwX{hCXBO;dv}uoJ23UX*QU7F>aZ|m0>A* zp-5}NQxOMgWyZCP47?&0%lkrE7}v%i%Z50dUI{W!cR5p(AFBz6=!IR{4cB5>O*rH) zDDC3P2w>PEaF<=GC{}C1*)WFOZD3=ct!xO>W6V|P>DD}`YNhttn$cl(D8t$?Mw5%S zCmdO~Tq|t|Tg?#V2exQ$s6+Dy#@v};old)$GP*+?e#fzH*}|348|o0fj45g@Sc)%* zacwVG#%ZvN%-mSFXo+6X3URo-j48^GK`Jj};v-J6nX`Cx8s^@qVPsgV#gVZ&)ZsKM z!&)nbjH`?etN9qB^uVmstPHt+3>S(R9il}TwgfVQ6y=66T$skfpexR><tC$pv>3yd zn~o0B5-eM;Iy$_TW7)Fa#)0|nY@rL#tbHKt)Z~UQ^Nw`yc_wr~{LqyWivVG@_0Pht zJhTgWy<mxsj{T0@L!ZtXx4hFaeH6uip=24;tyrxE69d3DWN~I}sq(UBXLu_tdO^X) zp*e{0trBC#j@skPmoY@$2x3@U$#5Z!ok2HeWkXpy*rn2v3|n3@f;=lVg+C)eYr#_H zhA?}EjGYV%a)TLpPqCY5uwGbD12Rfioq;!6BiB=1lsoqRWx<8~kD?g2Yz}cyUdV8Z zmFdEVRwuEu3>iCkA4f56$r8P=FPM>6xohM62fZN<%}Z-0s+y_ueAZpEm?2~J+FiXd zhtIx$WSAs>^;BPo!|EW$wcD98HZx{~r)bo>sVu4XVfiM-6rlX&mOZ1|?s>0zm#mHp zl@vAWJk%Dsxb~?|R?90($0W<W%6F|MRJ#X;?>JQbYT7l1=h0EVN1ktpJlb^lSzz&> z><^PK&V9O}zA;YGc+G;@{z<hWLe6$fLe-+@T_)Wqc%s^QaGk4l;3vBzd&eX*k2PZY zi@cKhR5q?;6mmB1Km6;hPP=9O(Zs$}Aaw42LBy5E8*a=mn6bDBJKD_5R~*7uTsG_Q zqVSBS!%6kWKpLUi=R>r|7lZVEw&r{NCEw!AM44-?yCaGuTqYcrnR-~}WMX)M_-dJF z9(=zA*RN5wTq6QvTYr!*n4xU>MgUCyum?Lp+47B>&|BH5P<>k;7^J()w7LEh=bJ6| zz#xdL-S;*l7@xh(*uM9tzGco$zv3HL|2G`A<1UJLuh3rm+uwr6|53k87)x`@M$Z&o zUiMXopM?HD+PsnZs+Gn~Tb=zoZ^ZohYTWWp$@I~4`}U0|wR(K-G4}XQHgMBhu*I9< zm|b`x&!J{R4bfw(EP7lEZ#S)6X^{3_r{|_MZ}N1ugf|lzdakZAV0(I4VhUICQbvjF z4a^d&Llb#UwS)9ziAps8Qtolx*l$qMb9lxDUK?4#UjiAT$5w?%tmZm!gMlwOux1%s z#o0|wP3zji5_4v8B}a!y9PUVZW0@h+U>I@gen>)2qHIs?vI94!Pb*IoTUzU)Y4uB5 zqFc%2oa@K*4J%smcAsZ8UaD1m;=9hWnn1x__x~nuau@ok?q<m5zTNq9%FoDzm^#C! z^@SB@4Q=K>`dPyHDb?n`Wz~&yuSMp2mVUbwE)mB3XVZ&Nt&8DR@h847uoE~{ayKbR zo-1{yalke&jpJvhP59-pqNQ3St4=56l&|wzF|EgWF1t;grtUnw&`vPR{JZ*<810ay zVKIJ23+of3{u*rExZ>B;&dVi1a~$@Iox1b*j@+z$2hS{+x7GdX&sqO^1^5Em-#yg7 z@VPv#(!Rs|VzAj6*Af=h$uC#6KVSSh>S*eUTZ(fe+>dp!33MOIEQmU)vZdOWt4&m& zbMj@+JFQvyCnv34u`Q(Qap0#i3uC_a8H)pqPB1R;xW}4&T(;_+x%lTrE>kt_R=gIR z5yKHIIW0m!t!RPv_Z=@5+4Wfb&2YLt@2^R1$K-NOUx~&iD-BBJEnF_QTivn$eA0m3 z?M55t?e$BxA1ZS^&uvoMlAP?<E;voz;d-2|p!Y47XV(*=jOPl>>RB@BbYK-<r+>~C z*+bkL8~9fwFvi}p+c+^w$#oiA75iSpm(w#A?k>J7SI9V1SwuYNlJ&IY|BD{C&CU>s z*_G!a73U%uQ+2E-YkyIZmGZN8?z1P}HorV|L8ChGq3k#NU+P6I{PiEZeS_VkZB2gi zfBd(fr}fxG&hQyZ&7C*?UOXjKkp53Y=wjRn^-8;KGCzf4&+ze=8!s(mp1vt{<7Z9# zLzlL!eo^%6g4mO3yFDJhv0JZc>Qt)xPwZ=xxBjWiuRb@w{<ZCW<74lWks%cegT*yE zMGZDuE&J2uu-s$0P+@C<ps-%jAy=Or9h~BZ50#ev={k@hvi?(@YeLMK&xx03oJy-| zzjDmvdBXb%w`PEPG7oS3VzpQnBo`!o^`aC=Q0U~Z_AAGl7j7)wuVj#BU^02XQo_qe zcK6nE_^9i@{@c}XRr~I`%7cR0Szo{Nt-R^j`giYx4%5RLk0#7&;caxz>JVY!TdC-^ zIj-QytlQI1Jvgy+_ts7>x7QJ^LNXhj*Ul*SILp_c_SZS9jHSh9Nt&+W6GhW(Rz?1m zHzx{wnlMWi#Ei`5sPs77*EXU3${JoyRf{C`NcGD0D{E?bDhoZ%TDd5?6ddvEOJp^& zNSeFwhvL`rlJ{8&u~`L2R;|f8T%7VfWoy01*{YV!{}fHF&8_a*FG<^bD%r^571!g- zQyvJ(PX4-c*Mkn;jn^vMujFJLwE90`R;=Ex<*(F#92A_LZ946sV71xKbKHG5_IO<5 z?z>U*<f)=*HJ^qC|H_-61&l0`xVh$i=U;h~J42a&<;_Jm%KxqBxbgaC<Ud8z=sACH z*e^-Te<}&$Na=oVR^G-Fd-_4g-tNp(4?1*@TYQ=@YpuqO!}d$kw7F;fI4Bt1%J)Rk zG`iOeB+(iBN<L__|77)F?N@T<CjV}~@}|3@x8CFIzMeGKf)?qhB^6Ds%T_f$iELC` zu595nk*80B)%|K*!4VCMQ@;)hE`IPrP2Zx)%Tdwd(JC1)7WbZ}#cSkc47vL9J~b<w zG1OLp)zsNrBsB*-V+Bb^)`2v?de82jqmkA1fa5k>D%iMLui4#mEV95FR@~wT*;D)H zK}TRgNUS)>z+KnC+Ra}zDZ3rK=vfLjxK`g{R^R(&Jblm>Lm0F((Eo8(vEb((g=Rs% zD=jBi|BUqb7Pjn~W2fjd`Iv$RP-me3i^&gZ?d3Z%n*VDvxfNdA8W(d!L$67oP;l`M zjn~Irdmb&Cof6}+difU*d%YwP@x3pPy7oL$;t&+yXchog`$~y#W#R7=v!xy>xfNdg zes4X8#8KC&bs%F_eS56rRw$^|wWA|2#^hFix5QD`NU$+qKZ9g0vVb{Pe-sKzb3Z-m znj<qsT->m$n+Ghc`gcdi-KLLwc69hUSnKO0ZFj0H6r9cR^r-6_GYt^mxf1M3ZN8Pu zi-RWmX^C0AeA#iKx<U#h{K7&X<X*=PkliI#{oOyrB_d4@D}K#?Gnc*Owu{WMwQ7Y= zJp3-19QHG|d9*~=PujF+lX+_JH<JLaDUnR6?`=;#+bCcCey{ly-qg=Gs^9N@{{652 z^EpnjlNeHWzW3bu{#}Xs=}mwB*8IQs@%*!>$=zNDT-`JDv>3(rF4@7s6mvu_^#1ab zj%wnD%b!X`-<@-2M*u@cbdjLF^Dno$m`(2$?tQYWI-c)Q9LTvN!}XyOSHZ<BfzI*| zB0AYG9yPCC^Q7rrfKun<2{z3q^;IKp=Y_Vv(yg1g=gqUZmrfs^8Xm)PEQ|BYrlK$T zAG^{Yo2*GZrG4*2$y%@XCrjpfoln>mS9xOb%)E_H)*N+q(|xNb{79nG_5Ektl%S%0 zpBGmye*JL4iX96Me~3MCw#(f)yt93e#;pBDy}qy9zyGbBzso7r@W(=lKLI>-8f^9= z&GKCb`HwzmPx^59zs`?`**g||I`^XU&)XoI@V-X=slFa@0#DPEgkSJ(SbE-ZYVgF2 z;6%P3p5HFA$;@7vvi9%i<D0#*B>L^Woz(pr>}DO8Z`Bf?b$t8!j;K4Qj=SCd+CTs4 zjNFy`y5bYg7s&HW-NE83)3$lv&Q%gxfjm<++Pp-ZRl61n9S!JATH#_CvIs0ZqjsTC zu8`Ko1zb}#v@6Tz1uXJqQqxQLz`S{0(zF)em=&AFBBdgQYzkSM)n|N_$oAwodUe;e zur;cUBG+H8kxTQmINHmzJmH$qiBleH9Bi1h7tb~P`+bI&#p~pdi7cTuoyyCSv)AWN z^5I+^v54tN^V($Iv~8{`ZI8@yo*R7jO-oZMdibsA!(+>Bg0u7Y7_05;>R`2%JXYl{ zK2tikFQB*2V@i0&agBMZH>~zOe5f2UyI<+CVwzvtvlAXu?pbyg|LK^?Z&*Af>vPPE zU%?wo-<&*SspS0gmA%6;?=v-xGb2NbUuM<FCP{C6=~v-z9qN90!bWRj^I0w5%eI{Q zBO<xpNcgf|Pp5^=>D-6Ei*LC3+~l};_myds=?l(E<;stKb^_)h8To0~!=}vbx-7F* zXVdctf!*SP9}RON#md(;&iUE)@DyM343<J}q40n&4k}q68`rhoV16X3BDZ`7o8dmb z^J}a+gcbB$9_4fuE7-X`O6}5C+_r*U?yB=0Hp5+vVM`ewDR$^jsOWtZ*|E29b54Km zm%kPtw`*Tr|2KIJr*qk%x~G$DKQ#Y&QOLe>k?z?=in|{!;A~$piTT&GlD|EZ&TF5& z^Y*PkUj@tdTly#V2gx_?xx}2H_tEU`<=M|o75l%s=@%@}s<~_NU|n;_z3XoG-m$OV z({<|Jp6)+;rrq1K?s@3EYYR6n|8Otjc3)JD;@utJS4LI7Ki_FC`O<Rp7jEg?cIo6= z>nhpI|3-3~8+*6QFIp{`<Q&hlbVkPXbdA2$t-XJets;z0u1^chNqTJ7>=B&vYWkZK z$!fokKhfB><@M4h!Ch-}c5Zh5TySUB?AoBG7QKhU_LvyG3scz<=^cHs@VD~8vr)&o z+H4db=VyOPxpTS8U&zewSYcd8UtU;BOj#B8rU#!Vd}n7jKlHnmtGD1y`UIoPPN&XG zEZNiNc<Kzl>#~IJe)2(OYnYbQ<TgyHjM%be)4^A)&y=|tK5JZAdFen+7vmY9_EqeB zXRdP1I4_hS7qv^GaVP8U)m4o<y_i48)Jq#&f6`bP&OD>sv~gzA`$Ri~?HmUD!3TU) z51iq)Svx&D`_loN!wk<PSsQ<P3eR}1Wbn9Y<K7d}HwuG!mA~6|+|uGbW2(CMz?l+( z8G*H2>o>7IEA=j%Dq`UMG>du0>U5?v)-w+H1V+AP{`{M@apys!hM%IsGn5mVXIT3t z$oVI%3p=3WTka?@<EhE<(DOVq!VMZN-4oV*YyA1Q=|IgY&NI7b9I)BWd8Y5Hbb{FZ z6UwhruO}p$FXpj+_Soos{~d#Fsj9}APYs!8EHp8=?~%}#nXqhAveb-~cOn>OBumZ6 zU*g=y+F-e?vC@gf{|iJ+eNj&147O*%9A`E%7#ue-*qrln2HUfff-!p`^63H~o&Bl? z$4w2+3ncVqC(KhjAanh|p5hiTwVI(ghWYb9K_=sMFDLIkAmb)wxu^c=Tn$e4dz@Z> z{cQA2?<<+bdq@kdIjIx7S?kSqvwLd}PkOiE|CO_nYkc-@eeuA+z2~$4)5xD$S2{Ao z+8Vev6!~o4wCCju?)7rjW_M<!Kh3|{k(SD#arRWm!x?E$?}}=F?vI^kfA!&^Q)kWi zj3XqyHh=0dn%9|@8nz{Q*3|V%+Q*sJ$Xs4iv*!-Otf~3x+Q&__KRa)Z^x13_>hH7J z=;}Gcv!~{o<<3ld%6jtDMh39_j^d<QQ&;MBW`-@>rM4_`=BsHl(o$FLPOgoZxjkU{ z!BbbbrPlcDb<)@77Y|#uvK!>kOKbM*PfE30IKw3J=Z(0#Dr;&M_ijl`-7Vv^*{C|C z*8aljQ>H0T*RJ^xYG!}s-PE;nZl3>XCe@@dpZif%dXB1{$-B3A1+H5QE8Z*d&uQDS zu}S}XthsyP<iq8^oWDzS&Ca&i_-y&%XVTn-tBrR~x?=U_me`8hbLK8^i#(hZvb{U% z+M(Q&#aS~YKHAHjh)_QCS93{eUDsFlO#hSjq<(X}f0CT;^m_M<E&IYXU*GS@nmT>r z^~s+n?N<-~RN{Tk;a1$@YYXKc&g}2**_521Q~q0Q%lxO!?2A^5E(&&8xm(EFt$V}W z=$A6bI|}ZKYV2|e*=@V#S?7w<%{d8cI%e#a@!sWXvh#WH8BL{!a=wPsJIubT${BAz zyFI(*x71M^CAVGD8*f<%F21u|<C&;o`)|IZHA<V_)!EGb=~}Xjdvgk-;NrX1H*Pg4 z9ovz=Aw^Lz_FbG!TB6{*YVOs#N=a*W+pX5sT6DX%C&^H-c-QA(9lfM=0in!%n+|`z z)%`(B?T6g?_||l_mODJ$9U4cAS)ZP~Ub$IkTEg8`TvuWh_O#3`3j7`>rt?&O2h-7t zQiXNeM=mMl#DsUGy6o7oPT+Lcin8;|Bm7*}R+}9Cq?EK{oq%>nMp69Yh(H&n>!L}j zg1PU4MT8Y9e%@agG1F<C_7N?mT?Mg<VWNiW>$Hz#DIHsA7oXS{IeW>^MXSyoY0RtG zw0Gv~`w0)vMuz7Zbm(e4VQan-)FR7OzB?neu54#)7kk)QhhN7(eEW7RaL>85+h+=K zy^q+svnD3od%-n70h^7#r4`E7-C|90E-&4-zq{k^-K{tNt-JKE^IfyZ?oNxNcc&+n z3#RXwzxllFD!zk;&v&qIPVv{=d1UT^x^I)}))nkeI(aYX)2iJ9zi+x9nSFJ3j=7=8 zz3?Nu^QNf&?)-7#?=;`{`j3Lmk4|ECsd;I4coMT~O}BAbVY=a2;pzN47k^QVYM*N7 znXNr#Pmk}MJEu+uo66;exBG9r-&k<^#>LEkqVvyPw!6Fkk$v!-hxdb*illcH7<y~< z`Sc}RbIshQ)PMez*WJCFPQ6-f8?AX>@9i})zQlGLyV`fX1?LYhdA954EFVqpiKeUc zb$%BLT)OMG%i8;8^NP^pD^H&F*v=)K@o9^n<iX4p%O|w#J!avxhBNoH>WB24KeISq z9Zl%mu+{c<*PeGA)$>?F=F3N?Jzjacea+D)f+b>mUK`#p3f_KL$f^6Z=t-XA-UqJP zO<k)mnCO4qasIJA?KkgD3SB(0TyxF4Lf=nD4D(ocW_HFdsH}*UoAv&1r0=n^D;EMD zG5z~=#bWk?o%MTk1RMP&1RGyV2sWPKzgd#C{(C0}Pc*9%(|V2%pI$e19LQu1uuSaJ zl}~nIk^6jHiOK)V@oC2+SHyPTWi{^PnDba(K=4Mg3(L0|f{nJ%ZWOJx+~%Vy*k~%Y z>Wq$3!7f2Ti@gah517+j9?1N=VRU=*{KM}ojg>x3J#b@F>?LWzjxYJjOv`5^pVt1~ zr@Oi6VTXh8RN3BB&u)BL&8p0leWv5U^0OTW;?Hy(*di&oV}a$iKdUUa<xCgp;)uD^ z!x3{;Cc18Gg3E)>G?xcvX)X!ZdN_EZjr%#C2yWf9dgF%Kc|95LygF{HS!}b}`{Bl? zr;Qs^HIj2AS3S7#>FH*P=s2yQik!-`9hTc_d=73*oi;Q1^iGe58=t;x-1s!JapTjM z2RA<5+njtlSgCR2(|HeWd|D@1pYxM3IY%<{$(l9Cr|oYxffV;@rtuFZe6&2_(avl- zb7}Up*1y-pOkQtDNx4z~U|p6AOOXF8PnU$$govL`#SxN=9&7-W^xf;{6*fNG@ag!o z4Mr`7YkWlWI2LU>Yj6L(mqRA3BBHV?A)+!OA>wCKB#*YdtVGy8GlMlU+s-7WYT2&w zN#)aC&V2aPUDo!gm2)iD_$+Oox)Lg7I=RE)o>Qi>(u7^nuZxz7zn2!=(Q3JdCy__{ zz19jH{{*$O9S1UNm6`O-+o#r>wNJgd_|@-k_c{)|veEkN{PxF+o`WJB@>6Gboa*a8 zby{$$tngG>`KimnWWJ&n|JT6ERL7?axu&viD?F?fvP?-UeCnq;vwnV<(9do(t-s)W zyNj{?(O-+V>`n1Mbnn?*8{J9!#iLEMHaCj(p0b`WyVho2-h;v!axRYz!<`FiY}`~i zT8}Gv$+jL>%5i_Vk>h$`h0dZ|AmUnJg^toQ4I8nGPc&@ACKiaub!QaU*wi&tywR`` zGrSa7p_4Ra@rQ^bGJS`V1tZ-bZtU;_5f?$+WSQ3EO1nUW4M=PwNbD|%D7ND2SL`?* z*n50&g=nqKv0@>ohlVV&PO|HZR`(xYBYm~v&8`)zKisenc(~E(LSTi?p)wJ<?gEhe zR)L5t5Rn8j$rnU$f=oAae`v^}zaQobJrH+&%b{eBM}>F))U?{keRg#<m0QpBP{Zb1 z{K7-Y|3$TI#1h+I&5GUf=&>PxPnJ!bVb}6){l{0Iau0cE$l`zI_+!r_$snWe%C;WA z^sf_S)p852e%Cn<e^l5^1%<%0N!~K8$1j~1?K_mLS$Q?ELg&$0uh!#A_ew?Nx_^LN z{wNq^g1&6)ae*U`cX`G<Z_b=o;qoEk<;tk`srUS|&*(mUY^d)a^7!Lpfxbh@|GTtp zzOCPJDEa@qpbDKsyjNvAm7{BI(zJ_a*Ux?*cQg5GX<WSKdF{6sPVCrv=CQ~P!FQE2 zuEZF{Pu5IT-sJYRHFbW|gm-FTufmsq*>+{sW0vJ5D?Hq?bk5E=lDy7o@*OEfkx)~n z<C+h0+ao@E?y#`TnUkN_((v(TfP0d+e`*EG`I_=Qw{$lwHFrPaZ2J2r&nxDf+;V|U z?)<8!wm!~M+pu-*;XQ_?Z;Fk+c-^?vG4;hHW$%C=!P@bCOi$+g(cig|x6)yq@2ZN| zg_l3LZM^xc?#vDczH@vz$6D?4@3y@;b3OM2Pukr!pZ(WzC2ZKm<F+f_PQTk$&%pj) z^R-#Z@7;OMX$`N<QrNfUIWPPF+Kk1rLg2MoO4{XJyfYow+@2u$XBV#{pWcQ%=VkL> zo29Vr%yUi?11Z>;=e+FxYqOMJd-I&rzOBC<@acA`v=QsI+!J4_@3!@9%yWMB{d(?+ zS+C6k_>1ngor&L{=e+I0F5a7t>uyh&dG@tg%D<*kX`|X}5H+(w>hkWkt$CF2?`GJS zgloAc_%iOc`8+I@-n4&v-eLYNzPZy(CZ=48t%xe&`R^Qk{@d+Dg~fimeD0rWYF>QJ z=;x$~tCsYZX3lEsczjxi;pG39&raUiUwrg4+v^1)bwB+cH8$_+zQDNcPdIPb7Nu4n zb(izemFAc3xBhtly(YX{a#i`1hr4I+h4SAhe;Kg%@!tSjH|Lu+%Re6}XLbJS_Ahte zYV(l%u7|sq&DfXSCAlg*x$RZwrG44{x&3DX_FD7aFHLv6UpoKgZns|xt8&iQv03M> zN_?_UgySl=^kaS>_FC~(>+{-Pt-T_>N?cE5RrrnanG37*zn?F+&HS}aG4XKu*4g{A z1&u@Ary7Uo=d`?Ht-T(!?0wW>o~zY6>-S}6UoP*}db0aWfUR7hzV*HnzpQ%$_Rf`D zdVEpD`u9ndcRs`h+$xWCy)SxwU-zlL?E9`yk1_AlURQfPwB{C+Rr@9OW5fHd?E7DJ zYQtlGuUq_L_ajEIhE(t4Ti;jB+@~$~A-3@C?srQ-s!A<t!xw*xE$@1tb!A_+|Hs(g zTjjM%`&I}3UbphmZmF&Be;xeh{Po@Iud%!y%IT`ItG@Ft`REt$s{E1Ql6Gb0lg~G- zUwk=>pM90Fclh?wJ@=H-WT&NU{Ta2m|L3g|wP&Yw55~?nkDq?QHS;qoqo_fAVeY;s zbKT>2u-w@EaM_-pzj}HzKC?0|Ju4n+VJG}Kb?S5ft&wNK_x2v<`OLcXtoS|qIh|(l zYch^+{b|+zOk2(%{$s<>uI$gH%xA-G681e}{4B~pWBm@Z__rn?qn|DN*~NYaNv7gJ z%~9rO+V_sve6-6lKO_G2PTS8#ajUM^n0EiXHA_5jwmyeO?!IpVpH=%4)qFpfR;<qx z{Ct!@f3;bBm}QGu{F}h9wc+c3dL5{FxGcf%QzU4JYDQx5`SY2R<W*{w>s4>&C*^;( zD^mJtt+@28xU@&+XH(HdIe9ypKXg2_zreP`V|ssIYC*y*XXbBDyzVKzoSvMqa#vPq zXU@bqtN~I#1E+=^of!6iy>9J_CE2R6_fM2eUUEN;d%wqAv#mPeM`OYcOJ^8t&K1%! z7Od9(9LtqH`=-e6NoP`?OxdQt@lw{pO=lL{oIKNPv-ixd6Wfi~E65&X=30~_xVq)D ztVi*#uSeIkg=$}T*QUAcpF`K$>Px?ZFa26);xY62M*Y)MJYOqj*6!JI@8~sS_e~$q zgx#>7S@vYd!b@9&PRvS}T66T@jmCHRqN^V!eJh`{XBPj`{d<?}m!16P{R5TXzny-~ z*7}>P`d4+s_K!c)cE65PoxOlJ^Ta<9+cPUZ+&>ua#JgQ-Zq&r9*S0^>*<gO;op$Wu zgY$Gv_Z+HH|9r-L!>h=g`wg+1FK>_A*<5vc^S!n(=5Fg_B@bHO>7V|vnxAi{@0~9{ z`TifjevL!qmDit;V^>S6-TH3j3BTC*Ng-OJalL3xvCkXFnu(8HBT^p+K05z=ivEqz zz+Fb$-jro*Vcxb&*t=B5R`E{eTB|27t{Siv3+o?o7PA)1zNaC(`I$uKvO<g5H<^5M zW?fJ>-V-|a%(s6hO-`Sb>HFmT_2iZx>YGE$MDK2#B^2>1-v8@<#eH_!7wxxy%3rhT z!c;!r%hrcKUwE)Y)Z|UCo6w(n|IYtfCL;Ayb^mEa{|VjpV|C8Q@SBg;Z#o*E`v3d> zQ&Ov6s{QHIon%y|Z~5<t*d#NxZ5|TB(JDQix<bc}h<T>Y%w;(6G{ZoZVS*5Y2PeZ4 z7KR`uhD^qWDGUx?3<|0Y6O0%RurU~XSlM^><uyizwObA`F=#S2Oi^FU4OP6-DAQJD zZU6LZtRSr*IYtIEh6jG%j`Nk&Gc?S-F&}0W+=k$#_KXcvK*|oRcG#VBB5lPD&%F!* z<s6sRvM@+99AL8UzB{*;alyN!Ysw5a7#PHE|4#mXFaMS8$ttk?qiwC1SA1Ud<HO-) zFK0dtD>z`xF>6M^$v>Zke*8$xjxVy{3ZMA?#PS964_qrW;uDIyP<*zRXXDZ18E>aH zt~+7u>bB-@kZ;ZdW|=>JPNl~8rs|u_nby7bal+jto8GN@I`yNaO#if<u4xCh>{r|W zMLEJ__P5=&m+RR0p38J?SML_)6IYkf^RtMVQ?SG0VL{=chmTqgALVTS|67=E`WzqT z{Sl`89rtEE3okyC_MxSi&82dWP-e$z4XL9d(~7Q&rl>8tu6S8De-nSg*S8UiD>W_& zXa{cjaX*(maLcENofkXVJtfUQEVul2ocA2xxpwiNfm5X(vw0@pQON9(R_QHl4%umX zQQmxkrysZ35?1L;O}v>0+qNV)&rWcT+MuX=V}e+Yhjxy}<;QIK7msbWylb_=@!1^V z91m`@CAOKdFcs6G*-sCwp4)7RsM(a4h0RAZ-=8=6#cWn{{2vR#Xo$J<wEl9!)UCd$ zC%sAhP~MKiznv4Cn@d*9nI|;XN@nS-%eJ^9%x)Fw-!Hx424C{_r}?keo~x?5({OYq z_hpN<(~mq3mtVE<VcL`}%6(P(l_lq!f64u=5!SjR<Io~p`Q@<-OX~INCm*_FWb`^V zxXda4HqD|UD9ChYitOw?Jg;<e7T2wLIw$tio4L#k8+}^u^f|?Skg?9$=X)ZmOyl|P z0~yX`pL5H2B2V+Wex4wGZlmTg&T0L3SWNk~%9CI3X%zmXko?6ebIa~9&gyt^*44?c zIUav`U%=|#_NJjLS?{o<eNWHfzh~YCz6^e1yIMQ3U-Qm}cvm*-oI1A)^ZAn2Ypr#5 zyDs*kJNjs8Xsr8Vee?8`CE4MBo`%gUbH4Afr@~@p`<zQ=TaDsxFU;ET%r!*jlWqBN z(<;TiZD-;cEuDEzNPc?m)b~C5grrcz97VP#JRcR0Cs!#<csvt^{tBM>=z|0O3p?@g zU(|_@Yz&t37%lH9C>)>dJK-@eQ_&uKF3WjMGV2+hRQzp`$)7Oc@mZ##J&_K5*Yi(& z{Kac|&z`Ah57UIlU!{v|n2Yw@WVgJxU!Z8uO&-g8@eG#t>cxuo9CYsM@oD*b;z(&# ziW1L}3(CR|=g0WFsi~YjXJK@(Wb%?uiHGqabMF?c5uIEzY4VY2^IJ;8wj5rh|5ro4 zW}aw#l}e1_;Zv96FY1<sU2YXJe|Pkn+C<IdC!C)Jzp&phDqbwRTKiB~d`HHC?D@j7 z8(#8dH~p%uW_ex6&A(YGYvRERQZM&>jb7yYci&!<zS|PMzGwcldh<$oZ#LL|#k{`T zXzdyKOMjzgsji-$cC+G{_vR;cyG^`T#?5LywY|>U_-*ulnaj+PvsBa1nanm$pLKSo z@!4l}<(boZx%JOZf(e|NnO6MFXR~GTvYT@(FXx<_lW7K0|66-n+RYvNy*EE$+hKD0 z7<2S2)#uUsbL`i|pW9FeQk+-3?B=^B@6AtsZ8zzTu)n^g?%jbk@qTHuOxMm|y*B>f z(#WFvlFVsyHr4H90;$UUThzRzZf9h~{yREr;@923rhh&E_4L_)ujQY}UmL&fz$KlX z_apXC=6RjI?$jjXHS=SfH}`F;o46+buhx^qbzh|RsjcO|@$2con%Cd8tFKGSh6=jf z&ola6wpnpE=R_3=rnb~Z2`3HCg&c|v9V-@8Y-nV4bl9lSu|nnGy$uPBEG~{YGW-z% zBGv9k`nbwiH_9Eo5%Bn8_5SZ^GsRDI{gruoJm*>6XW#1I-=5CiZCqV#vESshef-G_ zQrv&t{vW)MzeN3u^gG_a|0Za8f4Y$W<o<$FMn$W&xOY$Mp7Q*`j$_-JPqY4?cR_!N zvwhfO{j;C^w?2^N|GVV9_0mi4x&FGD@%(kN`r_<-(s_SK^ZjXOwag;Z%~g2Zl<)3U zOuWFs*=)bOf69b_PckgdPR~B8?(fw7<0PN=UgO!H16KBb)6G}2tYUOZn0sE~^_gcS zuM_6({`+-yC=>f;hBcq7z*S1ZT>amVXNNK|-_VPA?wB(7W<Z8+)edFfd!~tV#b2G( zQrvJ(ha>QJ%HD4rpQq-0dR(>Hi(`#(xAW(ZkGRdh{PxKY<7_NVD_kSq{P_4)4{!H_ zO3gF+1ZFRJmw0xjZ@zDk?6Sb+GRZ&PPVg3ReNgoHXl%XU*ooL14m`O}m5#dZe)b_I zD`q~Yjo`|)E+5@*eOb-?k74E9H+7a?{}|=_F8mHy@@;dn$l3-wvz1SqZ~Lp-NL}S{ z7ny6or5y3Zx~NU`Zmn$2SCxaUNpi{}pG!;(c~|aWk~1&Zyvy5gy3g@9(+*znk^ac# zC8-*|@Cjo?cL`?>|AB8j9|G2!o8SGt`lA(3^G2^(3nzy^G`#h7R@1DddB=l$ueBXI zCYP48RrGv9toZ!2NWIp(fx$Nv18z)Dc<0ktX%{-{!t9*q+$D4Pw1Z#l^Kj>iG`cCA zll@+;D9mtP#6z9JaEt8=w^x1n<hA?%VLrL%ck*_HE;#>ID<xo^<$KwwH#o98d+p2f zu1~qak=5B7;N00;pPSqto}`@PmD5rlk>qTVKk>+oc}LtLymL%;ZG0{|`Lmg-SyNP! z@|7J&+Mey%ysbR%`-=P88z;7aB+7D<&$~_je9rXz+iyme?;l!gY)mY=r|fgCy2(8$ z`MBA)IcY`rp589HcT&ad$~P6WqKGNk9yum;dF4}|-_e^;m{%S;sd)G5Npo)3TA$o` zSKsD&*>iQv?bi2;^S;kkd0saE^PJmz4;JTrw|u|zZug$&WuYgE^S(R1-+9+ZcjLxB z^@5AtYWs?>RhF7HF`mEexZ-|ax#*qD8>0FL=4)M<dG_}4=ytW(<qq>7$iDmdaI$ys z17WFv2bWFEM9po~E98y+KQNh8HHE)p{8GBGr+n6Pmi4*P>J^MV!h2jA_q+{wU}@H# zHs^t^ng54H3?~Ba82Eh<tM>bFZ{`!0_m=a7_nfcx`|vMe&I48>zYjt))hnti{XV># z{DftFz=KLTE}Qetjn6AJKG-xf-T%g-pT8`Qjn!{Y|FLb&?i^-*ALixGd%$Yo_aRR6 zwL+zWadyxHbCB>lBmWQ2W~f)(TzvVv)ykB450<8y*G<}b?`YeCYrAjwN>+(K6o{{X za{I(@jy2o%33K`G?RE-&uXNP*VD|3`<^CVO@$CFv|7MkjG*{Y#r#A$eAIhBSI=&)7 z@=V`Fk;P4^6S$_GD3%pn6vy@{#(k-)^7WH5jvOitiP{@1b<%m>?sAWQZ@cJEXJ;AD z*Z=98^HBU_=HoZzoXN6R85P50t_2oGx*tuI6`fuh5_2su7tR6+_ujQmT(kJz@e4~V z?^<08yuPUvqV~PY+VxYfL6v&Gp0>p<APS-%q3hRz+?NjD+e@!(fAc<T=Go_$;@5sr zf4ySIn#GUez3V40+0S`t{>Ezcp3*Bu+fKJN+0O8ObFa|<<vVxtHH#wzVwn2vc*~zY z*|Pk8OrPXy4YAYy+xzYw%df9}W!_UN(tUfc^x=j}JN~mh5YpBX>iO)xB-z!t^L}y2 z)BT6;nrXx}gs5mQshgO@{j{*AZ9>^};hle@&3Fq|8gJdvyk^F?Da)VOOgZnS^|13! z<HN>1`svrMPf0M`5?(N4!ON|(Pq?Q#e#-yrXmP*&%14i$rTR`^xq6m_Op{x>X@cg{ zmv;*rgVv>}Ma<O`*sh{C<0_Ni$K08V)~NeU*W46V{c@)(_qRWaRkg<Jmd8#wo>`vX z&6*Hx`*xbqTla?P+pb>Dd+Jv`%lfU;%ren1?Y$FIZmqqWIY0Px=J7k3@d39#HcOtn z@%ipY|7Slc9aESl&*k*lYPGbm?_}+obMncPd>-yheC={m>r2k=BU!I*&rpu2;EqZ% zsL1^IKhbpSXPYDEJ_}f%cYb5TzY)&)qrQ!6>rdh6)*UOYF38<)dS%fO_<*I3TUjtZ z{AO64PSY~wiCor!#`|oXZWlecoiX|T_jmJ-TFq|U?{LUqmF2RfJ)CQHcL^z8-&xpx zpf9d#U4lf^C;pSMOKqf%pPsNM^0t?&_@*b1pXGQw+7#l<rX6}ZVd=dYpH}vr4&s$u zb0vCK-K+@*e_iZ39VFh$wS^~amEiP;o-4v$?%=7Pw&YL7hC7yF_GgR4b5nPQ8cXhI z$!1iJ30_++J1Jpj==BGStzv?o`py)e7CrOfEThAwscqS(5_X2V{>YsERPJ;^Z*tXM z#nWr6SoyEQrFpJTkzA)~921<jW7(Mk-<c0*WgRG5t$6Tt$&O`h%M8yK@Fx5hV2sRb zNX-0ea+=p<j>jR>xJRkCH{8hz+2Gfn{p!V<T`pj)vck6}aa_N0qscjT+U&QTKe&RM zo}ObUh|DXk+Auq9=T*s>XN+T*Z_JypB}#J6yG?gq{acea>uDI<>9rtxUqze}nH1Ka z;ucf_Hf^n!wpUAbR%!Q@2EOZ8W{JfL>1?lBc+#=6z<002tQiSAuWDyRZN8JG+qN<? zFSRW@EB4vS&H~@H=WXl{7OmcXp@9$Nv6bI1<@vW{XE|SMa@n!W&dXj$aNSCOBQBv= z5vL9pZFV!Re5f+}s-({MwJAFTmqg~Z7OeH#eCO2RBJGxJX_M2wQ+!>fMF%hnM&>E- zpI$4lF4toNRCam0$?3H=I@_IglofhxzQgtK)?&_S(UlQ-roE}No`!K;PiuoI2%Da; zQ}oc*b|H}Ju;r0?4lUWIO-}Q66y#1!+sP=nPWPIQxx%5XOJ_a3mn3lK#9^aY;X7}c z=9M=E>=)jzvEy(<PE<pq+#2@EyP22X-8J2Ad+|%+Ne|tLrFG1mYi{x;nYGTy?H4h4 zCA3-dNKSrsUbJGGvch)WCl9xYCT-)@+rBsA*y*<NsWW^P)3mSL+2(Y{%^`0#zn;?B zT<!HPVb9mzDf`#WWq8}+Y_2x{_O$|=ud43IZJm*u&~!Vj<7S+H!R=FrbG47;Tvr1L zzn#niQX~4qWcyk@<x6+A?V96Je4ESgwj(FVV(HlrwoPrn9TvWE-m`62ue!{-9k#i{ zWc%7Q;mo|~vx=AQY`Z13`J<iHiH@5c$Fp**e}wcF3xsMO$>BBu87ny9Hk;F#Z6Qf! zl|07T$8z{p4K#{cXXG+3*0+-rN!oVK>_FPKrWw7qR<-qKz2r<Yf1i8sGD_)moSdA@ zRiVglcOMon25|-B<gN-uZquBYx}N8HW~YveRAla@t+TfLO{hpUS*Vt4FA~S=Vw$<A zowak8$?+?b`~~W4o+Q8c6R?#3nJe4wy6ze2k4;Zl|6I8CO_jD=FIS+lbjH>OhQP;3 zXV<acejBys=GOqvcUD3b8!i0v-)*|#v`^~ihX;2u&#X_Zi#VrqI`x5bXkbZO-Qzp; z!5&SvwK;Bc!|r4m+06d#sCe>QPew|CRBU9F$0pmwcFvzB+C1^xrd+@A$!1mlO|n00 zPUa_Z^WD66>)Xlwp%dQT2^JRKWUH1^?Q`PWj0tZI6>s0>xG9Gaa@^+bur0o68mQVi z@y+p0r!rV+gnDM}+AVru_KZo_bTexgz<3kh8aC(jH{?8@CjZjmJNu?u#oxQ5(mwC} z60ZH16KwRitzXPNf6Z3-E16QwlJYw-!&!<e&xyZZI^}oliS4)g^Av7J3dr<LKfg`! zV*FD1lixT_l!>uVf3!5S%6b3%m)rUOI&52fW2$Vw7;As_qf>FN-Oi=!-iSJ|Gfmvf zq@gGfYueDqawSw*gZ09$tc!jui&nE;nCVb*m0_1aKzQ#0ZN}289H%&3!g&|WnV<b? zm0*c7NDCJeh^f9{os=U#)5ZTxFFX}?WijjpsY~Ezx){p*!WSe^3ldl`31r+aA&_xh z4ZE^f{<37;EZklF;gs6Cb+hgoU(#Dpdi6~lQ_xzOxTj99R^1F;`{4DdzT1DBm#6I5 zmGy02-qBi4Hl~bN(`tQ&wX4(knJ(<g`gRZGXbB&OSktCjhAr!6?bQdl^cyosP5|UO z9@Pcwqz?XL__ga6I|E3wM8mbv&HN$(iBEN&@wi_yS!SyC^i<#N<mT_pCwSBP%hMyg z)+aN5;Z2iwKk)mDjfMEPl<Df?ixz2H=lS!k>)5gB@wX`_m<89aPMgmKa`DQEreF>m zh;#X-UFlVha|$3kO+c;;cfZ$_5o@}eO*Ja~>^fKbsPMD%`h-B5ITxfJf4dpv=2|n5 zlg=}O+`N+^D*UXS{{b=Wbl#~)XFNZ!b)D45XesuFn@f(_tuD}<J>zzftIO%W+n<|l z7p+@2YcE4?cC6`dE09-X{6WFc%5+K4YSGL?WhT0rXTzSD*=uFJT9tY8<E<5ajIV_@ zJ>KxK-fg<czD=_#^n5G4{Fp8z9p2l&CvMH|=(W2)TmIlZc&Tv0y4j|AO6%PptaH|% zd3RBXNWWTw!lR&wY*D|Y#Pb=pT*{v=3rFrexNqh=fB%%Hsaw1z&!4B@@#jm+pJy&% zbp>31{n7%veV#D33C!4UIq~YGsVW9%Pm3&iGP`7w?8?`I&$iSmpQ|lSet6*vM|}dP z%q`ybm1f&q9yNqzGWZ_<86Dp;DS=b(OtQ?bshgSVxqcq4C@bq(cF3^ugmrw+_V-fH zr#~^yjTf8O5s?==(@a-*=f`V$;i(7O4s}<!ZvK*b<U&OL_j$Pt$8Op&-B%G2pC97o zyv0w^KJAq!%TArQ1z9mM<;oh3e<Q3X`>9TzdAIdu-`|_J3b*yP-7$Zcb2s^bmTeVR z%tuz<*jjc|*U9lF+cQqaP2jqq>h8eKx99NGT$T`z^OZN5*f?fHGYD)GoWl4=MEruz zWM%s*na{gBucz%{67gi*c3mjsghXn5uCR2z_<<KY8cG;vM=_<`aGZH{#pDU)=@p-* z7_yw5^HQ#V(u%#Och|hP{;2JH-^YI4{AHI;+<Mz*Sa$45#FeJW-3nR0j;{`#-5>r# zxnu^54cp4kmt|g0{g?AI;_wG0*`H_Mg#LSROh7Ksbp~@#_)oX;Y4L1Vng86_#b;1- zZS&k2`(4%V{93xf(Wsy=IjYg&yTFol$1hKDy*&M{fJsTRZ%JYA<y%)Px@Rd&J-Kw= z>0Jzabza|`_ha|W@XUFe72+@6-t^Axl~%m^{U_63?+|Re>XDjlF?F`=W2KrmX$n(I zQ@%#aJZ|v{an+i>{bShvy{;c`KU<!CO6_t%`{k3zYd>nZYOPMIF8}rPaY#&SwcN@# zc2e()R?Xu-?6O46@qW?%`~9o$=k96EVY7bSwz{{5r(9&!&s$M0uJ04OR{u);+7R+j z;`Xlg<i`fru1u-*Kg@OfgN@&(yWJuCCK>Oz-v4`6Tz2-UYnNZ!9nZd|P$SqH@=bED zTtQE1^<%}>kTPal`Oob;U+u0p@JmtJDY*E3;r_im%6Z01?l)GvwO=4#H>GwxBfIhg z{nI&mPb;S{u-T>G<gsLvP}zr;%LhvhdX|4wk(yu9quc)A?OlGioBSW9B-d1GgmrnO zPA|~#w+_Ey&STBRcfdaLC*!26|1$3T_~j=1w*Fx`x%pqlawe%~SEfzfd`qgn*zS#4 z@`C;aS*<lo=6%0ido;V)_h@IZ?tSjM>eML}p}ybaBeK_)v~mC7V*feK{<p@C)l)Ka zYcGCMG}*h@*Er!-q0Q?W@efD!ojJBIlzA|_L0@{o^MuOqpc>oziO=qd#P@$(bI<0% z?z#J(U*yVs5Y154E8V>C2IKvJX*EYCbv90^YOvk*f&F1|0rR76KfF!~r@R;Z;m5hM z{Q2p%FAOET<nyi^c>QnRCA)phLFw1R*%kiF9+i6WA|~c=<)>rpmm<r#UiCWPdR#W8 zZo=c5cVTQ#7Uehmja+i7di~Z#>WlAITKe6de6#G;8QrUlCg-{HLhB0mKK|74c#>7I zo9}{!!S63}zr3=7+0Bq|@r&87dmgE#i(FOy_|jpOjOq22ca5$~wAQbhn(=SV{j7cE zXTR=$cyapqU*^vucZA9Ru1IojwL5b-ZgSO({YMn8DTmf_8oVvIAmtG%&G2gCO^**! z2YlTdjybHVVoR{9`%`BWbd{OmzT#)YgGLP>-5XmRRz<OV;5B+L7{j|EL&UD%<F7^2 zzlF;}E;`Auo^D8E&@_%;^YXsbOxwh@4zJ?5HVDkD^kA;)JRNOX&F8diQ^7vbwMSe0 z&lsz{UEj8eAuhNwU4ZT9l>_%nww&D`XqFIquXt|o&uwi}cmFASdhaK9WM%c<N4?ow zr0zA!#55&8|16vF^tkl}Pgk}FmPQ-6o~<(4v!^+7o!hD`euF9#zcz)hi}U|0Zm{9o zl4EjUAwzpVqi?H80#Czb$5g|AhtD23z?Z$Rv>+_ia!ql<+!brTUz$}nvv~g*qnhnI zzdl}f`R~a&&te{0?45q*<;2KGEH7C<^UY6EmHCuz&1ZOcVWRuG(+7^l#+AjYy_uDw zbN0D~-}Iet=WNQgJ{&v!>B(D`2TP;opLr>F{pImvYX4TgzF=hUsV%>QzeDTz$@*8@ zoY$4d9#hLszhZMd)6Ho4%XOD!PtNJvd2Q$Fd1tPRUtCoqxb5hMz3<n);16?>$!xrw zvA}hbTX)RzyOS+-%jdSK6-Pa`nmg%C=H%BV<})wLd_VZBz-amO*yX(^=X{HPV$mv9 z>+{*uf4K@@gk(zbYV~lvTJAk(-u>IZseI|iz|g=SzRQj0ZtTrnwJnO<RsM2Rl;a|^ zt1c@Z1$8ak5t{r;Oj&88=t8a?4bgX87d2@dThVZ>DQfkbJlCZSkC?h11Zgh{oWjF# zM3-%U@w>fW?kp^ykg&+`^JANLMeja6+q<v){BOPc>7P{NQq)}=)#kr_8XWsIYftHk zPgSn%^E&GjJNTFuE@Z8Uot*lW*JYKzOOwuWtKGLQbUvNx)_!U7G@aEJ0*QuGOY$rK z-xYZM(RlBibv8Qjex8cgG>=%dMl2V2Es`|XX-#lPDc43ne1hr<*HlzxTBjITJ@C(b z{zNdTwoWPOZlnMI?gX}tYVFx>0=1z`Nq6g2rfoIoj5xl|<&23D<HowZj4s{=oe}G0 zdymWcC|o-p+x_0vS1hUaxkZfF43{<jGVd!lA6HelHvMkL)uX(e9i>lI7$z8SZ`{Yk zdN@HWDYno!PTzogquw6Y^R6Ol?rWCc?^<tfz`gMw6YJ_krj2gT%+^FDR(D32-|5po zvi&XR#(7oSpWkKh?u+n05PwZzMr%ZUvHq8tiDF5AkJToeYI>`h6l*FuT{KPcnsk5x zcbek0%gY}`bDwcqBQ1C2GfSG{wQPB}2kgbl*TlcJM96>UP&%@bX=C0U>myZ0hcAaN zW!f0#df1ya>F<qhrj2>Ieq9mf=fpa`cHCsz=r><i;PufHa|~>F_dD73th{lKbD6DU zk-UFZoNi9QPZ@pnJMH#Qr59AGNX6tj-^negZM?I6!SR@~?TYW>cRnrIvPWI;(Y=N; z`9ppycpkNuY+x;n|2O6NT*lR}K6g#OEd6)g6an+zgo4h?;u`H|3k-@?r@!9)@%hv@ zk5(M}5pA$L&}_$E;pF_qA8$v6-j?FbJAKYv^?gmi^BVWP4BIZ><_MFO4LML2*2uPP zeVx>G=3@uGg{kaoHQZ49)91~eM#Bwz<vLXj*tW&Hb^O-pX?(ls<_{*8<b>arDsqj6 z8*0xOS8P2bapPXYk*FI2XB-%Bhn|15tnKE3Z?YPa{K*NwvsLWcRT*xZT1+*X^KOgt z5l!xd-`7(PeEU|p>f@{<$K2m<G~BS9_0A2GJJt!m9rrPvb!5#kzbLAZV7*+DQNM@r z-R6lBJjo5!wnFj;+7|RO?a-d@JcS{-;kU5Ly++T5>RUc6nKK^5vff?rc(R7IWU7C} zhqBK)`t8@QbaTJ?{fuo(M6VUsN;8#f7j2K0U%P1$udsRZm0EGDE2Zy4b+g0t+;_xQ z*)NZ2+Zj9Sxz_Y!EYp|eO|Lt@ncE=yxP0O4vW!y8oQr(fcRok_Ybv^_*I3vYx_ti% znNQqvYeh1qKfbH?_14ovPS0QZUDGq)U2XYN^{LV2w?&O*k<ZF@eocM)srh#5w6c@0 zo|ep9CclySj^5f^Pj$9?KeQ=hOnYmm{MP91TcfDmI)%H}%vt^~#jc_Ir*T!ZeM)_q zxwV)5a{gCuOJ?p4*coCK%T~Ivdv(;I+r6A0z8ztysNU4DedW6?T|y#z<R9su?%p$} z`RD$O=i)CzKgnk9+~Os7sp-3@&)P}vLsmb@4lFS32|roBGW3(rlle`ur-c%~YivnX z<a&0Ptu%>&%W_wKOjz6sJ?(|2fenx6_kPHH<oQP9Py_3#RTIQGvo9RqZ7}cVCkMN; zI^}$FQ#UNGjNGSmz}T9Z)j82-^Hj!pH#43{CuW`e6W4Hm`}ai;%p#7~nVebWz*gt3 z#3i+SdRU{3Pt&xp$E*0_*F5`|I&s&(>lY&@thVaiyvOnChZXN92dut0-QZOFC-EZ- z!WUOY3!Y88-f@@p@FqjfO$R19WX!k|8=zb!ex>6stEuY;wbO5Bo1QT^;C7JVb?WAt zql)hDZ)FAqFDjFo)9<-RS--6CyC3t`-3lwrL|Cr2HI-~$xZsZS%v%8hA<|q;S<a3D zxf&d=cv-WA9RqTeI5N2w1<GBT)s!)1p+c03Mu(q>h>ON`q5s-jidq*c+<LP}p{iv+ zSBnYjMXrs73YSltO0(AmD@;#Q+tqfdX{N@KnVnVMPS-V?W@en)C%DV+vNXFE(}!i2 zw#?nrZnvyk`d`X8(0pO`;smv<DQ8@ICtWbTu2gdNsx<ox^?5UnJx>+hwT(M%QJK1N zV0((1)>UbCwV;Q~Ee@0%*Z6x$sf3r?>3V^G%ev=YPS<bcIbHv7U$JEE^fNABCtcWj z`J~U6+3GVouX&^`GVy#7r8Bd0mCC~G<tin-)||2aQ_r}RLR6V}8VQ?vq%EqOG&5s! z^M$EVPd+yK8Lf}ak&)=X^oMQsg{^meU))L)+_f#TW!(u&&e+?N1a_6FD3-*g3-0nO z6yCMSPiR+}nqo=rc8=Kh+c{!y=Q>^QG+UT$lO(vSZ!2f)|Be^E%(7oBu1d2{aPwSy z)8d2oiCsb`W@#Us<I=u};pA7v9m3L~g*S?pD?OGolxAPm!hd~A``5!e&b^3Qvhokd z<l{BGwt>@JA6tcA+M)D#Nn!3~Y4&4A-z*O;D!eNtX0q-ChgA3zmfqK?S&te13ZGc8 zl2husjpyU2yo)=wMVqXv6zhF$?3odBJlbR(x31LnvrWfDEj=H1%~?{YyDcL|d(wp+ zc_33b!KP>zH60V(IWHr|nnyO!@~?<ieBvibt$MBJti9RIOA2#0WW?k@>Sg{T;U;wU z$}z@Y&+E={OI<hfd@MD=WSz+(scKF0Nha$;if-)c*kw6W)YR#?CZou4<-6ve`1J01 zOrQ8}@fnTMl*>EJJfyB~Jkes(`&wS^(yU{qZEgF+LY74zx!!c@`KN6RdKa5c%@J!l zwND`ATkC>N`Ycm_r?H&7+H~svg2NKY?+lOKN$%NsT%x$&@LAlM8Pz?8-=U&h#s20^ zr?!MQ?l#`bTx>sEB3KfnNKX31-ug3pji1RSpRpBtbkFwPUz2xp(R5iGi0~&IV}54W zer)!s^v}Zm=AFlr&)6QDQJo{*Z$9n#?ylp(Gpct9hU}B6EpVTxE0HKFbg`&)=YF?C zl5PPrwUnkm*l@Ta<<SX=r{Pc1S*EVE+9c2(H*?$kWfi7Pr$S<lcCZNFS}D+SvD;Dm zq~HnRBiByVEOi&VboaBEQ>%G`d%=c_`(OCqVVXVRzDKG^HV?z4zS-q^@4O>k_P)?` z$r4;+XufAYXT>SCO9k>tCQ%b+FW{cH>$y|i68<^d{u1BsbXV__xXGRPbWK~}5&e&9 zPmW*6P(GVsbEe>deoOa+R0ipfk7jOBnN|8`-Gm2<vO;%y%Hk8)<YPbiYu?(}CHvlV znpRoj!X$COkd4twA#Y~2bjhCjdbQfz@u=RrppDg6lCP%8iUe%l5U`P(TXgq^xZmj> zVV5|aj^-WOxAKPXr8P@j{+w7<&HrUV()8c*0UNFTSKOGZ9{T3o<TXnym=Ah&$*jK7 ztN3E2y6A4Pg-O>Rg>1~8s#Ugg*3>D#y7zS+o*i^FZ{|@iDRHf`kG89BgqCfdbnLtD z(RGJcCYigfy0KR)^iACqt+JazN7sdHnpEZyc4<fO(Y%I`jnX=ip4M};%C>um?zUQ) zRNfG>vD-T2&5EOqH4={>UQpU{S#N1*=G?Phw;qLUoSnFFl9GCa=fvVwH_m!2O1eJF z<><P*Nvd-ngl%-5o1*#_B$l*sQe67RN!xC$SrUF@&63wSVVA0APc2!TsG2LPRpzmH z$)y!HN?X@xUsPRpq)Fh;?i;n49PhpdXM(fvzN;QLr+UeUi5q$UImj7Qwsp?-m7e8G zJhLvXoHR>Ba`}|IJifkN^BImub<g@@?CJY!<^na>bE>J^H3LuOrMCs2T6c7jTI=Ek zYPApYy>Hs422MVvn{{c2tFP4d6`q@Qvo0-C2`Ve>o@J7Uka_QUs_(tBVygR3rOD?5 zelm6jm6cAKwdLF*HQ9wr-n=kuU80&=9=mADT^>*0U7kUcFLh+SvE1!>Gtl$>w~k$w zk&${%$2l2A)(Z!f%?&xz=s4xw;<vUQH?MkTU8+hs6m@D{n8(eFxq^TD!s3nuypj!( zah*FYSHdGx_x6E&e_8RE1Cz?HZ0hghwpja^>D!e;#^t3k2Qp>F1AY~B9C^9pK{c0y zh295C1bT70u<<+$>3@3^6!XEt^TI;wcd^G=pI^Qf)5l%Y$Ni`A&hO)QtdFzW9cQiU zsQ$j=`{f<wV40de?wXC_(;qe6&$Qt=@c8A91yheb-f`f6=keJ`9v8+uD2{oM|M=sv zPZi-GE0Xl}j<PQH_|#|B74&3dl*c_?*Ig%$u!aaOm3Z|1uF89}N%K3oS6H1AbWK|n zAEx%lC&uBb;jbNX7CH^tDbr3ytSDcwOd^pntLo}RCDX9`<%haBr(66<SQXd%#wfxw ze1e&Y)We;R6n_3bpDYoPDZVSF)oXqHJt6&c+n~>hsXcmAHIMH6v^e1NTFs}oYyWFZ z`^M&cBfsw3#PWnmDZh2kywhKLe@}nJlm$zQu1~6$+~YNIh5PdIN{M%y{%dnR_;crd z)Ti`Ws{i+K3Z77{Kce%qQ0&{J|M9=?{1>kdXNn6gY<++B^zHZFa*7jJoH!H}Z+m+< zIg|xB2r_jkM456aa_msp)U2^1VXgEI5%ZjlYo)hd4Lh*vL6oRypvxW6kOf(VYacav z|NnnxZi=3w$jZC>4t+nH`p>vHefRgfbLyX+kz9XD-Zb>z3%k{SjPB}dRVDFj)n5tu zx%cwlWvArtHlLCgni|iQ7xuJYN~?ZyGe_S&_Nnoomc2P#vVY;H_qR*_XBF?N-(4x- zcx2AI^Y_)K-nYIRpXB%b`<E4eew*F3zcuGw{!jj8zoW$}LjJ9n3i;Pm8}f56yP(d; z6@MJsPVrxP<H+Lutw`Wt{`Vq*gRl0k_`_Nq_*4F)oXZCBssGQ&FZh)IW!0bK6`}vm zE<5!;d(|iLj#KX|g_tzMwf0~8X1P|Lv!W<yN%6Y`xnrNt+W2(7p80Ry?z3O`4by&o zU-MSqY-?>p8oyG+qpaUAY}Yy4-1?^$d|Um(ExQRT-_ADvdwWS{+qVB(SH4yMw&-pB z+pFI|j>zfXw*SiFxAh4bza84P`KM(47VO`4KTV%quqGknx686^{!6yjDg@tF&#Dq& zj9=Jcc-jAs+v5d?RGWBn>swa7WtO=0FXH02r`%^&SYEDQmf(ClJ}K+>ZJ*rvrmJ@4 zPn_+OJAcxgt8Lr<x4Y%mFD?`~sI3&&o!#;NqI=MVds}OlK4hQLc7LIezwg-?_P>qu zuJos;N9^c3eD$34y{K=$YJ)j0Y~{V$()aXb2mhAH{b6(7EPZYH@LxsvvMq_H3^YpE zl||<86rXc6s!Z*FVN&*rWzK2QNx`ZUcJM3=w(WZ=<oV?Lw6C%%t#)Ar71CmsY@37y zyB2uyoqRSuRqlchONkZlg<YNUCE0%G*_N)W-x&02+oD|83rF9{^vj*dW53+lGH<r8 z*<6nwQ{OFrUbNS1{+*|D1^CWvm^D-M8lP%is-*FeMXXusLft&-LOtwTg*zv_c1hBC zyiB;$Ap7?$=B0ByT($~x9xqi2JRIY<*-s_u<gMr<>v{48P20A2yxSsp@t)GO%_-NT zSssV2`Xm;(SiO#M5zCw(svhbEGS{P79Bo1?yLWhRIZ*Lw;-WtfKTUZ1jp=J<z993L zBl>$>SIpaSPbs8z-FA-9g|Bs;LSIyMPvDY$s_W#iYw;dejuRzQwsSDv?E569sBk^& z;sf1BO4|;86>GF;c&*!%;5h5GZj<eXHzrSYn>^I&GEE$~Uw6E|vhZN^k!+nSP-RY~ zXTFMkoHp;r((N35M_nZhriuS!5oZfESQ5{$#pmKZrJ`Dmi(s{%#1?kBmwo)WV6Uss zqSa1Mb)AfsYvl`0G7qin4sd=`)ol^p7E#$PFk#ZGs_q{_{(mk-w@4*jj&6Be)&0W( z#C0+2wUfCX?NV?1(K}!8IHO9?)a@LayO<j8DJ_|Km+?rnOE1VB9fnnprr%Rq7QpQj zdQT~!Vcw6g`O~ViWS~Z^1gmK@`j}nST@aHmXu62?)a$d>Q72pH=6szcFMi7KOt_O& zLeOisd_kY{7w#!d;P<HRj#$3cVNr=vR%269#~hxwx{KVlIK0(Onw!yhE83+OL>}3( z;TqFl;~8$c0oC0z<d%u8*z2luJxbx8)Uzv53+m-AZxQpz7c4#;#r;J;!B30vR`ikV zMXXu*g4?@5O7|=S8Tcq_DM)B~i!1k)drEr2Q479_74}wiADFT4s>MfX2N|J#`#-5f zvDo-G1=x3%|2@ISxTt<{(T-VcviIJIynIv1xc$WAGd4b!CJ*XLe-^nu`Mv%FQ}0Kf zt=l{Niqxil6Z>ef)#9x#6N5)}_X@$#fa>lE>ixU)CV$)XU=3ToU|?3^t!Ng83E#vV zMNV9}r=%Aoy#LSo+zks?<{pW5VcjZmIGSa`H?fbiRy5s;W-)Fv+OoZ)-9_}uJ*6x# znKymALv?pWT!>@;_6{Bxeyh7^KS;xoiHo?hKmpEGwZ}E30u5*63z}v<n*LsJ^)$y* zK|efto4NWg&RC_e*Y(eo<`sKg85lD21+TB@jIUcJG4=K>&Bc$Rr3<4!if!y$wcwlB zMKg{CdtEoUg?@kiYnjh#*XHdU|2D~9k3KR(g!{l(u|nGeV#mLVeN;IRcKoZ@!FT&! z@3^P*V@bKiy6qftAAc3jdae5?@=kEd@}2jT%$TR%$UGI@vOv)+&U@R+yI(f^syuPt z;LPhH>7;*CzWTr964XCnddB?cwSvRDXDr_9x}iblt?nbEtYzyeIcG~~B&2OsHw}O5 zIrmKA!FgBKTX5=D2YtRW@5&qw2Z`#S_{37lEi)gzStZI*P&N7Um5E>ei1ifDv%1uk z8}d(i(W!cut_raNFDLFr68?E#i-rCyd03zKr|cAqinY7J(in#mk(c=vY-Ttv=@y`< z@XjZ3n-}9tzb4iY&J!hVMoYUJa-N4ZWijqNC(07b`ouc_!@NAjeax=sqFLBEHOgMi zSi8GH=s9bX9Fy1F{Q_S^CKQ}YFRtR$DE?)*bbCY5bH!=b+#S-N%P#vO8u0MUbKAcx zAy%truHE0D_1q=RI>JHxxn+|xONjMe4mOS#SxYm{Gi@&vi9OHs;|G(*c_tPUhX)$l z%Wb(0^1Ht26l`qXb82%#_2N%D3-U^)q%$%qx>t$`Jg_*mxuIdlVjFITf*(`U85#KY zf6`$%@GyKHD}%+KQ=1tW+T$z57#@7kKF`Erw2r}@vEaazbVi20mQOkg3wDd{m~LBQ z%e^63^Va4A#cvjV(s}SLpi-=$dW8-53c098X_+aHs>B}jf~2i>B^TIo=X7ioc^b*k zz*}s~y@%D{Sl~QXmNUgu(it`XM}Zu);R;AZr#R+3)BFeX?t`4S<jzBl^GreKWBWeo zC}>8@JdJcXa4iHx?goh@v@f>d=J;^~q_5_g#(5^DeMjzB{9;a=!#iEyJ>;Rk37<yJ z@*Ov}-P%2m)xrkk6hV*jDd~*mN2WrF?{kCZv9ef%DYRMN-aU^sqN`?d`m0w=UYy~- z4qerZiWjimFu#>M<qyj=_ll>vlRjT;o71D2s+yScUj2INu3cw)_X__J+_=gj-t6je zHrD7RO)=M_Hy(Z=)^U4da&xePGpBdK%L%svoQybQ*X*CG`R4UZgKzQ6PnB<y`Tul_ zmeZrDWvk^_whP8QZPGi+5UwpS&t28yuGzfK*E5Pc=lVu2H_Hjyr+X{!yJ^@TR*ttz zuctPhI=$(F{N@{9^&M{IyJ^^P_WXah;SF!Q**_bniErxT6?;_Q^Uq*i;8S*cy-4Ic zdBx^E5!<e<=i2mQiMG?xP4U0w#H~~}ss8hS7|+!+{npVt_qj{EKb&xh6%F7D{CT(H zb3n?Xb=oeOB5NZXk10;M+S|Tj>#p>WMRk{04w$uU4o^~JQZ(e8^li$Wy<Cs`0{*25 zYM)yCra&TNs?wBry{Y1XW^AXHH3!sfeWJbm%_{Z;rLKUwy(e~c)qPbsCZt%%rLtGk z@}J_C7m8k5im%)+y7Dj9<me1mlyvZXt32)NS`RG+t0{|?|L@7<Z}}9o?GdkiYPe0? zUR#c*&&31Pm<8))+&!G8S?uLnq|>!&-huwNg<ZRxuJkSXHp7cUNoAQ~ID6MWu8Qp) zGgdb&D)e9Yoa5=@rGJu6$<;|kFAzAj+{=2ErggdOpGV3i$D%)^W$(G!5vn-rXhzbX zDVZJHlm9TMRB<W>Cf}T`-2G$1yo1h88utB1_lizYjOx#w$T4Hymiv8^y6t(tsHm1s z+k17Vq`ve0^oQb+DpLiHYD#Tp{KL1fMy~tTt*%YpjpuJ3SU10nE#<97_J5mwu1d2l zI5!EMio4PA)wSh_hliF%WvcKoamB#?Yx$GqpSbEjWN)6(kh1$v<NtrDIr`NzCvkNo ziOl`WmLnmkl~#DhX!0L@J5GPsWR5t`Px_JEA2<#!Te4)g9ODm3Y3obr_dgmqs4x5C z`)Thl4H>DEdg~V2{l0O0;wQe~O*Q+LlrlKpyL|ik``#(50*utoEC?>k^nO{iTetJv z4D+4hy?(#tw>-L^_R!S5Z(T(ET<)6_+^6JhoAyvkd*j`EZZ9XADSiE|cOa}%<%iPg zx9h$Imbr#kFS&2d>XacQy5h_1Hn02slYTZfn?JU035fkWWmQ6Q^3uEeZYE!RuU^@` z>@#OgZicgi+{)-bMk%t2tFtDQ`dZE2pY~^Z4}W9m-bab0;l9ayTi0&i^?kl!l80pe zvKv#wN*@{KTy;O>bY9n3cT30V3s>(>v}1W`Ztgq1iQmy`b<GCPsf#BZ(u%*g_tfnP z1w2CgzTG>dG`a9s-GNp6&Y!)wZ0gM9X(3k9uJyfNs+N5Jy2L+y*InVm8Q~FE8TW|o zKg-fs{Ml!^O>sdvXHdkiHDSK5(m$`7;8Xq}d_{`dhN3$bY?^Og=bx2UO<gwo(~Ox) zkIVaJZ@M|zNLcf_a;x(H+RJ{MX0oq!_+{y_zD`E)o7u%%(JeP`ug#mEHS5_!>)5$J zTcmm?N6%h-aHEbB*Y4d1d?vDmDL)lj(hw=ZY#436p=v?(^V(-~KP}^P=d%9WRJnXf zOsB}Vr{4Zu-%tKMc6RdI#AhGBeechk_ivs}u}!61LA0UQ^Mec4mA+qn?;YQXH9dFd z7k!HQ{?pv^WZde!xS0=Y3(t5}uMhSA8ksM5r*>iW_j5gJ=WoC3+Wqk2toQ$tw*RVl z_U@{F{OVu9lQP8=eCxby{~k8}{=?1MBW>d2St6D!n%9+{=9s7MQg(hDao5drqHlfN z)GN=kbmCfN)q)jY-)okCRx`V3onOzUmFl$<S?8|c`!wxOaFN}<PGbQscc)3-C#@aU zE2^j+PEb2hZJm2CUvA+aqiNw9_0s1V=QT~3!R#re8r=|=zAkviY7MQ=SMnVvCap78 z^jy3|TIFf}$9<UsTNh;*J<t@n`Y=Ch<Kb_2nJShF^|r5JO`UwN?K^kN5tFpj3tr?N z_^LE1=jN2TKlyr;1%!%qcZbaSrE_8O6raQMue5AgeKt(vRP@YDDVLQZyzDX^7v45r zt<lNqNPl@>*=@?qDjnzh5=qN%U!3<>FwsMk@5>LK|HenuZZDMEEs)r8cFSU0JC_#4 zGBpR8`biQ=ml;kergr$U-e}=)&JlB9Pf6^U%V@wF)OI7r`od%X4ud1hZXc98EST7F z)-hYHVVc2`ZT!*Ck9joSe{*?*M``-TTR9JGl8=Vpkhrsx-Ar2MMovM(=7WuA*-$wD z)o1gjG&?eu3rDQIRnXbaZGP~}AEskF3xuDrF&{~tdcrjFQ=ZuZmwdB?J2!GJIOdxr z#N?YL{5g=;{QuuswtVr$k^Db@_N<HLkJj60yj$f}p3aGln<e%$i#!bHXx*-GT2$bS zlg1|Z6VvWLvUjQo@?ojF|B|8Vumfi-Gi%<4rC%;j2vAyDUS!azS$u8xtxsF;wobBl z)JW~UpR(!D;cW-M3p+V2yR&by{%h3(_RboMAM^i`(whF3xA69Hr#$CV`T|z*y;U#b zZ)@$7F}xP)V$`Xv?s(y`w56lj!L*4gY{@P1oBrkq2W^VHW3KV4mL>DDOXlS(ZxeDj zII9lio?d?_zcJ5UA=74S1FId&7Y5agubDrm>|xm=xX|g(>Unyzu6;i+UwI0zn=f;c z$DXcSD}9yvb^n{}A8?3n4=h_)EP0%72j9XRA0vT$f$(tiE~d}yDu2Wdu9E3{x1j%R z(yH^D3y+4xO|%vA*_ov!w7N&+oPfxE)`x4@6w~<2H*`eyZdX5>5+=Fh)%ObuZ72S& zym~Bb!n&&8?j5)7`LZ4FmU#bX6DmvXR7&K3nE9b)&-C+_8~#2%@U5Tuw*5cW+x9Ij zuD(KIS5<QCx7C-JZLk0GTmJUHjqg>~B<Mr&e9wr3c9S<W)!TF4-v3r!jdOR)rDxw8 zI5?B{+&Ht?b4E?+@3-67pKv7epWs(ZWVN^BH2&7GN8dNQuSNBn+o5m8{3m>WZ)RVj z$@#nd9i!*nTz-$=cfU21i2ZT)i13(fP|SbA=iqO@LrzYIo-C7hImA__o~Wpp_<Ixk zk^5)*-e0hL^JCind6`RBJpFZTxxv28Gy2S2_2%!JdF%d^+^6UC9sh_+s(-E%+U{ZV zwdlRx$BvEOHcsyY@2Kh(mQC1wMDqN!A7#@P>~Vj(GFCfKVEdaBb;9O{t3yPNytNe4 z6kG1iUby?qarL|pa;yxG!u*;_R|d*=+`jf#J@1jN7T2S1+|y1sIUU`>vgN$G!1lSb zcDOp;nIW)?Z_=l`d!4qP>e+Qfm+R57Cl}ODnD6r3_YWd3bGuXB?(RI<C>{aXxJJ1% z58LGqXtB<aR$?w*)1;{CAo``)`_p8<ke7@6)(iP=dAs#|W_^JEMZ>Gy4UxJrPTQYF zYWJ-X+uXPD?QW?}YL+K<-8%DYL&5$>nP;kcRxM_(b#4p~yujrUeE8D7oF@iTPulrB zZ(6eSiPsauzX7+m3HNW@@vlc!;`PZJ6312vPPTpd?fJI9!9s^JJJL?B-|>0&+Dx{@ z^LZKX*iu$JXkE0#$3DfnW@^6E2eA{E(^|B+cJJZ${K|SFxFPRhe5C!gt>?DwPvFf^ zX$Uy7uFkBm)<SCYo&5zpEB6=V`B!>x7r9qI)%W7@^RMQ{yjOhf_;tc*^TT!GEdshP z{I>o4Y_M65^<qKGy9d*}n{;aBE{J#~=$7{Wxfsp<MZ~H9O^~6<NypXI^BQNnD<(zP zg+19XZ5n#6`9toLJ52!<GC}=5qL<W<tP79l(7JfLw~O=Fvi<9BZ2EBgU09;+rJD)& z3?_S)nf@}JF?C+@W<~ym@lP+UU#a;<{E6k8>)~(24>`U#QuEcZn*a3#jyFek=Fa%7 zu|TRN?)>5jb{R)63W#YwPo0xA<DcZLKX#XHIAv}+EEcjLci+qRrwsgioPJi#KU}ly z?QSDiTQ!D#ULKaScxAJHzbgo4xHDz`r+JTa??2Ata+tN`%S<!bxi4~V$M4c);0yl6 z)w@39;Jz<Y<)fA!SzFiI_h`pSBfiL$5?|#6&bnVeSJf~1<K16L$w!kK`5o@<yRT3v z*|evk_4T#W-OJe-wtuYL$MAA@(e2ZP-!tucqvf1moR6#RE%|*bCGz{Xy~iiLZ~daJ zQr{TxamVbV+j}CjYNyt>DzM(ZE7Nl7EW^)^CxSUFFFHNSTMn7^E`B$A;l0k6@2nfU zEH8xqv9LK3#GMl_d;6QWNB@DdhXo=wrg%o3)>*!?>-EH-<=XSQPvpdYOmfjnKkEK= z?W5-O%>rS2T9=k>s-4QMxKq;nUsU+1Crip_+Bk<+$p`&gqFu{3@$0TjZ#!~Qmp*^H zHt4I2nEmp-UtFVhoPQX7=a*=Hyw-lL$0uct<W8Rcv2mg`n@r30R>i9LR}8jOh4$K) z9=QL(ea69;0&*+--|>BV@^1d=s&DDc(#wLv6qZU%)YT}F^O7xd{H$JH&Hwt|^3OZ> zrWgI5%=~Pg&wT5RMxBM_NvV_KZr2@(xE+_UCO0^*)xA*a%#Fa4ol|3v-70I`xvh5d zy+BQ2?LB9o`>pm#yfY*0<Ic-kx@R+|wjR4>_UK-w=<zvWg=aEF)A=uJP2X`@Yv~+c z&PPSfXYDGMhZgm0&ArNB9Cg%id8iBqm6;ZmI%nfH+jB9u<<k9Dv*Z>>wRU9Re(qr5 zn_q3RJTy!)`*sKOi%ikt-0H16x6OU*w|c{#4^}Y}AqOYey`LF&Gj&a_GT(;VTTW>d zN2Mk_-g0W)vt^-Yw!VGbyET^~IVyGW&TX*?>vHEOughI;dVSk|gX`OF&&s|Xdp2`w z@3SqZ^v-YT+PUrS>6qJcS$?Z?Os;R^KC|`h=`&m3S{3K+-n(<#-qR7c&6bB&xbKR& zaq>$j+f4hpm$gdoWljw}>%aQWtC?YpM$1AQX3Y)TS*m|oYxQ@dwV!&@qf#HnEejQ^ zS{7>dE;TB3YI@XDoAX;vX}#Za%H;i)Q(^D7oN{@;<<#-2sMONOFK@3EXir%%FYM;S z?>3xHe^un3ZsB6-SoeGiXK&3dHk+H8mu~LAdRZ&>tc}l0fr9-zoqPXIIdVLkXVs$R zp*iy{*A`8-T+4Lf&6X~k%B(n}wMBc<qf&QUu60_lJhbCX=2WY#+s^(k^Sa!VIW^<N zjIfvQW`;#Rof+onmK^o8ZLiPjGoO4`|2b#8cGKw@V9$W`Y@3%k_0nFS)o+ZJfy@w9 zvR%uR;<H-7bZ!{uXWOjoH_KJ@u3D@p&_8%=i`QJswM+><t9?SVZ~yTz%zC%n#(#t1 z+M?B#Yd2k<6PDP!>Rt5{wc@DONizTHeiofdN$j}ZYIY>LH*@ND=UWHeB;E_I(>Y<i zHYnY1wGRtN{jT<}ZyGkvlYQ`|b9b9;&vHKg(|h{j4)fJbR{9u{6*Y(Jq13h`H#OEJ z8qd@H_*Tc!w>4$%1lO<co-PT<Z29+bV$%La`zPoN?e#jc-B_9Xg{jiMxu<7-+vViv zw%g1hUqj@)#DO{aLLa$r&dS*AG*eRk<33%k)bt#sD({7Nde+bUoZI?o?HZW_JO0KM zWpK^j))D!C)}5fU?x!X;Sc`a_vz9#atoe!0Gw!EX6Pr)Bb6JFxT6BMu^Zut|na*|4 zSZ8IdgTs%Sm^`N!8rAbQXy)*3?&CNjUc7Dbl!V*`Uq!edSl#=+guCX=$6pL=vI&}- zZC@{|Ihk{QXM#qs8H<tl<<loypM=R<m4xg5dS?{4$XmwdyY^<4m8|jIe)UIRw_M0P zb)$;w_QuJN6;`-v=;XA|sV_bh60*KAL9jJB@>9Ck4#uYCnl`<M&ddIMobZ+*cF~6{ zzB_)ZI?Wp-7QRU4+Fug2;N+I9TKU}BQp`IU*mV`{-M0N;)3%e}#2eN2nnQ2<Glhpj zDmlhR(|63&J$~ZNY`(cGe*~CUS2<4#t(ubZeOk6^+vY%KrAAhd+Ph*(a+4<t6;4q$ z73!7my72PL$K}B@PTGryI~5o@Nj{Tpb5An<C}YlK=X=qG=Y^nPW%iB)VJD5*Y`-5V zPkoc{pjl&fh`qGFqf5yrZpDa(fFB0S<NJbC*EK%y<4P}{;J)hiXZs_~&Kh(4A8M%n z;bb{1aO%~uhevIq?*21iDG#prq_ZVsi_o)rm#M7V{U5wNzT(#T_5?nsk5{FyI7>d` zyTWs#&1OAYan9m3CAKN|T};?6$2S+IY+%2=@m%5_Tb_llgHGu;OgLzFr!R72$g36m zt=BZp_`4@$ZQ=Y47rTnPe{B~38_{;`q~7|~+qYcY=y^uN*Q}>+^45zV_X%!pQA_(; zt(Lacw=;5+TAEAS#llUAC3E)hAIYij?VGKh_I0=5=KoBKAIrDSxcXk(aP{BDBWvpJ zch0>2Vn=1tw*PL&<C4OD=PRXc{q1-r>-+o}mA!ql71Or<_BfOEee#T}?^>bQ*l_jT z^rW!g@72>heLEv_jgPGP)-Jd?s(Hp$Gw(A(PG|PG9Y4-}&p#>b_hVt>!!Ih9o2<1= z3fpggWX;NpANS9harGZ}N95bQBWv!dq#aQ+RKBO5lqMxRU%jHfBl0i5QrgzD!kd59 zJDizx_iNsr1NNdR8M0S4nNO`hdYjE@R{GXg3oE6k?PWL0v#`3p?fCNQ%4mr_x%N5z z)@HZl-YadLp!%jJ^3b{IaEb|qSF^Q6_QJN~<wcyckCx_av9+7pwNfYX`DvlDx}{V8 zHBHg;zVUNY%iQ<VFX?LjHPDQmw&8Osr*-_a4WF+Hl{ws&JHF$}87?ccTXOcNe%0yi zy{Y*1?DStL5EcK`zWPr7<v01)6|mCzXNw{OELu*R9sX7^IkWmq%ZHqpB;TB_{RX-H zGiB=dCav@RwACEMj=mh|^Ux`s!QwQ-qDajRZ45tb9cO=7xv2O^7^CIIHy83}<ZDg7 zwbeo90Y{Te_}8DBj@9>6<{vnmal~f(;x%=~&0*)>E<GKz<#JD#%)Ud?2PEey%zW@E zJC$wn?b@F87ETN2Op2dc&7G3YFux_B<W|L+^swzIuJ;-3{UzVMnYFW->*R6)Ws#GG zzwX}JwD4v9;bKRPS*bVKJ0m}wb@;3~lg(36^?Ksm&sr^uPA-ouEB~3iL+pcK%cJj} zMO7!3|EqqmKk!@MiAPgpKU=Qgb2|BB<%{40+x+jfd_JgMu`a47bi?xJOFvKEB(rmx zqKN&;-RH$)p9DYnuK9b)CU2K(x$5tnJ@))-5`E6KSe|uiV(RN0?SN(5{MGNd3r&|S zo~gpJswbVfpDUtso_^HF;}foI{iwIPhNI>D@)vs|7VYQeUvf?7yT&_azc(#2R+oGZ z5qjm+Tjp=Ra}m?kNB>msN#9%$JmJvRefBdvPc5vKVtc}^VtZEQ=A5<pQty`K1Zz$( zOl1r5bLi5aYLzwl(Ykv}X5Fw$?e~q@?m6qm;XQ%dR;q8?wYAsB@b<x5`wFvX-`TQl zi+Jdz^RrZ@KHq!d)0t`WRqwwuON{%udzHy_k=0+yBA3_h_+)95*OstRc9lu&kMNhD z8|Rii)T+IeZ*qTS74J^TId=+FeSdGQ+`rYw@1Jd@2eab8TdGGsU)Xo_kFB0n!k5|u zFMc;%{LZ-eJ+s?=_MUzG61DOMzw8pe-0iveeV^>-REdIiUgmcj5)a7cnLPNnvFx7O z`^@KWFaF;(cl*ieTb0#c?Du~*+j;Wb?FsiPrTt7ce>PiEelP3ro3yffZC}ns&t1QB z?)LYhlMi$<esK<%oSoA6nf3b&{Usf&Z$%Xnrz?o432mu8_e0=iKht_eN9EYJbHC}i z%x9=`5$wpEzvD$gd;)_&*M?@XP18PYWt8)f?8*PV?V)&y&;^#3N9Qjz3Elh>>6Eol zcUI)KUp2;R+ivgKG?jHr>XzG^|1NsQKjmBeyBFWKpMO%zz0X0*DN*$H{Mm)dm-1Qn zaXQ|bum1Kv%MQWDx9>IH{+D<WyZ!G3&upQ1Cglx(e_r~R=-@2aHGTCr^KElPU%G7$ zyrvMjB|7l(fxxmwu6qUMOn-5cPr11D`m9UoQNd2H&o`d1J#;8LO4F{PCP{s#eA%>L zE4n`SF4mIZ|FEL#xoPFWK+)rd@8m)qcZ$yHIenYs;k&LqA69fVyqz>Xr5VK9ZQ~yL z!EE`%6<yuEi?z6V7HbuG#(fDC4d0aVeFfLC);&LbKRq%(*?nI{zpi=DgB4xbv7av8 zea0>@{kFiNwoKLjRT@{H9L=93zTY$Mk6Pu&*=U^is`@solDKX^kPB_JXs8ZhWjxs} z6FPBS_=g5JVa`g=%@bQ?4x6lf5-8fgDd77Gt|Ojt96X;6E!LWM<w>i1=#*VgQW;y< zKRC32tF2`71o7Gs*AwkRcNc3(s8=#(sOV3&JoRfum!OLNs})>nVxJzFpXk1?0J5>o zJB~q4MWHg#Jv1j%0p#`%E4oZ(JHL?&-RL=4TrTwEUNwE2Rf`sbNq^?bkNGYaXYKhB z?_g|N`B55VH_rtS*#mY5!i;Rw%7=lX=@}q53e5rqVZ+*!-S?g2plwxm-l>&(Cr?Y> zTdXB#+P_NUgG^}Q^5-kK6dr?d7t{Gb(ekQ3h{THLE5HKBEBaRLxKteC+E^IEdil&^ ztt?yjP?3thRTWo?LyjJuw^&Q=t6b>D1Jxl%Q{D%P2JdkXJ;S^E$y3k6TZ9Td+%i6W zntK1U3dh&U6@Eqg-26UCui|F(_v<S0t3RN-wtr^3ri#(0gHNkP#h6W7k7xEQdljq| zWV1ZvPTssA#)LURfe$Q~KJuHseZlt~eV^w9eM~%Hv9!ryevo6zydXpWk7ED6%g#=l z7j$vc&tNUNuXBPfUMluFnmaF8i_2ztNX$darAbSlPw8qX^kSV@>E(K$*vr-ZyryWZ z&GHbD3cr;c63asbW-bq5=?T{AI1{YJ^h{H9*7gsgNmq?LBDu;hTCDiMko0*<SMZr& zEry<8t!G^M6ZH)i@9Evs`ajkuXI@a@@=C9x<&2M~a9vyRsxILEl+2@7HAOw^c|N+! zKGhWU)LxW-T&E!+ykY9aoOwZlwHvq(*j`-75WV>NHs&4Xi$ZorHT_;xbIE#9xX_*X z+oW1+?<`6eJuvG9$IZ&CNvV7nm@jU0s7N&KloK&IaxD9#+1AI$o$KTTuC!F{z0@{i zf70LJS$dBOceMRbi|_HM*dDBP&cJ`=3`eP_n^esL`6hDo`aN&%KB*}5a8iJfxwYT< zg+*ukc^zD<8;lrFUR0hDq^BSf3!bG^x9VBo<X~gfdQ*#aiMz1Q0xyTO5{=+p94Gqj zc?IYym{+knhBN-WXkOuOUg_d`aXSZ}P=L(Z<ZbVmycX#Td=Utc`pfO;&)E6mXO5pf zW9r2^pO?A|Y<>xNzgAvQ`~^HsDLD6h^)Jp9J?ql8{bO3SNZsi6L8e_U^OY@J97?x{ zA7o&RT{}ZYY2p>-kVAoIo)*8I`fF;>qCE_ISyiIfPWqxK<k|kjDBp)~qKA}3k<63W z!!6EtrP~E%mgODU!NembaA*gUjNXBRJD7L`1&;4v;t`$DSID|Ta6)GxtAv_@^kXiA z7ze#$q7OJ2e@cWmD6@(r#xS}GoY=u6qq>0UF_%G*gXuBRgeeX0!dA!q66jp=QTFCa zkb6uNOQt;Dm*6@1j$D|*bxoE}O^kEA9Q>~P$tz7XG3_@$_C%m_$;*WgZB!fEJyg#6 z$ZFbO4BUCbl)Hg9dN!khb*apO880sC)b}-1UQCYs7o++A){9`4bj}DV+x~=k4XGFX zBcI<~dAXv)<%`m?Im(*lF8wLCpO?<ty=cC1YU7fe&Tpx<&$({QI^?V}=^XQea>Zj) zKC`~*s5`kxU*JQbNxvpHYmHcKr=~d9k4ssm=MD-OoNGJHZ@ub+NiQ?keE%F7rHLiA z)qMV-kc*PK#USu?^P>12%KtQG|Mf0EvR^sk*}mYDEasdAYr?vdY+RZaJ(Z2@+Vd>l zEM)za<gd^7ly=pu-_myN{GnE(bM0-FPje>~2RQp3n<6#QVAJ=>*>Vjb=4P(n{T>>3 zh92FSE!@%X^H<Yl=7SlEiYGQWJ>t1=aP9=Nh)a)nGgmi$vRksTWc#-qC)*isC0JHJ zcH8v4;q04lWig-hg&pnwi-~-AoY5X-aPd`%sn8_5%`+doE-^p2n@eP$?}t51mMb$J zuGg$k{OuSP*Rtzi%hzvLAEh(Yx2+OanzD!KL$%8^<prmmmT329C|ufo>Pk|)UfzER z$xG`teLMJT>T>f>=5t%uYMzZav@f{r$E`V!TU#g3aPG~u2??6~rFd(mj%9H`aiLdj z`h=+G9hPg>8$Yh>$v(CA5&sm$d$wD-AMe$8KlkS3kJmNcFMo7cLVnew$&&VZwFZxm z8~#7}(VgejIV0yK@0dL^V_(%Nd+zeStGQjNW~tl60B>vE_A9k!1!tDNd!gRoefM+D z<XxZ5?lWvlYTn{8`9~mI=lsM8KbAhLoUG}oaZUAO&+E@>mCi+HR6nvToZ<b5a}J33 zQaSmh=c_%QRbhQP%erP9`B!m%_MWL<cdEpFJ*oO}mDBVitGQx@)@zk`?g^0yR*7?{ z@|jq{IMdMe5o^kEkxupx^UQZP=N5R{JYvx6yq`GFeCG|D{7D@uc16rB_g~b_eD3@0 z^Fo>FN0j*<OscqQIQ<C!r;W*ao%^ra=1+R++ULgAtR->jaqY9p$>JL-K*|<)?9r0D zDg3N*@_Cba=9P_w_nz=P-s5R{M6dI`lJgo5n}))BPdM%RwtGLiDzIDSADd*-^dtQo z7v3FK{g}@9<amtGfA2{@W_Uk(Z+dRF%f(}rlf`E|_uVw_p5gQ(_8vm=#h!mQKdYRq zlaSyuv0~?PwP%xlxO+Gy>2?0s_N+Oh`f>ZjBgbQe>}RXkJ)87H(&^FDug_%HJ~`yK z?Und})*_zIeja~4j67{FNqhd`;qTPvouwjoLgAwWTj%_TiXWFIPCjz}!-OCI<b>=G zJ3n%-@Tl>c<oPIFLS<g2TBrRn=SS%k9yYtuC;V`@q4M!>jhxW`-swmDzfAfe8z*ER zJKx-rqv$%%^?nPLn);`nXE-Y6u`H|;GM)5U;?t*V6@B}^JX_-N+-7>E#Qy7N4o{iQ z{BHU5_f!9Tnj~^>jp2)SwU6S}9yN{^6h1OQob%~I;B~&t_i6l{_D5~9gbpZtbeVM| zoBIyO|Jl+hmwANtpHTVuyvn0ye}m^E@k)=HI*?l{JZk2)9|>pk6|%n#_L#bn=O2Ar zm4ANxU_Wl=74lD+RH5YisF4T60tJ$CO>4wfo}g)m%ClrbemEXv>%5;gse+;T$a@hX z`G?|Mf%n`l$vv!ZG}!3)$onu`=lpCr)00x6clSO~+xz3h^rlI31QWj&1r=n>xIRUt z<EQi`{ZA=^*B?netS)KP<LK_6<+Qos+bpMgrU$#%^6b^~oPA{dudN-&o##5Ae|+vn zfQI(Mt`GW$#15QHWti%CF-+(FOb@Pp-*~<!t5g0w30o~;zli6f_a(d3KP;#6eY$US z*t`7n&3vu--udU*%=Je9*q&}*o||67^*H;|zT_H#$NgLOG<+{AG%50^*&HX+>*w(> zTYKKRIj^JT*Vx8dnx8OmnNi{A@-?P<S5e(WL&-%`R<Hh1nlCNoH>oN}Qtz#jr{K5u zeob>u{7&o%dn42IZK7XHb!V){1nIR*97pq%UI=(Hb{t6)eByeG!D8dirwp=7w@kSa z$ntaI+#0!!j4Z0U)0tC_{X16e#VT_2)r?637i_Q1)lAjB$08wPJ!`?8hs7&8a}`!_ zY`*9oC0O?3$clIKqyG4IE}tj#baVRi)Q{#*rA@t7Mt0P{?&vD+Jo0nt<45|BZwlQ% zC$w+6jqH?-1zKYD`&}9<H~pBc-n}1238(A~5v%{4^3mKMO6mS%JJ06vmfzk=<K+2A zB`+iX%zd#SCi2hO$w%++@zVUusu>GWd0u~MbkMKFpj|ruo}GM@KTqf1vz15hD~Q(z zZ~P(sP)b_+!q>!)-xaTYFMfHJZ)N_zD^P2{o3G5Db)|gPmE~gf&CL;dV)f5A#fXV~ zylgw^v0d|f-T$BacK?{&bu?bhCGCSyaj{F~Qs(F9Wy(LAi+1n#>9b+>44qtaGi8<O znf9acYR~mgxG!$MZQPRU7|>uE%u)2CTJOQG7lMji)@!vk?|A$vyvP3BkB$eq9pdwX z`hKjqVdMR#TKD&nE8WVU&c2X-_*JQM^Or~5+($jnF-_QfH0bsdk+(UkCx?9JinzOZ zN#&Yt2F_8;$#b`HES(^-{A2&~mkz=LLXZBhP&u(EpJ5-{LLW1U>2493mqdk6FPY1k zqG+@BkJuF(fmXS5!7maPR++6+o|rK8e(RLFgvncd0)Izq+cmFI+sYU{b<fl@MLj0- zZm#ZY%iz`8C%!OC=RlduJr#@I-v3hf(_2>EWcb=Kr{Tg=CI;=0y)%|A36HVfuib4c zc=VL&`AN$IS8(qaEWfj$JEHT%T^5}`nl9IbHrzVfv8VBZ@AN`}Y|D<)1?qPdZKl}< z@-;4b9dd7rW1a}xPTNz4VLTtT=g4(`uy?MRn4HTOe0F|G$YZf!n-BcA9)B~@o^EZ~ zAD8rY^LzPHkF#>(E0~kl*2XPe*7-KF?YI1~)afsSkLg`bJf;_XYOO(bMXC9B`}?NP z|2;SB|1Ez{%=;Q&!@2BZi~(w#>&!Opy>TP`)Q+jY4$Cqu)e?>_auB-1WmL&NJ++sw zA!tiy?(zRKm=}ogs%;bQtz9O3wsskd%8sO@*BMRRCbK-g&2(FF$n@9C%!>(0)%!P| z|MD+QmccgXo$=cjLNU|C?=^6PDv{}vJPNjUu6>$)C;ilp>x=@M`k!iK3*SEMSunM8 zZHk|%Pfqan2MjMtisx%Ga;}?kW8a-M%nLel-x$|EV}E1p8>+TVXBJEN%o|Zo1>esy z2CT|X`dze{uR(0~Zy)s;zkNQRtzCBCw3I<*z4`kL)#)6Sm;TnpXdE~2Z#6MEn4MJp zzkW6Ig6`R-8(nYNSu^aa*Z=MF{`;&O=kE2_F8lbTT{?UvbBFVx@8R=~sMnpJtZ>CY zY3-9c9ofHvZYI4t={fP-&$V&4-(@{Z?8-5eef{;X@{fvx_lk3w{<plBzjE~6@$co` zFH5!_E&0X&<!|x-xNS4^Zg-cyJ^yXf(J$7AcZr?Yu#WYX|9$)WlGnDnEGyNWxNRM) z(c0|JS-<{O-gx}G{l=HS%zNth)$82vfAIVHL)#z!I$!H9d-Zh5gNXv`#b4_#`{i0U z|Iyyx|7IpcU7yD{;q+Y3#<EZC-rCOJE~W2WQ6x9@QFFB6Kh-On`~^Q9i~Od@7#6;d zdp)~Tdw=5_#-!;x1uCSRj%Nl>%nx|hz2md=gSk_#9{!)h{jbbxe`8SRgnG`?_BL-z zpZwzdU^qp0S&oNP>153V%N0xJv;;Rjeser&!D+z@Cw*g99_)8xD2{I3)K_$F1)J!5 zR}oW1@pUN|R{z#HvOYKL=w-G}&$H4hYHxQtCOxQGZCU%i#`%77%$L2>d1~KVINx7< zhwHM&GyUB!s{?mS*5)sDzyG`2{eJY7o_*m7ud1(0{JLlQf6l)0#jD?cUAS+0>*@F3 z7Q7GrBmSb=n5Q<sZRPv324DB;1m9N{s?}%yuYYIqzU|j8e7|P4`u$q-uY0+|?<ZG2 zG%u{YeC7MLsxNzIEPQ|T+miRbW?%PS?EMv&6aQteWZORWgcsGfXI=en<Wu`TH2A(Z zpTw`Yi7VgBCcUb@?Nh6NZOuOO8&|&fnSR}yd-hee`K({}N`mjNHu<`D#oqMV{_-u8 zxUFwytzDRUX8AtzyQ|-?&5gSs{qW-V2A*2}6_K_1N8`TiUHI_X*S*4rmhCI|-TX`L zvQO=Ly*qpMZNIkoz3!(M)!BQ0-E&&M&s_J-#qVhqU-$m3a!lU4@Vz46$&9t{Yo9|V ze#|`mZl;u4v$%r0%;!7~=)M&&<_|u_{Eq#5g!6snc{|u^*Mov@@5=X#Cad4CE%<8t zZC=#;mGA$az4D!7%Rcv%SJj`V>^uIy=HT5gd(S-kx_7Hwt^Vc3@BilM|GFpCzps40 z`~B`)%l5f1`D&{ad|&(1i|V_xuYRwXzw*6cW^Mn8E8jb|>{DN{a^Lar6(=ry@7SF! z6H@Wv-LHF+%fMmydFsC7`XY;$?c1JFUYp;#^8L@IwtdH?Lhsh+UHKlRvHHjXdFMZY z)?2)I)^yZqynE9W%NXX?oiX*r1ueq@|1S~^Yx&j+F|P|<6zp9PKgGYQy;$|&-^}dH zsWYx^=1TD061GO@a@aElTLIhHHA0t-&^y9C9G|Otc@682{#tJ0ek3M^^RsW<l@*20 zGI}SoKFR1U&NKRa`KEjI-l^GZ6X!@Q)mqdm9Q<P5AyYpWHHOqV8VWZ9k99IR^%?nz zJg_)r5$JFS#J?m9lDZ6HZj!xj5%}|P(6LUYPax(!C3i`6E{(D&g^L=5z|2w*vt@CQ zFzXackO@0M%o4ByE|7v1B_IV_Am)ol8joEVuYzp5aMerj@ezmq0Q0^iJ^B3gSKg<H zJhgq{dmwnd<*A(}empXhPVdo7nj;}0ajIlOIj=BZX}*kG!HivkkGTvY95^0x73^SO zf6Qgz;vn;w%OJ$T>X_&PHwU$2q6sq^a(c866fo`tb#hsrB*!rJi3GG1vPw8AJmxBx z(!kZDeZYh9szi80Ak(hJN8cpsx<0nv6b!O#hJe+@!uSmbRJON^o+;&O+>^ktT<F3< z?~TntRU1#OtlVSh+9S+-+4=a<1^yQ;3=NFGs{CAf$->Y8*46#W(_nZG($zh;QKx?0 zl=`)wMGi(XO|yC~ct&``nV(Zi=gqa6f2{MItB<97(7S>@NKbdp`I(y>g0@-IMxNiv zv~AfX3&VnW4drtsg3pO>IQ(;xYrMjPWOZ;y_t~B!Q@B}cGFe}&wm)Mbt+)UEibJ1G z`84);B<t+?JI^)d{=CDJm5y~bE?sEOAY-rntJV5Z|E8P!OWglhH>JL_p6XLDnSnje za7Rv{%f(N9I;uKePF?HnU7d6}wLPt?X4{rU;Et{~U$kRf<?JUi7bi?MT<WXR^XBiA zAO?l2bJwljENVA9BJ@sUosH7Y1<bSZC%InMG0?vyd2wCgvK#JYB7S#upO%@VsLptE z_R01`3;2cDYJY4`xWe)CYfP(@;`{~NhTVpuit!O!s~+yI?|<l^F~cqS=)}ZpA`ZLl zmgK}%>!mGy=KM`J<+i{D-V46xBqM&5^NS0teeG@@@buTYS1K((PKWJ@X1Sboy_;9z z`eUC}YvyLm3c0ynqIAJAqc^;J{XAxzHA#4qo&WZ1*Tr&|Yirv?7ndjBzuH!+@Ypem zy>5x7$r@(=v^!h*mfYdmyzM<Nm+$KXeY2bnTM6W{7p!HT|1syy<J^sHy|vq=%o<JG zd=um^t9|gB_U0Cg(YjowY?D^D4xtH7!b^lFI0<i2y<pa;9m`c~qG_`7RI<~;y=INg zrmbzh3tn|*3$M^B$z=*{UFW-C)rGB`Q@CVPg*_BRq!JVw12P&MS)3L!^09un#S(YS zY=>E62lEcI#_2Q78mBJvRhSs?;@pq_Zf8q;XCKhjxw4hhMdrX(&Jfw+T&C^WT)wjp z9Mo$~t9&?jhr)}dOwEj2EMgg4yt5sSFi!DZpe1+n`7E=>$<nz@+&r@nNF7!S;N6%l zT(OX6<0eiPgB+&)S4C!-HD-0h&OUH%meXam55c|*Glg$B24~!2;kyKqQ<pSr)VQ^Q zQ^x@8;bp!LDnLps4sYT769!UtEd%6;sbJkfAgPKS%Pwr;e6vE+B$p{$r1e?-p2bsR zE_m+Rcc8UMYwD5<)2nisw$G6Mon>RzC~YJCyMbr6gTi684abs&cO2Zjas9DmVT+5& z!V!-*a?W|Yk#o;wkk|&!lv$a=7WX0IcOKomQQn@Od|&MSv3=5e%^JJ+nl*-3<uXmr z;@Z3SqG>uqp~sJZrzU5}ey{<p8nFAIY|YY9=h^x;QR+kW=HMlp#o6vC`5S#UNX<C# z_tiOr3X_jcy&rkDCMK*rZtx+qxLm#=Q6l28A<vx$pE7tDpP#X5Yb?BMV2~%lCN#6H zak{45+5bhpa=wQTtULSu-R(y=?_R%}Eb(JTdU<^Baf1)v<qjX1ZnOKhl~h}!LtCQ4 z#7qf`6Uh=4TaFuSIF>AN<DvnNiV-h!=axi;35gOODN=0LG~~{H&zNv<acBQEixnR# zl8VdkFI|?X(2yvxBjjU7-7*Q&$}h4<p1s@0`|RDmn9BweOjqr?pLJ+)b3Kpm6&tG^ zN>+BRpI<yU^+G>Zj<>+SWbf(4jPH7{Xvp~%#FunGy2$c<`Pc3YIoTNDTF1{B3)mM$ zoA$F+P4M`bv2EquIUD}i@JJuAKDqd3@HP9Ts!DMla%atd@-@3>Uq0e}_HJ$XtGl%e zIW=>V7C3xa`Xt<7#?JL+PHNRs$Db})a-clslqB!PKYN~@XmwIz*pT|-huZ4XZl!Bq z{yNO%^0K<wFGT6(&$W{B^II#lw*?x0dGX>)A1}{cO-|h_Ja;`GOkT!0C75ji=agW+ z1(Lfi&vcNm`plHk_AUfWFlMy9D^XN%R$rl};H>_F3#3GMORQl@Q!|5!bNMde2@8e4 zC<wIqsqrkBx#TjpgK^1n^M<q+e)0@wFU;M?Fl(XpUy#CI%o%O(WPBXj{0cZ2C9MuJ zFwR=YUfoi+T(W9Ic-HHNv=;~OF-<yn^2@h_4-|KvSuIgjkdQGk?ZrXJ$f}zHk8FZL zqd`f-Va}F?%se0$Nq9N5`2{$GWF$aF7BD5gU~m_huuxdW)1l4JpvmEw=mQOqpfX5L zkCK9Oy+gh{Pv83;D;gKFtGAeCw#m(T@@+%YPCvy7;ye#Rt~v|2@2xekFwGBUcINlv z&%MB7YhnELC|jG{99NJ%Wv|MnFJwNWDA2}dF#YM|g~D@OK{oX}NLU@Xxzakejjw<& zxMd;pnRMGj7Z}A1TqUdy>|~g=ko`RK1s>Z9JCFysIa(Gn>!=8{@f9dCO8zP{Dmk`Y znrCjs@?(sx%um)F`*!fb*SF>-245ary0AiI`a<^lgPU3xGXI&>z%w^N668@|mXsHn zns@9xK-GrpzLV*ui7!mQoSn7kYpX6V&tEIoox5E?8$gP4L4%{4CQW#w=Da^LeEZde z7f0rs8h!cm%5O`6oJh`GuCAE=-e9A|D1(z-ync;6>5PvrX>MKEk|MM#qTV|AhInr8 z?`5aTH*x<vof&$h_Db36eaQPi?52B7*!5OKZC&y?)iSfxxmkr9!++G&#iw=3zAsUE zC>7sz|9hd~1BOHG9M_q|(#qNHyxi<L+pg|(SN}B4w#$!yT)k?j*n4qz?(JW)PJ-ut z|2U-XlcxP(HpkHqtY4-IrK;TwlXCJjpTe0q<IqC^nXZ7I$L{;Sxh`M0#hX!IAdoe6 z<&?jYKNKg123?zU_9o+>Z6{V~oL;czRC=^1M}>_<aEzvoZffiLUvG9_Xxw+H@%_!l zLXl;ge@xtwD!^nbzIR#FZn*+oC#JhKcg0i9-!ASt-h15A{*q7P#QQ%YY+Vbxb~%Jh z^AX&<a?$Gsf0qrX_>#4+{hYF1b<2{dxf&-AYrR(YO$hQ1+ru(bKTWZ~X3stK^{3ez zZZGL6nO4}TrQBk)%v-Y2WQyT5&QBI>KXX^}I|a(RzSXqiFOYMpwA~c@F8gfwmL2>0 zKAQFX7tGx6u5nB_=85p!@4g4Z1+C^=P21$r8^I)h`{xy_Ln5sHD^9p+>owi`EO`D> z%g*;QG42ZULqk<Gy{w`=AF6LI2p637Cv(!-w9uS~PxyBi$Qg+poHx^Rt!p-CLdDI_ z$*&53`3FVRnN28l@JOhzZ@w7rZFcb0rZ&~Ob%jNic|VLiO9gZPYMo3Bb$`4sk>lvs z9Y3>Od&L<4_iXYMan-C6`B2y8x74FblH=C3>5N|&l&f0StVnk-VO;oGrYlH0cjL@= zHq$kH7hYcVn|(pqVo%lFm&!VixF;>U)4aQ`JK&;t?EKl?A0KdNK2GA97@HYd+c9PS z^Uf>pZ#T`?c(TvqNO)(kkG9s^iFNm<B+YIvS2D^w&2}@?^@7yyq>b9M*QS_+z56AT zVtae#-|!t`eUH3LyeI8(*=!#D(f*|Hj0xwacW@T=g&U+qn>k&q=rXe0#>}w0%|hTr z*=(uKsRzt8BUxK@HEc9;qNj2^-K>#ymQi!w;S90G%av1YoIb{MZPMH&`$3JR@7LQ` zH*0uyv?|%0efla>jyrqdMUK0CY3$q7Z?0ebG4%SQL-#grH@>l#Y1z53yQ>`@CA_>B zRrY?#O`pz_`U0%JjvDP5>wa(RNj2%d_}1fQS3pei&2-hRPkQ1RPP^Q9OcCXK{(IW` zdk@O*JFuE*znHu5UV>WZEgKQ@FOCluh^?4j!1_Q}<Z9p)*TCrG+ZJ&g{UIf~Du$c! zeA$)k$R%!%IS*88&N7|0i6hn3P}<te@>J=Rle?peByWe!5lQUscY3stL!!FllEyCC z4{0owEvl~s^H}PfP96)^=--gcRhOkHaxHM0V`Tn=JTEoL&6;yq4zdXLE!OGZbh`1m z;s;Lkkmy^>ZiTTqnTDV6&s$qB8tNJNPwSWBQg)}K=ghCJU*w;Ce*L0Dt4`hCvpn84 z^wPWiU9T*(DwZs4`sev+^X#TW>YJKcq7Rn#ibjO4{T@;FUoBPsNctXO|2vOdTJKtF z-uSCN;Z9pqee;D{ivz(OHs{_Mc%QHGxW`^4zVNw7!+XJ>(;nnBe6jear1a&HOa6J) z9a9)ZmA>rZeBk2J=XzlOz2F})%%0mUB>u<>{qA9X<}Z5D%I&sc)Vb$UkBX;OusU+H zzLGd!@OaV$T?YNg8TyiomK#VVUeUU9glqn$r>gbuO11Ze*158$ube)|GqUESe)nTx zsprzZffM&UX($gU(Q=&|c_+N#z2b-7xODH-t-3j{)j5tX4+~P;8pmMMzv-mN(he=Q zAL@dh+r*}P^*CJ4v2X|9ru3YjXXmig@G#k5dY$|7zi&f$=ZZ<2EK(Ov`>|SS)5j@W z7rkLQ;ifEdeyN9Dpgns`OMvdVqRn4Uf9aBaboz@)ketg3jy((Gmc5<%>0QU|KdYV! znAOgV+gM&d^H<-oxyuzdpY5Kbo~QnE*L=oIwms*!I=!&tQ)u+yY-$y6?)|Z~O6_Ka zn)Z{Kcka2_3af2>YHTUA^Y`-4GXp{n-SKC*=X-IbNNAA=e}3zE;ijHPXR}1sGw$o! zq#3K3?RazX0qv<iM%$Jdh)0(i3;uA(59BYAd2o?q?(&ca&!XRcskY31{ae`Tc7LpF zGu!Q$$W8AzPxhXu7F#P<zQ#Er{9>VvEW_%ineq<v7Uuf=O;lU=C}aO4FY~`4#<H4L zf4_UEbM9k$Ibo^a_FY?6o>_Nl`m-mjA0&SG?&RM&Emd0ehf=!Q#k=gYny$S*If21_ z$A&rf9fz+x(677N6|WUvd+*%A^hq^eKVN8<X<4*Uq%`T>!UkrIRf|_}yNWZ%H5^#~ z?_t)P_l$dHE7>ek%<_n5s}W?3uRWzSrIz7O_{6J$)0}4V&rW~ibLv>&G`C2`0yd|U znmOMCtWSOa<;C&L=&?+fOYqBit>Tv5`Sz}BHD)nYNHNuWo4(p!!u{Z>l9YGkoK2d! zAADUKa%@^ZCI6CTG4I~cw`tpyzq~(mRVVlC6q$GD+O}f~58kt-&ehm0`GZS!^@0sk z4&BM&$uN`VFs<M5%3c0}9*6C_Pp|K%t<{zPm8}rla^dU8@T>WowcdWU{VSI}`;Xk( zd-6p~s#dG#1b4n_X7}b432N}{**2YD_1Cp<+pYiDSKAv0S^pE2bAPLxbo-3BleFK2 z`x>HC7FqgaXx0~9Jd`f*V~wo!xjhHVwtcPLCiP{;+;ee!O)L1DN>9wcv8jCNndfl_ zlU7c#WKZRr!CM)fHm|=YU6IFS;(PB-bLP7@`ksDCnk_f2?&;%i)=$d**|05W_L%r@ zZ}Xb<iaZAr)%us5c;nfZyVX&`V5eOF<BJV1jvvsTdS=sqoke{Xdl%>)T3B2a@hw?! z>AxsuLpT2u0#}vaTC_Au9N79P?!VZJ>r>`%dA3YC-(a_d<!@z>NL$}dvo)m(GnqYm zCLM0zb6XMj;P`P{b|%SRUyVL(o@gMtFzJf+tDWZ^+q|~^-H`QG+c&;($%S8PTwhyH z98cW2{$X6&%goTb2U*q&_%CH%z2B>?)N0y>_mdKzF7G?sCGwNG(psui_z*+S@vBC1 z)(zVNnuKlY^^|XHXBN?JVf<03D|nJ=!A%aC&Dp7E<QSqHPp<iuIpO3A%P*SE2LgAW zn;0*8p>WEXMwg0{^BclE<wQ!Irz}cmoWCqXPi4}}<OTei5AQcgFP-XmX6G+~RsB!q zABeHNrJee43lAqNhp7JkHEzH4-<tm3yz17Q!Y$$N>~1w%2FX9Ft5(X|@ZR$syH36E zv4u}Ia(psRG*dDbT%+}Dujcu`QPw(BepmAU@7dqmoiqEaL{lUCfp&?HGdn*1?pEL0 zQ+ezbi;0;<(7cc`_P<MxrG08!9dKHegW0cj3G?yqtP7S4SnPXzWszoC)>bzO3(=+5 zPdk({>bS0W(L1TW{afwy)we9}E_xMp*4}d=U)a?QPqWEd6Q|f*j-T3ZFZfAZ$nw(C z%-V}vq`uv=+tj9<)W4xkPx<m;c2z}7s|8Em)wjGb39%Ji_`8|G-u;PD%RGO^HO@~o zTV7@V{UNd7$UJ?gUt%h=1y`x9=3g?sCaN~_Y>djurCXQo>j=8+cjxQOb(*Z-e)AnN zn7dYdwTzwgRTGbh*sHD%)fd*zuB$WT2w5M#XJNWq#q<?dj;>hF+@x_^Sa7AYz|~(- zF4F`8w*He<+ON7G>o12AzvzrrU!@&p3%G1u_ohW(x2e>nevcH7=FvvwF9)qwzCG-& z*W!0vKx>P0SY}W0Bjf&jgV@Mhk(H;V{%jLn{`n^R`%QIAHYaVB^e$?4epNNe|M1OF z2kVuW(lowHr)gZ~H5NHFmHG4X-p`4dZJ#Dy&1ehCp0zM0{p6GV*=>hzGp!Rmm2fOp zc}f(BSnx8osxPs{==cY{*lekVS7y0sY+WYE)%Z;>SFTt1n)~Ao{L9K;njGd>dd<X1 z@q(KMLz^I1qnQ(<K~Dh37D29t#1^Loy#Wk+?k(*%><Q>I><!@9Ql9xaL#F=lMT>_k zi%j~yoPHf!wKK70(;XA1m8QJ`?~Hl_&MYoGRAka8a_38i%zi5=cj<)+>v{vemDsJ> z|1m>mf1yd=eGB<(>(95F$_88BGMxG{_7~@6up4G(NxEsQ_Enzpw(c;8YLe8#C$sM@ zoo}$md-2S+@|RJUIhGzVaeA3qHNEZ-#JY2)y#a2s-86K4m8bOU9OiJH&;Qy|Dn0A) zMT@P^E?UGXPkFjb&};2+j?~WM9IPh{oEVLI0<vt~G`wxxG`7kqPr2XbqdX<5U+~nc z37IWM$CF!vUK={id~E1csgfeK@Jdxrz_jX~fOB6Y7V3PLTIlmZYGDpfWluogN2!H5 zX8p%Jv#Lz^q8ZKd?LZ?3?=o#f+tVZ`HmIw+T0Q4`mS}VT%;70J>=Ktf&vQS_C-~;8 z-rveenf04)Y_VrFc;laC`%V4Rg+TGD{?`Kie^07i-fhyj&0aC<)eNmO|F?Nw=J`E& zeRJDi&%MY0rR+TZk42LA_heVO-;<;I|DMd~|9dj1|L;lnX_@s-OWyi-`23#Sas1zs z-sAt4T-#v(uy)yB&WYRX6^-8dcWn8~IWe(*QGeT0Z4tx1Hr2evg#izR4z~S0$#MA~ z%YhB{lB?hN|7cCRVk7m<2P7<X`CrQHm$9=z$Jb;QndqomuI>#k{CA;3>zv!;j2q!D zd&I6A++W<kL}7jMs*B5#R|zvPmHe4f;!)G_Jw)c|2MrN_-OuyNgpK@mbADVCZe=sc zLfWz2y(itf#@c(r=D4lh3k+oB?#lmDmzDc@o{i)1!;6w8HHn40N-S)&djGuO>;H4y zh>@><USjPUhwJR^?$6!7-F`T+Uf^`=;l*}>Q%*M>x|2}6x$xTS^ItQ~6D@3#oOW32 zomZ$hU$EDGewlFFVP&;;@yDMkC)doLxxVe^gAW}ie_k(fD~|vCSyHzy`tu6^%03>o zLcgvcJLagbD>)wh&+uUrmS@|;zVNd7OR-Lo%|E#v^#!eXv$!Mo{)s%xcFsj3#x0wD z-ooM-ca?c>l9S?9zPM;a^>;-dJ-~J6>%2+kGJozU`qXJO+!3C8Ng!8i!dI4-OZgM3 z<dmKZ)ErsUp_A;m{?R<XT?#Rl`y+TZnZ^FKIV5rSNMeS=C1bNHpV;{IsvF&&zRq+J zyS<I?sBP1MK#Nm?dzYQq79@}&;&w{o3bS1J68DE0lC8HJ@*Opvm@S)cwd?rerN{df zAJ(;O`n=@$uGPmkt`^_8`uM7KZr!=s9SX6!&P!%A#M&}VT*%=%{r%e2PtSi?d2i;G zS-PJ#E;@JfsM5<bX(4k=`aa5exYlqzX1*c6`jg0(sfv5Fw!TuG(%6viJn8-~h1RGi z8`aG&EESDBb*Y~FmLvOu&fVXyzQ0&E=jda9z8TdFU(|kh9#i|_Sta~O_?X%c)?;cF zr`CSZ;GTOcSNPAmXLIE4zPZVA{`MEKADU-#8uK&fY3;gjgX#Q^sh^s+A9x+?s$aM= zSaYTD&zrnS``_D!nmo7P#=7rg$i>2AVm}I>f$+*jj<;<>r*vF-DZ{Zm)42L`$i>iO zVn0I9<~7FW<~5!#Tq%5-d;Q^7M^T=apXUX;mNUN8{m{Yurfk&<jn5$$8+(^`y~}zR z5?IXr=i@Q43Wmoa7kkg<HQFCH+IC?5UH9qk&sHvyJ{#;>&RKfPe7gHDi1hw5cbMYS z^BVK>^BV7~URn8a<)S^xv3hS(erY|nm~q*2?yEh~55oU$-(?fEW4i7K?(a9BUR<?z zhfUPeyG-`E_Azn?SMDt|;D0oM=L-AhhOaZg2imx2`m!@FdVR8Yo$!A5d7uMr?i=wx z2JJ`^-0!}4PhEe9?|yg2z5Mt7ssE8%sK@8{>fbNhRl$E&zGMGo8?{w@zq|RHRQW$^ z_WrQFmHNY$$>@(9<J;x;7ss~US5_*Px0!g4oj>K5ty0!5{<^Kl-wSSh`JJQU{~x)x zUcUrEEx6|Ui$mUi_t-nfNL#@rbK$q@CGk(bYu?*^f3el&_ZM9n48DhpDx|Nwx{7xv z2k(96mp@s1E`P8+aM@W<eLmN*;CAl$QBT`jYP5d%b{#pnyy?Exq|ZW~%e`f4xIX4| z=BIPM`f_27aK^U8{c}W=<WE*8P2R@yi~Fb2#nmn~*2bF};*=lV-Z>|8z4nuoE!oUp z+MGW2FrN9TCb)mX+D<d=DKkF`zQ4UFpzN61qU|E5&i<HXc|T0!{;5-pJ-6ShwlCX| z**)Xy`jfiCmrM#hcQtpMd6BZlqHe;RlQj$XSm|7<S<%oen6#hi{l+K$lZuxK*c_g8 zi<PCtb2?}bk=eG0h&hMXC^LOLy2N5BOE&Y`<q-_mKkieHeURLLo!#ICgZIq0k>*dm z)2h$0I?vpsIN{`8(Vyq1GUapyI9~jv*J~0~am;<1%GL+jhU`^8UvjYKYP-xh{72sT zgGKAhn@T#9kIKC$oIkz6!e`y#1#VHnWlAZB1-Z&go@KZt87r^gZDQ9rlRWYLiaG1m z5{`ETL^wS(n_BEEDb_8>WuKb7ef6B@390!aPKi@2{|j|)bbYOLAV7diK9Bcd^{a2Y zwKtyV5BR~EU2i|>-0kC`jX4S;`&=LLP2F5Be*2W0hEMWL`4w{}X6dK|{$Q>CIq_7b zev7ssmwLdDji-LHv8-1pStZ^6{O`(BFW+ZH@7A!X6!UeSS|HKVEYP(t{jItC<hJ~+ zkB)XX-w5U53;bcaRCtl0Se4|ax!nOZ;z9ALtM)rB{iImiI>lUoYkPT~h~3Sz+upfs z@OpH6?T@(=rkqMjUumGZB50>!fd0yqGLutYr%p#`2)@@(PLyik5?%Og{?U@%dI8T* z&nush>+7x|*L-EA;a$BYUb`oJVr$ys%{~83UzuWrYVtPIZP{VYySw6-+15L|?(g^& zdC}E2K+tJpYggQ5QNyXJWv?=$6<Jn#aKDY);PCEbSJ+O`ms(cQ?;}25eKRfkcg_jD zrZ=7s%%aq8o_9J`wPX)R=2rDowV*hMQ`Qss%udbR6ME9mAZ5DKu}#YrUIe{w=vf+< z@WeW0_O9=@+#*jd^;))Z_l3ZNxnFp;>1#%8WP2~)Y<r_GG{by<Sz6JKB#R|HWnu?d zI}|R|sHfRF2xZmUENlGGw`Rdj?tA~=p3-{|{@rX|h4P;5J7Zt7UgMAU2<f@LbjR|D z4(%@Oj|`f6S=*ZQj!so|p8hCk9bay}kfP3!D_s*F)iq>XS-OL>`@qs2*Ex=U+$}PF zyXDEc=}+dJ+!Z@%cETOiosN^AoMY_RrBdGKSoD-xzSL9CQRCI57$)^slkT)Q7M=Zi za6+7XioVaJ)216&co&8G$4pwSRpPmB)dkg^tDL4k@oEipEn;2bE_zaQf@G*lxI<aU z#25zsleTTS1)h4381zoEUQoFnA<vQ(A<t8*`nvg&zW&MBb5607x-A;Ki$agbOsbw< z{Y$5zyw*VFb#qX`<*x@*w%SRQLNxpCQ2CxQ`AJ#6%1(Jn74yUiF{VfKPTD%QMNEug zXnu0)SHcz5omm~RlYUR-+2~yqzI*w3rX8=F0~L3^155o>J6U^3WvBd174wS)zj8M1 z2AQ1aKN+f%v-X#c=ewHkUm_XGYYntiuE)yv>{9v8Jn7B~?;_!@Cu%mYo8wK_@T;Bq z>ZpG*HgD3Mmi8xlA1A~pG(TaIR55?3xYOGPOzr<V0VKEX+k`uoa+79%08_s^+MlS| zsFd$)e=_f-;?C21Rmz*DKgs(t=}t1wq}}|ln>i!pzu0g#cB;K@o_^xj0#MsdeddNK z)AFBPeBBIQgFj7w?;&Rswf>~@skIlLZ1481<4*W+yX9d1?09*V{dZG7MKhhv@ARp& z_M2;W8r-m}`(1kB!FE=;y4`mU=TE%&V0*XCAG3!Kw{N!nQ?|1GeqF+cXocqcLNouE zJ$kr37a}Jw@n_nJC)-_S-Di>nvp7qCt%;N8;l3EOqxYC&t2c}EpR$&d`J5*EufA?p z+-uiy`$T%H?|jW054L;z)a^d|Wc!-HtF_&CzBFHB7v8;|zwOH}1#Y9CZ!;#}pU0q( z-Nd+6?Z!i$pf<C*i)=N_{M(B@TZMn{->+Ywb7j%$RLxY4$eB7zRf-~SNomabuJB}j zn@-G(Y7L#+s&AVu9*Af^HnJ*yePw!9_IaOef7b7KZrkF=?K;gpvMB$}jm9+vdU;We zU0q+q7M?B_e)3<gN#q;vp+}k##a_?1FB4*&q9`(-(^E}VxuMTNBW7zfr|R|HP1mA0 zZbnU1yriLB%eZM??~VfP4*`o899j6rfqnL@WNFDoqVEJ8XB}3wV*Pr3bL!!l#`<&T zH!nTlE#Q@P=TV-?Dv8u>qSpmCy$fD<^`^r_*$rx^CY`-h$Sd_`8CUAVZOrEX+nDR> zA5ZFCeL{=(+V<IOvo|ONORe$G++er#;IAocuZv^#G<mOWFXz2BKdAFZs3dFD?AkSw zxzmci8s2>(wKp^Oo3`_8U4yMR<Eyva^gWxknYG7!dx~&w-buAAy_+s)RcF7jkJ!Zd zQdRoPq1`FT8Jk&`nRzeR8p+^1J5+R*w^?8@LSfvroJG$j`IgL|p5s(E+uQ8Y`eoi` zfqPSuvo^0v21)RHn=RbGxqR-$z>vTSwUc>e#@shc)Q_ngGwpcO)-Y+tf<;NHT3k1( zI|W#EA~vYp*e#db8>?K_U$sH*_r^twlJt)^_1<9JnDG7gyV=tB7e&7Q_#?Ug&du+8 z%j0Km4}LfI_q*DxO^%0|XXe=4PI;`Gyy@nv_cL<-Ma-(bH!UrE+tQm8vOPB!=VpH6 zj-I8ved*0(`x7<=W^Ow<EzSH-@5y7qlg~C>dh>3ZNp!OJ=KEbHvrnc77yX}ka+$gB zEY?j+Zr<Zjn+?L&Ml*7r{qvoC_HzBLl*>QGea!NgdT*{?;=Nh^w%Y7F_C_~b?%bc1 zb0w;{i}PGcv5~js^hxf|E<8*0oa(h%`qifGGR@n=dKUiMxAmD)^ek413sIM)JvLiZ z%WU_XoOXZP(nzMMX^m`?(!^h12${uu``WA&wrpRE$y?Q$O{#ronfzX>dzLFGbJ~e% zX{RqQx%rFd+N}KC%&-Ywn_ae<crUr6b1{FdsbHMbn<%xD<~!mF_Z{@@3Y~TL<g_$K zoy@XX9-BY0q)oc2arV>l;Ei6J_ii)UePdeM&BZUP`$9G?jeHhze(M_3@BgyaR-WE; zZIAv<{SWz1O26zin{qNrSgYlW;J(d2Y}&m)oRZ{L-?ufdSYqdbn*6)Z42l*;<UYyV z7J6mNn%gpNdMj@zNUfRBeT;j#WOv`X3EhVlE!KXrXv>R&);UWo3)W3Y-sN?P`zDjF zRpXpkgPEl}_w{U_+kUm^C+q)$tub-x4eeKpVl={!J=;>cW}5Yr`|-Ndx97?-gq{8w zbG5AFs(jdK+t1s>Pd}V_ploB*JC$vx+mx1C=&-p?PTP9t_O7UNhqEljT>6e4{LaMJ z@4l|-^w*}VMRH-MH(GqM`f=?q?|p+$xn6c_rX?3XGCB2pu2B1f8+JPP1Tz2W`CsoV z4g1tIn|)=i-U_>@u1D(*DvBRw`6pu1vif*m&n7R+rdqM)FiTn8-n0!&kGCn8eb$)o zrW~;M@YBuJx9z?P-LhXcxAe!G9FwRFwwdR?O*{9E<=(`~+%vb;&xz@=?we5gGpBS_ zOc6h`J;NkNU;Sqb>{x5&N3w5G&U>>@b+e3CYQQ~*)o(fjbH2QG*m#G>Ubt<S@JC}o z=6Q#2N<Qz3VYybCa$q&@CC2{AHzm8LMLDD$$TfO!xuKtV?VjI`)d#&p;&MJW$fwEK z95;`im|K;+;ede3VOjmdvg|wLHuE*cPYrL2v}SvuabZ<<GK;X`jjZg6cUU4-%mtr` zq)+Yrn(|_6i%+@Axd$=x4(?j#ajACK%YQ5HJlU9~;k~MYO?<)6V#mWzc&<%0F4*pK z>c;U?e_#7~_~jnoaeaDWa-Pt2Nzn-tUR~F^WbnVlkJszT{yp-&_jrwhgVlNK8TK%w zEK5_(tXo=|@SdeGOX$+kV-ByIQ?g#AW_@FS!!WbH$U{^8xz&Sght)bqCCVg!%=bBa zxWIE`aMH^558hpKV`uD=*}vq5s_V+#AHBQghClgp=KFl(lJ#}5pLbL(&YpLXeJR7@ zlRMwr-!e|0`L^iQtHK`(CQUVc_ueq<PW-aNB|EBur(UqhnR~e8LBY`)btBpK^A3TT z$2Aum4&5lNv9NNQkXQTa>PwIQZHm{($X*m?QPigJGC*teUy+L-Nba<T8(B+6Hz zvxDoZ@N2U&iHan{w?|%froLXL7;Vmbb62Lu1>eWVgkR@f^zHsswjl46p)Kd6$<Fn! zI=Ak81ygh4ny>S=JgH5kmnW>9-IjCLB<1xo#jC#Ezil_3dnCc+ud{@a$zP{Q*_+9K zP1;3Y?;drri7%GTd8EC<X;x_c(ZBN|xNl}W=xjA94QBE-U#fmhebwws!rjG%N@_iC zT_yfbPmyxV^V9QN7ht=wjj^&(UF;IWG2zoD{NG;AN&R{x>B@&4ACCw<0}=NuY&YiI zH4%BU;<2Q^4rBA<M)k0~b+48wg3Jxu`fAyiBT=h%Y1(dVYY8=PRS%mD63JrsIM%B^ z&EzhJgTIdCGbsj%<x6K@63&*t>ie>@)S~qAj*my2m{-ki)44lkUc}~5kP~NuoS3}_ zq+P2l)SP!^p4KPH>?x-k)g$*!IHdR4@T|D<_9oZUe_wSTEsD3@*m6GHf6erjvwywn zbQSq{Rk&N@S-1MMSIhQQCGGX;ydv(ebJe%@>ycUK3J&b6NLrcqYPI?`oi^rgplEru z>>sboDv;Krn|f=%9<l0s*iifNNYLFY;r=@F?y1DvZhRJCzBa^vP3xlBVXM@yi9)EI zLVP=dY&TZ9faT(Z`F3<n6NvSTXf!EOdA0Y>;fGu5n*#oKsw!?!X7=Rl_5WNMZDqZA zimfQ$teowY5t~viDkMHXnsi(L_=8}P=ywsy1!r~dzwbM$v47vLWJZQg>uFjm_U%eO zY2UxEDrHYj#m~C(HJ@rig3EOn6iSaPas7VPSK1O7@H2S+efuj~g~uN`ncnAO=UMVD zg4<c9b64_2!$+&F#pEw?#^2c(;`sHd?CR)sOr^)Gnz>f3e;2W*c-fCveXd*PuYVWe zVq9B#JZo{&tJT)m_(B5y=1p4(VvD^#`|YZ1_Y1c8yBj<5zJi!?Ag0_m=5n3TfJ)ho z*)vt{Kadr9F1@G!5!Z6BI~&hEQCVdz#xP-5^4G2=t^S8`YuQ+*+85Uy)$Xts%fFXZ zdVJM+_JDGoZyCSdUG_R{dGznYhRXD6M~erBh3pC(>@^w(nDjZ=Yj_V-&ud}k+jjM1 zQ^A2h%k4pw-IF=4s*V;9q$Q7E(B(YDc%OaCs_3LcjNDSsA8mRvBP-4I>|4d{iBsI| zG_xwSU#~5hm@>a9xh4G5oQ(flBUbYz<}3)4JygX|G<!w<+D$cUyGwea;tm&mUgV+v zYT;{Njn{<}-nrb$j(*3n?75-sMyD2uRaY*4ee{CoZ&=XJ)r;e#XWLXP%sX$K@j57u zz4Tz)uVk(hr!MVEaIW=amwt8HPUc|SuStAnSEiS2SZH@y`|0k>&AeY<{+lAuYpEzz z>}2w+CF2a|#TnsZ$o$j$d!%2<w@zDPnJX*xIVyzNHQBG@*c=JPwfhy;b|0G~&}%6; z>6&b2t#W28%mm?S^^)dSmX}W}S@72}*{=O>=dn3ITz<_~1u+DAEjPOSnyvWPcj`Z# z|3-N$?B#MjoF`tta9CDOpXuTZ?R9Ru!pyIvJEq9+<!iRLD@U)Ym{YTBp<TD~UW+Hk zr#+4KvAY{E|7fewBg=hREwfKo^c;}(|76N~A%b~=(1ho`>7LCE9mfNXe0<21bT5si zm+8^Hx)f=}1y{T`HBMv@DZLf3X;y>Q`>dv`tXHb;vMgp%*<&8Dob$V>>)h>}vsih) zmZ{&CVhZ~jr;s6NaOSmghUkPZeGd!VxIHS9BQ`B-V0+KFZQHblhxc~tL`FL-Ht#My z#v$?WuJg81mYy$VYPWYWg?)Y|yhc5tG~eW41mog4PP`v$n9>b7KK6)fHE@2^Q8>Ty zfzEYS#d#;AS18W2W^2CQQo*M+OW^#nMd?m9+#MBaM>aRi05hxAju<m6zu!{9_TbBG zf%6P=>VzLjHeAkkvf=iqfXS&%sAQeNaDdZTaUP?EFi5lMoG!U}i2{#is)w#noR`n^ z!KdT-10G)pk<KVML;XOEcuPgvQIOMYozJi-&db+J(FPgFF4j^}$B+<yzNJE}pe5bO z#{0MJJkF0g50t<nGsRmf=Ji``wiSL9>6Q1vrz8F4^R)9V71JiMf>rI^0aD8hQv0D3 z<b{YQGX>5w?fc@>k<RG-ajM*N>BL#g=G)gF{4Cne8@J#_>8mDz^K<4o@qWA`;2tXc z$Z|#@jM%XZq{*<O@6LG*j*n-;o*3QNT6b6a=&2J8#*eg^yK?N09b~MmN$1ggF!5^3 z=I!$*YbrOW>3%aTnzQuo-Q{<8vf2CQSoKZ#YJ0T#$qw#yR$qdy$fz$a*x@?i-I9W7 z!RF1aiywCfL{z-@dY}=fXT-&GFO}iwzl56AEITGHxU?p;Wf`xC_PVY&zWbOXwm1o1 zVtCBCin;X*OOsTX(7}=bL8G(tyeicK{tF1Ns5g@E5?JwH=$QO8hrgV{EB0?=SisWw zYj=Rq%EL$QoLguudj0Y8zJFXxmvW|E-TK=@y1sRx>7RfbxlQZN{X5X<ugS3Qh4rzA zf7S$brF?Ht|7iO%?t(#Gm6h@G2|R0G@A4Dc@+x`7n|V`%PuV}#O8L^z_Ll9~=Hf@| zT?`L>jXBP$`h8ZJ0#oW!k(0qy&etP%FdBWI@o2|$$(x@y_QpJy2oRdTr^@G==nefe z_JAU(&0RB1H}Y~{yB#4MJ10M?n&Sscz^Ui%Te*Gi9yW8faSg}{v^CN<>3TSOwz7?p zhGzVkb*Co2)NhyiC2SP@x#7-g-)E0c>|vcEb?(*m8D}nUE0{aifmb}lTIln%@X);P z(XlJFBfcJ#=}-C<9IaF#p;2*kH~-To{!IZpKmFJ^xge&#c_WAN?vHG@ot(TyL%nv| z3q3UzR{Yi&#QWxB;^oIVDQ8li)t#w1l456avUDBm(j!+N1x~J1a_aYIT<Z5YK+gEN zb#Zo$8XK?uisbksUyuA#c9r>19eddNo2$+m_2Nf<tj1MoOJ_yo#`&qPKPSHZpm_R) zf}cu1OZ@6$c8Hbo-Y-|%qgnJRzeiaAMb@90TjLDoTJoO1-u>J&Q#tkQotd8I_YCGm z=4V~&JRxP+Te^>Lw|z~E_}|^W4DoGu^%>l@ZG6%fQ~qSO&z(+&XR>SJB+K&u3hX&< zyxru@J%$aprj+rh+P``COVjID#HM<S@9I<5?Bj6ycYBA>q#aIT?Jj)#^Vlt18r*C- z-n}j~H#zzIk(%4e+(YKc@60dH`6J=P(jKYywDNB8?n4hwye&EO;Ncp}v;1{w6>SsT zlbUo-Z~XVXEqOAdWgoxAveXyP7d0%mX7(?d_;9B#^Z7W&^Q$E*`uHm9&K&scbs#v{ zPp(Q^=d@s4j>WNQ=@PyNj4heZ&wQ|x`G3IjPj@bh9;;FKuK1+Pc>2Vb*9vEO@8>vY z@0`7s@%(D$&plRA6>M71rB$7rh2>9u>?&EhHSD8+`X-hgfrSf$4{kEu_N3MFMCnIm z`BUDi|6WYBn4GwQYlFwU4WA2g&#|5qF56%|!~cfr0eNHpcXyq(PuuGDuESmLgoJ$8 zouqw6d=AIr&a`wcxiNM5{mBjAjlJJ}77EXMeQU13D#jzyi?2*QZ(7Ze#~QWvFGEjS z`1QHJ7~d_}xue<7J^!Sn%wvJ=EwjD}C+y~*QZ>g<{Kq||ZmDv&3()~yHIt-#pUIuL zA#~-B=lq}7&Dc#nSH$}1&9#^{eNl$prsWM^%w{@lpYZIhVbk?W#y?RfB~4jp%4=!g z4R}4_qp8u2dx=5i%l7>F*^phyw^(87T7le`$5u}bF*CWfs!wramHDMbg^y2VEm~Xh zU+HMuu8Co>N#civc8h&A(p=qZwb!&}x%|D4(!w4&oKI>!)?T-tYTB6Ms}L#dagAjX z5zIg5eH32z9bnNZbY{8!!1!E|Vcml65Zz>^O78ia=P|D2Y~itf-&A0?z(n|j^oa_t zl-Ul?-gni8Ib^C$m{xZE<!$4;ESnytT<2`o5$?F$$a*LEl8-|B`?prc4%;}F@c&Q? zn8o?z!O9zTj8oE>ekMtk@iH!*=^(W{d7+iYSr(yt*Gu;$EX!r8<eIs>(P*}V+WUTA z8Hf6dEJe>5Blhrk88_zGF<<Ne*~ZOxgiU#YiLl3c#}h0|XF8m-zfsD^%A3O^8S~Xz zZNhuLgV#(J)Cqf(UX3?uT;u!I?tA-`R3^j7jclh`ie86L<6I)H(9F4H#-1!D%^#<X z8eR5n^HF#lu&GK{<#~Fc>Jk;Bw@dEG#2r4{p1jf`;|lYAB`$+`88_70g6bo8tz?l2 zZ=AJk(N)=lS9O+6N}J_1i#hnDRQUtPo!_VX$y^U_xgMQ&FEC?i>-#4^S6GW*`6T3U zQE;6x$CXbO4#q;O8>1rAzdS#2lQYBm!Yq3R6WK<#>+7cRecqM-f@|^VJ@0P*xXS<W zT-2NIR&y3ueoA~?*ZTMCspftCj?r@!Uj7bKd6seCU+JSoM($emzx$i#u>Sq~`22}0 z`{#Y<zyD#+_wEnVxSq?ds{P+mw(r`$<0X%Nv3uTs>+yyy>#qO#-y#cyt+w93amoJb z`(NHS-*>+GzPI3A(%bK1TZ(Nxe*G2dbiI|II{o#O<|zLwb=MiACae7Q`&In+-cRn* za48vALAUZ7FVE%mxHNUBYs_wS2onr(aoPCcn#T0jjwW-trAK~m``~aSI>2j65Tm#2 zl@75*t?UwOloY0QMJPoHIi40i%Di>L;qSG^dn+ezNc3d+dffcW>zOa})g(8)_x)a% zzxK&owMzNz|5$Sm?|Gg)$5>$2cS)0ZE*bZ}U#M{Z<X2pIo#F4Cv(cN)_Rrt^Y_9aP zzlWaQO%_R$5tvnOA>}MMtK3A&T(RnGY2|We+g6VHbM;TBmj8&KRKD`b+^omy?`59F z_7sZk+OszQQ_@k6v(*Ap><U%7rIr4yR+55G_MUipb!WGXf2k<nq}(4N>o<Muk9{`V z@X}X~vwwu7jANd$W}I=Cd3Emco2@T?+RXlY_0PLqZtttM-uZg?+WYO^Gpc2e{XF~B z?n#=7z^vanCVuW;qUP4FYRq$Hshs|7`u3!`PkdD-mN$KUzI#ux!8vV?v(md+`I`0e z-5dBi;)?p7t!1!c6MQ1OOK<(2t+UGgPyX)x`umO4v%O4@V_Gik(O>*g$?0=l*RkW1 z%KfKb-z~as!OcDP>rTI3e|_ESiQ(H7R?MpIJAIe)@!Qr5cbqRs^jx?zH6y0S;>z6R zKaVd+H&Hqfzs+v_?|p8czx%NHe{bB~x^sEb9QT-aQ!{kRcTQfscZTDaS1;e~)()^# zI$>?Le@}bvggt)`-~Y_5_x_~Ba(SoEelCw4Tb|Vl_uibeegEm-yaBmp?>nW<rf)yr zVH$DilH8os?QQKxf7x{GHT~i7FIl+yYct>8=9EnvkB2PTrS#iVVy1vt*n#yQzA--I zeCXVGw`Ic{>o*P$XYXa+XIZZNBke(PPpp^j@huvRTU{JQY-V>fMBS4MIIZ|Xq9Y*7 z(rm%B<OX-;Z`Xc(DQ8=MN`2wuM3?@f9v>9f32j%cul%B&!2H4V#3#Q){Y{ZCmrBo7 z{25%`@a3J<n_ICQhjn@aTQ6v@{&?%u)U}Lps<o$5#Vd9geSE+?-{r+r-7jBGu`%*H zu-Ft&T+WlLV&$grO>>IL`zqE>r^LYI^?aGrwlnKFWn8;jTh>)s_4YegaR9shomLsC zJI4-0^xw01wCvm0Z*A+(J)QV^_4@ip8xMD@-ef-bw#xS785zNdzb9jvdIXle+d5^p zwUg%~mVAH9R~~bP>rZg6sC+tgNAGl-_b-&En%ljb%HeAx^xW@TmrJ*7XO(&I6I<(9 zGv<m1XdF1}CEuKVY33utUzg*0d44SjfB4)`bm4zit~~ddK8)H7=NK$F7y8$WN?jH_ zzK&U<E3wa5LUCflMBRV3H<C6>>=r-yaV_JXjS`*?)(y3cyLwn(@EFMSF6@wNHaunf zkpDwgrOlU@b`R=G?0eol=#ppQ`t#O7@-TnYoEm1Q^*?e=?zy}W{oi*i>&VBVqZ{QW z*O&fx|7zXwL-Zu`i@L^*T^G6;q&DtodiF;9)?;zCz@VrQ$Isu@?=WAs?R=tgKIBdB ze@~&?|EI0k!N=|~Wl2|3d3Q?B-ul9_X>|qL6Q=EBI`6$!Bs_LsY0mwq4R538<lKLB z?whXPw*10PwcXFR)OJsP8$BoY{-c!NY%bgK?QZUqO#eM?@tWko=1qM$zn^V>JNrCX z_~*|X`+lat1#a*AiI9bGu5YgWeDd2__1oKRPFX$M2Ii#SHlLq+zh+zQ=j{hTQefVu z+S@si?we{q-~4tKq2MN1UibBhd#v|2mpd9(i<g{Rzvi*QH@z39?y=S?rOKY%-H-z| z3$E{vP0syK+OI8if;iHHmI&|(h#q2G<YaMJskK0@P*JAmWNSfMfuhWt$4(acra{*V zBa~BRpSyEC<jG#L=5c6rz_r56Edu8<FFIMoo8AAm)>pTB|H7HKf4@zC{`cC>ecz*{ z!y}jZ+rHmk_vG)km$&+acS!LugdUa@TiLdFf8`UavtGyQCT3Zjh6pn*%CdO!_uJe! zsnEkWPi&PvpSfh)<6~}F)_mO|hb3iJwi&Ai@jh2y)y90}YC*#eDZj!cQhwE|+792# zx2xRGIPtr*0D^Med%x>-<$lkiZ*{L%%~<u2=UJ8oLkMrW%iQm?O>X{vt93MlH(e<F z@Xx;04?T`4eBaEw=l+uAccVjY7ly^=9$)(8@3)<0-6tJ`<}JQovLI%w?9Jb2zuk58 zJMbpKS-zR+lc7e&Ww*I^QjDwxuQl^%Kj888%6rSH{UF17O~c~!R?&hjvS9}<mPIhS z-;!kt-|FO(P~XfLY}GjT66c#KehJG<n5>ry-&l$w;3|CMgG%4&FZI%r=X(1%-zXZ* zUn_h=bM67Z(#sd8zjy&veDPwk)vt?IyWpm1&N`rXgymb*Np;Q`JD-H}6KaIN<kelM zS!^;NqUP)BXS-uQ$1eGq!L(aI_=dRGRcT3$ootd~lig#suC5C1;LN!>(MEjsR^C1L z_m#*Mw$3;(?e0nQCq~;>*T+nRDwu00D05T#mFC({djh83)6L6EU%Y?qm+5yK#q~S- z7ESld)wXVDn%D9oq^tPY;>A9ab^nc)n{@x3wqxqKM}}z+4cii@v|fMlLA<MUme$5g zcc1K(?Vor|K_xXx{z$09>DW_!vx*MP-N55e(s)4Ywj<vxt}hac{?shV>Nhn0b;(*d ze6snQ8QnLkbuTF?iv04~vd-zXg3C+~_wbnF`SKf{i+$l+wSW2K_b=yV<gZzMS-*92 z*KVt`n_@FB?(<t7@nT9ux~_5kZPiHIqU!An&eX6qPdmx9L3C$0@BhQxt<I@MqB~b* z?yfs{j(<hMbIy<r!M~C_jW_;m66bPWDxvRw@SM03Uv^Q{#P>GW^3FWmcx_(kDGRL| zmg_26t>w8&yL9IHa>&<6O<ePQ<F%*u0UI_?;wlR(I(W|On&#S_3Ck5?1@CbE?<?Xi zk6a!SeDK_>Ijq*%I}*~T2Q2TIbZ+Slg*yj+*mS*^(o_+9&~J;h*c+S4rC$H7<~B8( z$8Y#tqjiJR!78=#T+`gOI})A?>D}1b$X!<UplR;j$mKffbDK_|3Ei++U;K^C35crl z!h`1~#%$O;hr3KF|1zuf(;nH<%cl-6n{~=1PTMLqC1iQXbG;jpq8BwCmIOBxiM?5q zwIt#B9yhKsz0Ma?3U_jsCCR^@lG-csW=-FVDb`9>ORZJ~ySbL0`W`qpNb;&?y~W%h zXSwW*#mo0=-}t$_^N-rUCHIe1S3NPBD9_LNbK^wirKe?I-Y(d3ucYUl=H`d;cN(`y zM0|+ko9uGaE@(rsl($I399HYqPMtw3g`TeIaEUxB#M+?3CEz*bRD$7#Kbzz9dsVzV z^QyPL>To&Os1i6YZ%M-Q7acA$B`0beQ|@GP5n}C7^=j{Md3n#{px@((E{sZ0L9T$q zO>;kSlrA`WplP>tjKG6^U7m|#4uFh5wN)$di~a_aO2ZGbU7m|VHo8Qf7jiXX+j;-W z<cLKc{<~E>KRk3f&U97jvCE<we^%@IYwx0Rgg?oM?pV4*CD3h?%g#gm-8oU|&arR1 za&DFCZq*e!95m6_+to~0^yZetiN3lC`xkHfKFO(!wSQ}s(z6@WKAfA|Dy;qf%^qz% zwnIm|-!=uT-=z2JT%E-OftQyuJ3k3oKCOFTz4U#KfT{lCI?Lk5c=shGlal8vd2SK< z!R_)g@x%=|^<`h*es9=P^tdte>9OV~VYd_0kNbU^sFHZQV)v10Do;0mYCXLvrLfFH z%>Pir(nGt${z;48-F{@U#^y}_MJ2&DotG*rg-qv)Jo~0{>PmIxUwMVr{~hXqYVrPy zzKB%`rEWVjS!3>g^}s12W(Oy0?CrJbyyW{q#moHo<POh7KL14}^YqtW_Wh#bW&X%> zO5Tyl8gsX+2U_L(FZ#0WyGoaNP37Ek4?U-xyFFRMcb?13v(-YWCnkFo3fp#GioQQt zWAf?A8kb%C7kx4Nrs9>)>c6PO)_)OCwUB0-ztRJ>N})p0@7|*3M<;7+cAe+)^3FV$ znaA!$3v1>G?<rRcve>(GNx{SkhjwpSyT;4&;h~giBCqbB<V`5p@9z1~u{?RMyplq- z<lp~AQXc|bURp|UCR=P`Pg0*RD`fUkHCg_}q88Qgl*+qp1%Zc5E#6!5m^@l-QxUr- za?d&SxaZb!&xO~2?!5lfvU0Bfo^^4d49`mITCPhzDxFp_H!&`~1H}AU_ji89+>`Cs zB|q${fBX8s;(FsFuX#RO9o}<JU_J9K83=dRi|hYqUZ1J^ptKFF)$HhNA6c-}M~IZ< zv(mQ8*e|dDpMh#NSZ@qv>izm!50agm7$^Ssmp#~Mu&hsTCBzwwhU=M=K<;4_T+gf& z$L_L+ucJa%;G>noqf&<>uNyk9V@NzJZ8-CqVdiy4qxH;x=6|#jepuR8Iad*^cZFbF z`V5fYKzgN+BnTObY1<0PJ?9KS{%qLRa2@Q&xi`(gLZ@Ckxz7`;EuSEKg@3ujHOZD5 z{e}9BGvBLrAfYMmE$wHiT$9{0?T`AM(n%5N0h*ux8O@QFea&-f`=s4|La%x5O|6-9 z;OSwj=IGfk*G)cR)$E)yw~=Sc3dc6}ld<Vd(diS8STWz6_@eXd?v54N=d|<YItsn! zNhyC+mvha;B5$WmxZ?4|xs7l1{w|i*EAPALKV2+t$A%vok&Oz$f3Ck*I;(wfxwfEe z`Efzf7cZXh7Ob=Mj48aSC7H5l`QnQ2j~dSH%KDoS>w3YJ?bY2dHZAtq_96fOq&Ddv zl3kb0WN^7ZaB8Lhl|RA<*6-$XzyA4z73;;XP7Kxk;?dk2-cMz?drYZNSL$y5p=Tj) zq*`vg7w=I_KmKjHpgPl0HTCB1%Z73X9KS1;e3^c+La?ww=2EQNUy&EiF8wDhin)%x z?0lhe-{?TtbqSe>R@>t#)ycMEjQ0FBQeSJuzQqPz-+q7ki`lU)$M`eOxGzpVEmk$f zTB$83@2^u)SmAm1kKs;AKSMq`u49U73~{h#Ht|uK$#`Oc;>0_*H*cJLrLN@a)yTkN zukQ|5rYK#tQkn6!v?R6p{sy^O^LNY5y1yosuPtkVWH|F#8_D=LSNax8Wu!&DK6+Cs zL%SlgdFHGwd6~_LTa)J*8sE9Zw&3MQ(Nb?|9Z_rT1xtC&TC0@(-ro2t{CMuIjkZz! z<ypr!-P*XOOlP&Mch>Q5ck+@}lvPzdn$>!C%P()~ocAs}gRQ4s?MvO79QigP44JuY z-mQ&)g{E6<P5v#uNOqO1wF0NWDp~6l0_6{`^vUXYT=na0cb3x0-H@*O%yMh;dA*s_ zLqYmwC&o+&wf?rJ?CHW=6F&;gPx#EKpBoXkyzEVBXG`?0g!TEYWh=^Z=H8N=8ERct zmgKOa>`k^R=k_fJCxIO*ZoRpfVa~0M#nD&Ozz)mi^4{bv{pOIZ-KkZwyEFLjTWw9g ze|w+K>asV#PwtD{nrwgMg5TR4sylp^gS@$W%T+^=V5X_c>asWK5(iewp3XXcP0a7i zD%stemKd!rdvo1&=9*g@?{C|3b1ARcqOvDFvZcX~5{>&UzLhR2(|UcSul3f<=U4hv zw=%PAHNL!3*3p`2<*mRgd>SFv)2{FdTse1U&8>|~${H4wiKSeHDBG;Fx=iQFxgTpl ze)w?Xgx&J8H}~JnWiJp3l{o(X-lpp6>P$8zL4$cJ?22lQ3|R(Q8|EzP*xMcZM)nQY ziW_dOAtKe1Zb#X~0vwMv)m}MhrD0|D?cVPbFaQ59yZ`KV%VB|ofzRhuKL5SH_V&BJ zJ9Y2Bi$++#Z@bo~yhc_d!kXJD`*`El;=qiz78}aMB(m9suAOs9e(P}P*3WAZ))O|A z^%-B|Q&}@t_1LY-upMR#`X|2a+4_04>`xVqv+5f!94p~juzSWc9^pGzttP&dF}iH~ z`2L2Ca}MkFs@=S~?(L+xvUkqyKiGIOSm>9zg+XPS)a2uhC!HN9vwO|32{5QkV^`z9 z$FxUIW|j?~&%F1&Cm$bp(zxKH^H#~JhLv+NHW_Ox{*jiMVKepE{)2-5cmoV7#ah(* znI|td`jTIe@aYVPuble~n*g6OF|YxZ3qb}HI{jyRuB4Ux$s%|~4@h7oudf`tntyS| zCyPT*8fTsQ+jH`9j9aRY-18!ks>>i%F^;J|a?8&?dH8)r*bnmnbLqJszH+?0|KPwA z%TqIK_<ZEJW`P{6_Ct;Tzt2YPztVb>{_*np%)5E)NnygLh|U8b>O;@Jo%3HjxPM^c zD)YM!PJ7;$oxXnhg(pA5X4u%je%SxR@KbdNBs_|z7*@*6usQCyqyEC)!{xi*<=<I% zSI)G#_x9G;&y_YZUG8ANrg!6HvzM5Jc+UDYC2P!jL9F-X_1eD5{L3a59{iRdB`KZ* zVP;5WE`O@rd}wiDzUz*J%^zOK%+j)%V`=5HI5}(*w;6YT*>cX}9t(M&#p(Z-f%x-I zKK|s8#~Ek${g6zOXm{$vz`TOvkC#^emPr!zwh645GW+gz!%LSE<J`pLo<2MCt+{Za z{H_|cTJH1bXJ=hbv6z3yzrp#--ql+^-M^IbMAqRl-^I<bd9utq*`xmF<i9DH|L@>l z*<WH?Znb(YNnXIZ^z3|goxB=G>3Ocw0hvcn|C)LriHoOct66fJ-JGb8s%Jl+|N5%` z$b;!K{#i!-{U^|+ZJP0Qw?o0rWlU=izPVH(WV^vIsNHM<&+-`|DSm<Mv!7M$$y>j7 zd8vhu&@}O8i?#A!dXHOHPB>;@{`J{WzDIlSzxjBN{o}m+i{J0Gyxm@PM{(NCvJHJl zmahmrwrKZ;8#|`WzuDb>Q%3x9*RuPkJbx9WJNG>o;IE!$_h#}0{>8l4;_RRAu<6=W z@nwRufY0lft-YEaE)AT{0{6Q&CiU?ij9|WXA=|K8W}U)6hUPo#z27m%{^yDNcJ!L< z#aHr87Q%BmMNE>?78YCIYS6rqU+^Jtj>JCaZ1dzDQ%!BkUDB7_*f-b8@w^r1dh3YC z_l)Xq6!1QCFP<yT_NXacbFRw8DqiVpZ;c)Ld7fBb+VlP28~(##U;5MPCqHyu67xsQ zrsZ?!%koL_0)IXCx4f=l^sQ&Fb9!#gRcBpwn0t--tbZ@eUD9i}Y!%n6`x0~7BrNUK zzDr_mOdB*^nAcoy>F?9sIdN~C*#Gp+6DAq0O}uHgyrt~v)aF|C6<ePEE|~lCW>;y` zCi&Ox|I9wPzh^jiFW=$+%vFkpdM%e*)_zjF<?!wICi&Lv&(at2^<>Z1aUZ|F{?7cr zM`iNA{$6}T{^j@nl=|;-QhjgF{bZkZHcDzqc9*{FCDWt4OKxk(wU#7*TKZ0}*W080 zF2_r=hoyU#tUt-H`|>A--JexAL@PDiowT3*jn32A8!l%ansl!;T(<G<)Bj8f+anlu z9~HWxJM92pxk7`isPB#B5C6|kXL}>H)-0jDPA<XxiqL^~pANJ<{dmWBW2-JpS#*@p zjb728yKcstZKz(sdn57Fea157&(B`lxjlO=_l_f>e8rjTwvkM`C53K$yufzjq0wi? z-7|%5oSl9kFXdj%-OVZ+s)Lz!XA0fu?bMgOQP?l{tJVDG;){Z!Z!-_=lVmNsF^~Vo zS1*qQcGU*ikhp~F+B4;E@cKMsFFQP0=!Wh|?l(JpnRcI@^s_N`v2x?xe!+z68Lka? zp9dyv_cmgBBj(<C_ut6_EwZn+Fj{{x{4~KZk-tD`KFiXdDp6m~oXwaSb;HckYO-_M zvx~>7<|;lfI32?L=Gk`UGJQSP8*@`U6Rs;OHpsffB`miuxpnhbReTS_?z=)vHv%OR z+^4eNke!sl{^r>3O0ea!YFr7|W1q5@O;$RfH+RB;Jf9dQYc1wCD^xbjmSHTr{*<-s zjz5F72Ird<JR24Z9q3!7yy0<p#wLccE7v&_+-*18Zm9NUvgTlXWA|lk_`lYqaHiez zx0!dxc{0A?^W;c4Zv5-{I`3`lWil(J=6%^eM<&Ah<aO08apj)dYA1fbaya_o)u-Px zayBW0L$qA+jU?}m*Sm^@-aOL2pkK_st6z1d#BRakl2i5=NH$w+U|ghGxMEx0o8%3e zJJ<6SZk&C?enXPg@7pE|>g#@5zv+MWW9w7<&Hpuy=j+r@_{(ci7yR?`oBd}$MxTyP z{GahnUhn^$zdFDB%jLVJeb}#kG&rxLzLfcO#P`<HIbzoeqau!HCdw{9ef`kcn60lC zzWHy$@OSmr+;^W6F7rNcDq6-_dZR4%ytiS9O{syg_m{Hc%QC(_ywnx;ec#phr*yis z-t%%ymGa-%7Va1~(Q3BR+$iBgzIQz~F5Av>dCwJ2k=ngWj?cd`S^8tt+WxRfx8^N6 z_FG_)&Q?y>*zekkTEX{==WpGz!uRcQ-LFw5%V+Ienkc&Ih~Ub(8dBXqUgl1%>P!ll zB)&KI%v0X^GmXBBTb%j&DO^-9>jCrpcguB!T{n77ESw>|r2c%_Vdwv48MhMGoqYV{ zwBqswq45sVxdr9#K8bvJoMC#aGcTj*vt8>y30-3e_xGON*UJ~Ze(vt`p?L1ogB^QW z+7q>Ro#bOuJ!h-CMQ|Q}PK%(08?XPrqg`7Cxf+F99Xg#BxF`lJ63__bn4-brCBmfo z?|h@s)PKeC%Jcu|U;8T<cHE)U?Qi*{o;T&6@0eeB{3MKL>w=$+LcW}RZ`t?qN1a_4 z_S>OTLM;5|9HkWRNC)xxH|7c-dcG?tC-dO!0*i0fbL>6iMQgga>|9yrFKY6?`2X1Q zj1;5&{uf`QT(9Z+=Dm(*{-TX1Q-6y1dWgZ48SQUaRN8NSNhDxP+Hx;%A4b<~zbtMJ zv4EBx_N7WJ+!{_Nn7Xd*xze<uVbRxwpUW+7n6F;r?(wf6tA=y)#kEGuxw7iAj70Wr zm>SZbu{G7^LsnF6iP4v=LqZ)Nv!ZHqf|m4LI?S%lynb2ttv$0=EeQ_}WnaJSrf2M- zS7BD>tZ}|FUfk=KZTXmDG*xi#+-i%Ogo~!1L*`l=h)yvH{(6!%@vO~NhD5JfE8RGP zjs1CB3`{>?Q2;Sb9cRp{%ra<MIdgfN1Bj^sVqR+lDX@CCIq|H`Ry~l&EJdHQHl{p> zuAB*e?KtCB-YQlw(;1|N8Dvl{M`G5qm0=(zZ#zi0o4~TPdAB4$%4TP5EL#(C{mkaJ zox7Jb&8iIZez|_z%9-hF*Sl_yV7>p;BzQ}-^m5DXASGs{GuZ<7ufLXduy3)38OWqH zf*_N&vbL<8nV#!;a8{*=vSx&Ff08ywu<>~*SCBw7$Q{?rMApo7->A!){VXttJ@H<6 zb~Q-FEyhDv&TKBbvdA*5(BOT6KVR?4XTGAZXH{Nve8<A^mvuAW!I;mioB3J|;tgIK zaQ#Zn?L7HXY~H6E`|fN6Iq2BV<p&%z63^Pa{&A`E=(4nVrA#1~%#E;OZ8H6=;MZhe z`gzUd%9?9u7F)D7nSR#rYXym1_R7~VGyS~g<Bg=OXOY4Ma>2&uXLaa;^zRarpRyrs zUMU;c9L~h7XOWW?e9qdu)&aTKD!My9Ni?`%zuxaX1;NJt@pCWst$%MMwID%_zwoM5 zO?6l4S)12V=Ij$URW5p6kP~cte%CyZy?F}~&f0WIZ`J4uz2K@9dwSvRRh1%tP0vqp z$$s`ReZGJ1ulKVm=VbRjWKI6#{jF@$`a8boZOrC$#(g*wsK0FcuYDN;ze*;befenL zKE7L5&O~$6W^?WqmGOIT*7Eh;uYwa#6UC-&S-pIEn(f|2rKg|Gl#DNWzhGWmm5%wg zDSKNtnz}y>__$kWkK}DBbERo<#Z|U$``-U+IX$sFI_c%U*$I8O;?7rIG0Kec*K0lf zc;cPk!K;15I}XeLczj`%{u4&K&0ZD9%ab06ZJE`2qmZlY<d48m$;qp?#y{vfs(h!_ zGWFMkzu%u~njhC(IPX~A)`ID$kF5St#&<#et@v>+#umHC{}%V+R_v-?xW@m{AI2@$ zs`?+L#@DnbFIisv;Hur8%@MZx&k9ag*ql3DDV=xZ!tEV5%r8j2YY3QrEZMSar$Dx2 z$YRr?^WGbl*RAY&$!&Z4O+7=}oAzbj?M3HK*4*(wq(skg^-iwcA8RCcsej_#xYlm< zQA2|dPZCalDT|igxHYY)WV?d&8wK(AY|)0(6m92z`8vn=P-@Rd=Ng->8VnhW_iH{_ z$uv(3gLr!8@z#dQJ<F!~In)Qfm?k28GPcriv)<8U{aGg-e`S5*E@Sm;#YT^JQD>M# ze0z^;U0fyXyGC}w^IYD&PeUHBy7Hp%p5X=eg{k`<Brm^yFLdR6&v&=}v)H`fXsOE4 zEwygpwZ)SUEkC$?Ln?#Sg<l)XFK&;S_Q3e|qItd-!Y2HlZ*uyOyhY#5UzvvSQ5%-6 zvr${6P}Hd4{j!6ZdFw9D6<2*7*5=7B2n&ur(x|M&w@K-dLPM07yNtw&rA->lPP(El zk|{T@2eJue-DJwT*$}04N<n)u&n6=Xl{m%GZpBrRUZV(a7s-^=DUM-o*eDlChZ7pi zj9YU!!H99|f@w@!XDJ1;F=gFs0UNo9hvmwq&yH)C^#z<33pmYoWl|v9O}>EBdCgH~ z3#N4#o#@hNUejSD5O8{0z-hHBLV;|NlBofDi+SQEXC9nnbZUX4n`DmOVxD_bGY`f{ zrcRg|$hJ6T%E5U?ryj)46w}cLo3DChlj@aCj9XKtI9{vwIrFSB>gG~s-DoFWH^~&` zK(=D#%!3PDrZ7(FFgoG3i07HxrKVKnK(^a%i+DCo)M&0%4rH6|vWRDs(y4~qDN_zQ zPSj}5Q8|_1sG@r#L^4%j;WXbBqP<2IhEk~oMJA^bCbdL`xv!XdmU-)@w+pUiy*&}; z?7k`Wn`UX#<Gg$Ga(E3>y6<mD36{QTbtpqH-(k~L?H=<T;c6Vs0w39KdhBWZ_v5E* zQH7h_j&O<m58XZjZi$b0SGeqHREf@0+H>We)xCsL$@~i<o#qh&o&wvdRPH6XsW?WM z3FQ|Qs@!`p(WA-0{fKnH$qHt5q5KO1o#r<bgz_hdeq@`JbF(SOk#iHP>Itz<<*7a9 zC$>%0oi{6gl47*9#M}>GH5OMNt9o70TxfKU!Rd&!PnL4@n<8^NgHQFrw@c(@^9`oA zoH!!AgOfuz-#|+x`uwZ8DmR0^@3<|sX=&Q>s+JV*v!1!KlXOe#U-eALS-CULOeNZD zlJ3`ppL-_ctZWZ{F13l()V{P;F*=~%fi<Q3ddSxG3enc>DXU){Nx5ym^kdZzj!C+8 zlb5SiYAZc*Joftbtelx!QdGj)f_7F^nN2x0l^V!&ir2*7swe+4<=rrDeO`V|k$cC& z>x<i*XGvFyivIY(w2AeK*{un>swby$oxB#{yzR=dmlqXp2F>0jEwyQ>%FUojIhvl^ zrht8>dUD#N6mL%~!dxe>3AW{|G`uR^mf|h@#Loz(O!4NeV-s{sbMAX8-VAztr?V|* z<zw&jTqmblF&>(rTblGTRq<w!x}yZb%qy8o&0E3R)gIWiVX@q4Q|U~_=sh1m32N8L zjN{jfnQ~7|+m+SZsdzK!`i?M92ZVFEPF_oH%UOAQm2UH_S6*jc{`A_kwEp^{l<qYv zj&sO|9u2B_npgFV^P$g|9`oKA>uOauaNd<YYq{RwdC%{vwu=X%=h)wWk+e^$Wop#+ z9^tP&M~{Tw$q)!zwe*c;&)2>4ZB{6)lRuDn^ICTIACX5ZlMUxRYxQgVXv4YoSH`lW zh^>>vzZ-t}ondNlygKZY+N0ay$_JfNRo|<YM%tt;PK|rt$Gdv%vFO_jRk2&@%0Kt) z4c?<w`f=so#O2>F^1p0Pe5{zUao_%Aw?`S)tL1xnj9v#nix2ivpJ~A?e0=fG>mebv zQs)Y|zm)VnoYl4ZCBt`{E5;dnHVM_H-gm0)3|qZ^jY#;h)ehIV=dgRMIJdqk?s>TF z`p>K9DaSL1bG*8esZlI{IPtoYX7KzYKby0z?sxyVN#8^@c>TAB`LcN~!b^M4ab6dg zv(PT^mPq<))rdcKVH(O2IM9xyQyg|4mrQz7S$=N0y0Pa$)}9%0(~l=V&1f=t%d}HA zD!^?+$A5|Q&33}R(*);m+p_yk6RhF><-288?9VH+_V*;%|1;QV`E-T+jqv@R?DLNA zH)j9eu~q8LALgjf0X7PUaxAA$xBFOjcCnwGe$6zS<Q3-^Ta+r<Z<xR6{G_ns3fkKB z6Q*8$%I<w|@fy8PE1oU=yu!y_F4eVSifY9a)lG4ca~}o9p0Ao}f5Pk2ih9Rut3?kj zo@IS{vC-+1i)T&mcTcrCzj#sP`dtSW8&y_bnXNs=Jr%^R?{_aXJh4i-|5V9D_ta?z z7aN^^5IEEC^9rBkl_AgOKMm9u($W?1pCU0~V%ScNDW^L7n`O2zG5_g}73)96Avg7B zw%k>niYXOqV)EpsM*g%}WhvjE^-ih()StsPTAPI`LOw+NRJz$vv1ZA=120<EyJy~2 zl~a}1UM_VvQts=bhk<A3J`J>f@-%Sf9-CLIMb9rb`dJzB*{Cu^z;vpDE$59XuQzK> ze|FE?(>G|IkzmA0Ia8TSDyk<rbPjLWV^zK)F=Ac{K6KCOkH*Oj8rND4cur?8Q#iax z!p*VGb)#I%L$x^Wmc)pAzXaM6E2SMI+MeceBuY%X&Xp)J&0OY?flj_Mmyu3aujYvj z8fF)h-Y)&TV$Op=fw|8EEl(~kn&kderT>(t+|<c7TI!V{exFv%d4efXA>#5JCb@I! z8JM=GPXl-E!K#l_?&!Z%rAuAE)E3LepTD@P7)jMm8ym0xt6xiGUY+Q^mFs|saDDa( zTb?P8z62kBxobN2;k9lj3Rd4eW4T`7Vb~R8mmQ+Z&xtFB%2tMCpIAI=`k}=M*VOn* zD?d4I<20D%D(8Cq{Jkad`wt!YC$)Cgi{<ySpT141tv{T3#Bs*e0MGWe%n9O)uFf%< zGV_g)<Rb1D<`&C@*YjWGKeIRS>{pl58O`-8P8YB2=6|u>^jzPS=a&^C>oVtPW?sF| zzwed&{YJ?f+20RsDX{)__}PyI4|1!Pm{dql+PKeW%3O<{?@M*Ref?TH*Lm5}>&koV z_Dt(7kUe~%V!h_yEw+NMT>3K3EPemA@I+<Cuek2+pPZKAN()bmK8y4IdpxSA*WvT~ z)jE6DEB)Wsr#1QeQRz>K(|4}7^WMLnQK<InQ}_7&(?9XQKJ@wU(=PX>r(K2H_$BB6 zUAiGAFk+pCPWYN9PrEvP=a}z|3DlmhZT9X^(NT__F&kgk=j==>OWDcfr4#P(G<MyL zy**F6CZ3L1Cvo@a)2_c(dt(X%pHJ6L@so&t*3$S#|5?k&aIKVO?`9S)Wl}ot<@#@q z!L~D;$=!1d0+iHwt{4>^x^af{^3ADTr}Wl^oO%7o%QZJ;>7t+WqgF<|Lnu8xQTW(2 z%fy_S!pHt~&oS_N(h_K--ZRNEQKaZlN!n7UXDxvf=NM>B5_Vhr1ENb`TiwU$NsDKJ ztJ1En#MXTala?ku*q^oZP{nO0kNjx=s@qkUZeN>xZ`-^t+rBQ@zE*v2uI<a**Ph5y zaVF|LNq#d@tIzR?Xp8PXF|{l4zxer^%}2eC8te=*TzGljW{4}MoZwuX;wPb6d`M%a zu-jagjeq8CHh=PU&fFcBY}0qo5q3K{$DqqHan}<|?czf#>eKxs{N~QhpV%b)wP(7| zJ@JhmA2r1F{w<h!*Y;fZESBnR{btX$H=VrwJ)$Rj`AzSHs`<Tc!Ta2o`W@XA>wEH6 z$+opQPyf7qDdSxp75Df0jGu~8`-9HCSo?a(+G0_yDGQHY`y;r#xPNQquEK36KW);m zn7jOMqI=>av5eZCMGO4Pb*@azkgUC=RC_7&!t_Nym+M_yUdQo^am&BQxo?@GU++F} z?bm9it^ZaztbNaPJMDkJ$T$0z4gWtTxBl0=Qo5|&m+$R=<pNRBjP?K8BKKWgSF<|y zXV~sfYs;QSzdg16mZ(qtssk0@uXBeykUO2){A1C)#mNV&9A)_Th;(tYn!G&U?9pQX zDAlCCS^nevu4I9O{XZ1`b?iRa|Kpy3{EmbDKm7g(mN&~6PMh-c5O3WP@lWnHl7Bk- zFWNsk`M~{;#b4!lU+Ryn{Gt5r>+ze_i<c(3?h$xuA10nTd%k4noSC&dBG=~~Iez48 zY$^Agvi6Pg7H>DjJGsX`^V8&&DV=?jU#8Sj?sHaCidL#kpJ;Sz->&aYyBinlz2i|T zxN<i*T>Q0|#jB$2pYrZ9x!-+gQ~qGZZ}rM>x%8(ZZRgFupSyF}Wb#Wr<L|R2rEV>o zW#nn<rgBsDX3!5o$(D{KZ*Fc**L2m4p0rk@RY1w<kjJ9lEnd=`k@KGGe4bma|MBzZ z{`vOvte;n&t3Fr0@AKa8^FGge&uhjt+vV=}MA6NiyXH!2%yx;L<{G2^Y8Bfhl~<EI zGKES#KP~aRqN>^P+T||uMVr3#?_1k<SMbUoPo25@z}K8b@0{Y!tGs$;ZP>Z%SCd*` zc>D#GSFgBdxx|(_f;2w@8KbfkWWrRn!0AhTTwV#4mh&x45GoC1Gwj@@;{1B1OYFVI z53gpr#BMT}^Dy*JuB_4bs~#YA>>Gk7ujn@F@Vs)>JWZ%nf7w)%&Rui56K5EFn_kUq z$8g#3O0=Vp;p`RGy}Z7Q^iC;Q1%{XN7w_^tqxS0GsrgZJSFG-NY!w)O^H}Mkb@P%Y zuej~yyV3KCYNmjB=dSIA9+y;Jz0x%6+%=~&C{w6Z|J*?l@5w8y<(71sbne>hcxtKV zl~|@ALG#XCZ+02w36)x&S+&FS%F|LS&&exxH?@miQh8O!e#taXsPyJR#!D)%Hu;)o z3YGGI5lHu(ydwHkLi8+`yXPw+6nz)z?GID;oV?;RpPzW^pTlCVubRyxO&Tt$l=>7G zubZ^Si>-6ln(w)b^xhoES(Mk$@$Z*e;B+4lp>uwF=dM#5YiF;x-Mq0eU$`_f{N-(z zyV(c7eaT&<_j*;$>=o5~{Mt3MSDe=WQn%0d%F?Hd`+TpY-c{V^du4A!yC_H~mH)ol zt54thzUD5<(~kJ2wXJj4moLtHl4h^)_J8+G6lC6&MAwbJS8^pDg6X}nvSA5+r)|#Z z)P$Y?S8J)cnP2LRo$kXg8*I81vsS69W?MFz>F5{cMi`qP|8wHfbgnC_7FSw0&6_pn zw@}`SC3=?M4I+M+S&FlqQF;Dq{j~ha#aEk;Z7n$dBjvbi>B*ht8-!=i;buykTzs;q zX7-%j?N+l-Je^-Sao56WtDeLhJG{^LoGa@L-*ZnNbNx26oZfb6`^lYuT=O2?eiG9o zsh2Rhc=zh|yvfDYZXagU&Yp8x|5W5Y-*c+c4{kq+*`&D7_uNytq!sy-i?a{5{WP<j zeqH+g?I$tYs*h|xxiiK8mzm}CoK^Xgi%+J3ncMOw7vFqdt+c&ok;&vI*>TyGE}uoG ziFXD~ofExZE+@B0k7I`KIbB9+rJ|p!TNdSQ+kE2b{4mD*k*d!>?cUYxdrnrIapTFI zdlv00lfSK@DfQ9XtA9zh!*TWf-Mv3jH{P@MIobSiruXy81KZ9CrJ5;Emz{F6=gwV+ zPiO6ygr1+DxbKbR^O&O{Gve1T)mg*e8yK;dt8TfYmUQEmFcqEt6kloAB`FqB`Q@&k zo(QT;?Gib`Xp+6!BPMJ^v#p5dsl$<%{U!$elsGxBYsyJ$&s*A;T=ddr^G(_uq&IzX zNyw5`o8Gk0t}Roxs#I%U@>-{~GHi)c-06pJ)_P>$oM}2&BvUzk<MvvSo3V9AXVr?X zoD#m#H{JEtshK9X{U_Q!Icf5Gk%zVA{FHjvZ&Ru#mxM0a+i}yNKK|Sy&d=|IH)kBG znY7`=W1Z)-4d!n%lzukdaNFg?eVHo`*W3-5Wia2xOZeI3C!WI3CX09oKbw4HDd%U; zNtarFsw@Q&sUX643Fl|eQy>W~5KC(*-)Bb)VYM^rD}^fEKk@m_I6u4Vron$6ft81A zircNun3rc9su9xsbjxUqd7_>4v78z8QFeJ}TYjdmI=heav!~Wl&d=<|XQr#2QQsLe z%V7TB{z+<Q)FqXDXZRb%%`*7!*7oyK%g;5HL9-0zU!SStJLCK;usgILshv@e)b*X= z|Ebp`(e9*M=AoKN??F!5*16~4j{7mw3=94qUAO*c@3iL`b?cwbJ7Jz^w_H8#@SpXL zOZYyY?Rjl*|I7})&%ORL4d$!(Ke0V?nMwHBV)1`oj`<1t`DF`Z9A_>&a9?}3pjG?> zW~nuYHoyKTe0EFfdn@lLXHMO{ZfGB0TgDJLT{=bod1jsMj-4OYi9Wcw@RM0w<H=3; z3)sycJiRUGaopvmB4=P3|CgJG(r#w2zEBW#mtQ+-58swgF{_Qfs_F)XIq&%YYpd;Q z#u?WZ8GY;Sa@v2IJ1I=~)2#5D(PfXeU(~j7`{283!^RDqxxRa{ogc~QtqNxpl;i%R zw#kyYD1+l~iPn<1{IcqOy5Yya?KCP$$xxm9FtF>mdBW@h$sfW`_L}rRZ~dIr#v`!s z-mL524}E?ASo^!M$@hZ#pX*Bwq&nSIs+2R6O`p>({`GEg`{$mgPm3bvO|f+=*j_2O zX3w#E1<$|jHRP-@vk|SD@~cQjUx!U<9^29>UjP2iTfy!ky{Yta0PB|81Gkws>Md8e zzA%!bc7x4@X^&(5R&IP+ooL?iR{Nq{l;)PiWSc@GfnJtdzmshZB|6@ox0}6L_cU{^ z<v#mgCQtQ`DXwSg*ydiHk@Npqg?|t8qN|N!^(Tb+ZC-T#xcFvs%+|SIJJi#dHZH!n z{aQqP^69(sUym4Faj$o<zi`9<dZ)$bN}gNa9I9V%`j;>z{ZZG-+9WLf@$C*a@9IR| z^MzU;a#n^N>UO)ja&2#w*cHzY-HWci+2s4;g;HSHmbmHds)6^`oL>K1WB={Asp%qJ zn_eVGJx`AKvqe3QY0~KnI~-D748Ay*@G<v&oS1I&Q9xnR`NgwsBDQ#Ju3+4HdFs)l zOLz4jzO3_X;WyjVk2yi#FWR4dq<uv%T<qzxe(Os*+ZL8->;Cz<bEWCVlk-;aC%A<z zUd3DQ{ppMByRZ&x`StJrc%5@vc+G!7T`YH~-R!4JuNbF4FDkh$?6FSAjkRUj!z<a} z=RN9t%sBB)+cMr6jdRlq<+9F)ilt9~VfSlkWK8$1)l*&DlkOhZ%@kW4U>y`0ll-ef z>+B=TD|QQY+$6jCFX?PsP&Rp!1%vR!mZQr|y7#2pPGs(Ql2W{V<C~CfzZGkjwc3lk zuG~^=5V+jQR_K7SME|P!n|{7N_v&tF>BkbT;;j=BW^7$n8=zPC<#fr;DNn7Ni#~en zi#`_6!;qS^D`?Uom!h(T-?pBw5cj+4F7dp^L1g{!ZoQgq{eBmnpO)u|&Z^~IA|KQB zY*O}-#pT!53T_X7X__Q*XXg47$FF_=*K4X&Q{<j^Y0n`?rP6~tu0|T@m5cGbn8|%? zT7Buk4|7?Q*KAI(Str)>E;Q?)#OpJy=F38Eu{Kw6C?3y0e~Y!*D_vtPL;1lUk~N|U z;ym99zlZq8uoXPq5VbpVUIwGX>W#NVJ_t6%I!HNJzpC`V!{nmeXjZjLU60`n)1ht2 z=?a?#I+7I)rCw*}SpH`1sdL*fVZ;1|7x)+#U2WX<)YX3v=aDl`hqk#I+X^!6m=KYx z^}}QB)rhyBr`sCxZs6wnefvw7dK~kP1rcjM>-eiM>|IcxcKflwCfNxqnx6ZXi;4Ye z@bGE*#d+mLt?bHG-Lm|jl^G_!Xuef?a8vTFJ-l1vJhm@9W%fAHK4@!X+b!{;fZg2k zHPWVQ)(38u=}2RbdQy7FO5pFZ<hj?R_GoUcY%F8_vGU3?)~M&^HWxWM<_TteO|O0= zo>k3$tM$S!hR#zpEh>pTS)l<t`9!-LU$h=vP_^e}=ii2m_XqOCetf>t$GfE}zw!|C zB3Y)l2_Mc~xy5$N;KM?Oy0Bl-xn@6n7%q1Q>ONe-*L!VihQV>+{hOx0Yc%7&rJ_*f zv*7LjKJ{-5i}o_T<^JG$C5vlHnOHsF0rLRsZHaTuGS;bQHM}_3c(>}q(JQ-H%9`(g zb+LC4F})G0&vEEa!Yyq*m$&X)JamrieKRRcx{7}@OUI&HZoigS>^JESx*~Q->EQPz z+?#^uUl3ejDNr!~g71TH=6AxgnEy#Vuv?h>U^e4-&aH={dyX~yZaK$hFIzDGLdJ*P zjB8RQu3ngPMSTm0X+HBi;i?+Bx_E}~oU&H;g=HDPbLO)C=PQ^$;lHBU@rK_mc})Ac z3g%x3`tY6cJ7?^ViR$OrJ}f=%A%DVi?%ni2<Ib%odw;Gpz3&jqy<lNZ!(J!94NjY) zew;R*qPvnyUUJ?GeL<gdp|WqC`fHs2NGwYJZxtdkFJh^9L1&Tsa+@2P)w>Flr~O^< z=6mmw{)B*CL2ryIZr(C_n<|_jQM~F_Vn8nA!}BLzl;pL2a&7zcHa=#@lH2F*Y-f#b z)wNMM%F54Vw2iAgy>Rt~U+;FUJ!G*t)FRtF(5&TjV&I0*iZxyf=B%GI|9{5q31@Si zIc~QFOQ^|jJbd9&jzAvc6UnUQ6N)9v+3#qklxr=Kd*r8>Q_l5J*?IO`KgF7wX5%|^ zopy-t*c{C9ovpl#>!I+8yK|j(M5|<$b3J^wGx?35VolIDm#x7&!rzN%%~|>37|&@V z>(;iM0xPvG{0qvsR72XD?{eLk%apz<ulvBUJ5o1{lD(qmb-EchwA>WB!<ei3Ln&*b z!|l!2gr_##722Si>=m8nlX==UvD{>WK{VsG{UU#qvaU9MllXDiL2=s4Prvpgu6GZ# zv{_-QH92cz?$MR$TuN8gm1ebu{e8T`XLZo&{Ha0b&IIUrhIh$MdpRw5O7yus%g^aP zm)suHmcEgx{=DZu`@5fXUr#I3dNEBn=+39PQ8{lL4(RS@zs>SzVf3a#nY_%?z4jlE zoMX6qIm`CIZsu#Y^P9{B_ULc*SWwIL&oJTc<lLRXTc2KF@~`Qy+O_iPFNfEx5$37( zj}N|I7$%z$eegPyW}X!T-%kIw*?jF)K5etFrC2<Dz_WZ#&$Ld~#-bC;Z!|G>UTrK> z{vmo`zQtQX<=1n*sXyJ~kQ}&;r=DN?U%gfCwYX!MZ$nb7-m=fQP~LbTv!3lY<Bw>+ z+gXZc!40ps)E@L_jaj~z@lVo$(py^}XgAsy-*VbhIKAQZmgWQJ8Do~$%GPK-u*!Yx zI!}WsXinKfd8@bE>fdZRIX7r-nS$O8`GUFM0zYhYXuB+@{Bn!;yS2r)?(E%i+3u3d z6kQ%=<~3jHtHKmkosDdq%UzYbe9Gn~-x(K=IuwL``0;$61n-V?*17u+^zm;vciL_q z!~Xbe=Cxs4ZV3Nm*dn#MmtjB4hIH20g}m{PIvE{IgfgD%xbn#*%$<?zAKR8}&~Prt zbe`yqPc>K0GQWvr{Ozgp{fJc7)y8X|y!}NOzO8A<6>r$Td~0Kv_Wx7Do(xgFSHqgm zGl5io-gj)x+6R%23;wd?stU{z<%#P|E>j5HdRcz1C{N?7d7>YZ7AMxRH=HdOmQ~6- zVWBV4SN8K<CFAYdPBZS%-K)|Ty(tm7_q_A|tGyu^#WS8<WSRA~LE`NCWh;)|DG{wJ zX~^hyxGlb?>sG|o2z%)dbywmzwk&)Q&h)CwmenlU?}cyk#T9#I_wHi9rT(CJg{*K! z`nqH5Wdz=eW+WeUXUI$V&iUhbgY=EHtns`%8t>*m*w2ucARf=m*Rklf;jP+*HFL~v zU0adMw_~v_=N|P3ec#GH%w{a#;@@n~DPpy_)cq&ht2pL6fqE?Q3_BLb@bBXj==@m` zVS00=@|mb^sROc!f)z{!?h%algbLhmu<kK_(6`}&<U;FB^EOyd+jj1ROOmwP7R6kb z=Lc5B-|A><il1q=Nbo^9vt}`yT_L-&7LVH$vq@SZZ@k>|1T7vbec2+=Q74o!`@nT( zCCeoWS9g83@_)m;<C^WkezuAj{?CVItXs8U!-Ti_*O>O_3MYIQxLwY*W#@zZz}M0l z_nX!)Eelzoy8ojKvx1e%j&G6=)EQ%3(#@|ses7zj@M76n?iKU>r0*yHkh$W}xm3F| zt|H3%^p(vmKQsQyJ+OZ?N3~>AI_EY>sTU3^_2Oq6HVMA;+IYAkdh)5SxqC%D_pUuF zalx%Ln%meacJ{)Y^8r#PWaD={*|ltDI_Jc%^G>i`+Ag#-V{!N=fqibTOiTY?EWO>e zc=gw9k3NYlTI0!5w7EVt`s4fx-`WNDJbB9V?n`gZK9&9I*o+Hq4j*Ry^4M^gv0S}S z^hd&hcPcm7w;$a0NAuM(<_lSC%>G8}bT!;{oZ>utGvjVY1u4!gcYG}(?@7E-xN+^B z%$11k3LST3a++7JZT!ZUP%iLP=5YDE3W1I=_Ne7+=S^s+%{{w~x$eMf4~AO~tIx8^ zuiGlMI`*S-8tVpYj&J3^%Ffsc+?C7luKRpM;6P=q?nBA%seAUVYqGL@{PpXR6$1KJ z>(_7J#uFFspDVg&pIoHio_+h)rM}|6wQZr!8;eaYMfDP*4jE7Om_3tFZ{2*v#X%*1 z-G%!v^fJZPFZ!06T9~)=-QxUNuDV(FOa;}3itGGV$2QLjWyllW`uI{-z3bVsYrj%A zUXil5_BLVJvH8%SH?Q|>i@T{*kz4Eg`oY%H&C?EMzvk1?UpmiHd-BD%o(@KPcJEvK z?ctT|`*J6RwlgWs%vo8V*XO^vLSiewRyVh={PZP}XB^&sKDDS?+II8z<&k^(Z<S9y z8oR82`emK4#bq-$%}CIhwk&eWX`PEa2ejHdHBv05&&|5Xy0u!nTQs*szW1_@p2ORp zTRw0vTDgAh`^GBS10viZPoFK>yKUa%J=^YG-M4MqQ=!Gy>(`!++-IyI?$2@0Ah^Lu zIabp%QOR=8(s^f1_i!)Il0LRmRN$!ne^>FPn=iWReOElV`t=!uFG8hdLi_gT?X|eQ zM*Q(d(-$rKm2dyIKkw)F<krU7;SYUU&7awnmND6`le%(R=quwo+1+oQQu8<THN;uZ z+L5mA>zs3D!)49uH;VQI>6<kNyldzC#q`l*K`+aG?hD;6#&_kqTY}eZOr6)e;Y``b zR|{;I-!5nRvoLSnITx<#BNwLlUhyyT_A$7+Fd#a>*HZoF>@KVSD-P5KS}HkPs>XU+ z>0JKVHRbbM^JV9Lx=B3$&177s_s{S32ld%gKd?voRDJ!V?egs0QvNM(-Zg%2eSYyr z!TJwMAJcEo5Dqk!>NwDHd&cZJxjbLa<o0}M%01({^0q`#xwP}UyyOFyw;P_FlY2%b zUHbE$qN9mb(!sJmJTZpn<sKisksvtlHIu@PEf(!%mB&8j%-k&!eeUd8p~wc?HH*z< zc<!}Esa()wm1j6I_4Az0d-2TGoEkE$<v-^*t}0Yocxd9+5Vp|EjbAcqE{ffpuAw4R z%58OnA!Wxg^HZi~eZ2SjC9hks?ES!KzV_3rf6-2vb_d%<ygql{`_kDQIq{kB-<6s3 zIWp&SNY1wqGc9MF`0tkby26^KU0*xXZ!{NO^11$E{wt{`>#`^8UdOmk`Fe%LVbin% zt=SbT41}GpNBCWT!ESqzZ_g6DeV-hzR2(ikE*<f%ch_Tv4AZdPa(}WE^7bT|Zb?5N zzf6pCOU#Z7{yE(4IqTZW)u&iD9MP#b`ufgW+k=YRI7D@u1?I2iJpNN=jU4+V+uN^7 zy>_OpHG80}bLPAdYr}``jZ)EDpP1>@6>r@zCw1MiZ848tOn><)YubCBQ>xD&DR(Ws z#1XL0C%mTpVnU4DWKHY5Ltnq|+E&Hc@6WkUJhsq2w&BbFi>o76{rUT=u=L-)LqC4I ze7V${Klhv0*Y7^!%R|e)%I~O{Z(mwir?`$?sdh^@e^JbwU8Nt}nZ(aq@V%S->d}*R z-II6g@$Fmu_`yWU;|FJN?e6D!#-taQ9cy#aV5@xE7ncLOD%L)Jq_e+!mnB2&ovi2s z*BP%JwQt|%->h?yufv_`t=R`{hPRJoT+jJMD)FdnJG#MXr{26CcD-|jQx9i}EBrKJ z)3ZDpx2l`pDYahV?9p~Bkm+}(dH1~A@#A@4_vV-)uLpBQ7Q{?g_k(Zo!S`?GX68t{ zO0@0e?6a>HzP<6W+A@<|zl>RGEi4?FnHh&_SH$Rss~))+@_|`H!(rj0UyT+=eFa53 zia47Bv=s}TgH<#F1VS1@-g(6|H8B+aeNc1%?$14&3x(b}pRnKb@7~RsH}B5O-|H`K z^M0$V@4GpBID`L$#!a94=uEfij(NX>A20cFvT)gtZL2N+iWX0Jv_835@n4?t{``1b z_u!bzr9GXSb}4TCFDU$U#m~gACk2l@Yrm?#n)#CQH0Db+rx`h)9{csz@*dyYM&?WD z6FFrjgt=AB4E%gJ%WU->wXC{`y*<an*j0`_YrkrEn=y0e(}pd7&RZ(X%@1o_e0Wk# zex2O8)f;3d82x8tU!ttTu5zT2S;*x<LyPtXnF%X)aLM@onm%pj>rJu~+;rHNOyrcE zaP1bKhva51nctHGbKJOP7k`;Kf%($&fL9GIJ8m#$E_~Z?McP7P;ivW13cA~5CMf8z zFX0uoQb<%`VqbDRmwn0FZOlQZ${c28S}WvkkeN_0OW0DO^cJ7T-)+p7+Bjt=oZBut zLF^`<N91kBmzz)g;Pc1{e4JY`(Ny``t>ohiO}1;iX)rO`$b4zl1ZJTrPa9ZF7cyU3 z<ta1an%|>_Ep|^Dw$uo*FL|oSzJzzOg+gzO%!G41mI}QsvJ<AY$xbk9mz^NiE<52~ zIQx>V(>jfkrhIv&RS>;s;mieBW>#<%^06Mfu3ByBt?hI*P-MsP4SbJhmdU<589F2X z?mw>L-&229HD=9O|L@YT*+#e7Ub5Y0<4kgrUJ{xnYQe*}joZo0Bmah(he%elOX_Wf zxewMe9q;%5a^(u!%jYvvo3F@ia+Kn{sjzTSYIDg|6*G_Y_M8b}?Ku-Fp0D5)3QYiO zTIyuxaanz%W0Lh&$3>fRC#<-_)_H1^<07qXj-NhxoKbjMYa3g7=K9=KSJ^Tr<~Fk= z-c;cIx%$Az>@1JjzTF)5=R($+d92QnUgDo4ts-~P{#)&`z=Y-_lYV_onk3B1&$WGz z|7-JTGmrNbNA;7m&n#ZQRrxg7q%9Ioc1!eK=JX$o5t8TazjS5AGRyN7o^poQ6P({j z%BX5dny0-IP?tTz<(u$u+5F!TuNaRW6Y;p-y#9Br40m|M0^OOfFJFtg{9)nFbNP`| zme<s3KVtoPSXo&2!smNAN6uf9Pu?qfrCjIX(dxZhh5X+-Z2k45=GfdGY01}8d+YwF z%$MK0GVfS%gx&Ua{U2xRy#M~VSwjB7@#O|~yVBy1xo`d#P}RHj+WVT=*V|8XUi-E8 zOw{Y?PwO6?QI}uKaqU-Z(%P@qIqSd9E_$=I?qW~&U%pQ^W<Q^o@IT6kex_n{z_;VF z=-f{X)z%A`(>Eu}WUv{UNH5YpW<15?r_q}(+3?Mi-tLy*fBNpjw0}26*2qmsirL5T zHfehLz0|Wu*Hn5xvp%+1Cw^{a&&PK<`?WVWe!Q)--~2Pz<I58E6K|fX&_Cv%dOl%( zO32KnPBU%M<Jzm+N|z>O&e~Ny(`Z$~!5mlZo2sWRCb2C(wQgf#Y6!>lrXH_AXGgcC zGrT7HH3u%e{&fF>tb$(d&Y0L6HnGPnH%Np&JGJj=TVQHj&5i>rF7Yqy(W-XPSbVC6 zBQ->_A;4{_BS&h;O<^a=&~HrvZd3OvRuqT*?$P3Ya;oU?ilPFhjfo+aDt?8IZ9Q7; zsuiq)>dtOcT?6bE>m6peA9U{Zr+`hj(nBocwoQ5MFmHlmjzp;68VNmvRXj)Sb;8}I zF8wOg?QM|o#(&>Yw)$nsQ~ohb{3;oGZsN3Dp2eqjUhUvre2Qy-bx6Lx!73ZA<ps75 z2CHnQIi?;-2&ud?|B8u3=sbrtJzD<9c60Y=y|$U?GdVDI%dg`_sUea5W~Wws%1N5J zxJT=}|LvfKJzDxc-bbedK3%%%-3+5udt~f67TNl`O%30(uDs<y=Dt^R)AU)+eKwVG zmkc!vmlq3mn|gh<e}jb2<iMx8B@24A-Y@DkT9xCuM$=%`p6NT4R`qDfhrSD6)}tk_ zKHcKficg%IT6$hBHIII>hgaWd`$Xw!$uq(~-E5CNwSvj*=+WOjS_xMkGA-tkD2?@z z6kWx3%0Mf`c1mIh<6=H>2~oXGGgwnYEa%p0E#{K=dUc1<DxTu`MynbE?K`v=b4g4! zH<6qgd3e^T6`PuVPYGo0*=4$}M@xLeGLRB;E07g?E!XvEC4{8x0trn#2@?9N7_l<q zzzXprTp$_G34w;o&RmnyH&0$zxco}t{hlTfE`d6a6FTkh_`=gChMhm^GoAfr>5la6 zGb)`Frv90|_RRHkiM84PIXX(NnRzW?QmR!+>j-gJBGBf+>S7h65X3mK>T^%>!={a{ z$3a5Bg3k!7Z17OznRx162uS_g&z)1`Jue2cPUPy?qL~NMtIg%2rEsaYPiSR>N8m+} z^7(qfN}>WU3mQFGU8-t8<gXH+&Jc$s-ZH8|JG;C(L)I+|QW6!&ERO++HW#V}?d&@q ztTgrYO~1~Nyaho@Q>9l<@kmvjDzx&B%Tkc>iSs?o4W%EYP587=E=2b8*ThwxOPG{w z)xj<RyS^%Nj?1gsmqsbZLYnq@VZI<2?AoCi#5hsyD9BNjF8^=nSN2Zvm?@&O^7-9U zPf`v_7v@!lU;Di6qKlq)!Ee>&6Dvd5PxejmV0G!@s{!fXDqw81dB=_uB8N`&<fkje zJuOu~)4O;pyN+~Ko%FZ6QM>KCR;|0=8Q&AUv^V>PoVE1q%+7q9Es@TF^DAb*cr?%5 z(01bU#~1d_NNT&yr1&nYtF483V!`=E89pJ7A-kTJIG9xKRlV!1IZIgHdC6VJu5E9g z3Y5MJ&oSn1;_rF9bNOB2y?OfI&#a4M-?)DFghh)dag;6C-I;XU!vEKUjt@=0?;QH- z$)vnZyu?}M=p#v$&!=Xki4>Nm9I@=_j_MB!Gs@djrhX)|{o^gBnf(h|{hz<oyz`m$ z#Gl|lrt=wpUwEZ?=dDarrIeRQT)$PhXhUr{^P9!X_Gdqv8rMG!2WpG&ciY9i-rc?V z`r?U^I=-7srXTyiw%z_u^xeg4*OrTCWUpMfcDnE3+rPcHgf3bulsh$JwM(?>Ev<`T zo!h*&h%Q^Zndw$lrA}^T@OAb}w^-}X&bys^O1qdZ)AFOriY?3gj^0cDaGYK9A9v=~ z$%UsT2T#^Lne!!IvshrK&cS(ICfA$u`gXjt5qT(mti{QqYl`~sJC^VA-qn5C>Yd2X z)YG)Nwr>BLW&^R_4K7ihNw#5M|NXgRBOZUe@%hf2XYUiF%h|8oK6ljjl|`L?C~wWQ zZB?;Lee^Fbm|i00%Co9?;@giCSDISQcKyEY^sTz<rlDbv<7AYsH~3i#`fNP!vika> zT{o`2&XV1|d(T$+qUb(%h2>=ye=Bt#G!&S8UlDCNVL4;l)lF-@Eo_W>QtQ8Bd)4*G zj!Q51+zU8+N#tg*$v=hr789P|+f~?RDX+Eq@RqMVYrmA=(+M;de%QG(A&K>|^lGlR zqOwnS^tmcYuX>+VE4#(Z&m_&&JzQID=Ekz4Q_@^+t(M|l71sXi$s>k;S5lj=to#_P z{@nk!$lHUvY7YfRE@!=!TKDEn{_N5m%dKWA+c)2S+;(xvs^^*;4}E!bW_IA5OT3Sl zmMmUY60ErRj^TFQ)uyxG6s}Fl-1$X`z4Aiq-L=zWTk83*#~L^6xwTLE(Brw2uAEcz z7kAv%GC66s!o)?hY?qe&e119gQcH%6y5g*WX)?jrWK=x6r>d-7sM7gwr^?6ljY@O0 zHx{h(un2!NOPlkosQDc2sS7K0RXeAv@V4xE<dZ3Ln%no@f=~B93U6vS+|nUt|2X=1 zWl8S+;FxX9hK+O2$gqptYFaWoRW-Ic@X}w-B^Ov$Jy>w0<W;M%wOv3<{_+c-Z@tyr zSEyCpmA^qNCj7|$bx)q$-;|s$w|B`U=AZGqE1imCp5OKOt?=XjvxJwP|L31STsZ$r z^1RPSGcStN>@|yyU#~lv$@z8sOr53b|Lmve?El{>|87Z7rJ*Lv7Ndh*azBoyTK6zB z8ZTGm<S&(z>(E<cd&yR-s-=8k?!}JpPmZ^T<$RCVI`fXR%gUtl=90@^k7b+RyyM#U zy6ja!llP2=vdgWdq%O#La6UO_tGJVUNoeKuN4pn(U+?lL{)YACeOnq8dM4jr|I+pS z<$Ft885&y-D=e^Gb1STR|7-Tw;(2B-cUZIEj^H%g^<IRL_5bHHXN)&DuE-3~R(1Gf zu*dA|TYf1$^NbyLS_*c$9)4=ZJKef+$DOMWi}d-Y|2FZvmNCa>LE)zf$4)N3ZDCL_ z$HuWRiN8O=u_9vXho$~njms8n)K&b-rsJwFC^)^~zoT<w@A5gl=`!8V!*rxpERKu5 zki;Ef!kzH&S7T^W;S;Mjg>%Ca@1z_QlTA^)n$+*py?5%;y<4>u85m-M%RS`Q=uCZ5 zu_n+)F2F`E$VTp|<a@)VPdJx7(OmXKa@iBhfJ+QsaRpv+MWUJWKEE(oz^axvp{_8n z_Tn}#-*zwG@Q*@Vw=Q{~u>HNus;g&_=C*4U%#J79w%l1Mw9#)%$>)qm9_d^S$(Os5 zPwR)h-eOuU+q`$()V&*yY`Rq#CYIjKmCbkCyJ0QohQCMK12*Wg>U=)0?8TX@9(tZ5 z=5@q@>V&c-hnvbePp*0>YL(;9a{JP<3>m$?pR4EOpDntbuyga7o9&zL`}HlKbZIR^ zY;?mq<riVo{mc%XZs*_ga_K3KMe5i3u5>=$Wxl3}t$gp<NB7)jp7!ml=vJ0vc$Dj~ zC;9BzSjLY54tt(o{^n-tG?AgMC)o1rHMVogzCSBw8uy1zu1<5k{_YZI%H9=Q^rLNC z7xCB}<FPr&V{??prn&xa@xS%?ET(_%vn+kob%n(>t5J#7>)fqNo6^*GzrPwX?cL;Z zvpror`{LfroHR|krq(9B>%$ezW68@H<&1eRtMBocUyyQFR+jtoj?zR;b-`za!e-lz z+2R%E1n;r6@jemvN=A<1*o$YWI~29mw|&|EGE+1(>&5)NZ9$KF#U5^NGs~a7=&#=# zxpxxDhws+p>`3q7y{}&X<|@CZS?Zq|{L<fdUXtIj>1bz@aI3K<*EOLe`F{%!o##vF ze<UnE<$P$_nbqnVt6w+w**^ZLYb<wV<!c6xUWONug>Sj9=9cJ~Yc@AOHBq><(=*l7 ztZDX@6;sn!HNWYaH}T#YuC0G&y}orr?@^XScqFfElehKMBVx-tmMU-7RJi$YU4QHq zkAvq{GJWxiKd?9<c6q{Gh7EZ^8}b4-<ULQgdokheSO1O`%6Z|Qp=Hdga(qLcSzVg7 zyEXgWfhgYXtc$Fex?<-`J)Uw_ZtJ<<Of7;N<(@uFY>GP|F#Wi4j9|axtn00}Yz)6v zB)$09cJ1-XY40Q7Z2Zw;o^{T&N?3d6Y8frX+r5{Lf81x%_x*x{-1YU>9&JCa6vCrx z*Z=+Ogi90nD~~ju|DT<%`+CCX_nQ`2{c)7?k@?=K9it_|czo5|jg<#4bvLfd6+gPf z_H(B~Nsisbrn5FXCK&1GPCQm|xg^0-(1fLZ$vjJyuk*i}i1E~?%=xYSdZ*~57Yef; zw9e#Rt>@FqF^^NwCcM+{{4DdE^2_JtoEDi9zR^AYZ}!uUhqLefc+p?my)Eae?6!;f zOp9O0?lv{;e<XG5!riB{Hf;A<e<L@2jfb$`2MZHx*;bWf=0Qu{&&sXUukGe>y>s%Z zu6gwJf^65R4CNQgQWuAntWnI|zSmx8%WmzEP{ns4Ki*B)o>8sQ8hAayIb=?+#*Q4* z!=Z^&8Oo3HEsH;)%Cy$Bbeq@adzU>f2l79=nqtDG^TEhvNBYk_=gxR#aPb^p*(N{f z(Q@w4iatKeH&;zxy%S)Y<o;dPbXr}&=>?}1cQyp>=?L7@61ay);~L{pZHc3+Ic5jH ziC$N-HN4R=CV$g8?>Bji5;a|>rRk?^(wJ8=p}pnC9i56N^Gu_X6J%z2h2B#$D4Z{2 z7W2w+*VEf8s$aEjnHch2#Q*wv?>py8>gpp4lkcBPDXQ6%d}Zx|XA3MMHF9R!toVC* zrnHXtQT{tC?muB`5lvkDgmK}nitv9rTnm#{TiCs-{h7Nk;msEvIp6tlmrOVH>i!H< zsQhxl=e)AAZGUN1-1n1@;+S}Uxk&GouJ~agYIAYs#4FEtChp0+vOc=<Qk`r3dHLO9 z()aTNI2raoT>IjD-u1m#mK^;(!8&Z`4be--=PlrSzjoRQcB`L%H9Ai2%ZQWrsQarP z^S(AM^s@L4o+IHJE&Hxst=*)*|MRKm?YCe2+HZAZs+nMG|Kro#aZ&QS+HzWW(u)H1 zR%f_H`6p#=GX3x|$oN`|pnA=lG#ycu8d2kEOCI#FF5jy6VE>D(&87Ton$NQ8?k-Me zpI&Hm+w!9Jvq?%PHO{Vkkg9nvj!WzInc`BmRgp<DZ;Le6SS+;OR^@YPdxX7UcK4l2 zZ&xO6U81${MkvdZrp6$z+h6Q-7cLh1yZch&ntPQqUde6PTy}J!zR6vu!}r8jwRD7X zmP{`2eYN?e)eR1DvE<J>w|80cAAf7sa-mJoDcHCrZCa4Wmi^|_Bb9b{6bXiI?O<X) zeWS#@DO+tG?_6o!w`qB)xsqYmR-c|Z_3N(>8*eQ+^^ND?yvl61ciT*h?nm-Xc;_I$ zMY}q^dWU~qzwJT(Uwb`uwXUvuW1RldVXwm1bG1QjLI3X6hUrJ_{TRPvMNR3sAlB?- zpUnSFFJiPao86Wn#(qiQ;qpJTg44xrEsd$;4@~_pu-YNj>$;G2kk^kL#_T8mb9j30 zJK2<7=A|lQ7v>ed<wRN7GpEPCI#d5d_?jDJ-AJ^nmUUE<RX_G`>bV7-23O}kdHTL> zX3X+ixpO|+SeI9BYiiv1=uv>x8vYW!T}wJQh|OSYZmeYK4bS;tJ7K$ayTuVVizCOr z)O_1DK|;ukXQ}OSlP7Z?DL&^h&o34_{^;c^-RV_Y5{cd`{g3S3W@LZ-dSkKG0nM!& zN`LP5@yOAh*c-L+VChAEgU{R_5-lSyPn(>}uD(;xuTjxn{qp1IDZg}#-P~UFA2nt! z(LH?f{(skRub$-3th}uM<)my_MZ<>8+<m)5l2^`utT9hpSE1R)_mXPsG=^XYKDU$B zLM8tfuGZIXj+R~5QM;r=PhDR6z$%UFh1}b3^?rV-|4~FuQ*R&hbMxxwQc~`sM?Xr( zZ#{M`_pSFDs|?-H-6!9@(H30Yo0+rPbB*sMuh3&RZ|=UC`E29dnRl0jZdlaRuf?^< z_0NN7M@M^&j(kUf`5JciKNfbZSRgMVD(GTkJlVLvdcA3od}#2kvv2;MtvzG;zxdqT zyKkobsW%G$`2C-7RJ`fO>slMuhqkd?5}DuUH{aL2e%-2n|Ds#$=XGu9{q5hE9w+&6 zZ{ii1&(A){i`?Sb-`*xJ`KyZW^=swGzh_eC%>U(Mb3*&e51V`YK3{gSQ`3FI^Qzo2 zYCpI0PPx;kN(HsAA6>{c{fJad)epxX(cZ3`<fbU<xzyZd{4>j@?lfanI-k@Jk9(%Y zlONrv=X&{O&h^TY^a&mpm|s4t^!`3QqGJF1@5-s%EP>kt1niG5i(eb3azk0?Sor1X zD!-e(F2%3grt|OXm&bqP7WAF#Q+QZXcBblae--m>iRo{SOK<!+z4e*Bo{4=0V~xNi z=AZBQKOVn&QP+J@^s`NQmKuKwp7Z?Ou%|dpQSrlFp)%_&BDPy~D$6eEZ+>U7;*R0A zl52|pt=i9s_3d9?p!5B$#p}N2?C`BM+t$cC+;Y<Mi+&(kBG}>~Aou@q@0<I93QEQ5 z2^rrU{;l{rbKk{p@}Cd<3l6xWrpKmHUdYu|e6A!iO_+bl+%3U<{Bt+eT+{sTx%|vN z)!GN^m&jev_x_hA_ATDV_CdasGw+|`^)nYI_cOl#AiwX=^xDf2FJA6{wRgtP-}T~^ zW@pk5*Ic{&-_+mOQSV<0N294wfI~q^#D@r*DJeEh^%K^+yxad<S@%`K&x9l4XVot$ z#?-4nTHUz*>5qFI(g)5z`@t<(&+|jAufI&`zvK_uJHM{!xYbp+d3f*m7j;CQxlZhO ze#h^4XCukJ`4vK+*c<d8|8QPC!JfTF`nbJ@Qhb^2$u(XdTp9nbXtBAw{;^C>Jon#g zg@1l*J+c01Vep^3y%$TF?-yH~-oH!Y=k$c>?K}PjG5=i4-SLIv_;0m|-|ukbZz%k; z@9xE4jh}b@$l(8U_ke2O`<vZ=<Q`lvsyW_#BK(evk+wyiO<xW32dU+=A3j(5{YG)- z{GI>G_qY9-INNjC!H>!JoagOi{gE_n{~z5?D}Q^Y-4~iRf8&PaS@C~(POf=!%>K8_ zliiK=hd%y!c|yN-TFScTKLlN$%x8?>+VHfWPuc#L?xe~|oBiJfJ<;FG`_HoFY50s2 z-}gEjg%{Oa6utQCUh}{9O@FRPPmKSmc=C={#J^jz7k}9)&2*KC{~=Js`NLdhehpXU zc_*c}&wgwZpJ>nfN3t*eyV<8R$5n#ux}Ik5cis0ec+$<&U$@tHzG40o^zN7b{PGhf z_OFX4RW`k@|77$ep1Ho^@%A+?b+5$}{`*b4U&i-o@&4u?vyXr3YO0w~lJc$a@qVku zno{?6h5a@6o$R>g^zS!c?_|gN$FT4IZuXyD&Q>fRzh90$vDDf1^ZXA6pLh@a{8?YY zw3G49gCE8E%KsxQ{=LpuP;W2g`1Jmd|Ah6-=f3OL_1$5pvt7Txqn>}x_2+lwCswzY zr-T`oGXI$4+*<m0-O(HGWWASs-?^hs^O3ZeaHjb6|DQYdGyVCi98q_r=t=c-;g_=O z)=ddh$e-i0L^DoYd*XZMf0D=7+v(2wFQW8um(F^(e+RgfYHK7;=j$o$|74=HcE;gP z&(FKm`TK2=w<zZQ<lpdlm!!4&rucat(~D~!#60O|kbm-HRbxiohwQe;<vhyuPA9JC zJO7(B!G5V?efz`M*t>`Jx5det=UjgqCc8Phcu&lAj+g7Ul`OuNd(m^j&40SlY-N5A zH#>zd)E1xjp!{UiHrLG|YhT@sTbvrU`}Wf{H*;@(O{+?oKC5c6?(CGmA7)%JS2`Kn zswBAH?eZ?u+pAtbc684;c|CgCvtzHDj5n=Zx%qYPz0Qkqj4#ff+F6rd=3aPA``Q*s z-PO0gwC7LvjkuO^|JhgO#a{oH8M<zk?e|;x^VAo|))(tmg_QcQG@lxERpCN-pzPX( zFD5UueEPB0cc;TIGk#5GaaGBZ)6czA{nzcj*m3X`>*VQL6#)ueN!xm6#VI`h*2|+& zJNvh}hOKkg{}#!;>hry~`Sb>NKWlEyc_knC>(`&-z0vJ$dUC!zQ@v$QcRqena`Z@{ zWnqk`@AIrxj-Jl)`7YD1mt>q>xbA>cE0d)3%@=QTf}Sa9#hty<%%~&X_JAisGyncn zgM{7pa!y|~?c<F%sCjrTaapjw@0y(^Rt0qr9DP^sUiPSJmAi8Pv<Ev<clxekEGWsg znRjBTRE3jqndZDGUbQ=y<i8&7{yv+X{lu=dy58H@epoZ{!SP>>4^q~r2G(cXmTF(_ zvia;X$K^|QC9a<5(Y!PzId<)d)PAn5Qhr9WQpC32zEZey>i@SH9Q7w+rR-M(uThV+ zHBgxquEu*ccT1@A$4OE<6QpmQ?ah56Z=#l6Wu39gJld;wSCrC@Pfs6cndS7{3bB|S z?67dp-PEb)t88+&ZHiH2n-Rk$ci`Z!9j@7v@+v>RGP%5zX|CAKm&J=VYb{)qvzm?H zbXMQaA6YV+?@s31q!{-1=bYou#4UT;rb*tKJm2=ZNz}URRc(x&hc3@PcJ7I1N!Iez z-Dz<T9!`=`SGs>mU|s2}ABQ$h+4WZAsgi>E(}lY-IZ6U1xb`j$@!#NAZMEZ;MC_q2 zFSw4anqnY7P2&191*M4hr&D*`^?kPfVutFh&6{7|Z0wY^dZ)FEb>iN|uDZR)7RLEL z?_O~4>vQd({ONb5PXCiN<@`z2%&E@2t9E@cc_~y-5iq@KbEx~)Ep1OOY<uU#H{prb z(kr*CXHGF~j^Vd&PB`!MGV<}QQhuqL`1K!;29|AJHbwUMe(_Tu_g4k{K9F|PAZ6jv zO`9j|-O`zJd86&B%5B1Cucj@G7U}yd8dB=~y=-0Pi>*>yo3z&iU(L4scy&<$(`<=V zrt5C#uD|(7WcRMQSqq~0YeI7?uY^i%vz@5b)@tyTkKbi&=q+WRn|h6*SyxIO!yK=* zd;XOXc-Fq`*)kuwR)>qioeO0;75!FCz8W^yM8RBp!o){hTNW?177p;5vMqPTyu1L{ z#ft=lwmfxB?dE(|BeP~&R#4lfbn%(bRRf>ucSyCSFFUpVW=ooxkVyUfDG`g_&Wy23 zZeChbr!`r9KF`Bnh0m2e&X$_5X;OaJe=+5M?wPcd)0MM@oD+5(_H445a^m)kb&jTu z8o|fb1Wfki$ywQAkR2=#TU>2;t@F~B#E4f%thjntuh@HL>nSD0Qxh*=vbM5}wEV3U zw%N9$>DHIfC#M}%G{nMs7WPhDeM<P_!kIET#(@cEAH1ISl+{{LCOT&S6)!Kpe|;A& zZY^^aZ3{I~7dALKH$DE;8&&<2X58WeQ=1LKb2^)?t-8|JxwzXde4SmkI_ts-`yH2~ zwu^dscz^C#>E{skC40TJ1WUvNCfCo#KGETd%R^UA^oV{N^h)TI@S;%eTU9K%dp9n6 zs90z8%Dz~-V3L0Ho#zjacC0zlVjurtx%t{1WhN{gTvIL-t$buTMT_@UKx=nly}#}$ zg(X~1wKr_z6IIdR{@8ZnqKl{D*7F?KuN28-Ri51Hc>mCsbu|WCL-m);Tl!Ah?dccZ za{>3=@|54lyBp-(PcYJGbE;f%&f=?6xw>@8>8&oa<sGA4FI*GWy_vCUil)xOhO)%$ z35mh4w3cn1b}sT|(S(Afk9~csi{31Hpw`K`%R<hH-(<Gegkx&C=}j)bqt`C9x^qqA zxg%Sq=^+u1@+FhgJoSE?>^sVPIdVttalMsuZeB61S6;gNf<jQ9mtM`@O*t1BlY`Id zXt<qS$=dhseZO#%l6oI^=i{VTT4&Ur{M+!^V@{SM>%Xbnr5%HpRPR42aQ9Ek#o2oz z1@13MWH>I_GwV=LqqOW&x7S({Eh}4_#lJPLV3nP0)tfIX$^UfbbEEk1$FpPZ^95V} zSA1`O;-9n3j5OmroYzFcvoAy)I#X%1O)o?_gM}sW*49~Zf40Btt6%!m%Sl;dQATfJ zXLOH%YDWh<zmlHeF<zHBI$0)aik;kxrr6#!ooTlB=GDn5P3#A29c?N;yg1m*&M#-P zLZjlt1IGZz0>?ndE6wcv_rCo76?=E`%ySmHTDLBL{r>Cg>+9=ZMZCHY>dB^DlDbmI zR(7#Vhs~*tnswp^j-e|i1SxG-f6_QRt?<SpW|pk1%h$vNw%od9uN2N|sG7yOzFqf% z%nnum{VX$EYffBnRXu&y?~d=sWfyytbDo^}b9|lWE{!9#t}E^?=)Pa}K;XvpOSUB} zDu=`m-0IAXSox3bd0pC(<8QZx9aG88*;F>Ux3Mc{wd_QvUrX7mHmMsc$1mNGbMgLH z<t^oN4N6peMfPy6D7C4|a@l!j@j8Z%du35=qPMw|-5uik{_J4A7{Dg{yhZR4%cUDH zGR!|aALSK0UUY=<$|;@q-)(GW{<_v``*g|wix1U}FGzM)^S(K@e!`x{uebModUN1c zptYO(mBed$&kp$p94bzHcWmeDU(cE5=HCl3<X<;?_Wq9#7yejpYG@#8acpJrO!<w@ zP9hg~-R=^O;$yrtum8n|lT)=GS7a{tV(k!djC_%|bL*y(_t(C?s?{!P|5d7x;-0i; zvBmcd&%b!|Ns7tYRsMc;i|c3~r}Rw0UlJY5Clm@DJjK!cJ*KK6q44426|?7*oQXA* zyIyc7=B?9;;)(|cMb?U(T*P$qNj1Ch5r^*=&Z}HAI(^sa-@!vEha`g&_*<LL%@uN2 znYw7+rnzYftDQosRQ}&HeUj+1@05+g3EK>oLhg;P+c~*3XQpVja!)Jnx8hg3aeNnl z54&=dRHh%BxsHX*la4x1_NNYua&OK&d0p<!;|1EwTcwZ8+SC1pW&gMI=})RI9Sie* z$6hXT>h+ErreTMU=H==AKNX_F5kFIX=Y+<{IVV^)@4w9TZHvQ&cFV?hnMIR2jo4rB zQ$93Jeqw*Yg(rrkTi!3{xF!+cdU9p9VVDiCQAkQb(F!M}B?mHJUkG?=lDAy??bpaD zzZ9>zc)U5%sJ_c5=27lfFW*@wbFy5Rvpg?Nx^;89lFcReC9^$(T=y9K*wMRd>O0N; zo;8m%#U>oOy6`1SXDdh1(Ro2Drk8}RQWRa*qZs^QePLyL($e0Wy`@T}RU%xOX45zq zuD_ezA$+U9GhpI(`z66a>OE2!${zE*Ci*M*=sd3v@O3tu=0D?;)V5<gS}&#TPhb01 zRYu@Um*XzQ6-Gbv7!1A{2+F@H)UaC=rXRekZc5|*CABQy_xYb*v!LP8$yuu|96S=F zX>OR?Q>(k-tM8h;lv@`R4rZpy3)y67@^_SZ-Ik1a!xC}D+wE}Js|C*&8q|H-d-#sj zwK*2Mz2v8EF=%xy{<8c~uVJO5|MRPT@*3xZ4C*_@iaPx+y!@aXzm3(uM%?)dcXXjb zOtHk|^Ooi>IsF$a7;a0}TCBL@#e&C=T(%vUYOzkJ(ei4U{9R-9<r!j8Wge<eGgtTT z@LYbCJ<6$B;Ac#g#!@3+n-uqhPg;yPTfJmE^AfWscXC83s6G?8$hZ8ff<j2t;m|K{ z8->(8Pde_3uTEN}-RWu|^kCZV%saj{GyXPAJfpI1SwyL*ilh?%RX(;p^V&nEQ?@+W zXqa{V<e%D9mTu--1*d!*8snXI+F#qE5!UXh#pm67T;`OWU0#d&<0)+W+x1ePwYzKx z_TaH>p87^$!rzpf^8pUoI(ui89GLEz@p5hTfue>>2i6?-Ug~`_(`5CrSyTAV`75RF z(=2|I@cLrzOjYCH-G#5T&&q1EFW}IbyNl`Rg*l2D%ll@xANoJx=dU*+0p17a2F~By zx3#Tn_W$Koewyb3Hf{;E3fq*#SF}8A**<Nt<W|omn!66^WzCM7*>A+3lDp`@(n}q} z?DHk_-rU)_Np)KI`-r=Ow`U*F&wsG`ShIGtG}G-D)n?NUHY{GYbnCNkW(r$&i+#^+ zid&PPlf!i~RGj;Fyv&QA8+WYVxz)4(w{N2M&XnVfTrpF(PUJIxfB()6vF|4G6K-4k z)@<MPzD|PU*4-7ar}1psxn=XNjeX+VA1``wwIaF7W_uZnRrPPNuY!lpod4UMG}~rF z?e|yDe(n9<^Sa1>Uz_gYhnvkN-51_i`#b70-(tTz`*-arUVbC)-VMdW-tx{DADt3= zeLP{!+Qu-oyJw!v*wV*)hFSTOxfru#to^jQJ@1v)9~3=x_p#{A)t0{Rr?uRATf6!6 znV&&RYyDsJn4NZ8z{WHsW>VnoEe)!11sC`gzVck(ASJyd<bc}w{Ozf854B$ND48wp z-I%$h|7W;!{W(U?$ZLz|nw36W@HmCxlEb#!j^X7#+doU$Z(1DV?j6F?S=+kAXvKeD zp=XI3JtgA&S*G<^G=;xty))q!U*_TyEX&p>S6=qLeqZP8qP|adYAa?J+zzf-{IMr# z^Ez22|7^jhH)nZNoc<PZ-7wT*smz*t3U(q}lGW8N&Es6-SZs0V!=^q>Q>%z`q7?!` z>~=~aFKq1%<yyDJ3N&`k+IFN#N<03Ne8r4U$4)05FIm)mPeoGqu$=C~CVR^TQN}5I zHcZ^8U>B6RrX+Lq`YA&5+GYwGO<Z)hSNMhU4ezkhrIvzg4Yx?RSZ}$~dS+JnU7Izp z4~azy1(?5`YIcK9a{r{Hmo9o&q~0gbdbU?EH{HK+rNkbS`CHgIZsjSRt=8^W%VrCD zy1(Q6-$ndCr91f+?z_5Hy~DS8j+FMayZf6@@8i>JaA+~PAXNQOE-Sw`)XXQvoN<vw zc|A{brsyP|wV|^<N-}?#65Qf<;O(rrDNA<z642YGYP+c5Fw41XGuN(XzIyD`p4%r~ zw2!e^3e-JlFMif}_=&6V!d6e+`sq4OyC0w5nla18P}{)3HJC%c@!gNykY=rmOsbhr zPR_nrSHF*S<`!Sa!_JFcoo1-DJ^iBj<w2F*k&~CrOkcF5^&3|ua@`C({@G-{#^<HB zzqA+~=QSnREVke^G~AT!JKt4I?dZ)J+c*W8Sw3eSVOt*b;<5OXYs~65ChrNIy26jS z$nxx@BRTU`{^W?L?FkBPYu$F_=flMt*mI0h-)P7kcikSG8ggsxyfb}g<Si$hov5<5 zbXSLLjP%2N-gRNgzmKV(S<~FNL)9qReVbs@p|Ymr8QTKfJEAWxTd?6!|M%H@BdgAT zF+S3xaI(pNNu+4m`jyHxvP%xl<Gy%Hl5t)CnM(1xU;fjwQXBR(HSjCQa5p!!>YRFG zdAK6JQ{zLxl85Q~UHnRnic@~Q)>ydDskKwKXwu4}|Lv1Z?kjs*F(18m((J9~3&WCk zKHNItiVse=@yw`kIAT$oekt24QY2$vS-{Q%JEaawym_iV^~>MmHAfFjIBt}zvdHQ3 z?B(BFx9Kad^%3i~Ju0$$*$rccKbv@th>HH5;P2=WIVB)AVA0u{B~4|vYi2EB?pgfu zK(^)#HxaACpsfrlAy2|mCp|LTo!FS#A`q_3@M&wOOhUD9(Mf}8&mH7SgEk-Bnd=eJ z^X%{fjgvFvuNoc>{?zNYabm|sSN41jk1zN3-&H9Oik^S<Cf_F=#>vZ#&0J1hIq6gR z*2PxR{mNwp!+3^Ca_cQ?-mQBcJ!QLUM1?2Eqr2J9S4{rQu+UXIWUc9;j+5U-P0dy2 zu)p*zx_js<OR9w6t`{=0DXMcS4D1>dKfX};V7zD2Yelhh20Y&;@a6tmsJ8GS^9*r| zx*6-0BiUK=Lev6I)jiHv|G~NYq*{mK>YtC9<3jE{>#r;8W|3fCVy5s<!=t0Y?&yW? z#C4PHe{yp3S!oq128nN6>$&2l*^j4gn|Z&>O{nKyG2v+T%Wqbyb7qE{)};NKcP&YA zy8!o_?Q)N%OO+Whr-;bUKP>h%;g?xp-A*<B4gFaiX>43or)n#?)?Bo8jz6zF=h$VV z#h159muCKLWmMX7>dmPwFH`24)}24k->P%LXlr}<UYoS+h@2NE6V^+&Jy@=PbKm*< z&$F)nKcnb-|84bJ&DRwV{+esfimefi`}x1$@!65(SFE-@Ph|W0Guk%o(SyF*-w*Zk zD7ZYY|9LIHDN!bS=A`+PnpWSQC0^2Ioj&h|z}<bC=Ci+e?ycNEXSw|Xfz#WiU*1^k z!GBF+QuTHA4z7J~r&fn??ol?~Sn>Atf@PYwuTRoDk-yrxYWKP>XTgVaBF@O?_!d`2 zu3PthP0m{L>ngeb+bnByzfF3QS2Xp@f*nqFN5UMmziO=JuswQmam>0TlXuDU9UgA| zGGqDi(j@LxFD^bmzx3I!W4~SrrEHd+T5#cXNuS)AoqMY0?@3>}Q~CMX`T8d>Y&doN z40HXRlIMR-Os+1udW$>0@IKpwJ!{trO?N6bZCd+n6>r~+wL*nT$7{BhmssvoShK9~ z<P_mOt66SX$Sn=&ue^{vZ`t10yNX`UJ9}vE>f5(hm#;Cuu6l`Mq3FcNC!Z)V82+5( zx8%t~fhFop-r8qpA26F=V*L4S^jX!Nd$;O}FFCg%{CGjchR(yURs4@O6|hf{+ZOKZ zP|x9%UU>L`qQ~^kcRR~_@9y_8mUOT2+9k1Ba7T7~?p%Afyv+WT-7<zH|5awL75o)- zA)M=A$zsjpbvg@9{JQH=ve@G5sfRajE;y-Ed!?>#_S7Sv?flsPI`d1*1kBnWaA}{r zY0#qt=5?VjmY;KUe1E=r=X0}nhD^I(ek?0E;<QV!Thn6qky~z3;lJ#ENUyG{&yM)F z@L~OyYd8L{oEEnz;`=Id*~2N<Z*0o5DO$JnnELZaSvghfiX8NgSpImg|L3wm@A2j5 zEX8yGJ!iV(UL3YqzMks?!=l>E`?ZE=SI%7SSN-csy4pP3r%#W4yYi-ZIsfOFzHfeo z?PnOypSqHIe(ujdPq@?fRQx)1<&MC6o?Gjud_UY!{z<bS^wQqwJHp1Z-nm!DpW(2Y zWO#GK_hSNgzXUJ0v;BC+a|<_bb@&;LsB8Z{n&0=%)ch*`;X2!c(0w&~6W>p@ygA+b zL+aHVwbwV4pX2$U7uJ9GXomm%r1uLY9|#`)a%JCJk$uzI>|KA0<%R#!V|--xK;P)o z`NrRIc3Uk?qaVmIy)*izePw^mtw&duUVU88bw9m0?B#x@e?kw8{~O$^pLgi{U6q{U z!NUI1`_G(xvg4)r|Hxyy!cXT~bSpn<_%N5V+WuTa{Pbmdb?<tf8@5dk?>qilxF-MH z#Enlwl3$%(uH$FRXem~2`R;6GQ|?*U{WcpdzQ!y*m0$03qq@xP_}w=vzwMhl`SCi- zug^56e*Pb_uRHzup^JNrE#EGGFFXIZ`123*8PE5f-}rQ;y}I_}hr$=^Km04S6r0Cj z_tpRN|1E$1%{M$&^w6YQJmBh{MICF;bsx;Ealhb~d?jYz$_0C0Ivf6dTFJa+`}fQH zuC18$J$~M?a$d#bA?JSIoTGN2);XN#$%dIS-=zws_kWPwnr}Jxy-rj2!Q*fHFTOi} zcly&0`i%d5dA|O>^jvMe{bSY#YxnTmC0A|^v%3|}e<P!?p5gnQ0~L|heD?A^tZn<5 zeu#WD*mL2x)q^>kcl<r(@cV4zx9B^1PxjR|?ek}Q5L*0arSXrv<=1)dzL~syx?IzL ziT_8$JI)^C_#b-Yc6s^@>xF)O+m8xg>$~Z>Pd{sB&DHa}&lr|O`h6D6xYqVIF6s2D z>peL_AJ$jQ$*q=pdvf15o$cCxzn)XM@A}oFJ|<wj)uIFTjDNIiEBgMuGJSc)`0d@$ z<1e)T8kH~Gdpv87>C~sy>7VX~&367I`JJOcM1T6zw>)pRuk~+tyM5{5cWJ}F*Ep=S z{}*4lt8nVulkGdyPao0SZo6guo9>IJi+^Z0>^HFr7u^=~NA{hW^tRNSw~|up_;$@d z`eN6GUvK8VKl+8~-t;%Wbi6G0GnS_>Ui5ytefhP|>H7?RCdL1MUdNC-zn=eMUHOe` zyVtB0kKQM5m?LVK^3>;_%j@8;Rrg%%*VN0i-*tL<e^GrtbKUEJe@S=b58QRHmEV|F zTVQs-v+Q}HH1{3t1G#)B)}Iny&UB)DdG9G<^Uzxbw=HYd-*R;}GkC}NAWk-u`E(`U zf&29<SM8TH|E&GIyZiGuom<;^`x6ykGd@@^6LnkSyGX$g$=LsMPJiEf*2L|(pZD)$ z`75TLlL~!bb9cq1&qsFF<liwqT)T6x{j~I=Tj7q@!Rz8%d(0W<+on(XCodg#%)OrX zS~So9U+X`<(p|Jav+Mol-%FBs(u)50EH*59J6m;caLxO>7Qgl0IRE6^WBBOhYt4Q9 z@3(eIFz|JkC#Tf<Tj|;Lzduv`_K0Pj<rBlZ><f0MB=iaYu|6>Uc<2AmpMHNowxE`M zOSxaq^LBYh>4vh3^`~}hZ=7wG&A8ou){p0g(F}*L3qS6?sjTwnO3bpek2z+%lriUy z+4n8v(|)_$_kX3=cHf%cWXA9|Sp5p`e*e$14cmFH@lNkzvM;}Npu%up)&Fw4`;r#6 zDbkPUF}-^vd@h!+@%^KF2mGZM8GVamp7)+rrem+Q+x43H|9x-oJaEGFXktyd@AXxo z*=u>XuFAR?5Y#O+F>BQdwwto6S9#596B1n2wMfiYS^7wJt6R$Qk6j%e%^u21s!B>t z9=1-GJve(gd~Gjz*zUXk^Vk0G=iW)Y@7@3YxBa=#^NP>!e16X7d)IyLKaZ;qzPxif zd&<pQa{E;+l-^2iJ>65X`PO4|Hur0$`kTXciN5`KySd(0Hn(P>ZQbM#{kJP_?T|G6 zot|C&CoXaC@7%YqZByU>&^>G~|NXOw^!{uM<NN!s^u%s0|8wl&{Q2r@?^@Tr-|%nq z&Er?DCU0I=zxz-2>mT1k6JNjn;r~M7@9y@ulb*HRTNrddfb-t$FYn8LZhSbw>u|^Z zmnXyJwB{OzG^KC!ZM~sZCR(i0%Uhh=_^CbF$!pV+#K^-fTs1+TzR8{H@Yz!Tq`%D1 z`&n`0%ayU-(rG2<EmB+$_c*JGWLX3jC2_sges;lgrXKTxW4q1PcvyyTZT-CVzAEG8 z&SKA_c?EY|#F;1Dm-uvg@vJhp(%qH^N*0}1J0raG>SLh;)5Y}|YeEn5KkvBq@77P* zm>oVJp0=K5k=OX~@JV`osdm=?Sar$U26raCp5o9oTX@~7Pto-U{<UNa?O!imvs&v~ zRrTWJgD)p#{Pg)4$tt@qVAAsK{}L40X6qMDFuU$1_}6)9al6-*ByY$6orM=>yq<h? zy4V*+FO3(xrT=eb#q{3voNpguRlkDe`_-A&Ay)Y-LSDbRBlYpp!_}L<toy6YD*LZc zalikJ(%y;jUn1YN>!13g9Bmv~wBtFS!R=zJQzC2m?7NOx%$d=<EO1E%%OX|5<!!g; zNIQIgf2klg*_B1PY=Mer*$I)`C%+b5w%^BOd*@qF*mH(;_ibK%pQZVsYEkL~+vvvc zb9n-kH!!8EMX||kDJ@x;e77Wl|Gsv^mX%pQ_HEpLY)Nh@SAzd?hHq;pC#^Zmuv|kt z_)D+X#?{^o&#s>nTW!qBv1)qo&Kbcs9WC5UR_VrGP(7_Zf$zIULB$P8)AUxRm%gVq zJrzCi=fjilOHcf~5HeL&dsg{v!+SeLc>H2aL}p9$G}f0M4$^fk*uGl-)>Ws+SGRC( zwcc-GyzEC9|D06q3)!o)nOdLLhn{wkT;RI<?V9%+WAi5Oo!FjHDD?9DfAi*Q$?jB9 z16y_rldsQAmvTKR(AHfk!};;R#&@5BSc?`-oyPS<MSHF2iOjHDS`%*SHD`I{w4d2} zDX{TOc|fWDwlMu)d8~bfWel=%g1w?1;iXLN$7k70&wFEd_KvcF(e?fx;RnjnH9DH| zRyuq;d;R@M>%#{RZMD-nq-Yzs{!x6~!?*_y{RRm|b64JdBy!-LA7jZA%~yY9pKLkc z+BuIsCUtegY_YHhiJfZ>Y*>5Xve0zq%i2CNi@85VbTj>Kcy~qqdR%m4z?%2+m8`#F z8Ve4{O+3LE5c07vIA8nH<gM%fCqCz_4cu@sL^LyF@(cO;pKpG&b;d4g7OK3)VP|sJ zB|!7y%O=rf+N|GatrJ~iF1z}c?}QFLftbvy#Sio@?@9jg{`|i*g?ShKxvnk!eSTBW zuF!>hLQQH8svWiEFj*>ej&YZ;?fk1N;wLRl$c+gy`Cyee%jG4*_oF{wv#j^tWKi|Q zxSern5SQ=;|A@uKDZS?=np(M=Sh-I*7nynMgZaOA>*Ly%S4{B}J!8UJbM*Oo@tPd% z=@m^bC)IYfMm)~ap0+J_o2it_sn-2U7mXem8rbKj<(mYX%+i!PE7F_R#U#h~^j2>4 z+}xgD%hGwR<Y!EN!Sui<KK_ARbmnX+S0kw}>s+oS9SgUZ!EtNH-M2YE#OwVlBQA+0 z>`j?7uS6~G?yZ`Fm6d<C^2Unh<Xf^-tasyhy!A;H<K4{7mCnq1x6JSFUg>(}-jvSU zZv;KM`-@gLW>!e8^UO@<agXD9GF{~qL&Z)3uJoSw>(1UklDaNT>iK?)>|;*dE+PpL zE|)kTO<sMxR^-Hri02^(emQBmd9HTRYhV;!Ct<qq_yx||FTP==#rqi^t0spuCiAV7 zS$%5$OSXWmq3gU16Z?dvulDa_JF`gJ$DG4z_9nxxUB<~)I;Cl+S+sqVW4inHXwP4e zqc^!?-AfIl*`elMpDY>A=D+j}dYm7&t?@;+e{adlCed@^5*bTQWJjl^1@Hc&W_-|O zU0+6=+gIO;W!{P^UXs&yeR^;#dDr^v86{5PsgY&zmgT!X#lDDS)A`iE!j@ZmxK+H3 z?b<ExC52r}j#saHI`z-SB{sI&Uu&-EbA~<0z0dwgY#GC@uO^)u1!<jc@-kLBgx!$4 zs~c5c_kMP6PFjfAMwe>qJ-_pA9}j;ZeY1CyjQkuQ|J`}6liz!Vs#T@?ZtYx^zsl_E zid7~{6Ox!}BXW}-eevK@dv>n(>as_xq?tcQN4(njdB(ZlUM?>eOkEbUZtF6UTaSGC zT6KRs{_FR|E^t%GqKTY)ro8xh;Po~x4Y_O)eQkw<ULW~yaIM*Dnx(WlJLt1gP;<9x z`La!?4u}iQUGZh|+vIty3^$YVq@4FXJ9on-KVpK?Zl9U!CiG-lB(8ktb7ATvTj^ul zwwx>|cK&?h{x_NXp^|4_U1GPH^nx{nHSxO4+Rz}oT}!7-o+I*jR>7Tsf`k(1Uk%Gu zPfgzC-E?l+gxV`RZ$7x)-NsN_*rMOGlf7}Ld*jdc2NK2NA~s%DyMDdfb6PL?7{|LH zN&a7(?BBgvaBiVP?Gn~=Q+k%J{r=Uw__E{jhPzt|Zkara{3V^b(|6PAYx=uZG<}+^ zZ~US7qPS-{chC&M*}<m2U-tTSW|XvLd}-B)-FS7%9`Aei%#6EyGLOYvezf?`i-}na z-pJR4Gsk5&onyZDL4xhx7SSJP!Wt&ty|bZardm~u>!L;X76s-9zFHgQ^!e1Z$4sZV zzTD(8;8*&*tNfJO*X>&S?ru+R;5;G16z^RcvrOAy<s-MqcrDp|J0Fxw&$-rX&>!Y9 z$9-{af~U~FjOZzX;mUtXZ!MhFGdY7bYqi5Im8EUjdC?J#r5;gRd2gm3d(+l=b~0by z>V(8g#$~ak#jETTJS81#49^uB%RE+_5zhZ&MNj@DRkiw8Gvqo=%Y8G>nVNh`ZBIS> zee;EXD;}o4*K7E_`FPL`<}!x<6uuja%NYFA`d-~S-n;4FeE-f<2YO8O*FRgNds$Yr zbXm&xGbW2yH$6PFYR99CoCOnG-aaZVIw<ZHwdVC1j<=tjSZXu{fBirCc%#SU<K7uJ z)vi2Ur(Ur7ynn;gNwHI}y5vsK(rA9N_RDn*$v^9o7;Jwn_{=C*Xa_2O7jN5@zIq;S zcInGfyB!QMYl~xbqe|AEnp;wk%*va&jdgC-Q^8j6yWBR9<}|41p3QsplPMzmL(FvE z))f<EDqGjdg(~VC<yyGg>1+E8|F5%VEs{zwo3rf4jDVS?y20;OT$XU3`SL+f>aC1q zZ=-W7%(hiYgh}7#I&9F>npmONaN%K0`Hpr)tD}o`wOtNO5AN9Z<#?HX=8P7@sC6>` zlQutokUNY2UPjuol(Wt!XSGf;ZGZAN()ib>w3yhtJYO=}BIE>xmztV7U(a^2{^fT5 z|L(U8a_80=y;&KhxvA{B#VdX0xp}M?M3?tZco!g6%=|%Q@iOxwLDLuO@@E{;;}g9Z ztM+o!s;LrTp^~M_2Mczm%<0Wq{`Ll&JKN=XiQ-%~?|z9r->R1tdU%oQ-aO7PG7B8k ze?+d_$n<jC+)3|ES>-wePGsHw%=IPg`>T!Xb_#9rDd}}q{IfD(mHvqkp~@aNp^F|0 zv!)9k{}9$Ix3xIN_<>K?MdmWrqHR;BaV@#-mCbr7f9YDL$OrFY&O9jgYsi$`VQAFK zb4zY(XvvkZk}q*H8&7`7`<Yv#%Jy;{PY{oxpYnoVe@fj-^?zr6dT}e?>f0tsiTKAd zyJf4_PFXvN&${8SO=d%<>86v;Rj>E_lbXGBjqH`@3vRVv^!_w`&H-OP#x+_g(cgXk zEA`7HBu-=7rqUMjc7Mgx8E>_IvDR@OoXnh(7?yoQ^<k6F&t|q>?LE3hWpAwX%c?#L z{+?-3(XZ8=7JS#Re)+^RQ!lRfwU%KmNjsT%ck6GBxLHDhix=i@yKXHsH^cnHR%zCn zWbF-i!x{}%vFwhR^wqIYb#-`v{DxD@?;LnLZ@~fSZA|%I6<oFcJ8p(D?ki*YFt?a_ z+ikC@%RF5gB|E<{ZO&yqw@q}%jcdRD2A%u;bkCj}MIzeS8{<!1)VIjmXVLZYZ5a0> zW!3}IE3clmIxs(H+J{5|je;)uqYcK7c{y0E%-E89mEPaDxiDpKqWW^%+h>CJexG{a z;L3OERze4P&gG`0z5N!=>a@{fmHiLL;}t8cSfuU+&F#2VudQ;vih<$$Z~039A5~`d z3G!APKd#)J@!_@($F{SM2l~zgu78o(Z}ebhN$}2H8<{Habvt`+{<dYE_Ziz8Y|Djq z=y8?ADsgN(?0EF!M<&aiUDB-aJ@a<>OxC|!d2X@a^R1Sa1v8f$Y*5KIU-Mx`;o{_f zr-EbU4W>@hwEkeR-RNOvq;_I!dq<_;gbz;Y4BX}!H+mQETKezK7o!bZHZsk8#eZ|@ zX`!!Or=RRPYSVhQRIh1;zxPJF)a%C`kDfN^opYz~&NK1ryZ3Lq&FOQp-1+aaDSHku z9!Oo>mJ%#*$wEM3F7tmA_I!2C&F4;^_&b-`;J)|sSmp_()ox`Q_*GA`T2{|5IH)&S zWxCK+-NpPfUQSf&c(m<)jLtg!E@drk9(R$p#dVIU=4@4thVP4>^e&!JZu#k0VEvbk z&(CUzzs&z@nfcbVXwG`!3!0Lb3+}&aTqyMQzd`uI$x_B!-M83>yVg#BHaT|!t42)* ze^I#{$6j+L#ns9JpM2#wa`R4Ixw)vgxOC-<w>!CHr!0w4{JwaC_LGk`AD+%t@7TT2 z>~&_&ik4rAavKA`EDc)b6hCdr9L1-GGx=}Xv(2|V%|3Jf6jo=|6K9_32;7>#`a<QT zDe5VX@0#Q0Tv@6eV)-If==%2?dNTv$PYBy6S?OqQd7-&d|GD7$?tOu>AN#JHi{0Ge zxhPnrmE(%++DMiymHn$Yu57GM5q!HS_Nw5D$*X)<2!A^x<j6l=L@A(J^`iWu*F{rz ze)cSF@(tR)EmiPr&5r%H!R@a3_pO7kcYJ#@dF6#<)t6olX;1B5$b`gmzPP#5e17=< zkM~#9zUjQWeTug5Tz;L;Ry;c2&+<lOYk!!dZuVi}WX5~p-xyW%o2&NRKg4xMBT#3< zt*{5_(T#fh8<<S=H!|_x;@Xp@z2RcmgT|mu$Er0V8&4)r5}lzmQFO=su!P>V2aG$v zG3DRns(Bp&(k9zEkGUt`?=HK~1P!qnlQJY{%zF{@V6w~a2Hif^vKv|n1xc*urk>zh zvw7;rpQ+J{8ZzZS^s3}OQIJ}4BYBOM)P;znTx;HVT-(hO{M}Pz#^X{Zi`&<#@&o@Z z-+%1b|C%fHb9zq|SN-8(WwjB}X9&B=wPxGYg+ErWWolCjd*IW#CY}42ulO%rqjta3 z+7m>#F@LvKG|16r{%#xmfScW*Kz_=JUmXuJgBRR=@7d_bZ=JAd?E#bMM#pH$oBX%5 z5+)RHGuwLT#=QjV4HqvS5Z}gh{}xxy*01UZ%Yymq<k#3;IN>OCYss@GDO=8)%+<BH zyhUe5_Nh-rJ6{SN47wc6y4t64xy{0c^c>cE8$~P5U*l(upTQI@!%&m^y3FzOx=yZ$ z7LFax1=BUT&!4dsiq-vbN#sY^q7;YgJ5pG8scvF2&Sibpv$#B8YK4Q!jhP3cVi)Kr z-k*{8^-T*O*E^3dG6}QS9^l``^!V1~t<eQLT&_hnb?2rAtvCMbc424vq5~D3N$T8w zn?+|RUu4+3Ws}DfquY^tuFbGht+>V6xOE%T`I}s8Hj7rA3`^L%_CWSFCi&Z3HA%12 zo6atC2zKXUn5DWh&%eti{kL>ezi*?jkSa^rji_7hzEeAxgjKm1__mj7ac@|AAahd9 zjYVfYr_IjWsQRwvV@Tltr`ds7n~n);y8ZunaYtDFmeh?8^e(rvX8YV1&M`^lT0cEQ zk@4Py7mCSO9acu_PA|w{oTqY8iS5h;jkM!uqfKwcXL{b;qjw{TtLCoLiLbe$9?$bm z@|Ac_k}cZ!_Q0bJ&hNI%M#z?(u)2L;EXR;_U!Q=-@f#`Z$Gj)W7EO8^&Ji|~X}dc| z%G$RFx)a-LGJo&68=Bbp;_a-v=e^2ucf9}D_-yfREsfc#w@x$6`rC5$<2->=(_c>W z-od4_VcD4*&Z>(Jh<JJ)esSQ`%%smMr}$^+KXi_6a%|_{Qq3urx-8Ei^-$(EN6GJN zg`Tr(dq26+SUBJ5ZujG7Ve)qczOVfrc_AvhSXpSX{+3_$E>pa&W*40e`C9yWThUVU zwgX!F2M<I=M^4#3i|MwE!UETb>s)35vTwWcS01SQHZ90M<cyd`aLR5?gWXf?w%v<p z)R|WB;muW{SN#?4eH(tiP2l`<rf)5?=#A}V8!}{63%e|n(!HKAJX5cd+i)oCL7&U% zxOAnblau7tkH;jWdUIW0ld{WUrrvDd#&;Vv#V+I=IK^;Zt+1|UcETzbz6I_{>^bwc zw&$%p5N6GDL+Rn!ceUAUUl<p=&SIFQV$qoB`D*tJnN6Fm&P{uf#n7#)$+F37kwC-M z%dB#Ce&1s{-#H%8>P%|5E@T^jz**|rVOHB^48n%%Wun&4{WwGI6i=+8V6UXstJ2U* z8&0<!mb$G~;OiGNn<dJAVLMma%uOvumY*M82)ix0`{{|^mA`vq*Q|-MTWHwrx}9Uo z^0rOO>kgZQX<eLgcIE3mIXjtIf_-1hEp2&ke^+Y#*XG&whST>8CiK_Lbt&1IuvYVf z)1uk~Zk^Mn$>;rR^OWr3*d6(Z@oh$K`x|Suo9dj?W*LdI`?C7DxI5?NZ;Sn~=4Djl zGbNK{DP4V$YP+Xds&%|I)SR>^@<78jq1kpzXS`jQZT&>|c4PS-W)XuJSs`^UF2<_E ze31#(8}#1DZ~D49_CUr~*+UYktRH@Cu{EpO#Ju?s-^;DwM7iNDliRYl8xK#G-C_G? z<K1pojW-i?w;hl0`(`rBxiP~>SS5kuHs3{uV|+fm)+v2&58O;V@BZ0Xu2H$Y{_XzD zmnJ=W$Yu93`C2r)%cH3l4_XTw8-!ikzZg`N-(2YsH%TMzz}xF(CsqsHWQ}pTeR*Yo zM$R+#mx3at{AV{kidyvN=*ee)r9-PN&5GBD<bQf*{(g)8H%HmkT@4qrtshUXTC`){ z!T^6gWv?rjPn~%0_wVv;w)JNgY2Hiw_TyMWYxTi3%jTZSnRs?#f%%JNM>W=*E^j|{ zCcoELdw2NR4DB_wK1ow%90-f3ozbl^uYF<4-$tkU8d)!&{Y!Ydd~&uw;*{{Jy2hny zo7;LQ>%!i06UP)kjWc_WE;P6+$Jc7P?Cm_!btn1)A_S^bJWnp;I(1^-d=<+h`erO2 zmnGhHnDbv<_1vGyM!$afPMh<>hGpXMTT_mo7P`r}>9E|*$WEUu|Es<~_kNn#=y?Ce znwTl2si!ASP26Q<^UAC0{3)^T6Q{m;);vk<azGNRuUFZ5$CFk3PwVa1{5t=Chgr;o zYlqG&@N7+}Jow&go|HsZ<2rBQij{Mc?mRzqQby)n=nJXNdHN#U*;%LNTqx@_Zjzm9 zy)gLi#3aka_fP#^w4LFU-tPUZWt-=lmeOZ_FHAa5x9kl$HRpo4>e-i5j|XtZNlo6l z@T^cePxKV)h2rUcH^g@e?@}%9D$En{n=jiM+_U^bfzxvDnD`qjJ);$Q&5FP4h*<eQ zs!33PGtqLPvFbVYvhsH=>!w+#zIjtPQ}~wlM&WG-qW%YPzxiY%Qq_8-^}xE#W#<C8 zb3&gr+s;;R$@4y^TGX|1Rm)}b=@XkTm0#C6@!r$us`MufUbB6+#ZJ3b%MPVI_shtC z*0T28+zSuSaK64}UF@XpaVK!Y!8@FLm5UF}J2&^j)|tZJV&1i^J3VK^^dj|=+Gj0$ zr&%wQPxrf_zEk*D<g=FCb8|1~&J;GgG0}3T{=NCDFR-h;6TXp^o%(h9jl-21Uj#ch zx7uc{&0oR#%}<W2R-e1I^!;SZg?Gwgm*gKXtVl?IzA(<#jc?ws>Io;WTJODaZ10)4 z&cv+LCi7ciHg0oS{;0_GoIY+{ruDMGP-NP)#SvNoL2I20=gz%pUn6|o<4^ZJnV+lO zU;f=(`R&Y+#mnc<e3OuVWE%TB+5Vm8HqY+8pHaO#`JFp&@%#KU?3WEU?VQm0ylL;% zjfbsei}Op)M9!&v(%O9MmBq&IHf28&58vUJcy{l@jOzW#=U&<RF|psi^FE*7;hfyX z_pf^Q8@tK*C%dEzgee5qr12YgZMZI{XCa|yWw?Rq=b84848a1`Im_3E@J_4$u>HXM zg(u$JYrOhqfpg@8>0V*aeskXJl5dDq|GL?uYCF$-Wlz5ou9JS;T;e*%L-b2ULf?GO zCVR<FMSt<8hxuNQ#3wzF7ynbJCTiOFI_1>Nqk^GRSmulS-McEU?a7rgOGT{i$C(17 zN9?MBY&E48+463?f_G}zivIc{yZ?A`|E)a+bM1cYZus)Nq|@n+wORekV<EL`m;SJQ zu>b3ckUfHHCLTCgk?_gWOGEiR*A+3oFk8LAQke&yD>?T%Ty4Hw*7@eZigb-jzZmrA z75_W<_v!h3<^S*U1kGFR?Uh&OF3sNVc`Gxa_;+nH^Vzww?ml@}tT%Igd;9L&T65>R zZxJ_dJkj2e&iwFg@Me~qC&f5lq|4rkYOGPZ7;NQmJ-Pp~y7uPUf-F^Q7pIeceF2*u zD@{q;AGqPt)7d{>bfv1hxfDu<wNK(RaGv>C*+={4O98Iwj{-Yi@!N=&>7DlS4BE8V zXUZ$T;~e~J|8Y0}x}3iFy0=}|;eO36G1sQ*&o<fP9{$j!^A*>bX)3?lm13-(t)HNs z+8)pJz+%}ZOWF6<9^n(TpDuXgwJ;@|tCfFg|I`&W3!Eptnc#Q3ku&l9IvuaF)WA*J z-JdphtXng6*|&<vx2LbYa)bY?m+#fuiH9e~rc8OGv^b^P^i+ucwYU_;?n9Gf>!!SM z5qQczG2T|J=4Wod?v&3>d(;9is2vpV{KgoqlDT+8=o9vK277lqfwmy;s{LD??(aFp zCYJY}d)5Axd)pVD{QhA77TF5LT=ulqLz50jH3*&7UjFB`<x~Hf>vR21M0CzM|Da`i zW$TCZ>q_U?3&OJAX%*yrN;g`2<(9#f|4doR^FCbf;mZE-|C8y#j-Y>)I$}rO$WNKG z{1g9-qtf~}c;p$lAGy5lX6)F%$y~g`;^zA7l@4+nFNHNe*&oSa#c}CLd4G1^N)<6Z zkL50&k4^-eOv|~LTzldn)3dHK+^Ks{R12}@if{RK`kh01=Y*%aq8{R0@siD7tT-Y> z948#rxWc~aj^hCbmcsYa-!hFpxGfTA5S~3*bcW)@&;w#Zs~dP1zyC17bQ^PBbLGE< zy0eNVT~YH`@1l61=1mCqCWR)2?baL;K3jP1D0=3$uGuJCaq8Q&Q{GDY-ZiQT>swxX zPh7v4<HUBoq?%tG&MJ+*lTH*iCG1jBZJ3kxTj}7V4bFPo|2iIgrK5afgRDMBTo22H z(y$Qq`fCSsn`&O`9^ChGGv7qfHPK4PIh%x4HMLK8YNTA%4mvmKz^}ulGfzC7$zA5U zBkY&3@H&PkeA7QSJvgev`9{<_;$NL_iQa?lr?~e-e-{<z@e1ON7mSqWdXmeYEB;63 zo95aor->@8M!t&{bhB`)u4B%bs1o`+Y~s|gZ)+X$`2B18oF7X^bkE)980Y=X=!009 z+flWN=QlYe%s%{e@`-O}SZ@n1b@;QaTF=0J(j*75MFvY1x&wc#bv0wxKE71sz~#<! z%n^TQdN#2x+s+l{71ZwVZo^;JgWW>m9NW$X>fS4~UKM@2#aXqlNmkD@aI=e_vtsgz zsY0rZ)7&p`O=P@1U(jZDDr>dgqI&|B#>EHixW!Y7pEcD=>Yezp*XHdXN6FiY>T1=J z7QEJfIcMfu7q~9^+#ovX%IOJHHNF_7T=;lk%D0d!JO_O|v&>SaO%=0mv3TKjkgGGB zSGr>byNleJm<?ASHmxaUi)M*W58RNibn3i`+?A$QA@_q~o*k#=l}Ru*g+_|J`PR|2 zrZB{Yt&{1our71#q$`aR7U!@pYyF!uv2`2s^mf~M%ci8h*?8sQ#~9V@tJ2HVN;lRs zsb{H1RiEE?L0+TNzvzr+UBuyQf$}>V@)k(@CL3!-{ZH-Xj#lz)*PF0gwdR-4ht--> zXJ`qsRted%&j_wDkFVLw*So6I?W)V-tdCrGw?v%&QGbW|__DP+^VMFi%JDFFF5i-0 zw8ZXWsHWSoD{J)9<Nn^OIQ{;nh=u*VO`YG2KKMT7ot@DWe6eD;n$-JiE|1U7%GeVw z-0K{BQA(cUyZWI;Ms@|+c{jF|beCjp@f4~G(f+a``bFU}i7FBCs<1Raoxp$he?8DE zUHkE8bXJe4mbTTObouqNUkd{>8VbLp{tgX#baN$BcG1>`y)|h+Z=Mx+^+ID+<^Cg5 zZydv=Dx4-=axhB`%yY@ebI&kIbzgQ+>W)-Gx#uZ<CvDlMZEfGwlOIf8&y}q3WkukN zz~vW`d0OOD+u~l_7hHO5c}Wao{Q(s(e=m`_Q$q4I0yBcL>YbKeJChvoa|Mr)V(h`X zt{TTC+paA}HlK=_Z#y-<*<J4C_cGnfr7`gR|GV!lhTc39)*`Me5a00m>(ccLgGwA< zgk<hh;fr`E?irMH!f6i6Y5wK^CR)rAs49thaj|^ibxFm4ZmC!FG$ZpDE?MN%Su{zg zRVDRF`lC9J=||ajr~I4Ja#?6s#hrWGteHRGau1q&^X|gwJlDKj81KuTTUyrdogx|# zxaP4<<OVm%MOVMCP2c46YjNkI-&U$y?ybC0b2W3~amfu4lltNnR_Cy@#g-=A2zwA2 z-6&qOoiT1oM)}p*X6%QBT$%mL65_8#*Iv0LvGvEX?@M`^MQ?1I5-;iSM!~sg<Fizi zEhkERii_|0{dbzM$z4fk+l^c7%u}_G-rMr+p#$qSMbW$LH9DU0wM{vj=XxplF;ri; z<<2a+am9n<fd@O*{Jm@|vj5c4db@y=yMM(zsIzBa@W0Jf^K4yVx<zW3SYMm{AL|41 zXBp)tXxJwdeNz_Q&?;ovkY3Kq{>HUa#-TplLh9dg`|Dfyci3O#ZaDexMOjGjwH3?O z1iD8yPP;ovbjHLC`wch39;|cu-LPHAR=mRcqR|B_v!hJ1LPwcWJChzaMs7T?aQE_v z2SxUqm|o|y?n!*juC`50+rV?tnTB~T`V7mw|9s6gl-t6=p69!Tzantalmo@pOBo)x z+G{iF|LkKp^Er<<LSdq4#;0Sv86V9gC1z(xM!c()++cK(n<b`tO?}<RQwR16xiZTY zJ{NJ1v2>F$JSrI8C)j>iSx=_^f5C*{yT1f8>J@L>S9ZN9VP-VFdw*@4j{8Gdb>H_N zo-dcXAYQm|a<S<yrB)}ov$YqFKi>U(!g6JSPp)zte~p+F@4G3aqy>v{%$>ga!p}(} zTs!T*JGM{W)w5pM+5Y6-3%!%B#GFVI+2_TVshQe%VO~tDoVKT`6KFsxCuBNDZLQC< z)_s~cTg$gi*j_AO;vBSIP4!Fi$-IicswG!)E16#KPYU5ZvE$hp_O~vjrVHAi$Gw>H zL(e8fitDCB+VjS4*Yy*Yc>S1tf5mq1MeVNgEBYj+{YsMiIP1mhtAhF7e>M9X^7>yn z<lQy>d{_I|h9wiEzTUJ^S{A)(KL>lx!{%S_uGIgOd(&>jzkmM)EzKw0x8ic0Y|CP% zaairOVk$j6FOubpv8N)_*8RHO4SEh=r#9}JQN2*#lj~*t#Hw<4F~w7>WM8`OyxnTP z|M6GmyK`r<SFKRtwLP)r4!bSqRcHQN`!D~luY3K^|K5C^pND6ExEvSWcu4$xyvG*# z8(FVA*86X*e#p8<X1X{R+n#I&xvioV$2T5O-^R4p_av9jgcDpmw?V@*Gxm9JV&eBm zVU^o1T5&ckA$ierrs!N&DKESBPjA_@3l2$Kcl<C%^F#2WRL0M8+6IA2+6HIC5~i&^ zAi9m|bPj7<F6+E4q7}Ep5>~H0;PgJaK~yNRu|1b{-qxuzEe)<^Z)~V#-m7e}P&e?v z7M?Q`mdO8ZoRemK;IYbYm4jBn-#FKosBrzbu#89N{PlmHb33^tUY3|$$j?4p|Lyvh z=gNQM_qV?}bL_n(&#m1)jBc;>{)DhSslDBpfB4?)dh_@L2e!&?I`(Zji~cOG9}JtF zC5{`bY+_!X_<Z%}3HO%7*luOgR8Kv5#p_=`*B7R83&Rf;DO{D8zD;LcKf_4bY$nre z<??4P!J4TYTRcQA>Af&`D<qT0C8O$j)M43ezA1;#9jSD5n%QLT6Padj_?3N0ZPBr; z>|0NcUbW9=kkp?Td%&dl-h`RkjCW6)#dKJZsq#+QgSQ);?@bI4KRA6EliF-&g>bJF zb~!%lCxW*lKTPwQRJ*!knwIuw7q9AfAqu*aVgqMY@6yspu65(d={RtCPeG*R=DB-! zPAv)el&WF9$9}t!XG)p|v(ovtPg_syleM0jH!*UdLz?%Wxiu3{A1b!?j@LM>q~FR^ zsd~xbn)elk2fZ9kdortQdcsA1C^;#_-{PwgE<3S(8?$|j?5D|Z5A<#L?{{}6L+00W zg?p|=X(y&G^~{*0@@Jxnq37h=eT6q`%cHY(lbj~2ojetFGs!99Sni}F(z7Nk%M_YC z!$e}biJIr+=*tt9WnOx6P2%#A@1JYFm!GS=|9RW&*Bj1W{{H*7?f&O=mgg(aS)M=L z^O@c9ddG5kZl#zuPDY)HkMCsFXZCL~$-KAcsML~q9M$E<0l{m3FW+}4o#*?n<3VgJ zuYDTN7QL)qIXN@sS1s>{P3&(>59S6hSX%k!!g|MviI(%!IR0hbI<+d)Z%eSjgbe-< zT`uufH(pgINZN#da14In{PC{MlNnzRbY5^?_WN;pLR-uw=dcL=k`}p5_p0;)<V|vS z&wnOp8OX@rn9KWevs{Ji3&r<a{w;VAz3f2wA(o=ERS)<Via%tN{%dsbv#<LP-twJq zy31QW7p>B0n0S_b$-XKl>pjwZcU3LYs^SdtqZToo=l)w-D_=eDTfz#y6B8>BdR~^j z$KAYaJHNb;Vxnx(rv;nu@48(6^Zp0L#W&Wb9W*^y{__v>N9p~`**{PJ`M7p={!96N z#c3NW4|V%Kh>r7SGGB1-Nafl&8XJyXk4ZQZ<rf^S@I1UIVQx{)?>Tzw9vZs$Xs@vs z``>Yc&$7Oh|MqKErSf^*Pv0;mD?BWGpObi^T5I(u-u1~vevh9g?cc&)a5kQu`Et}` zu^E#ySR-_vPdMLJxw!M-j%y+x<^|hdcy?EHfxBN+!rrYtD{7Z9-Ru44et!aMT^QFI z&n@y68M!&8o~IW`Oq?wCV`9v|xmNGhUUapqZ}2=<+1`7D`G#QptK&B&&f|W(`R@;J z23PJcCwF?T>%9AAp5cZ={zZ)sU4A!gz7{7EV<@^JtxK}EQS1DUMaS5`emMJ$X^;Q4 z`k)JM&KfSbTm9~UZP7}d35TyekIwwtQxUuTqMYCzqrGom8;g8c7HMyA{MHN>mqy>B z%6AiY^zF_|y!~VmgOAkyvVaF!X(y(}O)s*U;oCR6s`K4H#T&U*GqRUwp3z!4A$YlV z_s>hUtuN~zJ}bGiUph1S%yh?sUHz|Yr`~l6JD0Y7!rcZn7M=#p&N4>sr<aVkiJlQq zd?R}E`BsY$tn9XWJ5sd{Oi5umqs~`xU_Zb6o7_25o_Z#=B`lkMup#X9k&B8eW^m1L zm2uy7kmq4inMj!U>icQ;|8qug2$zJFZNJH@v#rcy!_{pEmao05Z;_%~aO&3Prs6(E zi~QXE>Bc$yDdv-74L2^`b2MgZi=*J(w5Sg0vnm<C5)MQ+=zKaTZFp{Sok_J<2&2RW zz5N`EuNii(nGo#9$eaAg)7moe(z}i63;QpMJ56?<)mrT`?@4ZUg31@3Rkn&5A%+z? z8zkz=IWl!x1r}>^X4<qC%t#b*;#sUxQ5jjar~2&NUwOx`KPy@KMS?;9s36OP)BDnx z;+T0jcGPd>6c3QCOJp><|2=|9>UNc>xwsJbgzYCzdK}1`|1~Rq+c_N>@xauG5BKU{ z+BEH!x%A|!cbwkK?Bu_@9bJ--G9^Dv;dt(Hu6hlJM(fv&%#&EkeYsQS?l$KB;(n@8 z;OT}3MSo_W(=O1gjdK*a>|H84`R56y;*0A9Zm3x}vnp))AsfT(Bf=~qk|@e-%Hp-w zF|*P8^Mn|oP1QjlURq+OevjCtX&D?>+K)|ZeWNDQsQM<}=|rBB;HKFDEP4s-P7jn! zch~yN(7q(d^!V*o#UJ~OUpYJp<Jfn;+hy;=EJf)^j<2Qm;qMIV7I4<+oYOurZ?Qtk z?^_(b{m<hbS+EEmU)XV&sZeIpWI=}#;d$W?D)sp^K3qvnT&aC&xoAb#CjRozSLU*2 zy{O>0>C!Sm@2z5ruwc{b*Z;pYG-XWapUS7{@Ok;42~02IH#u`9WUc>Da{21<hG+ge z1;3<~l`!Tk(EQx8ZesD54Y@njORCGP7~e#_<J>#3@{ri`<-!irPu>*Xrv1I8&gyfE zZpJyAy}aV{Hl*%UFL8awd3#Q^le>}sjcs>?cZHvO+HyDNq|L&!-%rNB5_~Rw;6t0< z<l-Y6ns+W|kF6E<IP6<1;kf;zW$BIIPiuZK_IL-01eP3RHoCaH!PO(;ZYNu9(K(4V zy7nFnR=(%vZHO$gd&jU%!MxQj?p)^qvC}_yFyH7p!@tdnpW|=Soc$5v$(h3Q_C<D1 z*pR$)`Lfiw2V8=u)+9#X*z-rZPUE#)^&z(+{}<cN2%BxT{oG>bbgq=)_PlB*cVqt> zop&z(Zg|M~yY3z5-@s>_)^n?!^i$_;IK5N-OVl&Y-Seue78}?kniu=OSbN5JTHeL| zF590geW@*4CwznbY0V_YH_kgXzbF^=iERr$r!INm+p}dCYG-P$Nv(RunOaviX~WW; z%ir%?H2XkR(fQ8ls@$)_x<5abVD_*7CSauV_Mu}Yzx{))?61|V*08RNEb(lKFpped zSKfNy=!*)Dbk}MA^1?x$PCwG$YyT~Ho~AXu*k;nbID_-=-tCy%7BcH?p@pu<*}X|d z@w3bH&+Lse`d)O>Cd^wiCrW;1b!Eys-Kt{6#g}J(@H#0Mr!h1CQ`+9`<(K33TCSKn ziMje@3jg~nv#SrLy!$$7=XCF9+gmO#pWSTy<kIVEfmw-j9`mWa^R1Ttu4Z#;?@75Y zYWJROX4v^ooSC&m=k?2oTfQ3^ey*C+!(b)zD`G|Tj4%HG-=+&I?t8QMUFgo%_}@P_ zwMN%H%T|2X^EiZIhuOb3oIjl(&S<jlEdDN2bjQ;@VaK<BG7_8I^!jug_}kKLa=82p zf33Bx>`s~&Bc$;8>7!RX@gnm|Ui0ld!LUc)W@S}wTV%r@54}x%`_;tNjSfh1Jd~FX z7c73`zx0Guy@NdOgYx8+|99T&-Z^Vq-e1vm+V|D2{4IZy;^eD0>GZtAH)qB0oSfS4 z_d|U?*Zmc<GxGWh4c<N6vs{F!g(*RGiS$k8qUA4N{NC5j5Mp%OdD<yY{+{ao=a#2? zGyC@ysu@U0#qGP<ee=z^$zr`e(;9OA6-8Uiov^o0H(dAr*M(N=Ul$Z)i!M)5<cs?e z@bCfa7b~ax^Jh9)-F>;o_xMk?8RF;6Pnf;sc;IWzy-_@^k(b@}%qE7)mO0<%vgEi# zoEKT~ZS#R2dj*}gF}6KetH-_ZYO12G57$HgeHW%|p7XXb(e-gIm*QK6b_e5&E*$rM za3!|)7c2c|c-w0C?SM|j_Z>AV%^Uw!&#eDhz}6<s8*MR5QMw}Jz={*>f2#yOOuX>k zr@!3BUdJ<^e^&GMCzB@1zxwgE)>M0U;<p8n=UXp4d#)z-=%lC6rZ!iPemkcJw@(S% ztz@*&oc?7(@HOUi=lYBOCOS*nB^669X**?nFXrGre#ccOC6?vk^SJ37!rAU{)!Hl# zs9e1LhVpA&j>vq+52sZ6m_D64qTRJd{^8`W$}L|qj9dOH#jmZbJn`#roS~K8iA+ng zZ>;wITex>LaIRi-S}8o2=}t$5!k3eOa@f~bOUXSKV7I#SchYl@%#)uNes~~ttd&b~ z8uv{`{tsUZ4=|@BKWt$Cu|PlbK*5clNA<XS!$T@Ayxy@b`h(G_rt8nel6Iy%Tz9Tc zW9}b@Sr4Udwc1RKKe3?F^4RY4H!T)=U2?H|YVn^r-6Lnh?HO|w8E-$4t$C1K*v9fC z<kEMh=Z|?fPn>_u!zpN`?pAW#blHIoF`L?R&h<@h=xq^y!fGeXbYo72{D<u9#%a%% zu$G<l<gPL6YiM}ms$e}K{|3hoKMBWu(ry#%Z*u&|miYMDgZpWW?gl^0NJiVvGG=L^ zx6E!&E|uTD?NS!O|AudGc;vq~jj6jd4VIclGHX9s!g@``is8*Ru^aO2-VS^U0emMc zr5VK!aTFQ$D6F;H!8k){`j-heuQ7XH6qeZJb8anbv|QYTKz2qukw8bgY}*2xH;U?; zRwUSO7cJ0SqY$nuQm?RBe1_umFB4d=F`sw!Pw;4;Gr3{!t*`^PHZ-m2UZL>1o87JE zmSRKg!gd+&Uv>|oUu627`2M(o^F(|ui_gycGX$S7avWjF<d#1nQ{TXBV|S73gNjdw z$fi403l9If_R67(S<{OvI$Jwo@?#b^rNk3qEL^-lBYrrPr34=Q)-L|U;Tfy7M4Y<I zKH-m!``)|cbNrjY+W7aXT#RJc=}xBCkG620sA5rSdb3S%gL#j_??W6#=iCmo8Z^c5 zD0}SY-^j4+w5n}N<JSY5FA7V1im`kyeN8ZKf*m_!Si9V(C~o6b6Sh8NmMr8*$X`@@ zz)pVV#jsWx?_YTj*bAo|i=0>-X_xT)Fn5vZq=uN&ZxYN8aT~2Xd)I4&hu%xY?x!*= z+f?=_M9Z>Nq{}R3yqRfRVDU!Lebb7BcwYSz<uWW8-&cwq_+s&cX_G?Vj)ptU4uXoZ z97kAQe$6&Gu-chFve$u6aj_XwS<6MeiOh-)e5WjTZ#ew$sMFUahnd5j_;=1?ZS?J8 z)>rT?`qs3yMLcDh{~3m7t#Y5fELqQR-qqjNAuhr8LH~m4M)xBVB_`bDm?CDRUZbEb z!}NmNc1irXpUt^E`X>^evECMmyZ5iyl|!#ZuE>y^>33;G=Y}V090m&0zf1@}Vaf64 z>O<DZ#|j6oU2xu(>X`7JPv7I=l|Hlen;SEWR!S)ruVt5$|CQeTC5nFySM8mL+FlRB z7S-;%zTT4K$-<+qKkA=3Us<TuYd+stNLpx7`M$q3>*8CKFYPcC&i$hldHDL?KYi0* zdd|9hWxJ2?JO`o37rnM2Cl<uV$O^?6sb)`q>e8s)S;l?B;MR=*fv<PxZB03AvPn%U zQn<HzXPf$jA5w)8>nhfrFpL+=c(~f`X2%8dIa8&)pEc#5NPX#3!E|!P{5hZH5^c=I z_a0{!mO6jNHCfurWZv}dW0#9AR)pzE`JZz2mS6kh-SQdD*>(j<?`oH*O1nRC>f6&I zBgtiX?-akKTxW|-+^l~h2RNfTu1pf}oO=IXzsn?pj}sLqKKuB_K;XvqJ>mR+Ec$pF zV@|I*aZAe5dqe5HUF`SNrXO<XO9|6+^w4winDTJ_OqShm=f*zRC(`#rVak;-y(|ym zEe|rh7qU9{$+XH;a#?1XJ@GJnVl6v2@cX0NTPqaLy)>_j&2>F|{i+hXXTc}odGb!L z_V=t!?BM5mq4@RtN!7jGc?Uh)9447NHTZnL$h+iUj%A=iwfyoJ&ZS)+1Qi6fAM?H> zC>JQLIC-gR(MJR3eIa_RZ90dAlYbsQS<lj^)FLA)UUVh)gfP#(=!;=uG0|c%(TWzb z+!r0hUY+N+oHXkwzj;SZ%9|~rt17Z~f9*@y^V#{FWq-_xjt6&(7BS3x8h+uAGD`+) zipblLewi&3-Cq8gP@XpNOG@!-9a*8M-JwR8^(`uvb?!9dtXr0wcqe_oi=n$;A@k>s z-h(`miMAi^xL7wbW;b5F#*|&l%X01XQfK!Q7mq(l;k77U>g=v0K7Z=xl?oeb`}h~M zd@B%iE|OHYD`|OAn8>-f!mi|r+{U#<c9JY+ujEtM>{O=n$u`y;tTJjWX1K9p4!^8m zH_yC&o@xBDoJnQ=t6o~zsH}f8wduz}uY|>0nKb6#$gtKv9d@+zamJ=4A6ML!SbTf$ zp;-QkwdukMv4>gbSif35Ia2(C)NwACj&)gUzdF<&>bv)M?>qjlZq<zUzjBHGsGBB# z!?oIk%kIq?M!tK&JolbH__l)om+Nzp14?~cHD;GwSFdq+)qKwUK}$H(@-?jIBBOcC zo!<o(ZDM$Ka;o;-w9U02xE=_Iwrhl2UF+ZAS=r)Wn00_Tm-);N=R>-FCgD#WT1n?V z-*$^T;?ZsP2QMSvY>2<L_+wtdlRex8BDQ@>r#PiIuz&EH&Fm6$ebw5?mbqqqbIkwD z&dyKpoR)ec`z>S68JmRYw~RUGZI1Qtd-P&)^+BsQj9)6tD}Se)ICh3>+ug9o$M41V z?A^^3oy(uVY`my!&wZmzzLMk{u79>Jza@A>E&ra~&M3Q})Wmy-nwK4RNw#`v|LywX zd!P6$uUbENAMmS@`)01znfb-vnYD%1GF+cMS?tHO{Tj^s^wo6>BF{}c@MrV-zYh6} z?j9(#>{GeTH1nbqW5T@~Z`k)KF8|S(uXc+wW{cR5-mM2rvm3qtJq&%oUv!CS`x@4$ zzlP!l#uvE^W@PMdc$_)cR`A|b7k-_Occm{(%wT=7k?}%0^8?X+kC<}z9b}VJe7@<B z*iGgLz2y@Q=w&yakK*3)W3_HV)*{h_eOtetwN?>-f2-p(&(Hqvzltv}Uj6^X$tSiq zrS;_f<}Usk_smI#m8I(Vm6Zph&m0s#d6MOZ*)lng;}Nsp3;nw!^F)*7nZxPYwf7eP z{L~P`HLI-Y>~^m0{U3K`U8=k%%PMwa;lFhsu1M^^>$Z00^ndS`eK|X2-aX#sGir68 zDWpDr_{<?CrYil;9Z7Tb$M5AHubmkE@i}*SUtv*QcF$$z=XMura$k8r`@ZB|vYnQV z$uWO!{ocaqw`v}pKcxQacV(6Go%tto8e_iCR%gmO_DlT7876Mynj<?~w<_&+vQR0y zu~zrNQjXUv_f{%8Jo|mY=z+%z#Ud85f_K}$?somw;&9iv-D0~^@G`e`E^JN<BKg`2 z+@6GSOt@WiXJfVciC<R&6z42j>h$7+O431N_bGRI(-pVIaG2bED-dO~K=;a4|Cf2q z<sbe(5M$8W&02PuY0r}M#FZx;IJO*6v)rY%L))hArP>Au;ec+AD@vuQjk^|QE3J5v za>ps<&Y>fZv$~SzsvQq<+;BzYMfbDEKd)|n5@PirYKzL+9}L^M43wi@U;eYm#e_w- z$lrt|WupvxL{4VqmC38URZCj*eV1I@=&-uSEqTg2{XNnK?-+Hz|6;dS_<#KD|4Fq< zx1{HH+>2g4G2MO_*W8Ey8178AyLO{w$5yWDNlW#&hlwwHd8>MV)8V2o?Q>stZnxZ# z@}@lQfZWb&o`-KOO1v+eIrYvI&-|^=0w=FN(Y}!@R`jKduZ7C8&fjX4-=fuDMyHov zO)b*$vFly8VxH(G4~5zd@9masGxX-I^u5HJYW1YIsFH62-}OjE`SsnoE7djQ-{)7U z1a$Tb=otK+kx;&9?t!@M#@Zs?$x-R~GfY-<9WN|?Ag>#cXV&|aE%TsAP+jpfqfd*Z zw3jUP{JhNY?7KIL#p(wR?AdM;Z?l=}tNQ1=49ZvEo?TNui_`zF(j+H4<>}_^mm=3J z*%%ru`m-q3<H>4M#fj@~YH^=Tjy|U3dn~lq+bFg(^3f#;_VuSkt@)I<{$$*$spLQT zbg;{;c_z)tQYyy^HWns7ye73vYk7BFSYJ%z@~2(A4S$NATGpK^+2FBmhWr!JqRP5G zD+A8(2ldAo+Mihc`jJyywD6}H^J@c~Gd)jST`0j_eChJju8j))*KTf%x}!Y(xlm`Q zW8#6z!UsnVWdHM$+@U9KYZ;%s?##BvtT;BKXZ2@P*q_{Z!tCF(*TjbDXXEuwCO*$C z^XxuxSTZ$y5ijGL|9<%sv!dr41*dLv)~j?VQ%gMjMC-}qdlt<5w94gsqCzy+#T;kY z_ES>mYC#-dY2~YV6{#{}!h2h<c};wJ$$X2_l>47~p45aK<F@&Jlc$J_ar5Ri3m=DN zwyl3E=C-r0{lM4XYD|J6%Qj4_DK&X@HIU<s*mUQHKL?FDAOG4lN8`YTvRi-N&5aRK z(BD*$!kwZ}6QP*Ht2ph2X7~htSBbToGYV%riYX+pRo4C3VJxCH>BEogHM<^(<!+Bz zb!z9oZD;Mi%zP-IpuA6&`HJxzalu`!y%KuuwrUNJUl=yc*&t^jTXo_mht8n~MQ#e_ zht!V+3myB<)HTuM6{GTlrk4TpLUb!Qr4Fq;RQT@eSEKC_qJdue4$dCm`4lVaR-Dvu zdMTIKROh!X*3mS!`jMUYj9Yb&i*7I9wt9!qo5!UU9C|xjHFmO2ztiL`*W{h2c<Z#& z-|jy*f306>^WyNSs~_K(DC@0ivds%#aGm|Z+STuRk~b#(O#aNemg}8xIm5M2F$*Hn z&aYC^otQoGneVJs5C5H7^ypQo%<9mY*-w_#O`Lx9O#dE%Z%mef5AJrZv(es>aqEn_ zRna1bsrB+w-s)zq-V<&|<Y>>EpT0Tk{GvZ=n<T_9?b4gOy2$mZebA;Ty<VC0<Kk~6 zzUuzsO7}jky!!LrY3hl`-kSgET-`UTX=1Ozoj2MlZRfn7ea*MNUcKn_;e^TY*8{{F z;(xn{J=hff^1xdcZKinX6N^3Gn3NdQojak*-?5G(#K7RK-L>Pb2boe_{4yDLJMrIq zYn}ICy4lJ1e^$s$oUNELots5Z{JB%ZkD`n0Tl{--I_?NN)ose#-f)`r+X06eYm(=* zGyI&;+wgc{`<##5It^9xzHZ#P*oa}e(|ce0aJlK7EBQCH=bv-_z>}z5urlV;3&F}< z4j<X~JdB_6-v4Age$46jC&5;+mmCK#cdvE$>g>fnhhIA0D2MqTAOHP;Xbt}(z3Zh* zq}UTyY^$ze>WTWYFRw-5s+w}cP2<(GZywdM5Mz3>J1&#a^k`g&&bK~+h$-**8z;qc zEc~ePNM+*YqMq6h&y(*TS{AprEa!F8yg!+iJqK*xT|H1|`DXLG#=m#v#SfO|^vM`< zFLo+Fmdew=qw8k#$6{AL{s|jf++&XDRJ__UA@&HzBesq0>k}1sv`2Mh&tSd2jkSD} zKn?F^f$Ij`z5DW{-mg!4%;)sic;@HZj2n5`XDX}zwK-UKS-B~CnPF>(+z0D(7qXkS zt?WGJHz#9_jO)s6hnMmE+&s^fA$HycrnMWdJBOBult0iaGCCF3^dk9>r#!duMUC7! zm67XO5BW)@tgM!Lz!f<<XQTpyf;cA4l_7Jl~VUwwp^gE^{}l2z&0fKdQUduyFLQ zx2s&Ies51NGsAC|!rDs5lAM*v^<iHEb~#jhIU?$mb*lWvlrXzgu0JLh^ByeQdhy$$ z!jA%br~Tg-9;5qcRf5!YmW#%D1sQK9cOUBz?B(>ivUy*(h_d@D3G+pUSuT>syL}jc zu|0etzkO}rM&+n^%irz0mOTBNe^H2P#pUaD4<_-43cD2R^go+mWi@j}^s<V*ZI`4D zFFTNC-q=vfxaA_tB9nvRLT}k-y`R1%i}#hR)a?h00^dVW;a*eSE5ARjC||kwo+|{! zzUO1Vx6SHR?3RzuH;XwH{oH;sa5tyzlSNM!{bM>Tw!rLoK=7BBa-GHz^JY{DZ7MwD z6g1ztw0`x$XB%%?PZKff<a9Gplek#npgt?z?!4`3dp)Z@-Y>^;`0p-=_cM`-G11dp zw69I%`t=JRs~-h@-E3N<JGsjK)*AC;FVgQ%<esVe^k>tVH`n#Wje=uW$DA<aZkH(z zKhgYXH&>BOGq2^c?Gs*V`cLAnTr}}(UhmBBr!q~MYOYPb9Xj<vdC?`Ny>$zvZfG30 z-q!S8<rb&RRxyjb=%|tizO@ftca|}!*QPSwFkMsmebv7+Pt=z>OW)mesKTZ=<Midd z&)*7Lv}DCp|Jd2xTJbKaG4CXYW5?8mtsZCH`E8DsOaK4n+~!&SS0icHWR`Vi%dMDe z7QPfaBJ}Eon4lJ;@V3A23#B<%@NO~u-Z@Wbj;U<H|Mq=O8&0uXGV2CU606uHE_vYd zTGqH38R{F3M<uM^dcZQfk^36c=RZn}1vj+C9%L+<3u-(r4W6v~Ky%6Fc!LD5&4x24 zwLA~WIJ0t*;qtD!S(aB#o?Qva=9ytuZk@31x9SIp@7@U)Zp~<Ll?*>E{Fbq54ePJ9 zq6W^3d%p{~G>XPaGwxo~d(tYEqv($LwF9}ccLYzX(_R>U_KLpy-Y31~?dfl0dSXr< z&=!8nWTt+rKCIvz+kx{r3^7|6cgCx!M_Gxh%`g4mdHg?5sQo|l<<gtia<SVBh0Csd zmu~uEdw5l2zSZUf<!e~|c9|S-&2GGZLu^NqZo%1Y47IH$2i{lR<+vji+<gA)`qhlG z`y3dXuQ8Pf^c?J(bEU!hlvhIU)&o)5j8@za5Bx0J#PIIp*K^|4(G82YG3;<z*yp|I z%Fj72_jldizl>ArOTsPt@}!?OmtL=)d3C|`u(@&jqj~pv_+4{YZmoA=ZicwQQTZAs zZ<|_%>NUNwr59`b_X^K=G>zq4#YfgTrHh%u*R0LXI<K;Kqn_a1cQaXDac}tiu6w;@ z^s}dSm%R5Eq*rKOczupx&#hq24Ht`f4Kj3%y*6%N^HoS+F0^x6)ZJG#%U-bhRbT43 zI&n+yu0#8uyNA5Hz!_&W<FAW@`h{1@e;Sv@sWVrvS*pvwo3SzZ8mNQx?Dvei1Kg+c z4)ESkf3T{-@m|ARlLv9xjrtMXHJTUo9`x{jI_;L;>~>U%x9Wd`)rCnJ+Z&!8ZcvMU zv0E{raM4|+V^(YjqNH7Bdqv-0=3SG_qT{<oT4HOVPMz!GN)S@dT36~D<$L1jL!X?U z`IESRx<8uEZKN+z>#N6?-!#8#dSAwCZdU&vXMgup8og<MqO`1nS@+3}m7JE}COUmH zes)P(X>#MUXZ1h6v#42UEqZV}W!7t^sag?S!6NS_95Sz|eQeOr%YQ9V?oZwEj`|7g z74eHi6V$6O+qkvGOuQ_^Sh4WBD7S6zf|{AvjYCE4PqTNfsavxseeQRr)2k=6Z(@yC zH)u9f;`QjCvxs3&%lmHCJ(n2xBDiI?i|u%sFsIuf)GyvQXXUo;jBoDqbEiz^S?#s# zzs6pR&AV+Cjcq40f39g|7mMVsxb%YU*B+*`eB25Td6jmrW&h@K=jQB8jtR2!TpKq3 zjC#HZ)Za>euEW}LMk8l&tKB`*o~X8bUVpXu$%+o=EZ7+D-uuPsW2)%D_rp)v;>G#X z>f!vICl<2vso&z2;T1kno;xXDGNfVkJzJ0RmWcvOZWd3AXK=LNqk8Y}1cMz*xguY^ z)T{5#&M3OmX}wHhu@RG<P*sP_&oAAI=hF8`Ix#b+UwqA8wyJQ+syB^g>*qAiymoA< z;ZeTGCz@CFdo2EcT-WiLf1+}>1Ao;geo2pCbqQ-HGxfRtnef;%UT{Oj_PSZ|TF2xJ zdRN}r=q%Q1`{d=kg^d?y^={aaH=jTI#L`2@GGFBXZhazgd*hnT&+p3CmL0#@_Vcjd z)pG(rFQl#zYY)En+k5ZcW#RSaExZ2R*fELwsIKVycmLuH3k9$LSuY~^DSZ9KhTG+# zU%U#xo)GwQ<o$d_NA5H8Gs?4e&dF&ESN|pSAY;+r1Dn;=buY}UUC6Ndgr>@c<k>ox zj>#X1@!G=QF=JOp=Ytz2Rsmb~{@CmDB%5JJlJ0}zo?i^lw;kVjO+;34&goreBdg=B zbPudA(wiUNT6fxRzgW!VWJR`rM?LQenfR+6aAR^v_tOhCz9?7LE408gG9+vIr6)<v z%6D}vGQ2jOR=2+S>s8IZnEA7L6vE%E2)d}*$e7SNXUow^>#zS$7plI=dvMLkkk7N# zeSglbJFc_6%iQ<f)Y|+X6%(KDyu@g9rp|VURW2XzYttQ((qF5jAL;G<ovQU$Pp`|_ z)a!4~s?}Eo8&3)3-&m>kY=!%oRcbRAUn`!w$jRAsvFldFqpfYbq@G`1q@F7OyM)<& zZV~?v+0~8jPrdBA64N?oV;vuR>8Vbp?kAHtQ+9r>yu0(+i)#ndcK-f+F|}Is(<>F8 zt>KDAPi~oZ)+HB<7M-ZldKq-XdBsXGuYW7PX~p!#J>WW$=WJ~1eoQLg#m>%qi@3$4 zR}bHE_Ags@$0qaP9scrH?JWZPr-n2ybg~J~4we4Rx6^<3t%mcbY-845-}L8V&nio4 z^X|Qsmz3|BW&T|JTxb67KNqVm21?dCTuJ)({MC&YD;mx(>&d(GrtbB;*j<XUlWxB} z#Mn}KV96|(P|F|2IrnvTa^-&8z?vpn<5j=-)18M^tacB7a^0Bg+qvQVEj9}wxuY-M z)xKw$W4r0#vIEw0xf7zrxW38VW_Z8(Y(-(|)55hn$F4rzk@I**mi9);Y|BfhO8(zF zb1XOTG52}CcnOB>iRK&bM>QBeoRY9yM(9U#Zo}<sTqlffxn*vzPGgs;?|<CCs%h=2 z^Zy>|EWLM#ch1zWcPGZoEe+G-S~tV&-=xxM?Nw)leXZuUe(8_mO|j2%KeA23t*HNw z_?(T==Pb6&xxwW&wU}woG0r_<8`Rft6@PmDbLg_I-!~Mqc0c{Yw17iTSZgV_Sox0o zez(j`=S_dQ{R}7L?YWf?Y9o&~)t-@aNaT@QtNl8n?%vyN%6C>|Hc#2OWXHbHmJl0$ z#=Q&M*KC{j!Y<{M!T*@MYg*-RE~({`blSYzCUN3b_MHj`Y?pQ_na_UZ$Zd1)DXWr8 zcx*@6%XI6c1Bzi*E{Ef8JUR9~boCtW?Dy%)3-;z5S;|*iXfeOIpCxaqlTTjNE^*tV zSv$iu7IRPC(tRq*U0`!!jHZ+4ihyI1>r~%f_PVtz;=9qT*U4Lr?j`7FhfmqE)UF_k z_Y=1{*M$0Cw=>S|TEAMXK=(V7_NG;>l`_-Y>R8?}rBxhaHpsuwdgs{3kJcZ*%~&Uz zW5oI>`Sm6BJE!NeD2C4zD(cUyjC|H&Wmvy1^Wo+%zf#{fTy@!TZ_74utGW8Oxg%aP zGVr8{^4z`?A~(hK;O>Tei|Yqe*FTC{E#PFnZuerJ&2pPmim!_Nh@B;4w)I}Ys}<SJ za+8x!9_MR&9{GavVDGW-Vf)NVD%6y=+AjOeI^CD^=Cvs=bQoVwlj`ND%Gswo`-zqO zfuGNd7WJA3MjD>qo~zU5>iN4v)6zbbYr@pu*+p~yPV+PlEiRsRX4Ryn$E|zop0As8 z=j0>LZ5J2l_o|8LUhi7{ao1|08OILwJ&Q8x{v&(-==<(@-}W*Wn0;4tUOmg`qhJ5Q zBQi2GroCX;y6FV#eLV%wc}d)UB9n}k&RWTK%<b>##$!77?2f;de)y<WbJ7Z#lapTb zsJMJq(fYYZ=>J^(I~hXU2WM(=HaNde+jQ@3%Do?P*%RI6KZM_pSIPNUerN6jk#wFJ zwfeKCsPDB|x30sRwLHY|SHfDkB!-E;8(z$LT*|-U8n=7GTy^6I>#vDjUKx`3{0_$f z{n*b8o?_Q#u08rBD|+J_=dzmQ%Ut&+{|L}NQQ~p6S^vWl?mZ`dvaqdXZ9CR;@N5{f zxh+GKM0t^mt?^fd=w|g#md|$2)6~4|n%#Ih`B;K?aFD<FnTgK4-=cYWDj1lZukmqz zn^|}8eU#(o*A*{s7EgY<YyXPgx`$d)$96M?{#fA6$)mp6m(x6&caQPKx`f%U`FCXI zdM|Wa(G)BaBJZ&;^5S9rs(p;>DwxEN?TKTI(f#}N>ZhF5{9NZ|2UYCyuJm7CXZ!xl zcQ<9Nzcc-WbC+m>kcy^m!G&8Mu~80|4$*SbPuJfrzCZ8Jv4^YYecPIAa^uz~wW|V$ z{9~3sXR+TdS#bAnL1)qpr@fj-7#|vbH#$`?x9El1{E7$rr=M0@#<PBs@*Sy%(lrln zDcpGC$Hwzpi7!Xim~DT;*Sdp+!3VZT7fjv5^W$p7j$2LgMQ4*muIg49@JD6u^Uhm; zn(xi$xHHpU37LC6R(863rux{fZ{nAP4u95qam9M>uB#>=m5x7~6A`=5!d))P#N&rs z=eHlKo2=f?Rz2J~KQv|9;djmJl(#(9mi_)q{=*vHH^s(G?00wNivQhh8gZv6y!qPk z%kg*SD{L@-q|vS9z$+k8`q-TRTH0<w(S*gDS#vgu-I$$WUvS}8MsDB%$v5kJ|KI#6 zCHz5ZJO7V>yRkl&F5z;ImhuJ0DH|p3-MvL<+w}IC@2wRLCs&)kaZeIBB>sN(C!ZfY zBD1fUCHtqW-P4g%UdXsebLz%DnVZgRWwLPj`C;ACr$%kp*Jv#EkU7Aj(`V!~ZQAJ< zK0A6IT>53?r<ncJ$n5gRShs|%uw$I>Tg+=RmdvVTyY>9olU0!=pNf)?@p1*sIPbpc zOXB-Yyak8N9v{6r_4w7`p4F!dZyqb0y6XPlj{$c5^UYXi9K5-0MSY23mhc0&$Hp7w zvbYmMA9wX0D}2Us(Yzrwk}+Ym()IFJwW5wCy-6Rsnr}Zox3Zjj(QT3Da_fqX{}zT# z;|?|3wrNgdA-Cz_P<9iWiD$!>^445e{_tnbrv%Yz2I<3xFWy}IZxvs|QLa@C=fcY~ zSDf2EZ_0d;s<iW_*O;@{-j8X`*<yFzY3YydtTb6Yt)K7rKi<3l^X)k^*Ry1C@825n zIbe$P>902?t6pJE2rRyzs@j?{ckb37EdD0X(<~cxH?VI|`rNShyqv>Zzt7=s8D+Tp zt(V)LTYJRhx{<-<QhpnyTUmO0kE<O}`ks(rsBNVyl9qqz(CN+VuXC-DeW2aNCiH0M z)vSX7x8kc7ugX2Q;EZ7VO~W%G{aLH)0=oJwybtg#3NM+RBLDmE+G$^V^yTihu>MgH z>v})a_@aWWQe@k{(2n-Gng>d6y|!BW*L44*^=6_Gv#q%e?rN)Vif?@!rJ5bNN?3P- zTw|+gUI{x}%v$Z(wg2+&Je*LVdrhU%wU_nM##?sP>mMb$H=0_$J5~JW*ex0Fb*Bxb ziejqc_ue?RG-pv~j+oBBspo8N)_;9^QeGuLKx;GGRGmjwy8>5Koa;_<Ub|^)SJH+s z%dK5WE5dGuxo%u*Hgiw%I+lVh{C8#E^>zAu^7zdyR$zbqo=xS&n7e(8dM0Tf+pS|} z93T?@UL*CW%ZaY`38LJJ+I$DyHz$=aTHIQ{P2xmg4>K#b#nBnFx)y%Znzne4XXQov z|IYfX>r|o`#eOd@y%u_!@!x~*+vOja|6Fjuw&-Q%x9;?7tvhG6zEnJ;{KTbE=S=YP zseB6iCbhm|;W%lWT+lY>3d2p8x$A$wat{BeG{fp>`W#E&EeD*kxiy8^9&d=qiQ0E( z(r-&Wj)YsBXO{Y`3_iE^(DU2e3dd%tbyx-H^wwA8^l$pi8_v|QJAT%gw9FrN)nTGX zKT19Q6d5YA{Izc2oMN8?l{>#QF+Q1oP5ky5&-#P9yl>PS%I>b7z+JTTX2PZL%`2)H zdTtq1eOj~pT=kVFt*?6L{<LP3b7U#}xhqy=f4`vXikYvEpV|M~hEY67(R|xhojIqg zHQw@`e-xv>*jG=%;1Lhg`yM67d%1th4!Y;?25`om7Tqj(k?*AM$+}(tju}t9uPFZB z%YBbxzWT9U220N$hzeCpXL#{hedU2wI{F(*ziF`N75-)57JAEUps(*X?|r_>rp><b z-Kmax*Pa=@Og-Oc@$&JjWs`4u{pI{8z@lJ$F8`*6zmm>li>sGT>aX>>Hj!zz&|B8F zwXEkNqN64Kr+?a77c3bud6V%9<KJx@iT%IMUAo`(*^lQ3SN$Ts9G{Y>aR;~iNauU) z_n0S|?(2}lvn4e2MAhr<TzoT`?t56?Ua<LD!u=`PS9h+`)$O13Y{}=S%{>~|dXn?k z@5&P}+ZwKT_#v~UupRIGTmP9&dH&pqYG~7b>rhnoAk6Y6!}6z7zU|U#xhDTUAnVYt z;!Ao7`HS=!&z;`Me7G);|3T3+#@$K$4O`wA-kUz#dDER|-|sN0-{XDbvxWahnAYJ3 z0ivH|xtl{zc(SYdi|6?3<;`R|yYf}LS-8ByBAtcn-<mbAQ_&JqSS7Z~<Fn+QL@#U3 zQu%vwekH1mQFpC9*Pq?8@6MIyh2bI&lC!o5KXj__Kep3!|K<Gfyy<U`&tYZUc<J%G z@Yb5^Rg0!<wtF=FpHXXxJ<}8^we|fe+3Vfxi&U0IYM$?8I$6Ik#%JpX)e}D2ljUMt z?YBSRuMa#ZAE)`_@O6<t-26vmiZ#tYZg;5bzT0Y8y-Rb0$=569uWD3pNL8E2u|I#m z);6}jm)B+us};kXNuN2I=5A&$P`v2(VEZ+uE8S<`&$%F4U&f^KvC`u}kY#3L`stU6 zKX*-eA~~DEZ?Ck1?Ds9!YQ@^B!Ho0Xt^e4V`fnOffl+>;QF<=ZoZ_xZMeT;*H!JI{ z=dE8TzC)`)*zO;rMe1AAgYiDn_MG|UVG<<=K7M(4J9_z~Kl*FMCJ5(c?fkytQ0JtB zOxr3<xKE^J@|>N1@^NhGfx_)!Z;vf?ztuHG^!SIE#O2yc!#{LQdsCYF!ul<9>3( zF7ew_U4Mk{R^$9&clpu5-QPd`UnyL&Lz!XkJC50_CnUaZJiAWZLD1-K{yHbS+}gM= zPb1snrcIsRGU@o|yP^$o<*Y(V4tLEAu6|<Od5pcw#Pp`d>%jb6|Eb%r-Q|dQU&DC# znw#dAU&g+te1#unaBH9OUD0;=^?41u*lc${K1-(u9oh?arX5&2si=2$&F%-z%eE#z z@w#XD(vp9IFzcPG@lp3<<pW>5TBo)q$h{<D!BUa3OHXedyb<?KA>zoIgzj4hYo$|b zCI5A8GT9L26v^pZtjIa*e{b%C-Xr(#un8?FIeGYn{yE_S?&`IFW0~x?Xw8}*U{pUL zIIm&vjOp_n6UEezmoUB#X3}naDDucxVd3%FcRQY(FVa%kpb+_;i97b}0io<haTP0u zFDk!;60Srgtk3OUJ~h6}B;@I*xoX#6oGi|}wspq)S99$ixcr{;V#oUH^8<fu_T$R% zyY|;%H8T_c2C<4sGW#DboL!+IdW>nAlBC_N>gTDi&sQ7G?6djmk~=-E?7!82k$7Q7 z^Q+#CiP?>T+1~meAFG|6@;t`Uc1G6vt|RQzS*CFBvYfeR<4&&1<zEkMyWs4$Hot=Z z!MBC~7%p>N(3@_@-Ed~hJexHeOdV`DypFrR>GRTe<%W%nJAY?xd2#Oh**iboT&K_X z)%QDElFm5)^}4H$LCbjgm4C9olDd(oyJ7o2))TL-_!n%tl)UNV{gBk8ZS4jd6ffE( zc$`};b))?aW6h~&2h!KF?t5{LXU>LcFVy|EaYxL~(BE)xBeV1x*0wdQb{V<zChH~i zZ#|Hn%ROQ8tXtC~PC2qh%*{9-HOaI$sGCWCqwa%<>{VNg&;QhT=p#M7cArhSO7qkM z#kt&TwojXKKV52KXVARnWd}NsdFq@^R+%Lj{6My7)*tn~(H2&5|KuiK^)WYae|PUz zVC|_ht2B0gJfkf6&oG+F`pKo|D<_<Pc5soZQbcZW$+X+^y$@yFyRx%(<D%a&=1bQd zd#w}yF<O-2ZA{#p_J?u%L%B?TyJ|o1FVg*WW|eDo)uSVg*XK5ce|n&OIA+U?w~uGK zrmHLnjLc|Yj$F6<Q$bkLuW4qlA6)z86}LbBA*WEcaNTLXA7P8`9_U}gs;3ggxGsYG z&&eq9#Wl)rk35)JHSb7j(J9LhHI`eg<5?WzpZsVzcZdB~R6C>DNyGA{_dc%}6Uw<h zh%q_Xzh-0lW~Ebb<l6y5%eelm%nznP#&vm03A<!|KW@5ujmagze1qnt)oaV9dD$vn zJA8Eax5-%z!FBE&KbGEaVA6~9UTS-<kkjL+cj1Zbwdb|mWCdlW&URW}b9+f-{*_4* zmF#DyysQXoe72d@TdqK{Ui7q2yXvgu(p%Sp_Rc+fFYp!9I?LY&-ny_eRB_+biG6tI zH75_xu9XbeOY}deXP-8g+}Jwz_@|(Ru4-e0+ffPgwjRh{%X%$>TV`9B!}N!Jsl}p2 zM}OT4$)C97FjM%SW4aQlZ&#d5zFRrxNm8RXM@iKK=Ji|6ZiUTNdjC20z>4GC8xBV? zUOhT1tyuJv?DGZedmi{avs8Q@E>m2YR`2+B<-OV>{;>6*pV#r6u{``|y5H3sX}kTo z`DQSA&9`m}I^!;VKL0`PYQ{8?D^Hzo%01we&Y1kUh4=MF_qW2l(q|_mUt>sD-M5F! z?)K!O_6I+geckz2TR&vCI&*OF176Kb;*q>1QL(~C^>4Qe?_fN;dcJ@C;a5v!b~4wi zxW98~D%h{`V{&G$|0j0O{te;=b29Wl_*sVYzG<<Q+P~xNyB8;({VdH-aOm4x#mM*S zJLBI8Y(_b@nmOjIZhwRH6LtyRn8~!SvPd+j;_$~KbM2Lir_GzdqveplsMcZrYT*~# z#X5q*S8d4M#^`tB*}0G9%&Y%qnF$z{?*8{Ca9)K~*8aOSn^)%tznxw(e@of+2i(`L zxnFtt>shnrQun<xcR%{0TKTI;y0IckF#WSsX>Q1O4zd1H^@5p`)owC}xi=W}`+Fa9 z`QjI7w^JZ>``fkasxv1avRJ0kt+CBrs$O;bu5Y#b*8kG=e^Bx5o!FYYva4%sOGTXP z7V+^|n?3MYq|I4>S7gWBjQI@_7pEDECTcT0yt_H!{$_TEg6b*B9X%z?i|eXCDNng@ zB~|Nx!+v?^B^UCH3XUvg7GX8t7rknN@-^Y><v!iYHm}kRe)nx<w@^8*@hw~Rn($%X z;0OANOqu$8K^aHh&1iolU30zG=B3i=JdT9$8fSjXB-_lo(_6khJ;6Wq{`EU^_Ez2I z74UvL<+tNbSu>5aFYZUfpJ)DTGd_5-EzF_YTK589?}iK9mFu;%?}lcp-@J7_HGTK4 zM$1V5_R?F6Meb~0oR^lc?XsTRh0xZsn|Uu}&OX!}p`Bgc#Cv&@h4tgRDuE9yi|%CG zPCxKf_gVJ))3twDx0#v#>$}?aH%^5qTj(w0wO>-V_=NT?+rRe~+t!o&oVpG!66y-I z{CUBA&$SJ%MHj5q4hZJ=F+AU6y>%UzrT+7X(+BszdaM3mMog8JveS%9&gU0jnmcjz z&9$XjrMjhOPCZ(Xx9+U5={2@_W&awB@Acfeb0|<OS9kNKGxiN<yoG=Ls=A>*`|v$h zW(}U(2Ok)IKC37EJxX&@5&PQ}wa4p^{N=eZ>ubRc>s;nHTOh-4UoF<H2#eS=+c)Mb z^K)g5*T1y0x9jYi8oklrERWij1(IBqxBR@8_3Bm~cG|M>=&20?xi;^X@04)3+dW}j z*p16M%q2cD;o<=`;ijvu7T#3rUtPXuhgM~b?a>`teW%U(R<G-vmz{d{p~U}VO~Ged z_vos+UOpzaH&OA{jijZz$7<O=dOT;J@oF`jfpYZJ!{2T)|Cpq2bikqJ^N;g?EN|*9 zxSCzpaOBRq4dFMKe|S7&yq(VffcxjJj}x{Y=r<~!v47et*09r=!Hc$ntFSUlc7ekz z{0lt&{GXbID1KhU{w#X`GOo&PUk?;toXoJ~dR2nLm&f5As`>5HMQ<;BRJOtW9^cdq z_RRMpA8U5bz8SvxirJJG+h)7<b_JEY`-B$8{9kb8YPv5!*A%%g@A$jtzD-%VUeP>< z<Kh<Gf4gq=O3%wXamIMorFnTi_gODaSy-N&*0{*>ZDhs;)4U5GG)-P=nP>iRS*)eF z!2C<zl}odB#C$q``mQ_ww&-`&*=b*wtyT&Tkk!}Hh+%bQJv#4pNC1!Lji8W#W3jHR zYrm{r)FfmZs26<Yt?iMJ$g~+gH+HZ;4O;5pSMk#(q;*codbT>rsuN#T_LO#Tt$Zup z?bNX5`}69CSFOABz6-o=TzQdG;hoIi2CXxi&fB8-YqZ}e-v79bt3d0G;_|~BpDurB zoa4TLXTs};%pc8?wl}<UD>@LeGlgm9v=(#TP{qrF9h{GN59B2*WM<Z0!#Xcp_d=$w zK|=1erk}4R(k^cJ_h0_q;_fak^WN|7pSMLu-Y>mt_pSK1$RB~U%39tFelE||jMxiJ zW&d9O*C!cZp6<Vc-M&m>g1^XH)e9$<$opzm*_w7wo-yy(UdtD<=kyX59Aqo_+){kE zu4<S5%BCNAv$>+5_i^or{=O~!er`GQ>R6)%ADT<we^X)K@%mfPqWQNNG-__t-o2%< zpviUrWV5QdLEU!C6AskeX7b;{XpqqSY5kgG-`8314B5Hr>sMa($_s(dPF>BqtGmbX z!O1n}4hcu>y|y{R^L5O%Y;~(yHOXbG?{U_oyov6(nV*|CQ!?It#eI*EDS>@4fjWmG zANsCuVtMn$Y8C%?4Xq_tS8{vx=>4`c=Puar;5pN+{C(Os-)FCwKh^%i8is12xAP~S zpIcocA<K5aE<2y&U&2}iwbO_G+^CTH{r#-})3mO+6JzywU1vO%Van@EG(R54m1O^I z_H5fy=I*D5bar{ID{u?kbCN54d%{B>ah*A((Nm<<>`yP{{;_aQ-ir3D9JbA^Vd|G3 z23{@_wNVnir2m~$Z1%Pj{~7bx?A;ZP99tQ`^m#<A{N*<~^G?||sV-Z~$7AaiaoO$d zfhAi`+`HKn`Ta%U%onUCd%sTLd)?T0;d;%tl#c(#b8asAQxzm^VEBXA;)D|S+E9-~ z*8LVe3a1Zs#5^!c+}OG@bYjGrt)gPZdzn^zo$x$5W4%+A?wO9%xU<ory<Q>V^WN>T zIUKxtLaW%VRTEszPM!X|Y>f>^WTn8Z7&-2@p(nVwjTikF`q-nz(%x^qsWtLq=i=Q{ z{!dFOj}}eXD$^_B?fd1xwii4<MVB3#VsKbwhJD^|^PibP54hy7x<5^O{^8;lrIh1q zIW_NauH#ZZamzr-d56yrW~R6LOvTpDbKb{&(oMHbN!wzd61T-ZrEcY4>8UH0+324< z<^0>3O(3Jb<MidZQ`^6_uh}l}wD7lk<(+>MZgXrgTB3RDzUrp_@JSc{P5AkE>;C^q zQ`ap!bM1wRYViTK?@SGTjrX*ZUN?ST*dDV@Ziie|(XBV@n0)k0r+!+X74q(-PWfI3 z#l_-}F2tNr<=%IA`eC_>+%wV>4!+QupqM^2=5!?g&(spd6QL}-xSs5C4v@2at;pY@ z$Fi_uYjIBHy#)!TuCG~qc5hyE(OO};u1NQ_nc}(4-DW8VT@NVkun~)y_gZXDehf$9 z>`QXnHR}?XX2!j8(mJejaPpk;1LyO?nA%UN+b!F>A>HKHf)d5e6KosO)o(HHS&(xs zEAK*9LiS(wKR@<=^<$T_xiFJ8&0_O`Gdi1}3h4H66?Dk8YrLOPE&Ee)Im4UY3~#sj zWlIj+3-a+5mj0PP_fGU2nGKsiZk!`=E$n95bmoe9F~gkYwo=OjHJ1hMbava-?RK|v z;=ijsJgKM7efsw9ake~D=$#D?{$Z*crr%_XxL$F4=8S2U^$tgG7WhoGpV55S>!A4V zO$_Ysb=lTi?67?&v&WkM-=w4u?>OQ%fBv#Q?Vj4w<*A>$k4p*E9%lDGx;T;3_#Wr7 zwdZ6F?#^ULOWE0ccDwsy6Ro2rTIDA^w)c9~euzJN;)>7B%IDu5rd4(FSFnC~_`csE zYMIN?1Mk$`dw(hyL_3Dv*I$z``{|_XE+<PZE%#r3dS#KyhA>O7*+H8p3Ue!~r_JxY zw8}y^quy|(mk7^njTt#znxRUnHvek(f3mNXng8)`?1rCl6BxOJX1`>%?U4SEDxcdn zhljC9t3_IAyRy&h@~t`!*OU{~4tY-(+t&St_u%^XA6I<JJ$tp^Y`)OnK)pDDy%Njz zi|uT2_%b2;A@fd0jasG!0T*ufu@p|bU)g6-?ehC+kjIJRPB#=c2{*DR>^{u?>E$yW z#utn(>I}9*%i={XyADk6oACG{^Upl4trG(-Os-VfbNheR&XiZ{nK$Xgi|p-^FLYYA zrAN|fSt~<k{>dWFTDwKU5!zNAFDw>XE32f4GpV-6c(uvf8GO3<OncGawaIO(UB4La zV?ANFbECw<`<(VCR^H*SQvRc`y~sY$E$~V3l#R*3Cz$@^aQ&SzXR^4Z9McmYInFQB zJM<2_Uer$fr9N?g3&YH+{W>xwvtm9)>uj=V5%1W;(P-ANN2$g|;^D=07tTKXzW&d% zT)WuozLx9#wy;Awbk%1MaAvc9Tvgm-nc2ACOkLODcD^2izt<Mwid|a|{Bx;pSZpS6 zA^HN7`rk|?gQN4OGs*r7k&@UdW-&Lze!~XS%*KB%zZ-n7F||JxVZJa)UTV_~5edI9 zOAj1h!&-J~Y4{?A@HOF+FHgGgeD_w3*q>i^*Z({Jd`Z>mfCW1iJP*BYKV3Lg>i5=_ z@rzWauXPUfDBk@2AZxMje3gidT`n8eeDH14{Cw6hSZ!kPvVR<BUvk#v{!%~a8yr=$ z>web4qwxt+^6s5RtZU6;wQnTsY8EqR{r01HwR))H?@1dzdWN2;+aLCMiB|2C8P<XZ zSMS>z$@0!R#-eztA$z*;T*VpbyBs!Lm||8vQFDXWy3p4z`hD}Rp8uw>)@^b5+clEg z7ygNjmet?<=zd)1?^@%(4Da0>8<!U8EWR9`bx)C9yz&HtoX6iQrw_VlyR+OkWcBO& ztMUEB*J(d$wu)y=_Wpit!t!W-9e&%C-meGPcB<|Dy*KcO;_Al!7Rx8n*O>2f*)Cam z)ta>_F*sp!j8Ws8t#UWyt4?UXo_%%F=O-bO2Wl+e=4}a8oO_LV@51(+t@Hc}Li<8& zCoMGG*?sJZuGHntE7YI2-G7w(D50d^6|}2oPvd_<eusqox7;!xce4AW+}RrZf+=1k zc-^c!`8%?=et$SOdesI-`*P-Mw;w-_UX}DkL+YQja*m(a^32N*zl4S#VY&Q5T`gg{ zZC+1EBKw<(y3QR_^u?^7<gi{=INtSeyXU!&M)mKfO=d5+Am7UzzUJw4?dK<M&N&&i zmxcd9M~qi)wv~j&8oL>D8C@dR|GMNq^T*6brg@$RK9{TN-TfuIe{=uE_dgC^eWvor zyYz_k+WC|IT(9@t_ipLGM|Qtgx$I`CV>_Uw6n$9ff`|0%yP2%FeOb3m@>N)s^Cj?k z*QBh_xwllb!mCyVZ_U`d`tsw3%u6CWq}0s!WH`My4Ju@~$+Bs=!7L~Fud>eCUsi5% z{;+F>#fvrVI(j_^F8tmU^=nuE#_zT3-B?1l*S8ccy7t;bTW&k=j@#cSxw|XO|8_&{ zgXyfV6An!`a9()5BdKaL!_N70dRVT^|9a)Y9)T67p5Hs))GgYyxy_)k{M4^g3$KLl zyJ(|UbANT+FWU{)Y4x#e88O^>G2G{3I8xqual~DXDDZRM@!I`c@978gjhohdXATr? zwBuvF_xvc!2gmG}Z`yrlHbvE5jaHd)cany|`S7|0hoi1Bhx>fqc!4*=X2IQ8@AylX zrhLD0c-h61t}n0O_uV4BBO~`qR%T<^{Tk-r*l71ncD`*a`UZ2q`2RWTyMB?aVbR^w zHrzLR)tt(>+XW^&%PeBPFFJ36HtYEnOD8;>H6@qlrT!ctws_fjhRa))TTI?!`@K_! zm+@0?lj<MqhdU40Tjeuu3ehWKem}iCepMU4_@Cr7e#@=CE@A%~Pp!BZ{=2jJ_2vEM zTeN(4{abf*Yo_hgpN^I@gF`<*afvO9zFu>yb@%B+!|f-XrSHt@=Q3)Nnp4m+!Mf*Q z=Puh`=C7;=9@?;+v3)(ex%4sPR`sgl4IeuaBoZD5CcHa&q~=lWGR0db^v@iTdeYdl zdRnIctb6|~a<zTy3ryElZ(7*%y5=hLmJ%0k5x<AGv(~P!JbK$EBj%jTV=lE>`h2?| zT~f)de0gn$#Ouc&1uffoevA1zJX~{sa#-{`kH9NWKK|KqVAJuS_q%T>pPJk9MyY>7 zmsk_G_{xAi0{i@x+a`EPJ54d?TzN$C$@9m@u2t<^et!MlL&rov=j=*~<5xU3=USS2 z#O#CT?^T~E?&1&M#PD+B<fn`}4{PN*U%m5D*k=9IE{D-*`GtkgTaPonpB2@Rv+iZ@ zqou+2-9i@U+PK!N;hl3K{n7rVFS++bY(ErMaaO6L_M^A*g!12=mLCki>`~>tnYeH* z*UxqF&CGRr(|Z*5_gptt6c?!Y#=Y~Qz=5?Kh0!i&+$QWSGGY>2aD0XSUR^=U_O+Wu z?><sqc3>U{!_PI$Z*B&)zU9?F!FNB9VR`Kpp$o6hDuOnR9N4}`y7sj7@u~#IDx<wR zcmKOZZFqj0>qYsT0}XSE3_@DhY?r&y5chp+=!t+!{0#D2IvakcUbkLSFzFHJ7ZI*c zYjyZHeBQ=XC&%f`wOlLC`TXH*!D);8R^1iP?`f#>??2#{-MG+2n<?)^to?+**Ny!P zm)Gr^@a~*){s!f3Onw%A4}MQ%KH<sY#j{hyZo=uvkfb^HQuRG1&)F-)y?*Du@8x=m z{ogYW**4wN;aGED?o8Ws;abiD)y<8uy&0}Ej5l;Gov-o1ac2tC&k1v!58H{wO<2sw zBy)OA!tujiEu12&cl_$SX0!DCx$m!gUN6gdocz(c@!QFAyH)9Z^A9j?7mDTFk~Tl@ z07tx);npw0arIxLw=p#>W_`8q&|d#4ZmC$Ydz16N&Dkq%VX#c^&n4{-;j5K{S9I@Q zc4oWa%hQvdon3o-^Ld-<j*9up)@l}ZX@yQdWLG!J_pDUDHSLprOJmB!HcKZy-?^)2 zJ=<0O@MXo$1E2rQ5GlC%d#<aHtRH)myxu>JGL<XxoSkO3EbChDyuS0RslssaJL6s7 zch1Ody??wn!}ayzn24GMehDv5D|s&x4BK)sF8$xWPoHJEKQO6t?>Q5dpmNbpVc-3; zn{UhMsw5v+`Q7qsp?%A(x%JjOKGREY={JOI;&(_~yzwHF<rSg04f@qr7~`jUhfPop zKAiRF$!@Nb@7H?n)1I__`egp~Hb3>$^H+P^3oD;kbM&P1@9xfUr9zu7&u}i!aHY(f z77sVf{F47`_8<S21EzYP1j`j1l<)bAD&BW`a8KY9!}}RbAt&}$Uig18?L}iu%e<4W zFD!R{5#TElw7+NdFT?l?|4z*>X)~Pio-ezQ>N`_&%cSm$3YyC&DDRa2vSL5m@4g4W zcb?C@Xk7H&HK$U<UpsPY>>1s49dT>7{+R4y8^po=f@kNH^b?nh?O$xF_{A%E>aUy2 z_UB3^CW{(ttiB7U?iAzK{_l5hX2T1s*20>a%@1yU|6Asp%z1K}ilIu%+@EPZ2YF*J zMQn;mzOS}yw#v;}6M6)89TPI=^xT!=FSN_^McL#DIf@Ve?7RQ--sf{4>)xgN&b(dz z|NrMX&*yxf^L)<pIiL4EkBwPxdV0(8X^t)*Hcok<TK?qpQnekK;R_k>?%A2kH}g8j znf*Jti(-OW=3TfW)jntDqXp?p&lbLrz3cjh+3s_U9?QY$li1W%<<DGG_~Ck~;oqF5 z3sL?$JWG}@?`U4<d*P77&1ike&IgM%4=(<-JeKWHXH-w~x*5i+Q&_66X_zc{-4^fJ z{6N){c~{0Zwu9=E*uJd1DRsW>LAWRLuU;wsBT)i(a?d_tZ}eND@a5JA?%G<d18X(e zs(#P9ST^CPCf}}>1>1hVp8hg=?%}IUn!GElE#@%n-s!^lt%Q^H&RUTbuMhtCHbwkz z;j_1QFR}HN9AWn>c*l5b3e)x#+;`TBRD@{CKCsoi@OYm2hJNdZ2b$PqSug#o_$m6< zdbcoN%(GC%2W3kS-1TZy^=eFydB$9Px0KPZw3pXMi*;Qvm(4<v9~WQi9@v&Q|G55C z1=f4PTs1Sk3EnHJm#s+e-NDK~a|8Fq$;*};5YmYLP=8*{=DvB&z2KZ@jr~g#D^fXH zja>XZ#0_n{mdpIR)7gGTBfX_M_?50loG!P(v)C6IGN(?Qn_lH4IoWPXofx~km*4~I zm;QIx<uLb}zjiR^->`Ixxx@S^brlPy)Kzqr1U6(ZWqi^8?#Si8?@Bi^*sSuBiCkdu z{ll!h@9Z=5Z8Z-ty%h1&WlcMzpS$V&jg+_fn|{~JtqXWM=~ivt{6hCbo_Be<=Dccq zdd_ywv|CrLcQ~A9Dmn4k;LzG#FX!eYc`+xjnY)PnDy!YZ7MK05&N-}@yZSQ2a_`3C zS-bB{*gf@i{I?$r@t)VebSnouXt|o~bmHx)#`AaHvF*#sYj!SKv-mtu!Q^{e+%q;N ze!p}sNp8ZugAMwrDfQl`1n%u#7QKp5ZxYk5yBB}O9<|#UzJl*caD(f*C;0^-F00y~ z|9--Ec)^~dj{+9WQ{Jll;lnYz*M}{+1In9ic#j?ayU?12-I;Mld`{WnH`+(dwh3-< z&5JPpVfRwjlV{)QDNOULG`TwT@3EI<U3e@x>3oP+^|xCQ2VSl|E}QOtM#3V&Z^PX= zZkHMvw#>VIx7^BMlGV)o8P9CaF$ztP<GpZb*`EWPyKb;AkKE3?zo6sF7We<Q!msWw z4exD~w&q>7OftvJSN$~Wvg3P8f~1~%WHQ|H6g{z{NTH|el;TI%_bW5m7C&7WA)CD@ z*64KypWxFO7aMa}IG%;{vHE|QWnbVK%on-DuE05%Z)fr}d(Czm>(e`@IPcT6>3tT! zC+VGMesRj{T*C)8)8BT!PVbKGVK9FCuJiYHyS1Xxe0vt{H0GOmVRmDc?kU^mPDZIu zi{42z#5_F0a>46_<@VGg#tfAgc(oSP`%PhY+N{Wb;8yU@&3-@G)?H<~`R(VaUyGNP zKUj7k*4A)?9(SR-<%3-s%MbjR!?=s<Z!^Q+=0%blGT4GH-nyrse}C;A`}P+;#{;{S zt))dI3T+u<mYL}If6&q}cyNhHBCM-gcgmx{YOBw>34N23n#-3oygsj(a60tywt%8t ziV2OcFEPvPTd?D{^raUC0XY`;U0DjIU3!riF!xl@1NWeq=ggWL4#_m+Pg(Xcm*d86 z$A0ERQAdTGk4>rO`n0_KneEg5=(BU8-d~kuzQ-fR{8{D_k44<lx3AQ<uAVqS-+N;G z*MvJFZS9_}sp5Y!y=Cjtj4v7LyB^9E@D@KY_bkJccbEQI{@LkP@#NXM<h*xH`vbe; z1MkJR{|T}3X<jd=JhwCHK-<b2)8bXlS4e-Jb(yzft>*n{E0x|&TUNZt>TZGf_uMtR zq>fjnt3O(0`|F$R2K9GWn!i4&pTcIiBPd+D|J1p-PxU7bpZN7X#)r4oXWitJa~C|B z>HN^5V{Y4%`X^oY755oUzj{A%#*(aPd%v$QF3dlCiIXemMVwv1@}LKC+iMxtI2kRg zTxq<UJ;iAHv7gdX%X2d3EL~X0$>aNaiDQCO=A0=D-^LwXlAqjoW8KTEhn*evYNqF# z@Z4n+E8x^FD;L;ZVeS|+S7>6GwaWH)Y-?(HBK}KUU@~05o8+K<<be9EgAJ=ENnBv~ zd6x0%<*j$l?&*k*%LvHa{&=rlR!cXx@{HAqY~PCZ-)LCuw5yllUrKpTi_PV^?_?V6 z@4wysrquqcg1<_9$_JyQSoKO~zfWwJRQwgHtFw34Eoi*8FKb<u?sS7`OZTYcd=oY2 zJn(Es4Kv%FD~x(sIvRSs^Aom+PDuXFz9izW-T7&1rs5*Z7q4H?-M007Y4q<f@q6nl zlydG(Fu%%vFT7RuRd0B=)`Xo8#Y1kaySI90KF`f^Q}dg)g<<kW>+A|<Y6Zs~DU$!^ zcYf{F`b(R$ncuU2N;GEpd1g+7es^u=jP!@jAJ_2Cy;mb%CGI}==e)VI)l(XO9eBAa z=HXiRFdn0ucbfMd+iWj<U*N=DwYp3C8?s_g1hMbaw>=*&|7q^81O2PsJV-SSeWcQO z>MI}jDaH4i>~=Y)9)D?+c`=pg_U_WX-VFt+j&B*+#hE8OzQXSJHATe2`z7nq7sVg5 zE>EzY!hGJV(R@jR^GAUXy_e=aC@a3!<KB|<YNgJG${#lyHpDI0d7xA}XJgvith{;s ze*gdNd*peK$GIyvc8ODOGnYDx(Xw#;{Yg?~+jf6CVCl+|yHn>6kLb(^ja7NZtHhXf zx1>!HYy6Zc7A1bv@XkGD{qWP<yY7nCO=B(F&u#snQEAZ>hn-7L9gQ^13VhROoPBlQ zn@^iP<ru$po4YgTJeGEx{%m?=H_w&L8mo>vaIc-YWNI|`+GpyAwq38@<iuSgxN5(K z^qYj`+7BiuHC=3KRMIw)T#;@W+TAD?W$dY~ZxVHQ<Av*%I-yZjX;&|-KYaeufq7-T zd^VGn?)a|Q@TI3}TJTnhjD@C?w|sJ1eAL9*aqo&-i>g`XzVF_2ux{f82lv1;^PQbP zu6`l+D$?(2(t_4&K9^2$_g;(PJ|!r5SBpEA-)gbz%>?x-aj}9R!9r`{#HCALLzH@T z-&H7C@|0<@p&a*{w!o?1mG^GfV1MJ-&3z_?)uge=drEil`||2lw}MQ5UwXu`A>7vF zLzLjbKgaYpi%70W4-5hOAuH5${oW6UBSJzXm>;a$zk2lr`8#hH96FikzGD(YpN^7R ztXD|L!gyQnwNX4<F3j?bsuaBtCGhwD>Z?~<>#R>q7hT#|o3gO6znf#*-yf;1YRq4C zmS-7WaLQK8eA?>vdUr&CxzuW|y=4>fBBrozYxVDEj1Chi%6&RbOZ@p!2cMT(YmctV z*<-=<CWxOmCd_4n(xd63Ehy1(I@pc-)y??Qg)?`5)AM4!eLq|K0HZ65wpCr^!jlfR zr&od<7O1UV@-QZEMr4HfjwkcZpL)JSYR!*2Gwn_3u?39!yC(ANx%NoTAjszZQicbu zY-^d9oXEfJ^jk7?(uFtL?>>e6nHG3pTehQn!`s8>KOOkhyTWVVnL~_f@_Op>COZWy zFI|;>WYy5Nz3Hje)O?$0<BscjF1!qKKQa>3mmZksmA>7f?)57MgGaJ64m5q(d~XA% za>MFSb}`Mre|y-2kGW4bmNQ9K4m#GHcE_#rwdUjGMpmyz&ZU~ytIn9#H$6F_boYRY z)TK9y8y@LBP;5|%S@ql?Xv(TM;}G@`dDp*2FLSQnQ@tnD)!*=ne{uaPlhn1_q?DgU z+?3rJ`8{nllaHt`=kB{45BiiAh5kA?Wu92`-9(qwB43NTs=OxFKY6{h<gm_%bvv2l z!={}Q$zRDfV^Ln0n0a1U?U@HGxomSnWH`6o;CP^TwQ;(ZZ%+9c`&S0{^SslzmmUyx zeVNeR>)|fRGB5Pk@1yINKjNR>9l!mD+mfEwV)n0{>pGX+|5xMPkeRtL^&5W_-|E!( z$1Ce{WpjRWO@5-k`__RPhAYuu8!c}!8yr=*@M~|h7Vp%lZC+l|TI+w9%yBp7x^cmZ zL0Wuj^ViVuJXvq{FQHe`W1q@d)U)4@bz}HGgV$j4oRvrKKU>E9EJ`aOZX#b<qu_y~ ztC+WILBjR$(;oJ-H#(+#RG6?=Z~e8LA0fBQxLLnXc${WA^ZC4NnO?VP?N<8?^Z5H& zW+bSblfICxy?^!P%a7SRW}Niptyw1b!8I}a#`ISV_G@j{ADnW%;1u`gL;J$me`u~Y zy?@GlWqf+@;*i(3PMPlVVqY)RmvZRLnpln>q5B)xy}7&Xt44uqqVA2gZd?59W=xWg z_Or_<QjStzzx>JJr%y^JJ&!$kz1N`o`*BIxp5TL9_X+Jux}9e}&tS_st({w0?ycIf z=KlPB&zk@EWKMPSub6DT{oBGaH_e#2w=>T0&g$3gkLG#MdFanoujbUH2gSU;I%!JR zPgls#&bS+~nrXI}Ytz%uZdb+cTr-wm@O96^AlVhOw66U>f0pU6&lxuc_1U}yX{n26 zK4Q7b5PZcqFmc+RB=%)F(PuAe%?zG8^V+8g4%Zglk}ga5w|0N->b~ARzY0#Bee!>k z)JOem8S0B0ZM&ilK3c*2Cfen|uU>{p3qR+4-}2=^W2idoN$GY5zKn;7>{1h#7MMKI zJl&x3QFWeLz&t(Y8|I&iyH|ZzivBmPZrT*KXpO6<y}pWhIeT_S{X4%)YHr3Aj|UO` z;tIQ`7%by62y_WaH&2plxOtU1MO?rylzoPV(yGnYM{F7<Z!vUGi()RDCB~q(>8hXR z^2d*C_>P@sKkzb;XOh+C%Z+k3F8_Yxd;e;3&euyfO@G?0ot(eOmnr4+TRUZjNzxas z+N(}6{yuPNsd({<H*Qb&*|DUki+$6+QTB@AcgXD9iH^IQKAZ4vs1<4cy+w}k`dPms zF6~3VdKgX|>zJ0`bx!uyneAJI7$T#rZ`dd|Jn`Ewx5uM2Ry^@*z_wkij2AX3z@ubS z(B9Td0g;&+!H;Gyd%4Wz$8Fn|{qO#4OP=jBJ=6B?Vh;V1>{riv_qyM?Z)ftrLHAeW z0c)lB7-jy-Sv)#B*SyM4U+-nQ|J+9Jv&Vy&?kK6=E?=_OPKooc%7OEjocAP)@6tGM z_tH^DyNOKmO9PvV*Uf2r^K!HPn-_W${8%d7e&sZ*-qSC)W0|^IOU&|`!iJ@nibBKA zuJ+hbv~~BkSoV&2^UoCMq}^D3ZNZGh7_J{v*D>mRY7KheJ^%Fq3+)<90Rf&Ckspzn zTZBa<zW?mYFj_L>P18HJy-E%nIJpk&+84-jW8ZP{Yiv8bUotZ`xn5wMrgfH0X71<w z3XfYmcx7uUn2V3w-S%;o6!>BA$FA0~!E*h@L_XjA&b6#J!n#t=PwW$yf4L_4rl?o- z-s@t!${U!Mva?#aTM0g3eCgBheaVgA+AkIDD!6;y+LE4#FV$y_P+J=QPh;)JX>0TB zkBKCBXXZD=E-AUqyo8<2!Xt{`K*?5dum82OE9wWcMek3EGp>$rPz|d3cl?q+bB)?x zy#wbj@yT;HFzriQ=NE2au(#}6!OMaM!Izqhe$yYhZ1;X^CdOM6@iCck-o$N}LqDy4 z-`xId1>2XE4Cg)WbAFgN#qUCBcEGIP=`S7Y61c3Izk3|dG1oYI>GItLr9E0ltN6VQ zZ;A)`eA{cXZ!V|TU2*S~Pl7L*6s`Zl-7vRr+T*-;4B`>bUF*uvz53i4b^oA{!VHG} zEHXiToz7e)Ve(%2_g8LqEMLa%-Iy=q&iB#MXUTH50|u?NXLJq-X?{p)=Ccuhpvo?F z;9N0}ZQ9C`rTV?E-j#jI{_h%mwLUh~?C#~uIbG}(TMO(8dfkrANxmfzabv;f#@ADs z{I#y$E6XUDDdq5@ID?^Bc5UO{DaXVdxnjiX?k39IuAQCv!t@x!c9SGM<+f$fSv((R zT3+m0_;bO5duFl)6M_<)Gz}JuRCsA_h|ydieWh{zluP_h><zd0*XZvEFigI?*37bC zd(f`q#X$*~KfboC(&2e6^uzm`%me4kOb4HPFsyl-!tzCnbz3Oco24Qa0h$I2MRs^< z7R(Py*ckM{dZ|PE<w%+L6PSvtxqdsB2XWr8KI*`4%4@JjsGuw8LCDerNlOn1do?cg z>Q24!YAatg!?Sy}w~|kt_V4ZZ^IGfc4~KB|b;3W_sNT(57k!2E|AY_wHC_LIpT6hK zf*+2W^R9nRzI4I2`#bZM#vfDfhAw00x-Yp$<A8P6`hv8wgB)&r@1At=AMoArhU?wx z9~T~Vc3Np)n7l+!O7r=g_^`QcOD`<WT*3Zr)?eM+QnyD>{3H)_o;WBeJmnc%!tZrS ztX68eXC)4Jdo`Yy5oG-R)g#kuW4t*xllIy`{s~O%VphzJSGxl;y_oVeloHHE6>r=v zv}Cv^UYRMCEchW)Wco6b`D^o^1<!i$VdCCH=Q(cNbL9x@54N$8smu(DS&)2$WrJ%V zXUeH1FTI1+Kg`%J9DZhz6(fs^j=0piKySW;n(uQgT?KljqT0NEen@Wox9Bo!^$L0K zM$wa^RWjciEx*+76J)yR+SXtfT6WP@<G-KX_a>9FjErxQ*I!FL{%<L}`@64m{swF2 z?Mr6J&rFs%(|GSjd;U^>?Pnzkea$)>3V-B^JewVB&c8o*+rAaad*kbVKD~6d|JCiP zSu4&~N@=?4zfoX%IPKx~Fy%*k6u1SW{gr3kKKgv30PD%0jvf7P-ah2xD(EOtI-sOk zw`oVI;s@C}+eG7!hx+abe7nqDt9YkAB0k@l>t^BBc&EUs!{)R4UuAPRyIs!ETO1Mi z`%YiX*E@V)F8oyZvu(u%?I|Db>g$?(C=OhuyZoW)^GUWddYAl~y?P_Vd97OG1Jywf zn)5bA-Z;UwZ;^E>_i^sWHk&u^mA$dl@aY`y$<E(BmZ!2?^!7Zq51M}c?W{MI&*!i5 zo@+I6Nzv9-Ug_yvD>fdJ%H30$vZ})Wj=+Zv(QyYJdo@m<!Zcsw=*vf^FE-?cC+@uQ z#_=*s`K6N$bH6$zOuyN6lGVNRVC2S=qOT8pHC=Y9_294Pt$KbO;&U!fm~*+%WrI?< z>$_*x2M>z>`p*4V;`p0SXEvxGhzfEjmu0P*`e<#r)ma8(tp_`7V|lqA>{%*gR$JNY zwB@x~D|>nSq*jG3*UxJUwtRc)`QiFr8_}!rvJR6D^S#^<xoO$#ynCDaRj=ROG?h<w zL&43nS}}p5d#C;iTOsgY^4`j&lal#dkGH5DpEF;knB#cOZpYV*1ujJ%b{11=Ht@Z< z7W|I&<af7^dtHMbNKJmxroD3CyYyRctb)Q<b1UnuON*&6+`l%{pY_)q)rPq>g>R=` ze#sPc*SINZ>i?Bf+V(A6?Z_xK=e6I<slQ6)+Zy}|_WDRoKX+lrw^pN-@rp+UwtLBM zp7mrl+oZ~AMb|D|ei>e~>Ej94BDFu4T<_&PjF4jg{JQAdag(hF?8`o~)r55w-JE!+ z{>@v3zaM*q4*xKX(|E9|V#epAOT8GyPc%E6EqnFV^iaU8?3p6ZZO(}$KCIj|rKnzU z>GSosbNLv{UX*!T9*FdM{8B*VgSXS+ABT&*GLKBI5f%`Tx@<Q^>-o*_YZ=!q=S^>& zlk+fZW`WIGmZHtJ|9=ZVU7oqf=iKxnMO`n^NdIM51I(6R_o`H@P5#uwaogdju8@CK zqPWIg!Joap{?}vHUjACw@WEL;;{N)F=VrHkS#`)_&+@e#G8bA;v3~Yix@u`?s+Pce zsaNr>UOZ;&-aI$EyJ3qnL;9K1WgJoedZ(4~Ja}KaM3(u-^Q9F(I9D&J_+jx-g8%;# zk^2v}itxwZnfmBqf63B{9jW;{lOIOeeQJL^@5=0b631K%4{Xi;#LN6nz;d?0Zx_3; z<YiNh<=1t{+}RWD_dZ_er|{h=-upJS-{<eDp8uk0+Q(1FveG_BxD|LyOWwG5otHU6 zBv+@>@yU7i8r4tNHxxXvEo^0)-*wsik7$<4dX4)wx93csSh{B4p8W4uPI)HnR`bj{ zsj~6ysYzvQXLnw7%5DkS{jIfR_5TfLO_<hK$??Z5nq2ttbJ<dcvNx}Ge3@RVlRuCB z+1-fAOpEOp^IVOtUf<IvUff)}Xxr2?Th^wl^{A;`^wPRB^IXjJqrtM?3|dDNEPj6p zx^FLL;hp)0E1>F-_oeG|+!lyb=4QV65b*1_Xi&nTZk;ca*<~ajFJl#{IQduUf#}_X zQE7`SX6uXG+;k&JmaXhzSICYNckj!Kon`sf_xAWPKj)4Exla`p=BX#lnYCGS`R&)Y z4=@&ph%^+6PMYhs@pAX27X}w@?0LadY^%?3EXJSlyH@W%7FLsU8;&*dsoq{98e4X& zB=F7Y8A5vwZd-r+lCs?QvxOa+pR+H?t(S0Ke#xtMr45hEg`2Wx^bL~Fa|iRk{W|GL zj$*r9Wb3ks<hAq9C7R{@Ucc*S|B_i@+#A|T6WlZtqUFr5n|CR(Iz>)!%buVk#Vpm! z$a>FEa>JRF16)fFsC!lKX>u}RJ9c}?f#Y-g+UFm6ty1vq<FY4x^Ix70TAy8X!29}f z#<Q7=uAMbWbkcutGSbH1?VQw`dnbZVUu`rOO?S)vo}ch7nREFx+iV-#nFjh#DtGi1 zs;EtK6LvQISfrUYdvUTs!xv9UhqB3!Bqm>Sl@gZ9<vcp2d+Ch#%$jD=_h#HXet2i* zeUqBjz>6&xG8{8Z6hwaCRXtk6@3Hvjg3b3A&aXc_AuH>t$@}+q+4r`ec*-_4c+SZa zu^y){A3G$lLB%X-n@L9U`)Vfl&h@9Cvn3v1E3zzc+O$Ija}vJxaX0Dbx34&U`JfZ) zIi7%^g^JttR~{&zv9>AohiT{*Kd$VBBG<e$*DMW+$X>c(ndieuv4`=erymt4&i(OT zuf1U=gTKehr)@{s4)9%5Xv=uIQOU&d?3_i7TTAl}{Qd2i;MLle{CdI0Ngj;>?j?=f zQ<x^dV!FPH;ZDdqQ!V|ApLHj(87i&bvj3H!W0aMA<f}uB6_*3ezLhUAE_`3K)j&`F z;_<CfPUkPoKeRRFkX6g6x-juwO>Z4E7d&;_qaqrA@;K}Lz;ycryP|u+yq1oinU=5G zH2Ye!8oxZ_hoX7cK1nrK`Y-#=5N}@{|6WX(DVX=|=k;^ibOKdxmZ-#6mb%T}CKo&T zuA61<4u3A2gmUJzDNH-k$_;WN-l%Ew{X6pF(N60J6D+#6zACIa=#-qfWRC-Hg4gcW zn3oM6myc!C^80!iB}A|$G;$qS67*n}Nr_(Is?tsDiu1QW7D?~f|MkH7uFtm_AGnJ@ z>0cJjz>q0h;o5&{Q{v3$%jbA7$t(%I&-3d248ac@B^eJ2-i*1KbuIE*OR(juk6NlG zYwNF6oMwGjo8`dG%eeNLd3$E->6n{#4ooj^{jxK$KD~NRWpmm4?|c4DU~r!I>viza zyhqc6YF2q`yUuqq=XGp0t2VqLqs5x@jWJ<iP(o0qR5n|3v~%~Y_QEBXZ|kmc-&Vg( z+WbU@V8W%p7rrO+zSwzBRbe}yU-e2MW!307=h`Jp|JMFq_wqon=zQnaB`ckj<Bo(% z?pc3zm*)T53wJEcPMFCYk(ijNBREB<GJ{v+t3=s4vHDp#_fwWX{m5t7&*AGX)9K!# z_FtAsOv{&DzKgwm+4~Pu{$FY;6S(l>__4)~kI%678XKF)F-h?=u3b0#{e*w_cDFNJ z_cE7z7x*O1OHP)plz-)o<WsgQ_So!wD$g#@FmLtI-$sh(tIx}Qn5>@qvEYKu>eL$D zBRvgI&-N(XpBd=Gdp7;n?Z^B0%<BtNG&gK{HaUj-@JXRRPoq-*SEzQx8(;n1XB2Rz ztoPm9gWB7+Zf(4IZRJt%pa;i~g<ZBhSY%tgJecom*jn@B{i_xWEtk|N@V;~N<@?w7 zpB;NRLApt^<zZ5(;*!kkZ_b$r7QBg^b<T07T2t%Jv{kvQh1TEg?9}H;=O|wOaQ3U9 z+3YtWxdPVv&T^N2F;hC?F~i=N9m}_cm;CKxnix{~TB|jr^<Qq)R-RQ?lvc4V(^|A- z)!tjDLbbO|UcD_>J6!i(+`6^D&g?q4?z7B!hBIgWE#@@TDbw!W!mrdn<(F^d>0hg+ zewEy^NpA9%Q~iH_rXJn2d+jVyyXeZB-`$fJE<7;h^_9?BM_uwhPKh>nDyDJjvhS~( zfwy<ed!TXipK8;ppSfGR9<N*P$dGmW?uOKyWl9-qIg_p}x_3;>H+jug|BX=#I&weS zWt=;-XRb)c<(A30Pox~)-BBpdn-HD(^9^%M*v<(Wx^k1Wnp$^G*k60OYuT14O<mJZ z(XxFdLiv6R4!`wTa5pk)nWgami7P*}O!y@dEhh20XR~;U;io@LZ%X&bUt>8CV$AsD z;<;0nc@}lEr|5rXmzd5ZUb4)RuWqGey6&OVRldcw`wp$0ac#xKpI0<rGY36bdG6AZ zYp)h^UA<=}df?-=7Z&!uW->chYYQvA$mG!XFrM&kdgdj);GF^oYq_#pCxlg-U3YN^ zK4*2|{avojCL-TurP&r(eNJi<FFV6~#8BE(YV+D;=~-bizNZ$aDP$>m&Wc*xYhxN1 zJuBnx!Zh71wnb`_mUN1V-IMZFUn92a*50*;Z%e!l+4ptRznKZI!ew+AZl#y<#k|W& zohash#PPJO@7gu9HNEEg1nRy{%1D)6Gv)7_b6ehgPd|2P>fDHm6|LX?#dgnLx7o*2 zS5E8sb)6YS+$oo80+;We_S~g!(zAVL&v*YhA2U5Fuz|V6JVzvY2}hJ+(~Q+CW^LT& z#1-Y*w54IH&&IGVC$!45x>BCbx!!hr&UGv0y06Q7i?gky^~6uje0%1{tCIDRr)EAo zAvSN5q+j^!OJ2?1PJdSEaellW-qpPM=H*vx&0D?Ac@A*jjq;pc{p(WlR`!KzYj@?@ z<$qheSWSv?$>JsQ!CZ3|i|p{ov^;)K>8|0&9Ty^}3vu;YNtLcF%()h{=8MFejRzd< zQYRVt$n(c7T~iZtrD5G0%kxk7CqL2kc57QayJt>#+7<4K1ApA&ZOW&<Gz`-8KXqF> zr*=}L*?j|pw4;rMOAjb5JuoHc0q@cSx4jyldR=aH-hHg*wyK!$tzVIsA6^Q67t~iX z{mVWE?<F5spA6voxNM4(&g5q^--o2wxjZZPI$5}KO3pOz?thM=UdQaO=y60W58PxG zthvEMvtV^l!p=*Jq-QSQDHbW~9hUCNSbgo{fwx|bzfH_G#AL>uXTA~Plc_)X-h<aq zYA&n%)HwI|a=#M4yXz(WQ$mJJjrlG+&+5g`6tB6lO?*Z4TUM#FRlH2$rhgfXR{mkz zd?MB<@wc8~QajtZ5U!Y|A~Qm`?yM8p;jQ^$;iZ}_CU*_RidFRzv-x_K@cybu(XhOu z^!1vQ{wwwO2aNBnEaRN}$m4g-8M$BD+3C!)LPd{#Tw5M}I&5v!;cF49r<HuxxV+JI za>?RZ{dHSh7%yjMpxVZq*0tu`of6KA^qrj2TswL?1SFN+I$S(mTv}W@PD~J(D9|a; z`Qqo^|Ceje+5Rr5<(c>Q|NG*3)$e{*owNLYulPLgMd$k}eiuD2&HB~;$z*l=l&h~A z)t9iwO*UJ@(ZnQwlEGq{g?CXC<JPK#fLw_R->9U&5h4ZYir0=rW<Aw<D$sdc-F)_6 zW5d^$N)?UARBmcoKeC!DZ-4*3?Zoy2|2u40?uER5_~GhSIlle&T<!egHZuG6KX~|| z(Tcy_KJ@v+5A$tm?rkY|yT|ok`BT`B)U9%S@|qPEF)xF5TzdM@YkIr;ORsRDYrnlq z|NLDO6n;|li1=%((5l0?UmfYbc<X20;fV+AuL&)zyw1Lk)3lwp!o&M^SPPevZ|WNZ z!>_y9e!F_JhE5DDstwrU>>stTc>Si&TPwBVuUB{%^uD@h8n<d)<cnMDO<(@95y`$P z$Z-4csuPB6&ksyJ_GE|XFBQY%j7y}Vm)dP~HI(A1c%Pr_SYxazvBPMl%neyCVdkfn zh9BleJ&W4#_|~FdXBX`c7n>ubyI{KJX|@#R<_Xd~4YHRmv6XeTnKAH69uWHx6P3-k zB`9O!nU1zS3EUy8w(#V9zqadusYmWjGu^!hK2_Wmv=3XV{VSkmC9_6@-~S^e(={B* z^m*J@{?+c;qkp+e`P08V$Ec@w`yU)%a!8}`shXQ+qv@h6Z#HP$tTSEXCbi|N$1%;e zl>7gmM7}q>mGvR2z-Q|3R)5KM=S3S8u0CGn9u)g6%SyvbN!Rm&X4Q%>fo2o;{(3L| zVx^e3m$@OcR}troNn$^ot}D!&I7wglwV{Hhghq8#&~xn~n{w3$fltpd#6LDjSiR-I zhAmT$OyPTdVttE#)$P6BQC%<Xrt*K-G3_BE^TM}5P4Opw{5gB$`x-sw^C7d}b7$=n z&6}Zd=JaBpN}iLU@e2f8G+T@psou42trDGXT~f=dy3zl_qc<*V>YMpBPGs+wxf-`u z?PvQGj$US|sWo3NdTo1q@rCiyi|Tt{MhCxt9e*#xdPCozwWYt9OeI}o76%`dGV0jj zX6v^m@VIcchuR}4RkLeP)I7chE|NW(eRN7)MEwfI3=hLCGXtZ{7d0j^ny<StOFLpa z)1Hgp+G`vdn{U2;v|)V;U&#u_HlHNE3Dz?Y?-F4sNoS0+*AFk;uf()0EhO6hLvUG6 zn3P?zp}`lmKC?_Me&bpj-B-77ew%Yux+_Cm(xmg=oLt@@rmjm&uYJTq%U4OP+Ihal zIsbBS`HKq08S$@urF;&*zwDxI&N9pQ&7oDBq>EbT)iHOcK2rTwprQO?#=(~L>Q+<s zS%s`fx4iyF^1W*JlkSVHXF8Z-S);BCyx!`O>a0;2bj>VzML<yrZ`ua`DN$A$uX;mn ze?GUp=~TS?3r4Fi@2;!8UC}5epv!psd6eVUi+wTyE(eTX)mNX{v!<h=w~Ir<BRnAT zYi4Lkkzx3H(GS-%3t1M_JzE<f@Mzw1#dzh16Bqp9ORXw=ll?-DY0HHj{0iY&Ru89b z+im6e@Wy$c3bn6$A`gCF$<d&{Siz!bW8G(#V$aY@pKlE6dt)B%NxQbuC9Hn=QdK^s z$jvsIKc=`&J;nQB@4br*uU74RnDF#icR1(oFn31#3<p*x&+?T^j@FtV%DDHO^~*f| zeHV*lmnzh&C-h7|x@Xa!_iI?^1XneLMujkoEWF5_ZggJj_0g=z!_r&xwwz3Od1k6X z{jYT~4%%1pi?vp2KYC)sHvbFb)%OB(=IAExzw~db>nw4x-reT;m64%8Gxl-J3dpJ# z-0xrD8EUzN?Tx3?PR+WfQ`p+BdekUw`qiYl@1n`o$483Ty`G+sX1R7-R9_(KVAcDI zUrOvo&F4dpd}OZ;?4KQzr`xx^Xa4Gc`&$h~zqXv*`g6ha)dnl%uO~}veVudnN%O}z zhTlG4UB9a6hw|Tkr0)1vR{bP9?{DebCq4C6hR2+GBb%5Ya{iTCdU5^+!Sh-Q>BZR_ z1kdNm#?}1{4cCp!sTNJ>yl}hww9(c7a$gqw$d!vOF821GdRFdswC#h58<zd+^Q)d# z`8TglE?AU#|1;;s(QS4NyRT;|T@oyEeYfn$VrJ>ukW$&lf=1UL&(>aKQ1QH#`@W;l z?Js&>xz9pk&a6x@yRf^(DT~8f|3SWZhw@JIq+LJ%h5cM^-SN%3v`w97*<tPcC~20| zrcItDhaSv%acYCZTnU~y;k%EEyC1XFe!azVCLv<WBkt47dCzs2ncfKP?7W!Q-1TCG z<LlN}s+YJ=us&b!^RI8!Z|jBGaT!OyA6HqOyKnPF;YGsx+~%*z6Z-mR>fhMeMZR@E zYr|_RZcBgK_hmQFx2{R=U3o)qWnIv{mHnYd<L5o~Uz-nRUgZAKu(dNV-*aE>vp=er zru_eMGU)8<JyYZsPGP(9m060lN^@yurn9D_=2E-B2a=UHTk;++WDU#mV$Yd0ZPRZ@ zkspC<#}`I@VwN#8)ZGvmoy2rlZQ0U<x=CU`BBL78Cgsil$shlFm2LmLd8_W4pTF{L z$HloqT*cGh?QcEQ!qij3TNZNEiup$xYv7J**W)k0xJqwH5caan7h783-!;$ZN9-3J zzg4e;PW=oFyz|jBu<K8B;HjO#-Nn<T?x@{*`aAxcbdJE$`0X8!*01mGlh~sx6*ki$ z^UC~=N7v&!S7}{UZ?yNcoqJnha!})=ztg)O323{%H;XWS%{KG4OD3<i%YD-unpT+~ zdRN@)5Mq>@DphZ#-sK;gl~i(#H{<me?OHQ~HR;X_?+#~Qm=(B)^;q$G>&3Z7JDf~% z&T{ik<z;;m-ye9BeaT&g?~Oszg%=%ISdbm%&3}<8Y-`5KReLY#ZTY$W+`THD+z+P} zjEaJ$^yGZzjkg!HUBIdm5Vd&EK9@&2sR6UDK3=rs#fBC6tznDiUH|n>{d>1xQ2C-O z*Chjg?N6IrvGKs2_bumzgU)Odd&%fF_2YM5yKhDkmsR-|a5wMU8+rE|Q@cqm%f9P- zu4`{$&$u?#sPB%xZmG2<*NR!c8A6NsuiB`-+J67npT8f41nzBOn6-7C7>7RB53&Be z2e@uBWv6yu=Fbq8ta)J@m~iF@kJ{D6i@u&TwSRs~JVY@w!m#?@KZT<^Paj!vDj<$C z@7k9gkHYtxtj`QQWt{U*kV`P@fWcY6xI2{%c^?CR@96RSdCD{D8JF+Nj0MuJnlI10 zhVJna{?UBp%S_p?p<bTrgx-FNW&XIC-{t$NfQ1asl^${>v-{t;r<6pc^7MXRts+0Q zDbKM;!2N*nY^K}AOBRR5M*aJz{5!O7S<Nb@7vaWc=?>ohp@K_|&RMJ5XiBxItte;f zFO~js);yS{@3h#4Pp;m_KQ7s2oUnR}!%^#<wwK<0jZ`g&U@I{)+vd<Hc2;Y;l!$9% zb&9}SE3b+Bb${u#A2klhSo`098&B>QUFVBNwqLcJ?!UOovg=3vUf*e}uM};Yx8%-= z^u0bkdd4q=WEUv8?p5-RoA}f(ROOcW;`ei!A2+&NA7#G$u!+}3@oPTY^Hp2st8F;< z{M6Jp+w{)V@AbW|wprfk^MjBFD-UF<r*CFnw2?WWSabExCBpAB3K*|ko!Y3E$r#nY zsE<wIR-o&%GnsBi(h(+s_m!o3!`*q885hUy)R2GhzR`Vg6!*K_Ma&63#S*TMWpmeC z8+W<cM?LZoV~{>ux3W@8uRy6_Lf`CD%>9~L54P-@lc8|+XbWEtTj(vTxs%SBeE+s! z>$N94XLh(%8JH{SWHbkSO?h0m{Ab6(_lpi#=Ksl+Dr@Z9Z_d$rLQ{?@>~u=(Gx?>7 zruAFeH>cfWzOby*PrAjCv1<G3thOBIvkOa{&+6Ws^e-sl(s^l_92L&Hs|0TSwR2_n zY1#J9HbH;!pM<+}(iJnhPfor1K;y|xDQ~BWr*9@@J(xCYf!kKoVEgaerLGoiTe~8& z&8O4+?U(2e)h_*)7`q?2aeP-{f4f)jtimH-1NPeQd(*S0g?#^MvefM0kxAO!eF?S^ zlV|Z=OKA7K_+*x3*+jv6yCOeJBxFxp_3iG5uBI}nH$qdRvzn)~?W%ivB4Ou>GWjci zQx-LfOWQ>KxNDU9rZ!aMMqbi+%N2PqUVl<bIO6<`h5rd_B<~k)oo!N;%IenV?=9Tt zzoP%=%D<K6e5LV6KYx2UOVnb8YuthBmzdm_u>PB{EigK3A#2x9UB{n0-Ttw!ncB?s z`cvDxxwQvX7v@&Q^Km_xcG2+Dr4(`B?`PW^9x^$<D-Kir!MOdT8~4R&i!5IHMefi4 zuux-z|8iEfB}a>^P4pOx9@*KZdI>j{|5~>2LhimyjW1Wf2<-W28$0i`^wroCvYWk2 zm*k!+d!l#CZaQzTPVw2*cb^JPKBFC-K11Wq^2FMA4g9R^ExVZQG}uGrc=DzlW^j#7 z-m%_Rq=uJkPnu9@{D+OMp=Skl9|@CvD=f?4qv4hi^nBv)x$8ady!|Cs(y7zGJELxK z@6A(vaS6LQyMt;cvK#2VO|q41Ve&RnW1M@5Y4uXpYaZNdri-ocke=tafOX&1HT*vg zE(tLHaw_k{!&m*Mw0Hjv+RBoVbYDKL^aAtEN!@V|rffOB)mJUbL3pE4!19^=3pyk0 z&nCsx8gGb?n&q0k>H7Y6Z+*SEYqWI>qM{x!-TlAhQk3i7qA5H7C~tP!{BG5g>TCB! zg5!Sncp0tlsrvHeTGO6$>|Q_aO4T%MRm@n;`ciG(>~lL*KidDBc+Pj017q}-KIRLb zUI-cJy`5qf)5sLR>MB#bC%4QrF^h-(oOP4MG6I}eXK>qWIj}?OY0I?61O}M^X{*)M zuWvB<sx4!^wUjmNRh;++N45iMl0Vc`R1@~|G%y=6EZQo6--BCbx><~h!(Xq>;t~_Z zBtj>%m0e+1Z;CiPP59yx{+9s{Ht@|oS1-OeP<(R3)>>JKbsPqayRP2(*czC5m`C>2 z*44$&r86Hg-=BO&_x#o3O)ftdZ+h?bKYMolw32cY@1RqYBBq_rNV~GS_T6ls7g`rv z&b@W!a4XK0s@C}b@@4#$4UKMhlagBQFAe)Xv5|AzfqDD4_q6()XbJprx1`i#b$rwk z*Q)}yubc00y%4_jj#=%s<A;Czd2TZOrQg}2K0#l3^KGk7ZQS8&QhQ=Y2<zj*DVLs@ zx<@wV&r{b9{~^v`%^TLa&NxD!>q|)c$>;YneXi{lQ=MYC!Owk)#nOy@s|35UJL?}5 zmey=}=K0`nkha>&zhRLJ*BvmH5{?yX_OPAYlwIzw*||Q%TJz!yk&ffDMHXc7%=jF< zr9Yi9^YnoUM>pA=dw=Xw{qp$bN2f_miCky&`Y`+ag8rlbB-0X>?mux|m8(QMw}Eq8 zm+AboY~6mUk2*8>%^vuwt%=-y`Oo*ZyHOkGxV9y5tW!5KmZ{lSZ2srphuNx!K1||c z_BcFM<SMiG+xwHWb_!bOOPy*kkLEA@f2LOJLz*jpfXvy<FH0txB(m7ptriqK|Lf_E z3C=4R-7g=EdBc8XVp7VpTaA_bdUv|$@w&)=I#d6rB2<hadbM)H*GPvN&Km-?$t99u z#e3za)xDaWz1(&C^^5++i*}2$tqH#|_3DNdwr$rcG~0j6ZPj*d3_ZoFaEp71X4VO* z1<Tjy-e~Ch?RZqlG-8VM#RrGhZQrLRyU*<(^P1kK9&P6-G5aoRp8RaKYv=0x#H~~6 z^tZ=OWHevtYrFQ0C%=H>rE4A<lT@zomY6(<kN+#~W*7GN`wYE+QikH%<5#5%7JCM7 zh><##R+=$oRluCH|2Mcw@H@*-t=8XRd#O0aU+AB9=$XlTHXI0BU-rV9e|~H1H>tx* zOZR)q<hzTQ|2>poRG_f-;7z|-b2^_VC#v3;4!@<#G&zSY!eH*n$Ktn_E=$e1nK~_P za<AHCwc9$EzWYwQS+Muq6VA!GYWB0{7`@zgDaUu7iR4_>d(2|*&#Srn^v#kn{(1C? zi$(mz&p#_CRZLkoS8d7bZ91{@=Bdc;+kag(EbQ5R<>|L8eXE>q9rsZ?Y<PWU?f1}Y zk+WZ%ue)uiIyr9grjv`+(tXOd+(<e9ByDr7;LZCow@xoNYn;2|!q?_R&iA*~-nX9r z+&8mlo5nhGpJP5>mY?tYmsr$4)pPpN+FwSYFWe?`PS!kq*k7$%=d8ESFW)$WpT|;e zEm?gO=2ly=_l%R9)#7K>q<&g^vixDqa?APi)jQo^-b!=Y<u^kE?AUvJYu@<H%-Qhi zUjC*#IoD?GN&D1z(sS}RvCCVdW^Q+joi=yz$tOXR#U_VMKB|_hR_(hjTK0|6&ec<s zpMQJnnppC7xvr~OYMi^tOY_6L4<Ac4t1Z{{uQ%Hr8=k@L8>VJH^N7CW`=vFV+pm3{ zn|S_B-sGSq$JrzeB>!}8-Q3@s!*%$FkM*t0?Qd2Dh8|t9Xho<<w`*;S*Q^^S^rSVr z6z@uyh%`@f>vDAt+_dnBdtgw|rcPB=)!v*XlO|0x3EHHg8M%7NiU|4hANO6aeE(Re ze#Y6|FW=j}|GDS+<9pWW?;5`zd}sFSW6J6+_3_NFzvU&EF1Ahml9+r@{~5QNd{4Es z(aZe4?%u;{XFpyoJi;&CwwGo0#k<B$=V#A4m%m{P=XcJW-M5-*k58_fX~Z?#;9qvv zk!uI_G(R10p1QXC(`?rH`hV})a=$h?F1}^&_t&>AoBTJ_UMP#$bws|r{`$db393ug z{y)gA(n;=1pOjR(q3VX>2IWNg1Je@z6t-)XZi{y<w?A9;hUa%(+1BDMXTKdXV_77( zJG9?6p)dcU^mUzATI*lCZ+m_E+Nv`@XQ}O%{IvOYPdwA<SGVTwS=aKeId_2puiBlJ zYBB0M%O5WO`&9LYW<=EXsU=anFJ^!FF|lNi;I+l2h1>t-6^6aPk!x)e5MKLMqx^o- zkH=S|&QIT6@uKu>{^4U^EDJvD4EX()=h07&wBr-A6STDq^bhp4$TEL^8@Mh(dYYs8 z%k@{5&-$C1^!*UqsXca4UHdq0PjT7rGwX-f(!jrMJG^|Xo<E3Se<OI~@v(ZDdjEq# zr|0~9tedJ~zlML?!6nfL?$1BSr{jLx?CF_@@8xdHK0Rk<S<`<1R^Cq6?e(<_OvDOf zw)21d>)rqLWR(2;_+s0s#>el6R7cN$$YTHHp?_=SmRZ+IUY#+GUmO>1`g)hl|HC=& zqve0>D2$IUs+z5*SrNN!-S_9=$3JE_z3upVvU-E{D{fc2zWWIWr#(AZx2*idx$x&N zv`!`1UtIHM$J5`nPB~HWkMdt<8>)St@PzTfrv+j;`)_4my0R(b);_(a>(cAZDlcyT zcc|v3c;Z2~C7WKZIJ0*8j6ZhkeipsFp1EtS<G#@BX?xtRN`6{Xy0r3p<>Xyb3-<gi zo>vnqmQZ%b+H<X{+}{SZwcC3o_s)wqs9XChX=?1F4_8y!zPi<OZacY$X_edS@HqGP zf9)1qq+B;&zkb5~f3L1N{;Swve(?4NrZt;6cFjrl4K@$FadLTW?=oAq$>xzif4sYp zE5=@WCcZ&;*0$C9JFoh0IY04eTHWR6%MbthP{LyN>Z?cYwHLQbMelu2s;jvcYWd5| z=dZ`kCi9E^GanypYuUbv_4X(C+$*8J$qvlD+L~Wieof}A4Y_W?xA1j?)}^ou{QS4R zK0kku?eoFcGoJl>UUKg0&ktt4>8rE;7%UIEeDk=>{}VrF-#?tw;H$Q0-i5Cw(@$GG ze(wKQDLC#$!usI9>nobdy~Rr`Z*Eh1fBnHRzpZ6ATCL(@m|uUZn;0ekhHvk@iGQn~ z#=RB1A$DW8-JkuxPN^+6vfIm49s7Cr(f0l?8=qF2Z>sqp$L{_AVm{-yy?^3f$v;1= zC40F^Jy^PwRocEj<5K(0gNqkGSU&Ii>#tA3?#d~=+?QnjI7?b*<?bey-KxDiY*w*q z|Cv_uv?%`2aZ#N|Q%uY3^3T62KX5R~D$?rtWxi`?<}yweE%;=cyX(rG_>6sW7vAUp zO1axo6O!F}lFR*M_J+LBeYdA=h|j*)Y;#J?V$Sv#Hms|iUi<EAQr$Y$bzfffKUIF= zN$hK_<I^`y3caLZ^zpgR9`l2L%qAsir@U>eQ~49TA@Rm$gMTVl{?u-lm%eNhH>+@} zy{g(9J&}3uKZd_t{F{&KzRz*X`3E<@Gvm50P-wF*eD(a@&o`!>iO!sNZC*}ad}?2O zdY^rA-~Nog^Rpgr^ezsMufEykoh<(Mr+eDptut4zdv|Wl{!QBDH>XaIy;>V-R{Sya z<{94C#XHX&-6^fN@8hjAPsP`tUs?TT(dqSX_wD$-zb)wd4cFJ}_wLyJ``CXOpTEiC zPuJ~zvq}43wn1tC-^=Q%+~SX%J~k{(JU8Xo)YL=yHZ}<_SDa=1EgqcGvUH)}pQD!; zH>qpAHhQ&g{|=oD)l*Mr?QWPpvA#9t^IXvn=S1qnx%STy%UaS=uDVX;Uay7k9_vEU zk8($@9;p_(F7RHITVLb<yYI<cS`KzvpX*g@J74lO_XktCe#VWvr%R>w9lU#9df(k% z+cx=v;*}2*%kQWEusn5t!?xuKS1S1b|6dZ*Qm^-4*sc8U#)Kcy*Y|Zzxmthk#r~Ze zZ@svhS6+PhcjIavc|JdBJHeRb9lSLi4<B}Xx$Qaqo2va1d;7e5&iYTMe_Lr^dfx3t zcwkLz+xiy!`R^G|oxe8sQT<0_!GFz9?9>0)tNpM1u;ttL9l!Wze%S9&@3Yh6v$fmD ze(8Ur|MDmN=b2jm<ivtHFV%Xt^7G5~E%?xxv|gU0_L+*#+Y2|(zLZt}^`lSklg#xW z!D=<uUt$lM{bO5P?lj-^&sDX5rfUD*DQ)PN-}OX&**|`#=bta;Jd(fm(d0wHo%}EQ z%7^*`encL=@A4zx^q0S2RkD)IeXYZO`HFi_7gQR4FQ2Pla-`_tZp}Ywj~*`het&Po z4lxn-_x$r1%r)g%pZ)O<sQKL1-~Az8>3`SULr;Ah*UnSiJMRnY<oe?;CvDib?#%1u zBHa4dKh2SyxSyxhe(sLT$JMWU&xy;l*l&6G^@Mv<A1GeF_xyzYOrGQ64AHiMZePRQ zzPeYLzTCQG`{a45d*^@YU2=Z%zTPj#idO9}imwkB;a>iw<_^cX=F6wbn|>dBdP?ul zqL=r-i*uV>$o^5;@$E^3+QL6YF8^;t$l2BVPT4PZ*e_po@9Zx&FPWF*tJKc;B6!Js zvYq2Elb5WQ#69AbY<KFc39p#;v&G{6tJlAKlO8Iqy&rziyz%j=_by+S`-<FWDLlXF z!_OHiwt<dsuWvrXeneN)ZXbVFtMRS6ZB5n(Oi$fjd~EZK`SEov|HO8jJi6}l={Xl4 zzcXb}Z+;w9Cti2(#p#9h?0z#pSnqlFNASXDMNWks_kLWjihXr@y8kifOUHSwYo~pw z35>Y^BJx*yVZ`~szvte)xooee7_;(grCJ5!oUk}<zc)huZ*zX-KTEkkPtVul+uP@C z2J`z3z3OM(I?VHO<J?Re(Ql6xUv6D8->*vh<=iFDJ>IL=HheL>WIi!Yp|<VI5xo$* z#CW?)*`D#9zqBsh_K5eb>ieR1soL|sa&5;Kb&vV#wbCzNKAm^>eZx1l?-pFAcF#GM zeE!ls&-rS59jr8#s2>Phpa1b~Wq;7aCEK3=R=V|BO8B4Ri|m8xM^yjoH_P8Ooi?j1 zD`5WAkbkj<{?;?Ue7n2#^KIQX$Kx+8_w-+WxT<v4Gv>+vLYykXFYk9h`}c@@NZs=9 z!T+Mmmj971t5Sb?cuD^xJI`NJ63y%HzIm?w!}{Cv_n$jHUyXQrxSsW|K|!;neQxL! zd#(FYi+69$%|7U>R#PteRlF--`K9xc{)u*eRgGUHFFp5|ufDgCf0w-Ax4(10)LokW zZOKQc8^`yH_bxxQ@Bbt_k6#imXM4O~we;h%X}7ow%TLYU|Hbc+=&gOP5A1y)^;GSH zKn4HP$p>a1I6d|Dfyoc<PC3thUgE#sho;W=RR#Q8&&yr5lW#lsH}lSy?feU>#WVNc z-lO;UX5hTff`2zBT`%}O*Zk{eOQru@cd~E2pS5@8eyOs4h3n1cH-5{0iWm6y_`F@o ze)eru)4s@n96iC#^Owj=?e9y!>Aktl{<8AY_DTCZs+`r<m^ZGq+bZ9CK4EqFm5YC+ zZoCrxefh7#jaREX{nvkaUcFxE;ohybay;jnw*K|1H~oBfqiTZj{k<>aY#95r=kw0J z9lp=#&c17bby2S~_pDg{`}N(LA6r!qrOw*#ebA=vxn_-gVVU_Xe^32@Ix$aqtA=CZ ziTC9^<}25-zwBf_T(x$?d;TTmGEXXPPu0urxEE;fzj^I{g^xX&|9e#v;^$wIKl5|n zW|o|D?=#sS{1TiKP-n5|pLtMKaNFFtguRMu&I^6N^!KDpVX)Gf??UzdcQ#FazOdtu zzG=XJs~OMyv+Of3g>(J>&3S3_lJZIO)b~#RQg}(-bG~YA-xt<L`?lzxzpUE#w`SW* zgDa;4tNxYRWqy3i{P+IG%6~$E^SjmdUSIH^;hp(s=j)1B;%e)b{8_@!@%wf4C3g>b z)!I2<I4>>t)Ss}=<rm+j+5Ag?y4?64e`)g){t0#-Rl6o0Yj?BSza(77?Ywsfd)fD| zu^NK+V$c6ie;`=UyWx!dvp@P%8qWThpyOK2zI=-I!PiXJzFo@vb3N?O-o0A_|5>&E z{p0XU<z?`a?dv#R%O<S;K51X$7s11&OY6_S*ZAo#VP|oup8Kb`#$Qk>yzll)=%uws zzWtnc{H?YB)%VW-;(3XCNj}J%5y3Nxm;E)F-gNdyVUbI%s%FjJbjkmo`Kq<NFC!19 zyDXWm{D05GVx>RTJ#~s-q7S&H+0`97V;=5YFLWny-gjNezj`meEBt9ptC3mysVDHC z+3b&(KCV(e^e?w<uATp{Ne`D#_;>z+uG(K;_e&L-KYV}eXU#MJcXIKI$|(=eKiF?> zk^iUqM18=G`|m-yCfxXI{D!OTyy}y7#VKm;pIG*9@e_O3kG_-V*;%bgKM<C$w0Gtg zo0qjq_=WnzZ+^VFQGR}~hC5@-`aS#=oH5JqaICxgSby3tqrdNesN9G-zx`3a&5is0 zS+y^-PJBx_@>OoCdYI6@|2a36ZRT&EWS4d0<?PPnrC;{k+T4@ABwx9<^UKwf8}7Y} zye0ke@sjo0+^^@(OZ}r>+x5k#G9v$r&ST}5m6x7(a4)Od?D??vYfU_J9Lsf$?@hs1 zKZa~g&h_WLy3h75_g>bR<u)wmnx<>+XLx7yZ}!2O{o5B>)$CjD`+G*i|KAVnF8`12 zTln$T2lfx~+;*OS?OE+P>Q1)gTTNTHz2)y;sh7%2o`(n3o9vN&d6zHF<mFa*_w&p) z-oGv8tqVU8Ca*B>_T}s0d(LdE|F=bE55u~Ud(v}OeEj~ry=nEqtEY}nbzS3b_;N1S zU&Vr3Q_^RAvQDZn{WG84T<X8(Cw+-?hyFVk?EM(8@L%=t^@IP@KeWE8m;bRxIBDfo zwLi~<GyZ(nd7Ca;TmLZf*7457+NB$=XV?6-4_B*cy7pZAflNjEQ}YA151d;|_kI3b z=<V{Cf998G3+>t7nLNGi_A|0PX-9qkk3T1WB>mWK^pI=5e5Cw}^+Fn&;(ivgZ@#>V z|EQk4dm6WQ1y4!ByYs<zwv};(LTj%Zy!pa*$zOf%*$-S^=U--P)Ubcld8+RHOW@<I zy?g!_K0WmE!SB-@pUSH0ciuDlIG6YT^n-_={n<Lt=kfH1-VgSR*(CjD{`uZuPW%7$ z4;&xgzwUHjf7^wxJ5T1<?@Ycg_b=hLj`MPkM+Q01SEaL;sds3wmCd_*_imE-v6byz z>x#O%y1F_`lad!Vb#)acm5Xag)CWB2`F^Lh@_p*Qw}(I9zB&8m%$qBt^EK~V+?8+r zfA>O9cz^T%rp=!#)=fO4-l?x-Cq3hL`zxXN?jK^0vYRje{HTB6>jCE%|F#zWf97T+ zFDx(m-^If1>1So{Cg1v*irU9sZ~A99``Z1@>09T#pY(;fH}yZy89R-A-9HXp`LAxF z@^Rgf{tTthj0V5iAH{e4SNJ#ihseXnt!LkBPq><V@BVz($0s*M+WJj5srzEf)^=6* z>CfOg|E`|;I?n6ovm&0`bMBA*<9|5r|5KIUdI{f{TNVq=*Nip_*FE(3Gt2CcfwE7` zInF&QzA))OlkdxF?)VKWGwYQPJUyUYX~*{Lla-&1^hfmrHv6^i`#d{+Hl^0#55vdg zBmL@eZO?rf@}K`(R9RFr@7bhzKR!N6e)PWMzmlD6jd+zj=e&DLmUUt?9>;zZ{CNF{ zy`VhLsmfG?--?giJMO#gFAomuzx?B?Dpy}q@sApznpv-|r+$z%cz?ZRh3&m&{=n)Q zHa_p)InIxJw|_{;x8wMiwQ~LCm*1BkZ%<>hnEe0W=f>xa+yS*WRDb?ec(3jkbN1tm z<HoI-HB%o%ne5Aa(2!Yk`QFAk>WiL#Z?xx-JMesV^r?R{6W7-qDHo6zd*5|m^<T%2 z89&q?)pMn5&5EhJ+No|Km;UK=KHm<#8y_n*^_resZ?c|nzp>lyNPB_dp(E9Q=kDo0 z8gl=fRl>^n(wDWd<p+%9ay|a7WEQ(W<xe`hj-AK9?aX5L+iJGuBz%-TA%2ogEuMAF zSIt=Mm*=BA>)m3czxy+YFaPz-tEOd#@}uyE`vHGuT-#LVZ6oqA_yA+q^{)=geLwx3 zdi%sL<E!#t^b;=c?{WV%{{Y|m|EGV;$DiNx|K?4hoNJS(H7=L__A6cM{o0!cLhiNe zJdO3P%a1+j@BGp6W9|`ofq$BBSC$wa4&SVL<IH~f=IqAZKmG{5Y2yCzhq;F3tG)Wu z>r1~)G~9jsY3+RRH9u{2_v^cU5*D{#wDt<W!SATIOZFUi)6S8<{EztAcZS>l%YFH$ zmCk<o_vt*#dRfz#mCwyzRDLb^A5q}EYX9t~-`zTQE7r|FvR}cT@n7!o5JvU2k@f#w z>NNkP8_Ykhbs_HB>P}%h6+5Rrk}uaXd|&Y8oyQ+`gZ1^bEc(yBF5$aWFCg#uOZdR# z;MqS;%ckyMy13{1?h}>L2EQN0F12Ua%-{81v2N;*t&bi*`dl*k*R9xZ+Yi2}{xadK zslo3OTh&^F-;9siJMu4kA4^X7#(reJSp4d8qkO%@SKp_;krV%N`*iJx%mT6b_nY*a zW#{j2e&101bB-1JD{hPR=PeJc^petJ(qqtjQmk6=b<(qcw;m{1%s#Js!1ln;+IL)X z{O8_&PAHIwX}E3v^}TRW#h?4lhaY@=&~RS*!0uNwKYuuWVD+n?a(@gSzJ6?D`?X#1 zSKOZl{=h%^1uS#UrL#NzKHe7c&$Zwx$C>BG?Gv`2<#(U3zH#-$2PgOJyBU2fdD1=U zkMc*%-za}wsdAqG;1|2y5udI%zLW1*-S;3tE9?K0<*WyO%#-m?{?}jNJMaIJ{x$3! z{oVdo!>^eic=NeKUw_}GAAFB?cgQQ&_53*cD7LoFzS3?+t^7ykBmQFcv3s=bl>RmU z(0|1JW%_&W8GlVbmS5qY@UO1nN8`zwna89*FR9ykNLu&nd*P+q*~8}_Ed5z+dE$rn z4leV9pD)e)R=YE$s9M|q<MzT(#y6L~=NwL$DKEJH(AB^V&L3B|ov1S@JhWfnzvmv~ zkZZ3Gym{S~uUyyjBl3}WclpuvqWc|dRwV|-A9%C6d%bF1&ySan`aAY3*tyok)VzFn z>0X=nKd+hJ|JzPT_`KJ%x3N%U&f(`W4=z7wIPZGkdWUx7{3(mxOaI`u*nD31Kw&}I z{M}7+FD1nBXFC12KQ%MqbL~u)XTRiy;xzX7R5T|V$1nVJgEwB<rtg;j!%NF*{0_cv zneS<5;B-#BXTrycKMWt~ck~O!AN`!yc>Ke^mmWXsFL+4a=U9H>{r?%4AIrqtGpYNL zs5w7&Qry$PqPV6X{ZIdC{M1<?@!M_Y*JVx*x*x>ZO=lOEo~vchaej8sw2$hAu}98J z>prgRtarG>_>uph;{JLmj(3(~uf6U3Po%z#SHDol|0n%}&OCmfDIYaAcK?|8z)56( z#G|{Nm*kG-3+(r<3Hej_arx2xg8v<BR(TfPlRUF;!;eRgPIs@@`8Vgsj34@sf{*MD ze)5|yZGYCPGvx=~%=YvC=4kNy=%d(=g&$WgJN;A5;P=T#kTUi75o_a=zrttiVrM@2 zI#F@+lRZatR^}I{)-#={bMg2jJn2tIf5(2EJrUOyAJX-y->(|pboSr9#1BaYR`bs{ z#TKN`U*9l4_)qc&?yh>?zA1*Em+DXZCcF6lckzE>JNVxpKQsB4jsLUtkJ>xx760}A z5cz0-bong(w}NN(?f7x&QE<!sfJ*kF>N^+o*C#!=bi@Db<6_qh)57P>Xa6rP^Wg6i zR-<|Ar|+?U-l4Cs=k%5Md>d6eojFb)=N47R%=s_x`1>$(k@}4_`DW*mE$f|M_HTVs zzuV@&#m5luKbfBtyY&U8edT)ODm4E?<*8YJ+#ZxKw4Lgoe(rbvvTs`te%jOaY0t?c zsXEX34+-tp()qjkN9>VppE|s19v(HC#~{rgH|fmASw(RZ@4YuW{W<I6U-{gpiZ9PA z-OKLe_x!{5Xz{ckXNBfxuKaR8;oH&H>zC^OWqSWws=80}Bdd2!z@zQE+wyPRo38!w zG>`q3Bk!Zse#Ykg*sE%{A?6qJs{5S#HalH&4)gdOuY3Qo=_UL1lRrw%*t<J$Uwpzh z{%t2JIM39bF*|&J!v4soXKG&X-!Of1ReZyI`|L`e`)aQpMdq{qy?R^t<m>pS<zByU zYQB~Y{8{&A^81gBlJ6UCw)c0iZ+>48^X>A%H|OVie7k<&O?*ea^1joahbt%kZxi*Y zoW@YDaP8CDq?h-r=S=xt9(3(<XLi&({*!-g{Uq};I^P$2ee%9@OXz=Fjrx!65A;@M z))o6*lRoENU*dQz`oNp!>8bTHXZF1_jjU(h+|SLwBH`5T<*N4QN+td8P55ar<FDW& z$7x^AO_b-Ymz&df%h~7BerFrjkL3sDEB?P)c4m6V;SPJ|XJ3vVPuZ)c_SUn;<&WjZ z=|}Aqw$<9ld;FOZZDh~3Ilt<5!I3cgeDA97JnOd~Ij^+;>Z7^8KmG6iy{S%ppTWmE z@2aD!b<>uJ3%$27s5vw#?m?r?|AjsC55Cdw?(dBM<8kl1^2z_gnd|*kYCjr&ytsVR zJ+8F)UpwcBGjEpHuiN$Gl>U=CgWvj(jQ39Y$S~tC<HzGG>n-LVPj3Hz-|63~r?sr{ zC%;d)am!9+-!<#Q+jU-EuT{VAopk%>et#kP3jN=@3EyImd>4=xl2_Z-%db@Q{~7<u z@A>ST&j)*+yIwo#dF`a{KV4tlwm<aFcHMf*zQ;e_hyPu+Y{g6Q$fe6xtPBgDkt;GY zDS~6M?+p#@F1L+=XHq*_6|bNDdnsa_^X4|Wyu(G65ji=@X%cD0HxI|e-Bh3NAAkIC z^8YV2HTR$YIrp^M`gwU>`i*JrxnbXrZQAD}TYvrG>Z`Y3zyE)xT<PpDvyC+(`!3nV z&#^4{clr1813%ACn?LvGS$)6y4QF50Z_u6pae1-L2Hp21r*_Zz#6Rbgs9)vA^Z)yu zn|tO*R@Iapn|Sko?VdI^+q(SIzu2zW+i&~IfBRF(<3zdFr%OHw_k90&LjL`e*S()@ zKJoh5S-RL>Q=ad&^Q?Nys^gVUCTnj0sq{G6=F?HXeU~a0x$nDm@_s-2mvX<#<-zx! zPN{!T@%2UH_03<aY`a&ke^xo?vhB9~*3J8Jk6r#Z_j!Ng&j_0ZwG#0UHr7nsT(k6} zYTWVjC;unhc{K6<qbJ79H~Rc<ObeI3|7zpDD)swM*5pt7xcA(r`t9>`Z2$d~dp-a8 zn*Dcw820~hQoo=1XNvp2(<k+f-+eiuU;atEH~i<_zsmcYr|p*t`Ten4?)Cj`lUJ_) z_T5`0tm;YfVw3%L8fK?ohu_-$>))3MySp{_`U>U#PTy?%^q6CR&DP2D7vK9=owoJ) zzwNU>?X|sDU%X}7^QtM^vwwd3x$k2}|DW(>dyXuw@#~o;|2nYlfWY(bn~sUf{d8US zC#V0@uh=bn?EG@(>-Sy!T)Fo6r=yN%w^vTtFI6&6zF)qguItg<&(jy|yPjOTJuvU{ zOJ(+|)JdOzKee56pPxV2{@KQVrxMTo>Y4xP#QL&NvDK^MzgWplx&3EP$X9K-pT9M? z|MW_)KfdJl-_-wCjO4@hKS%uU;aP5%$`=zazU`@~<+<Np8+G?z{^8tze)jVx;S%e= zomgM;$#Unb^?P3_KQ*i0|M9%s&-S^0__I8->~gL*zIX0F9NhE$*yCRJ$6SvW%g%qb z=6%ia@Ks;GKdVdsm$zSDVSnexMuw%IY(%#G%su8m`8&VVjPHrF`%U89?2esuxBkiU zc<YnkIW?OmpEvn8wPxMq^M#+1dmjH#+Hm2dxW&(p$8J9Hp8JPIJwDH-?@y-RzC$O& zrNbwzFaEUEudc07_h*{={U=Y>8|SIrfA!?K#ZT+r_e%EnPo6LS^!Awl#P<cCxaZa^ z|M>dJbgQ3w>if_92>xX2SGRL=eCD3kKT_)ZZ=I~qmJ##+TmH%3;%Dx$jZgksTYQzj zU9;q4!6!pMyIUvKCFDKrj-FJv{^|4B_{4LopEBz9$12o*I;qD$cye6&zRSKVC;baP zJw5jJiGT4YQNMk+cFeAsJ9&NSC*vM_#rtob%%1b7^qBO??N&c6{r>qqzHoQtf4{nU zlk?5*&8=yl9RK2pb?@er`lX*@{px0ZwD=S)8NcoM)4v+$eh8Zd)tdd}$oc&6#<S#J zeMR~APs)owtvptIQk<=_PMY`S>iRwL8(QC+Cm-bxl)HT5{o(Qh6^ipt{yku$8Q=5V z*slL&F~?_a8|$ghZ!h`dyhpL``OYKvAFoQ9r!UaXfA#-)^;z0e?tW0aR^K#b`2(SK z^}$DfKPZ*lRl`^}_jm70i?-K0gKTF1d?s*n9@m{ypXFI6tv{N)^ZxeT6>9gaBEElj zJ7c|M^71b;AAh#cds3@9HRzwryz?Jdis~O+8oH}~?+)`RZw1#MUH<X+Q{|M}`wz9A zb@OhjwST-l)kfa!-t+_Cg&&tzCkuc1`{Sa{e)V&y)#Z~v)!YeN_gwj%f}DK%@1Ucq zQ~n?M`d#AV#~l;CFP2l7H%Vc>e%=w`o$@m^^Ny`O{nK_!g_&K~@6h$#`G<D?`DgA} z!(YE=+Tp);AH8?9Jq}c<<F-%Q_Fwpq_3zsX_c~6y|5$3rQd9qEX-)iO-KP^f=h%PK zcbU_mZ*yJT*2jh`|H<E{mXAK!`Ct6I@|g6wi;s&1@0Hk`5AV)D()}}|<L|!eLWQR1 z^OyeN{9|)HSpUS&8oue%UVJ)Ta9VNAef_VD=6cuv#&&OC_WI+k9^<Hry1+fW(>MJ+ z`RInqE7SY=J_70wzV4Av+EAf#?zMf~nE?Jnf|j@Db$?uH5mdtzC%o$Ib03?%p4*o* zu3uPJr}%X<r#b)ixAVK-{@ls!{;}3~#+2=kw+Y053NNaecYIsj{w8Vn%<5`>cJ-|4 zI}PS(ufOFMPm|xm{x!XRZU0A$qg%EoT1@;Ls&kKDeCmfk5`7Q<-In<CaOIl#bN-rq z>#o1mKYlko>-UT{|JiGP*R#%(SW-Xrv9Y+m@!#urf2{a;%igB_^XIRB)*e{xck%N_ z<+urJkK3D6{(iqUxsd0$e#iP_yE`X;Jmy^b^KW7Pl55|E=7@c8J>Kbm<TLll(;uzb zjSqR$8{N2mB>pnft$*(hurL3xkNKlgPXGVY6^;R~)Aj53B%a!TK)GU`Rm`dF4@~B% zM=SPuEUb$;P@&{^<m~l~TEFA1d(PMF`5|C4>)TuvJGuM^|4uds?e{yV>d4nUr~j2* z{OMm$|6F_gGI7_w$Q$qcy}RP}A8l#*eXHOBhwT1ah05>u&rqDdT_oJ~#g7eQ_QyZ3 zI;{HN_+6d*>-F^#ulLUTsNC_<??(Qw=?j1SEdKI`_jqyT{TDJHE$*EC+jMnPz58Rq zEz|!lsWIC2JGe96aNW_s>94<?IkrE3!STgsBmdd`xh!{Ue(6K0cm1*|^XpyseiyIZ zc3<vP_|oj(vE7%Ae%i(D;q`z1eZ%P^d!%nq7hQJx`NMf^vhVv2%)h*^z2kHN%jd?b zk1Br{-V3js@YsGzLe1KD_pkBX6F2j|9`C>JgVf!9-USnWPi_7?<L^$Xa+W{;b?TYd zd0+orFFh|}+3oKc^Z74+EEBw!Yw>vD8T(xyg)ZCg??2CV@#9zNI~9|@nG3G$S)W{C zKhc6yTqL{Rl<E7N^^ZdZ>qVx2JI}tTM!4W@gyGMVKORmDntyYD<`2PV(;q+mW13(W z`^oy(y2JTLGwZ9=<z(0Xjb-oq>2dqB(4Lt;FJ3JAV}Bsn{@TZ{$u=)*f3*knTz`DC za@XJb569nMSswl5$NL#>wL8O3mmkbM{Php-@#xuG_gizhAI+=}=xa{<XUO|K?e!<| z#}8EQ&X+C-ZTlrx6EUMtp8w$t+tNQTj_kDDRh$37^XM+y)gMZX@Bb0oKljLQ=cRX! z%lFpAm(8v)ShsM$o{;*(ZRI6<{0?7z_NV`7ZgqCG&O77p_S4x7=7+cC{<am}?z7ak zWBJ31IoIoLKI{_QWuLoa;&XPf&i4mr{(WrywUTjO<nj0EOa6rJ`4Ka>e{cW&z6;-W zu-YH^drCBM#@o;D&;B{PWj)88qIuh{#}<B`S!HvnAhK`X{E0hmzlmpjR~={ObL)0t z1>@IDr~ftb>%A|3T*<fo;m^jRmHoyA4|V?Td0lw>;j7&rlHv|u)BC-dCEfIO%>&y# zSFW57{jpLjS6;dxamBXpYj<4zk}vpj&HVSylaK6vknjHLj~)B}gmvj$Ka_i)2j5b) z=hHX+eACG0l~3${$sML%=ksm-Y+SbgSNd~CYc2oTig){>{^vdIzr5+H{|EPncDwee z?l^oV{r<7ew0*mzem|*kee7R!Q||KrzfM1|Y~EV?c9!9Wf6FZHvAesx{3zFbyX@Mx z0wX=+x4XHHvzXlPFrV>ywszqkoxA&Q7jS>>)&H|;|GDS-hjz=X`+GL1=8D3%@K3fs z)PFs<K05z#<d*w-nfvV@9dNArQ{yAzRk1&7?UnVmAN+s6u9)8~?0@x}g_Qr3s;_Au z1uG^?#;ZNv>HPJ_{O;<i(z**BtDCB7P1v^w-#?UUS7|*j^H;ZfLCV%G_3z5}xAdPf zeXH61t#+r}`+iM%)3E2W?|-Y@v#tGr-IeJna-3rC8>46Xhj$o%nDz2jyj;`ILsmQg ze^!6sbnm=PWZ!j>ob&#?^K6fZ|IPjXqtE{NA9<C$gR0qE_nkfJefHDm!p=;6|3`Vh zKJ&9Z6u4y{SF`Eb^6MY@#53wQO5Of>GyI2b@PB5LE1~VLzuwK;q2~EIUro>G^WVQ8 zUNp=+pIkrVoWB3DP8<JkTPhwNywWfJrN-y1$@Bht-U`FFzm+uibFSx}`jcV)cZI(G zt54@2-&bJ!FaOcY+WYLM{<Zce{R>?5xxZh7f8K!_&sYDy|KMFazhqw7zJtI26zKex zR{L!&vVBTM^&R%>Gd>$i<)_t^_wEq!mt6h#X^M<R{PF*r3)?dDd3S7exZ5SXc+3Ae z?cQwJf9n>VmwaXZG5F`LfA)vN-z=HGo%Ou`g<qoc&Q=`xJI~8<pL4<GeYfsS`WTzG z&wxq4<J#|Z_AfuJY~x)kVp-pw)c@W8mp9EW#-sYgrGJT9PtWsQ{Z^oP?opMF%d6jC zEB+PfJpKGp<6XMR$!~T&)sIVR;+nqJxc|C$=&Viuu1orl?Vm}uJn@UHvwg>L_2WPD zIibsrSD)ZGb@t!#2Ugqm$DI0pbhc1wjn;u^{;QAw=WxB2Uh{Q(%O~wmTWiCTtoQHb zIRE7L*(<W!>hFbG9Qdg@{ptH-r@vqS^+Rae<8t<M#^0@X6>eF%-?k!WYTdu^9bNw( zReV&NW9s>Odw<*A<Y&&-5Ax5{XbFE`lVT(E{PC>AUu$H#>ZO(+e=Jdxx8_^9>5fv{ z+mEOJlfV7%PgP9Wgmv%p_8i#qzt!St&D{I@I&$l8_rCq{PjB9l&u_xL{}s=XU-k3- z+^5?gO$*#rZ@BXf|MTL2{}mm}c`yEz?qjabtd?n(4le!O{ZabntD--(0n^tXSsODy zM*aBXniylx>*c2FZhM};ZxeIm$6UR~-??|Jjp+C1_gi`8^>b5;@~!voNAxdu%lP}3 z_xi@Y%}1Kue$~96{m-!D?Z=zU*F#=?v==CsS@qbFQSbBbumAM?7XQ_KwO_u;yJ%*= z_irn1^Y&MNySxjhTh^OD-X;F!*ZXNq@7xXSCDngcYveEfd+vq2{KmcU|E2Pz*Bt*J zd?)MJ=d%@!GxgoyzWyv5xBC0{_D61)|37<}wk>_>4u*7t{rm?H-<Z$8>BpX$z4Pp6 zeVS*pcYj#B`QFuEKRVsn=yv;fYQ-y;DvteU{(t1URbO%A+qW9_xP)KFTP<`wkM~b6 zyt1=u&$P$sXMX-+N%y_>`9JTyA4|9WKWkAi^Ig8m!FRG>e>eN=F?4z^-dZtb=lxoq zeb>%BKX<_N{fj>f*!0ut$~OIQ%6T0w+-LZGbN<1(&wf2F{B!5ut$6)IYi;_!6#V}x z@a^Z<Kl^*D{jU9<8~@PV>1$Q8@;cM&n-hQb)Ia;BFJ=Dk=*`duhhUe7TX%2VApLre z-R|AOhR65bjm$62FTcCv{(T15qhUG*8v+aictYMB&<n}g$jmJArtkgPGryjl3wE4% z`{y&?eU+y9-~az-e7~Q0kHwSSm$v&h%=fpHFJbr~8&*?b@nHkwU$Y+}3Dx`Ge|1>@ zx#s!BAKV2t#ZO&+OE=hW{qk7w!DPF{I$Q78wl_{aXV!1}9iw`GKI8rTr@?hh_a4-x zKb$UZ^z(q;mtwa0?~@Lg&+YhnKJnAS1L_Cub)ru)f3TTWdyBPVqU?`-&zbJ$9sS(S ztY6Obyx5=J?px@*_c009b-N{gZ0>nH^L1nV&1p|R_vsy-Un9rQw10=tap~>`!{;>z zetq`~Ki++Q)}M3gTlVWN;BVW%pIJZk=lRO&j{ghu!$W@7JP6LN*_Zp^q0t)q+YIsB zjsDr$6x-hu{c%Pz%!cL8hCdHGekK1^m#Wb*_-Fimv*p~)EB;r>?2l#B>3?4FH!UIB z?j75^gZJJ<zO?@ED0|bsdcK+?ZF~N$Z<PPn{PgMd&X3O;7QIorxlf-nXTN+5W5u?k zmG;ui`}uzs@Z1ynQSDvN&uDkAE8hFTah)2r4}YaU{*2}LbEi=!emm3t9TJ}(2R=A- z>ArY_{)SH{*E6oS=6-(u9&=rV*|h2B8|$OHpT1{LD3^X`|DUa6ds*7wDE1rA{Mm0r zPJGWl+y6p2OI<SKvv`(2m*1Ru|8_$C&O?*7FLwB^``}wTv%QV=?bY0k;uU<~gCEPU zW7?<j@bezlAL2)}qou2VNPIAzue9HOeP?^)>7y3&YPo-`ZoWCMj;ZFEqt5&NzHidk z@xH9q)Q)3|llm0>aB73}`%gdDF#ZWS_3`Ml1Id3BcTHV?Q~t-TDSxjP9#Gd!eCpnK z{$}6%_tP)d+&0+%j$vO0>%IGvx7_PH{Eh!d)#><uOg3uor4Py}{;y5kTKB+v`i4i= z4_L3I{@$kk!HC=VF6+M1x^3)+ABsM2{%hHKOa0D2rU&Y4ey(Sz`|q&qKJ%ViuU^=9 z-{k+GovkoG`9(fMyu8tVJC=Qicdf7E-m_(@{D0<(yxaS7dH!yGbMe%H`)g1A+#|Lj zX6DDV1IP1@|G6VsvGlq{{3iJgo0aaLk6onC@jL&GE1S%tI@A3Jk2Akd-)nCzUlF_I z{+$c@taYij*N)$AOlR9OU%jDRs__5yhV3_|KK;B{?9JS#`gZJp?@f5Wem}$Q_tN6G zSl)hoFZkc8`yu;>;xL=df*-Or7wxN=X1Q^mXvLqkj`x$3r}fu1T)#W>ygJK2woltv zA5>@Fzn}H>_s|2@5uYlhKlp~(d=mI@<1br8-l>mu^?^qgYkq$0e8K-l%j1jk4X?xO z(!;DO+TUJxI`BK^_^)j;AH=Tx-jLjQ`s<8)Om(S>*Y?XcPXE{PeZTmJsjD~Eer=3@ z7x`(s*tX=OpN}{Ei|&2gY}{BLdA&-WVNa)M{v8gR(~dpwqd8ySpL9Romhacs`w4qL zOaEridHp;3z-iVFeV%`EKOTn9oWD7@?Z@NX8^+4~pBeY}zVB30p6|_g-q`%f(Jk?! zKj!3C?w`#NpM3Q7Zszm(FYhxR2-iFDdFg@OIj26=>i%)=+;XN<wBEt~+^6#AjF;z& z&rB7Q&HuAU?pOZlKf72;e%BS*79?9QyU$v4yhbN}Jwv{k{Qcwm80u2v^6K?}?A~(p z{!MfF=g+&c565}+`HQjGZh054&3ya4^EI}8ThINx`L=QT?cT?#^+|sue*Cy@Az%B2 z<*&+v*XN(SUwDpT9_t_NRW(W*{?;Cud*HRw{DM+Zd#2M{Bj?R$-L~JnQu0UcYrC(U zA2v_3`^U5Awwg@-+3l>4Cgw-jO=r;Se^OCq`e1U|qwlMwna*!C_`I06=AzA<^*5z{ zaB1(mBmN`z^u6~RHGbs(Jn!uI|J1K}X>4cnpO*KrZ~Iv;^<k~%>+h{w>Yn_cw&I=g zf%nnh=dw4<-}uX(*XFa<nsQFxdeI*(J=Z@Aez3{kRR2%thuZ7Eum40}`d;@&e;O;F zdyQN+b2(q~9?1_MfBbH&H>rq!@O|xjf2RlM`4TEEBzG9H*S{|{`=Fg|_+O8GUzzf= z|7Q>IN8i71%Tx1o)}DLY!`<sL^Xm5h5PI?D`D>+1?hp7I#b@-N|DK&N`~Ln*RbeT$ zGwW9u{(98%{@LdWwqM^b$E=w@JE!UM{HfnJ+uW+Ju~~1v<UQls&vu+&y8TkBn158A zw#((-b6;!5`5U|MHh9<EFZF(UzfpSg=ihyY8^6z-`}aQQfp@QM{$(Ecp8lqP?%J|K z{^_^dCZ4%2y(=+ha$vyc!#R6RzD)Z1%QML2>-rfN-^c{U?~l8^dYZ**F~3==?P>1< zp3Jl{DgSi%aENH@O8K^r3(xVG>$uEoSDL)e{_@Au4-1xQS;q;nKU|oq*7>G_`K2tM zQ()Rg<4JK7Q<QqTU05d0=ARS#w?2O9bkV9v38m?+5<51^pFH!jedFx2M?4&r*k*`^ z?u*`W$UD93&|CLQk}4DRAE}7NO*&~6#dRxt8qfc%7hgWduq29fIz3}utl=4?-g`&M zW7EP3g%i&{IVf7V{?J#x``R{MR=2&)LtDR|vWeE``u$q=RpslQHw$8Ybgxg%vyaJd zj@o=JV!gza!~d!lzuR^A>mwD9%=ARvpYeZ_z8qH8Kc%puvQOZ4j{dg0#oe*n1f%md z-{srQ_3($#bJ1t5XIu<L;#v%gw|o{Z%$V}!uE!6H_Lv<8{c%P<%8?%Xuf5$`by>Pm zzfj|jPI0<a9m@n}%_}RdJ^vfb(cZOv_KUngmMYP*?f>uPu3h$jzQUr@CT>>_a;O^5 zOXd?-)#vWMaQIX48Z94(C6_0=T1+wJcdLD$`|Td%np;)dYriLLIi0ur-QK@(eXpxc zoSw8vbeaVpn<ucfZ1+uv+()wW7DtJ@%#aQ2TzqxY?tj0;UTu{+w=h%U`a%b}>^6SA zlgd+krtdruwb+j3)W>$cvtHU~TcTRN$W|^<58lgPJ&Si%@`~pgwNBDsugtlA>aFU_ zGfQ-M9FHxLedO`ti$+PQu=A%P#?J3c_P!6h?e^C2O0Gq+amPgIR=c<6D=S|a9$UPD z^WLTPGa7{_E%MK4(Nru}*nFe6W0}thkx54{ecj!+%Fj^h*l~Tywli}R&#Qe9NcDN_ z;KX-4XQp&DbM>6E^KNUW^;X47mzr(3$o9JbqLo;bd{U5ZQ(pnY%_WQ5G<zmB@m#H+ zvAc2hPvbj2>yAeo9@bEnIIYZW8^RN-uv1x$UGdv27RDP6>=83FeM@ThuM)^hob_>% z_1UnyZYq0I^=b?3^fv`*PB;;Kee#Bmi#z<TTrc0ml<u`(_|^d<rp`iT4P!pDsd<d$ zliEsBjFa<|wrpF>BEMBs+~@pDXLGX+{%e|zjjEEjXo|1wsVxd^oh|FNPPybt#hpWv z2fdQ^N#;G|{nOGF_~@6)@uekwK1ESVofAGOYVe<4!QneojyJGjeWp<B#*{@1^gK_V z^ZI>YRau1CCy%8I{$Eg)cW_#Ep(tm`g<Xsn^$ultN$1?mOAMPidH<#zTOD_2FYfET zc7MUU9^I`@5u2u|%zWOrs3%&*h_7eYSHs0OHVCFATv^?}xNowP|AIReS}(t{E&TLk z-;!Aik0feMVV*SKQ(MX<XGV`oNd2-f(`m2eQm#7n_O)JHZ=Q4I#(|TzD|Bw&-uvy{ z*C^SI(|aCxX>HMuT)%eGLjiZwu<fQvEvu4dD=!WIcQq${N0Qu{8;8DkcK&wCpDfvD zboJha^U^UnMH`<^NDXMSnm*C!R$b7cw$~jecI;cVt{~XJXVv9*?TfBnJip~cfXuG; zHo49&@2s`QWp@c`8FX=09Qzwr+}u~}qUp`Cr|wechS0FkwzreFuAI_dENi^u?klUT zr?Vt>$gy2F-FJ;EIIN#bCE(erniPkud+QbUXxY?%3Eyh)wN9+>#9I-@NN;uRWMQTo z?)w{^54mMAUx|`mmokU(uGo=<A5JcQxm>~bL&CzMj=3K;Y0Ox&T|2RSi;~nFEz@%+ zv;wuYlJD{AoPBw1w(acbvxZW8rrZmArx2pMVXsKDq^oIh0{26OliWT|-DxhHtLyWR zXkXuS>D|==HysP9a^K^Z&U!qP@F{z5cB0;l_l3ZVS&illFQmMdyB-Lb^_sb47F&Sv z3>B%Eor)HDKd)z%Toy~dy6e06waEst=MR_cwORIB^xG=lr?sh{(m6huHU^y+F`o3M zVCF>OM`nA{AD3{Mn@eqXTzxHj%j-Maj27kf1ynp~o47zPgT*;m*Qq=!Vs64cf#b_W z8j>AXd<+$>b6cpsmP_Aair~q~ZadF7nFsAqy0Yu;wp-~UNt3JIx$TX7eWkkQ#<E4P zGs=A*8NLha<@cSea)|%ik~i%^F|(I+-O=n{;<HuFN7{4t$HPy3*q<H!qN~{wRChM0 zAuPX^+jOI!+t;e|ZoS*?@|)b2Hp#g)qs#RA_ROz-mzU*U*!uh76kV2?pHm+kQs%yQ zV~Um|TY8l3-3d-J{|j?&*R*#RD1Px^KAUOW#DaB}eY2E!oMvhohJI}A3F_MD<1^`T z!$VW8teLZaO;M41=4#nxxGDam!m)-)34Du0I@T3m56*L4(A$5nG0Vq|&3EMtMVZs9 zxw0lNJzKRqF0#Hh()^eVo275U&7yRJ=EketBA1qBaz6Ro5EQ-Qa#p`$bk~E4$1YUt z-_^UzSNiKLD~0#d8F$VT*=4q&+*IRtR5|;zz_)w>=0@MzZg@Og=W{kf%Vyhx2fbm5 z3rsg}U6!}`u}D=wRfhtP(3IGE7q^fVj4PZ2wI&r^>f>PA(WbHJ=|m@GE5p*C4X<}h z-?{(j<HHP-pRW998qV2Y_&CwVtAP7+0^8><-oAp%S9WAxIcRmmw9g<dH^r;uz=lkZ zZ9kSh<M?bM8!|IeM<d<&j?<nBm6XdS-@0^^j#=(1NpY}!Ea1p3(z7dd(iZ{7v+-M% zE}m4jHi+8)JcPH_q;QW`-z7%Tl@hAHA2`}GXP(^8l@+PAXYsL=`yX1;)yfxnTgp}1 zThCFbFh7*EQbap^eOJVep6h41RTCCJ(08&gN?xK-rQ7i~(8zm<)?~-izjq0mXO{2a zT*th4KikYk%hMs19OCo5*9y;62yboRY_e77Q0i#Aw^07YGRLT!uVUWnF11*=j`NwE zT+fsT0sAHMTyDE<mG+dm$<eUxWz}kDjTSD?*K?z`U(68-<_HdnyKy@w;&#r8+*bt} z#+Qpvr_GLba!-5Fd8Nu|?xmBViUF!x3Fjo`L=_xaCmy<^+ci^TW@@nF^dQ;G8{$=r zZ5&;_5-teGh3&9dd`5cNj$P*+c4<jI+7qy-Dd4i0aj@np&wsNPOU;zX7OKAeX4h5$ z6E&f9-&Oj53#PQ|_QV*wE)?3TalO<o_{ZXf`du3C(kFfeR^C`L$(z$O&@IElr^dCr z?~`M&>g6nrc8@YCPUR)}QX#e{)?{)0$u!+FqdtP$Qp?~Fzk!uyrG3Uid8rpoHcTR3 zQl5W%&IpUg+*Q#3y({3D=d<i20lAm#l^#nq9J3U^G_Q&|#>QEEcip53c3B?!JCpWw zZd-Tf#5$#&+kQ{{J$ub#w>$l_Z*Dy_r-gsp0jJ&+om8_xdC{2l#U*u4(+_E`jh&x; zwoT<`)w!j<a~<Uj_wMWY9~a*il{RD1)5eVxIo3IBN>{pVo_pij6kgx8JqrB6*SH@( zh|=BFv-N}D%d0&7zr_1yCY1i#=p!etePzqs27|5BW`E`qc>XffXJ%#1XSb!xw><u- z#-Cqgw&~sF?G-CR@3*sYOR{ht>XU2~@k~>4%3G}UAl`Mmtyvu3>L`unnX7zXg{5z2 zU9;I`!K2x~CvW;)pxl0FT|f6?KSQU^kgBQYgfj~*6o35HI{oeX(Q7V?1?NoP*Tp^e zsafM>hGjg0uB&d{;rim*7xz;?<nPo<@ifOBtY>vn=Jc=CG@5Ska(QcjAG4p!uELp* z-g;_kPG6tz_pPITrSsy|LU$`dsvLi6OEL5;7H~)@E66UA_Uu`jkh5?Pvu<=yoao-7 z5Uy00hfY^gMFkl)D$Vb_dG*+>*Zl16mWNzi+eEi`@$>YgE)iep*W6Ufbu{p;=n;;` zdkh}Ccu78<y3vkd{-<MES(mD#5=6N#OqN-9VwFYvrmu7Mm>8-!as6KAsJ>Em?THz) ztELJ^dn<bxM6PG))jij&*cN_V(Pz=>F4t8jL_eqBSYp+yWpi!4o&js_u{{PKkIwIn z_3kkV7STIqtm2{5;o+j9B9Xl3u^^Arp8H9`Rm-Z=tah!A3N=0EwPua$jT;^+IxZ0# zQxv}?C7!)>%*km@&GVY?S1fB+t9?}e{QdQ{wbkcs``_0*|8ge!^Sc|x;l70h1}8F} zJT|z$tE<!Cv7^@w5$OvPvmLiS_%wA+-SI=23&JWsDlXW$F<kSs=d5R0w}sNaD_q>Z z;6}uy|B<Cv7XJIVpewO?XR)l#QDvW_{C=(fmYtmF+;)#?wzGxCri%*#IcsIJ3$!z= z&#WygzTzlcEHz)fJ^H}s4nK<@+TyM~dCLx&-+#13kMl0`$t1DVW4>Sh?Dd$Wo)FyN zeOScOKTzvVQ`ABeX2%eA^*yU<WRDwU&ssIDrnDup#pSiLrOTZ9J6oc8&(3z~*J}IO z)BMClY*v_l)ZQbJ^Nw&m(tEt5ZVS&%=V?2QqcUw5U&#p9S9vcvsdk#Bqw?397mG{- zt&dEaIDf{g3%RG&Ke$}%e91CzdFKU9nK!O{i$eZtddD2g-e94tDckkxfN64URrk_+ ztXe&v!o7b-dC3^?mu+U{<`gbul~{0e?l<4f&fH8fF?D$rlX;B#b4+JmK7C0v)5B7V zS2OMESs$-bCA&r41*>}HRzJ<GUAps4mSxcGZh;(qo1N|w?@i>V&C77HSXjFF`?nJ| zHNuZR+}NG7vXx`aA(jiQJBl?n9=}%PyeC0z&uN!yX2(Kow}<#Vp2ydwb#2b((!CS! ztvSEy>71`Df-1u4cQ`LIz1Y$Hfb-ii&85Aw0`;#+vu?VYA$DSc=;7sO_S;ALOLJ7^ z+|~Iu@z^JUh12Gmv#l^*aPOr=2xra87_qa_+`h(Z)=zWQT)%K(dC`YsRrk(3>YSpN z?|pI7?u%ESn`m<RZtCY<@?;0|jOM<mM8!jSftPMw^HpxYx1H^Xrt!>#;IK-ki<KW` zw()Vtv~=9Ksy*Y#mg9+6G`@XJm{PLC#xOoh!oAzaA@K4xziB}(I`TFLJA2J;q?txq z&D8w#SGkZumsQx=N%&w;Pr&Ecucn<o8na*MtH0(dzgnUCY56Um=MVn1_#eFCWAVC+ zOLA|U-sM?IcX(cO9Xa-3?Z(93_Gd0OOl!j*G1|ygsBlP3HdlR?aYo!}@yE*V+oaSM z>mO{bEEKEhd2`E0IMZWtmhkL}XEdbUu4l|L@S0??SL(sT+^Lsxw7xCBH2++Mj^f4_ zXaD&X+O-Kj-FYha(5Ypon_qBxU*@=QMyPk&erwYWj-rPBD&0?3YERg_U2}ET9pz&; zBqpmK{%*tTyjg4)=c>sI0>94@FkSIiU~QzdNTv1D@?<3~OV01^rI&=4>ZB^{nALoM zZN{;L`bCC?>W^2dhv!;xvNzqWoaS03ep%aY`im{!?{J^*R%xHGM#D2LF|v7^kjM7S zo54wS><+&)mRjrPoK?~(e|2ec#j6O$N9z|(GclRTne}qo$qO!rQ)2T~e4RP0HMg!6 zu-=n;-O{x&uTEXW?4Fi%mG6?SM;Ca1%~sneRwm+o=0lMzTa($_#pmbl)w_T6X1~nm zALo3`lk^@u^JTi*$Tyk$TJ{XT8EO{uRoWMn-E!hj3%2HuKHC>`V3wj`$=BFqxp!}8 zH9Ygk3_hN5ab42lnhEB?CHYr57}koFcT9Gfyi<8;jI--~ee)|RtwDGGRP5Vq|Nd5D z-~58R?+*4ItGvrGXLe;jhwSaDyAO7pa;%D2|L30K0^9X_r7UNqb#mR%cb>(VR<u3I z(Q%zu?dfOf0<(8$y!}$M;oYuTdWNTOy}gik{oYoy1mSS5^RE&c_bf<S9&^Sx)3)(! zGOPXqo8^oWvkjs$FD1=r^u8jVbMuYJ7xRnmt2~qp+G}Jc{o3_fZQ&%lr`fvCwF_nP z@2aV%98vL|pz@-^A*@&KQ=>9(quRISt0O1XsGL>0_A%?@5^j%9&Ey%+Siiin`*X(m z#iyEo8$ZoFKJQfVn*yP!axL!4Op0vElhn`TB?TDnw(i)uwb?soR^7pOi>_`9^Wg28 z_3Om5eSA_jvtOC^c@=wqGfl1!{VR6vU&gX4+;v}qjlD&th^{g+pTVh~zcX#)$?p$U zU)KNla4JBjSLIotoE2xtnVF@xZU$_=U1+#`qI(&S+q^$JAEr$cw)tNbEVbSCr_!Az z8%m>?jm{`Cvrf%W5(p8P%rJ9-@{F55r~96pJ5fVwZ6&wz%xP1;WVpS1CG}Bny7bJK zGc;YaO&+*r?DFT*FNo+#TeYp)-)3FZY~v=Gq_d)H+f}dLbP-My&=M(`8ae6TG|jN) zgU3G~j+=Tvr%{cc`Alx}!drS_E`q$<FGqdU<vQ}$QeutQ?q01UUl*U;a5H>be#fz- zEejaxG9BI}*uI@5yIyLBl(lrFm)P0&H!@hSgk_uYd{W`*Kh4DR&`kE=HfPI9^|dz+ zuIZBA{k>$t+!gZ!StE7*HVJERZsgP}(mS_s`_tlIL49=|w+q_unIzohyL`7c+g;r( z(R=5YS4H^;b%j>Xn3C6fOC?-VK{#N~tdP&mO>MIy@2&~-{i@ab`^y^(Z{yuU-*eW! z`?_rBw2Z~`VvZ*q@>X(}^;ppJJL9=~hVhwCyDe%Kmp2x-31pZDteT~u&``TFdETx5 z*J{4v;Ztt$>pN&{v;Df9msh7(^7_i2gZza%uTFTd%sP7AF5!7gRu!K!KUJgjCsAoN zOZx4f+c}PPt6N^tS-5$szNG!KPd9v5+?{ep$u)v~+OHXJi_UH73cY(^ontY7uz;`K zl9|_U2!y>^lQTKy)k{~6zicPc<h(cZSB3<57wn#;#@f4mne1fI&t)gAB38d}ogbC1 z@jS70!92}4iKeS7#M6qc8`U{?ZZT2j-G4sCl*jbYp98`xQkwFgc+H<T<<h!9GsU>s zU8;(KJ8w7t+>>I?WNsoZm!=w<r2Z%^UH9GwOIbt9OiunPW5&OkSK|3iw>(~~A#3gW z=lo7#`NXv%j61W>OsdPuSo87djP5T{`cj#Pj-SxXEa9DV-u8bJo8N6SvCT)$+;Ls~ z&#P>?0q^dp?INjXvQ}N$Ftc&K;Eh>t=E%ykPVnrC`C~WBU2u{@%r@bxdFI>aF)b*a z%2RPpHB(`OTg4WpvoGVSrwW^|Jh<Vo-o=E)5B6T#a**jmhQ;-o(j#G#;i7MUDk*h+ zHD6r6wdbwjnro$zCT+*n{;(+<1^?-Eh~>Qb)Ohl{ADl<aS$9w5;x==QSGco)&t>)% z>+@1&-JR#2{(R`xEw$z7lhSro-bscx8t=S$R=27$;@Xnv_6zPFPdK;bJPr6fOK`U9 z0*OT#x8<`mqmEm4oaTI0eBHr%)6w@cq}k49yUow>(YSO}Yi;9i;q<o16&sg1Z?6;= zKRM%ULKWAtCAv@LT*CE>dHOTuU#tsSy?m170ejs~yLw(|CT-b%_x`lh?#h=2Gxn@n zuWQCGq+{d6zk`{tEP?&k9pyEJM=C`<U6r*DPxRVw=Iw#I(--;cbee}Zh;9~n{?Dgl z-U+Mbb7vk_eyvY?wR8QZ-w{_&sb~gEeoI$UNc>oFX=7Ksn*J1XHqqI0UAGlpUFB?Y z)p^~uZI9j=1Rbutq|udh_ie#MoqmCNlG|b?e|qfdwK_q6VqljlN7l6YXE>HTJUOk? z$aMc#ffL>7&+^ZU`AxA{{N~B;7v*pFl&r5)SgPY5@#D&qv#bJZ8TNTkbV>bs>2S5a z&EJ@xhnV^8K5kg}zd5<&n&Sf9kh6ES?!EZ-iuKbHft6=xF06U{+%w)Nj_0(@T;{G# zp~2y;mR(%Ic`eu8N$jeR(JycfV@x=c>h-AXam>2gOz---SNAQDIVJXI{>`sz_s)Bx zl65E2(1}-Q`ldZE|9sfc;Tu2AU?$^Hw@$S@Njv>V#ilFTza3fNX6@p0fa$`{SfPAV z-`@pl&Nn{pbj*0Wgj?6N$lvHt7f&;bZ{>uG7xsU(`}1vv+su82#dDdQd%rx|QGIph zA#uTwYr-<oZx=k(6O4HEfY<WC+c%+nt+V%>*PU|drAZGfhhwc~hJUp4U+;|N&t`6z zo3XWDH}LDXa}PMWp0eeg-=o=_`u=&N<$^0*iV5emg7+>eny&puqta2?opWU@*Y+98 zCR!Gycb-|g<v2Y$x*}ftc0iTve7hvp)Fzi3ZqAo#B~%?7lMlwETq}DKq;Nl<Pb9Nr z>*eDoPJTFE;8Mh(b!A=nnO8R^6x|AUTl4wm`N>k*?O&3vzPhfx_xR~6mp3laUUT({ z(1*thS7kY$ugblDHnaZslXZtwcFxoi_B^`gPLIzD5#fa$606c%8Ll5(XukE*%jRk8 z(iQgH$n&4JA;+eSSHAzP<o?O~*X9P@_SM}Lnq&Xr&g9!s`bVG7(|+{X=KPIkKT1XS z=?5lVDf{;Jd=AU{SBsa~+aBZ%l)iOsy>4#yhg~!G-&5TCh<jbZB}KkBhYuAp?l}@v z^TF)&pGPcjEvKJ*KKbw8v~Owuy&{)gi*r)>_C=t2180i(w<~%X8*BgRi~qe}AO7Gu z&!0Jmr;EQ{{iA%#<;PbG??_6t$1{CBZE5#m&zFi=sdBZtx}*1h{r(#BXYQix?t?pI z`=a-Tf5^|dQ*e3aubVS(*1q@qoV#@Y(OT_e59OM_+MX)h_GNY0_dL=2{XNyDy_VY_ z+@JJY&bYqpd_nE{pS54h*Z3RWZ&m)hSNz@XLp$dF-gZbs{HeQHU-*2hcb6^RJ-U3n zcILHROTRy@tKXZjqd)(UX}{gHYvuO}<nKRwU7b>Mr{7F%?fZYr&5p-Tm8*YtE9~39 zzxug9ceYyAd7m%8^g6lcw@sh7ef^8Y|98K5y7tlT-{&RHd@nb9x4i$nmRwvO@3Gv6 zo-*YRZ$20OUuPI|U-jmW&-<+U_a|sg{v0YH^1bk8`EybEyT*5pf4x}~|GzZu<Ef?2 zmiK4g|NiH5ce%b@@rHeSbME|}9v|=~#_G=T%{O<v&)c&g;=;eT`&Ql8PY$@UBYT^^ zM&0@IXLIjdFTc!sbiTaE(Ww>x4qDE6pY&%=e9pP==lR7&=D+DZVJZDxvCi;sb~?}T zzw80t%q$|z3=A9$F?n?%r>4mK{hq?ia7TxSL7stup*S<QASYF~IJKm-K;PdeJ}<u{ zzC6DuJ2Nj`FEuCa&B@)lOpYS04~;ASPI!}`y}?}NR)@gNiLyIIn5-74dM)6ITEPA6 z6UU2(zn9c6*_r<R_y6lrr|&AAzViNx(Yi@Ir~9q!)*Ge1xE*eneSh6^*K5VntGBCM zEm-^Qw{_U;olC3s-p#grvU2*$`^W#5U#h;b-G2Hqt-Bv>D|fzSARnZc^_tkMT3z+7 zI)7TqCLf_`k&`~8#W6K<s;X>B3V!-@Z^6u&)2FT7v|69@k;=Bx1G+o-SVTFrR2D>L zxE@@)!=<DkJ4dJVXlh#sFH7l_S0UM@Q?BW#NS>cN(_zKw=ga5Mudn!-_iWwsdDZ83 zKA%(lZtvf_|MKd$@4tQj?fY-#zjvc^|MKrE*!oOp`-{7b=Sl<KUTZInemw1%wMoI( z7jv?+l?zqx*uJ*0+wHgEnV+E0*W@|BR~V@$mE0_MOgcK_ui~MiMY+?NPfv|Vt7m(& zGpA?AnNt;04i+h~6y#o&wOc-YNrG+nV!x#cB7Ga>KGzf*={_-B(ZI1r^NZNeGgklS zUNHUa_*u&C&Sk9*mz{EoKk9W(@fRfC*1Ns#$&2_&+uC#Z3z-?_@GzJ$2s8Z8D%i<5 z@A#(ZmSBeiS#^9#2Cu6h@BDp_Ymq`<(rs3s`$xX?)=%7LtNlOLN8Ir5ga30Lyx#mz z=+=x<)tbNh=jHCi*0XQ4Ysh3}zqWX}Y@tA`hxg<1Z;HBWv&AYD8AMMn+L``oAAk2w zj>iWpWGWxC3no30K0f8-io4|nXMLL1`yV}7eo}bvsjmwkNU@a*INaIEb>tCyr>KK~ z;nL4xXEwLQ7xW(G?p)u0aF%_naSPjd*6R!@6#|@(BG$7dUCY`~*TtT_MQ+V(bH<)l z_Ln!3pB<N5c+j-z`hv*AZ@J_JO+Gj*sqQUpID1m4IseP7n#exB*X5u0XK!w+y;gti zyp)-#NA81@U25+2b4(KC^^__E`;T|3u&!l3T(m3xjK`WBw+{*`^A)cuTmJgHq%>i| zrf;in^naarcW%u3#lnU%ONwvyTx5EiI7?>lG?sAov&&iUIn^&bJnP4m3O_b^?`PuA z3pponi>=ozw8`|cnJkiM=y1qNO~uZt?Mma!{*zC6dd0RkUzHLQ>b<VZJ13f}A={fl zrTEdk*Fg=%&8w|L7hV5(WZFtYK?}RWR4$j-2Uc1;&QXp$%#y?2D)rpaZF=QQqv@LJ zhwd*DXgm5@saS>4qtbk<t`*CbWkKNw$~K7oo}hm9(mSh2!xQr1>s+-RD&A=L@=W;j z(c%${%M+pbJI`f{=hP~^?2oVh%D#r#=m1xowWsuJen!u$tk*YKEuPOWv;6GWoS5xX zz4yGfnz&7S(!53aMmv2bG$lq<{JHx6rTncFi#)B_n=PNmJ=`H!|GU9H@4)@H(K{c@ z{F_vL&SB}_mtsYKf^N4JUpV>uZ0G0ey?+lj>d)%<D)~fkV!-zw-Cs(KoWmDH@0BzC z$^B)*X?9n}ZX?OWKhAQeCmb+2F-hV7%UPydp4+_F=W0kdnsjXMBnK__Jip=>3$w2^ zzueXROucM|iqfs8&6`5gLXwR7K1sW2yuVv)_kQ0j=>WZ1^S8`Ab^d~SxqxQ4o%U^q zDXK?hau-dC5=pUL_2s+LlZ}kp94nF~|7`rg|5B=|rA=Z_bM?91@7D4-q)NrD53>9- z<>nKkJ(n`nQ&~R=?hJ|)Fx<%(_}F`MlK;%eTIRFumY>w0R42>~5>UJvdn#T}Ffi;= z_Q}IrWn6XyOthcWZ1Z+uGV|0`qG2rmCH%imuvuAVwrFP4bAG{M^Z63Kd_ir|6CQra zi%D)SDem>?&%fz2Dc0;-*$LM!%S)@n*e`ET`Fpn~kJ(f&?(yHI>HZ;Vk}?Lu*$k6A zPQD3$Xdzo-9XM^)YirMmQbpoI?R<H0+y{kU2mRq{{IiEANvTFY*0<iz{Bp#Oz57Lq ze(@A^OgiT-vg6CO2;VsQz1_?!xwc)JbMMcQzbB*KGFo_+-#UNb+^=U1oVTWmI?rQO ze!ffd<DJUN0Ir?CJC<y^xoYeA1J~B>6%kwCJ1I_cLu1aA<h*v7N!yb7+t&qbdUEdc z!bs&+5Aql?wQJYTn;$XZj>q;j>Pq+P{kxXQFHJApz9jup>7$?THnbVnX<KQ0w3v7B z@jE-&f(0hap5IbCzGQas)8F>YbFcJQ7w$c?dvj{L-yNy9Q!gvab?0ZE^#4;ZD`eu- z;EVpprtf0${UAMI+xt2576waS+N#?f(f{E6<RB%VQ**y>{cgX1Y0SgL0g*CKe+x5z zzTUKZ8*9vk(A!A@lNZ09d_C@e=2n-DZcags_157_#2@JG`u0mm)&AGkun&K@Oe1yX zb$?b_*1JxozHi#=tzqiZKXa!3vfc4|(^egw-wpnEYK8lQ6}EqEUX#A`W96wi$4<8W zTvgC_<KB7IYkr?PpH2=)?9}<H_f`18!la!A3z>5#x(Cnx@o!b5D(~{R)2e#@LglPp z`Jb7O7)w6A%WbItb9dZvuNcX~gM}ycD|t;-7%vyxX_$53X?dk*Qq8HQJKxQ{&k(y~ zaxBxjFR!++ALv!~+fe$yBI=OPg9_nkbrp+Kj$PWme6y)eX`^?Oj*k62DNc(^9ZU87 z>-FqBZdyHTTs`NrH$%?d?+>b08ywtpAdI8XXpK!IPxFs%*(YoB4FspWI;eZlG)Lz2 z?dwZFE0!DNwCri)E!ee`<=G>@Ssi{mbZ#kbP~2Z{G*ve;c2V9J@7`&*uD@9RHMTca zw`@wgNB102msqJ&7i_q5Bd4w3z0#rO$gwBMLWQ%XI$nprj<7Vpsh8V+dHq(tB_Hd~ zv4pi18`x}Lq++!Hkle;l3uU$q``?tF(tcg>(s8K^-_)NRlfuttRmjd+c>8V6bg`nc zyKinSbAI&uvEvr5`VQxx?;pqfH2(M{&UeAO`Ru9hSSPIB`rZ01|N9LG_T0)nb<E0m zM(p{U3K#ADCiDrtn-F(2T-}LRhw(>1kxBlnlWLPi(>7YzzxVCSo00URZqmsK@-At+ zSsDyNMBFA=KTSzAKO1%W=!v=3XCo)Jo^nYs)F@F^aeqH6sZ`(P^0w?Wn`Uo;EPkid zR1RqYcP1Y@9iiFpp9a_1^VIxz{rl7Bzerr%z4M`}?z}U1*`ImvI&~}mk`KOz)e<iB z-1}C?Hg|eNwq0}ITg#i7Kg^HE&YC0nz1KnM&cv-Vzg?<%sp9*3kJ_$@LWW{`ld50z zZ_<BOe)(sS`@e@danGLcfBAm#&bhQ*jb=}tKl?jDIHkG9ZoS7tC8@X5zCW~((<v&O zp7!kN8oln7`u|m)F6=Bj`ApASOn>&SEjqK;1UiT3&HuRK!qN+Gr~DWA?pVas$Ngff zjm_Np?zGhocP!6FT^08@ZM2|1J$2i|1M@!bjLL6d&-Rsf+4d%wXJXF(K-KDwzvi(< zzpR-rmYy+_aoC+88}ZI4gKfWHX_v*x1RkLcb@G=5TlSxGS|j-9tZU`Fz@F(vf68~y zI48LJr^~gJzH5v36mX{J+%LAfoxk>#i_f>E3fq-a+}zo^4{Dq{kXUe2CNxpQ{>uEP zX?Bu7Rpy-VcTtNx`N5O%^ZnUZmV`+yaCLkbyz|{3mxn4IhZaxIk^c7YRb5c>w;tEc z0m`l_%MAtfcx$@%E&MWZm$^nLxA)UZsVQ@pd^WkfsOHOZg*~h7(w<#(n=w(SHu`Rn zI?u`OgL=li*^PQP8NY`_28rn@X<o@JVcT$D?8Af(ju-W7HP-&AbSo<Kzbd%Xhfy#^ zY4(=C8JC@cf@|e(dEI<_fi+iPr@$lj&okGGuyvmKmHPAc#dW9ho>hvnvn}+L)0wT@ zen+|>WaBv-)4lun_HLN@&&DaSG%KMoWAeo1JZ)l!tk!N>?zjHG-T@&YL6zO7*i9^t zr~2R2p6&JJffU=}DU#>eH~B<AbzFJgU^n|C)%%y+J-$BtmnyG!mHl6;yxrCIKeh74 zkIwx%ki;Cd#V+Tu%Dk=jPV^s@yjQbqz6{4q30B6}Ju|Jg1wGm&`t6NjR)fOYI2*O@ zoT;mq+*}-I(r-9rrn-{hzVO!aDf8ADJM1fOFKU=|L~Etfv?l_84({<6Q~Z6edeyAg z&IN3*u35j`;L_1@=ZyEJ*P+bKGw)Q)Iq5O0|4i2c4$0O7+-ZBiIK)of5iIz`@}5Xa z%P#+Q4Nbq_t-RG~V9)&f+IyE7t(r56L#E3Wic4`b-`wYSV~1Y&nNN(j(jJ|1z5Q|d z>x@*Rz4PXp%1=JME5^oq_RRKtp`%x1%uZzOSgysAviIg~cJ>SZ=lAX`6??|h*0;f8 zM}k@BwJRCt>iOTznz!Zscm7Jv^N*I+G*5Tw+Hw1-Q*wB4_+#In+ZTWN{nRns(e2k; z&6nmLC+u4cmH%(D7W~H<>#b?)<$QHw(HGCd@w=_JaHs@b^PDbq-<74Oeuv`u>)P^% z;`+^OZ{6Vj_p9l^-B)>);<0+-FVgOdesRAZyymKBZ;qI)zk9cF)#SIyX5y25vn|5P z+Qcuq+0INcdXQneE-p9e`KGHcZr^LaW!Dx{Q*Qr~rCk54b$0gVZ%^&-_+~Txxv0I{ z<7?R8Q|ov|rv0dQyCXe?_iOBw9io-Y#}n%X`Y&Esl)HYr-prmK8q>r-UwpOqwKxCu z(jxKj`+|w;3v;esJaIgWY47@W)xH-~*ILWv=-Ebo|6&<&%01=RNz<mTpQr5IZoFK! zcT0Pf=Kb)^w+p&?KLn<8zr0&v@5uf2^so18|2Z#FD^NW5HD$GZNAnfu`EHV)Ef>Sn zzj0sxe6Q|Os%<vQKZ){<9}=UbJ!DHN7rZzuUOrK3e_i4AvMdWOxgERokDY73{kmFn zVo0U6dP(CI-<^6-tQ&4PhjOJp5L{F<e{=8K*^^}y*!<Vr6AaXN`TF)mtLT*hX_+lc zzq^JxrJ0IaUVO^9I=XtU^G3JCmq*r2+wZbqlg+7Xf~)s$s47gUeDM3@gpxw;>#Xxc zU+6z~bF4}FD!;hRPVm6z-x-D+8=o@TUyTc2qT>|tSih;%l1cPw;5vSrr4zN6Jz73T z?RbCck_8K|3!2<@a$d1RU~P;3k=A{azZ@<MT4wv>vPH+V_H)Mz&w4oWX<qbAE}Zmh zuatR4GhgV<p!7*8OQWA&WV#(>_42Z|LrVHBNlvo^2{#m;EvTtYKg983mE(zd^M5>= z!DU+#zn7CoPyeicP1Txf7rj+=U7Byy1?|kf@$|HRP0E^m5lds<W-d+RSh94*!+CeN zswiB^nbJG+^91(u8qzN}_iBAL$t+phzJHG%>-z&YG&4DEHtVU_e*U#R{QBwCLuGez zQ!S5LO^o9T{qSbppCj`&&i;L{W%JfYIrsba|7w#Du-WEyvi$=4ZpXZ8cFohO*P3U% zGK~Ct@I&2kw^ZqMb<LMnFNzO%d!cyi9kzBmaX)ssFx#cV7h_Xn6m}lk@ca1gXD`lv zms#U^@AKnl!e{;0diTBaV`G<?n>PRNPlk@eyAula-f=}g5V&&kW}H&Hi{;Yo)uoU2 zZPMPc?A%k1AF21I>ps4xSY{gipZipqEV}^DbA~DMFU;$;*7NT2@D%)@e&@hk1$m#o zceBNQ&5WPtG55LiL+8KT2db{!R8!z@*?hM|PUM@|*OMmVEk`btPW==s^|Wu&I@N%~ zOm3=Yr0c$xgw?;A(s$+8^8yF07ruu%{|j4e-TWY=_5R)be<hXDQx0;zv#{*5$~e_v zcXogC^W6e=?H^7CzF5^36~W`vK6mCW&e{q8tSij^Ia@4@ejsu2eX`a3le>9bQa?7o zyx0~J<9BSwMb9an+kZOpv_<B;UDR3qYR$<{Aq58(J^isi@$!_lrDE&(m$_$8O8329 zmvg13u7~A{xmIuKk~8d0*O&VBPgAd#p3i&w!y-$|IUny@D8K%E{+9dl%Ww6MsY(}~ zymo0u%2I=if|H-upE<|8*)Xvp$Hz{1e&a!Qon2BFzI=0NuTv}td>*aSD;~Ag?O&;E zZ_fH?rakLeL-s0PSQpO|b3s?PX7RP6g)0}g=BK^2)ytl7xx&V>u+!X^|C0WrTYOIz z|L@+vXFqdvW$*FHR?}~oo_)2p@}-&5*3%mzIzCjqI^I&%`ggw^|6i`858fTE27=$~ zz9i3SRI2pOtiD^I_3r4cpvNY&`#6t3{4d_`e52)H%HNIu=FgSoN^^bi$+&h-^rt_u zT%BJuEHCD))lcxR{HfD;yTP#Gi|3&i^(RtYPKiC<rMB!8hl@mvn09)$h;jCj$Zv^X zyoy;8JgcV7IdfBSiz@HMh3}m!)Ye8Dx=r(R`(Nii{Zjb!Palt*{E@Sxe{Dkg#j{_Y zOa5+4Kau>IG5y7j;(rSxUo(7Xj(We$Z_BlUr!{ZtGIqZI_scjS*WSzed(>)~gR!@E zFVx>qo6Y~WSnqQPzxoxK>D%q}3*VdMb)R@X;h9~P&)yy1v%4yPY~9#<p}lZZ_O^$6 z<HO$V&S78t`-56U(c4oEGlH4sc(q0?FK)k?*?6Kl`L(I%TaMf%vb$fuh<f`W?^5<f z{<gX;zc<7QWnZWYbAF<0==(VAPO5m8eBnF8`>l)RI<8(cz13e9?Nk~yaaC(r_LA+& zQ>O5}mfbDtrP5y2^XsMeME={??muxh{j`wzWm)#0)sGi6Y-rzH?A4`RbMY<P^E>_4 z|Ff!@&wal1LTJ4&@7&)NcNWjpTDM8@TAyym*Gm~Q(}MjkeJjqG?zQfwo>fcKHmUF{ zJQ>U96wO^_Rh$}CHQ#Vc=cNgLuAvMwx4jR0*?3`l`Q&$bwS8^B+r?Jee!2Lg=Kte$ zKWClYEwuEJ|KyVw%YDUv?teOKwdm5Ux^C0Pmp1=Z!yBi~U-k3m6NOZpI_r1N$KsD= zcc@N2A{}+O;vak1_lYS&Y?Ds9%d;kI+N!D?t@!7!%Cehw{(M`$FLsf+SN!i_q)=k1 zytDS3<+``nCw}J7=gqkLCDBH+-e;!x&8^=er!-kkpKX#e)AeDvQY-&|*;eld-wU^G z|MkLb7wh+>&T4aSzesy?+Re9r-=ANMT%s{4@}GV=^eiZS7uuaLH~+}ay?Lu=O}#B@ z(RuL&d$QJs7q3gB%O6acBwW}KxFxTtD?8losZ&~Z_MX=U>yE3wn{6^pG{5cCZugQ0 zZ{~gwy&YI(abb0R{`;wSefX-&<?sDor}}Ec;wKiNFBUdCeGUAz_st{K*Nf|%m38N6 zhiHF|-<n&%QNG?>JnGfrtN(JgevZk{*vVGr9?cPUbKkDr79JP!ja;@}^b)&&c#HYI z-d!KR`xeSxPwG=!-S;l;g{{=2Ki9T3C47H(|Jdn2(`BBCoVm2(_I>Fh<vZF7wLdbJ zD}G;WvD;IFX@yPkQqJ!Wj4xjOGW}!F^sD*Txe8)WK8<-4etq)d>SdD_`v%|qrzd`@ zzg+#)A^-LKm&D(Hm#j5ATy42Hd}fcq%tWjHlgHvC@3Wjb8DSJT=i<gaQ>^5F<{Hh@ zd9cJP^0MChHRbHzPWGsaO}*Q3;Ie@6uZqrQ<t^d4tMqw3eBy|iIJrVEY1ibf$tL9& zx4+m_?Yl})i}6stb7iEhjqR(s4P5aoOW&TD_gQrFlH7&srNpwN=SaUYdvxz+**fK= z!Mim*;^XG_f8W_VyHE3|V9?~vP9J*Q`ge5wRgLQW{#NtUo<~*g4DSoBTbfqSR{rtx zZf2y8L!OLdq>sD$wnMH{=04ByeEH^`)7zXEGb?7Fex!e)$jBgT9sdrWe>P`(Qq^4L zmS`_dowdz8^XE4nUCFhQx{|VcBgBuim<g|C_m=*uSL>mlb?3&7)@ueW@{2ngG;8yd zCOAFpo_)aCt!nD-MMtF~OAc;x&RqApdGeKu6Sjvp^<S9##d}k+cH~#Zof5lV+J0g> zD%xuO%x%lIJ7((71Mgqo7V=?*eMWSaPT=f^<+n|^UHETyy=kpbQ`LU+df$o|>7dND zyBKDzaI@c&_e`!e^3Jl?4PLv07&qQHmDKbo>H7zn++*n)SDZdP5mRcsp%`sGF>1vL zIl;THW!XjlW$lhx<8a05KwjLs<F0{a776=p+$$BG!usNWdB>bP@^j~rhn+JmR~7XA z=I$tE|2ONR`Aaw5q)(5|hF|^iV!E2aw#TNwTA!}DVsCir+?#-{eZAE}zvmw^5i@i2 z%ZzJr4ZJKEQmoc=>d|t0&rP%TyB%js`<<k?V)Ms1wql-ihZ&MFIy3FQdez2Gv%g)< z_U*g#^Yz_#5B!pwZ?T{t{NTy2%fl@M(;p{wFiZdLfA~AU@%$qx%NMS?^9tUYIs|)) zChaiObYT6IQdM%2rMvXVIac;#hbk2g)V#4wKco=r9BI(!@Uvai&dAoPei73#gSgnu z*Wc7jd{?ZT$)4XfYs&A}`_#Dq8GqQQt7_C;V_*Jm=8rRbl2;t<<#@ZZ@OoTu+Py_f z7Mf(YFpF=vBz#$W<KObfnm10!*DkVfjb?tb^g~AvcY(Q1JJ*}vFEa(R+m0P)YpT#r zzNvlSuu<hr&dRD1hWEY2HD`=-+$z_$*xlHc+V>~ZwWBWN?zX(DFWM5B=0Es%&-kyg zsIKb$58qn`k^)9W4N+|AKOR&}V_O%0JIJuyzI$oIlZHdD{4}Ecvs`+T{rcr(=ljNg zNi~}IOyFx%PIv2m-t1TLT)$s1eSB5q%^>#e5_8Cuw)h|(HvSm1DXb@t_pq6U_jj&e zc;M_*-dCqfmVeg!-KMk0yeF$f!YpX#zbw)9=eI?gzfCsG5a2GqAY|bXANgNq&$54f zJ(V$gyWg+kJi}hr*63w@tlEu5jQhnx!;>dVFF&+)J>mT)rG`25V@c%V>rM0HCUmE; z=I(RP*VCQ$zhh(L+pmWYJX|^J%S%ljp1=Ps`L;z`h-4iuFAHuv*!iD}dC&Sz#yfk? zzgb{+L|NQPQzz_txWl#O;@e`^RwchY{+cgPsA6$Z%ek+*5fwA^rkG!qwyB)%zq6+8 zaLK_%53R3X{_WY9wZiNQ*RQ*uWOp6>eCR{itHT|+v9<FHnG08l863VU)qc;VeRa>S z$6|F$J}NwYKe_e5@~hR37vwkC@;22f);!nypwp?t5fl4S=<n6W?Jwl{dRX=?@&5HX zM>&9L;ieOFSHHFPTq>m%pQUsC^w*}gJCl?@G0vT$+jRb<KJ({K%Ac5~8&1%@zf!8i zc|nlq7suNLqRStz>ArV#uZ#TQ|M?f$#baYPcBM~Pykap&om9?oOT8O10xR{7{K!zB zf3+ZUU$mL|jcM~2E_u_j$Lc~zd}npCM0lw9iG$xALp?6v(4XYFh2y}v1#kK^*pm}0 z1Dfva%Jxz9bLaoL?(yyksm2EtA1$rqJTJk1chc8)Z!fI=(H<Y3_2mk$^ly)~7e5>Q zsg1~#xU@p~_3AF8lsC~@IuDi}FcP)7)Ujmh&$`s)jT~b9mY(Jse34gXy^`J4v27#A zJ#mZGamR1Rm2-Aq+<k}pYp_SDxpirb;qJ#X#O18pw#2LM{HXJl^{M*B%Z$qp&b+<O zW$}K#KN@-EPqTm4t)Bj%dSc~_^B<ol{rl^=T|3<QZr9J|ldO8&QLe(zzN<UVtD1Av zI4w!~`~p1=5uw+Te{4HeGJe)J(4Bhailk1<dj>O!HHqzVMbCd&@lKnjv?qUSMdi0R zw#8c_Z=AZtW1K5!YVi5ku~`Nu3^FE!Ybit}v(3ERc6nlP%js7izXi^bvo+!q)mb%X zy=W1it^euomR~F{2wHTOaC)XZEn63D7=P+o&Wo=%Vk4u<vO-l)8l9OPw0hS3JzwXt zHUD*sIcz+GFX0#8vXV87OY-+=sT8t1KYY6+JW#(d_0Y3tmnIgAJyF{K;`Z$OZ9jv~ zd$+N^JhV*i)O*vaY5dX#^^;arKd-hqe600t_5IB|uWc^4(X#dKmqYiW`Ym{bo@;&J zf9cF<eaY?7v`?y8%2zX{Jur#7VpWrw5SV>s`pWeV{YSKTU;f<cY}GEZd&a)&>4j>A zYO@X&oWH*6P&m_EwcGvr+vnt5Jn^lj?mLsF^>Ib*-QhcnH$Ojh^ONxIyD^D+?JfFe zravive@}jofJ)L;2J31gi5n9h_7pT5_q^-jfBDVuO3q7(PgQRuy$g3VuiLx*@`Fsx zHp`XKsT1Z^h<49BBxDqHWd4#nhrZ{uxfZbZ>}h#?Iy^sb$@x{vpKUj}t_^*C?V1^v z1oQuI&*HdFpYT|_ar&~%<4JqYPN|IYTi7lo`E&z|^3gjF?tKlhD`!mnz;W39;`Y$# zrY7cxgz8j6wuMwjX<U2AH!XhA+{B+tb@qGQKKbc%#J(79W3ksfR@ytaF6TYEYnJBJ ztn>{mqB`%dlx_Mm>5kxz!$wTro81y-X14SSyIm2<YyK&q{K)Le?N+<!3wn8%m%Hzu ztTKu9{gK(T-)O9Sdvb#H6QkuXs!k|u-C*uy{`K(<-pX{7dBWbOZ6i6Z)gS2Aczo37 zzvC2nzVG{;buU<Itkw&v?9rQ%_oGST{4>9x$cLr^Uw)Oyh(9@b{BmK8*wMe7ciYPa z+ziE+xy|=$%kX#-Q-7+q!+Q2_4fSTlvXZTtD=z=rwyXBkBoDrV(+590scb0_+<xk3 z+JmIkbDr=SehQlK($Xt#-fRy4+MvpRpQ>)HxOX&j%Z`hZ9G&YYP0k4RPVL>)u{`kj zi<n2s!RE?aEI&-%!JY6hKT!Yt<)(++n)OWig*zUX><)TT&UN;yYt_PdhMKJ_ryuxt zfb-6MooU}aF176HEzg}&Z}M8SSK28kvQ%C$%;HMY)X7`{&)L~8y`H!CdUK+4w}3%c z@Z!cL-X~5epN_tA=g8mSmHRa9XUuik!5yn{R&$qNM~gw^VQ#H6hcl(x75=hyrc0@P z{@0=M&*0>}CAR&$9#;td@|wY7<G$*s^7Chl{gbD5HSx?VQ138)&%ex#JNWz0=nd=F z{JH&}e?ofw+&O>$DHzZDxy!?ysW$V^ojunV`lsHrFu0SF`fWDL?CQoN1r>FZ_DW@( zK9I0OaLr$?eG&;zXYTl~aO@(_+tqhmH}S5~zMSrOaeA%tE!R7rAMP#kJZ$qrqc*p= z(7E!qW)!FYDehGBd%3v_zHfiWzO*j*LHDUY3ww3BWCNbFU5-dw?pO1|doiy-(i%Pe z(Bj~*O&3nvcwMb>Kd^AQX1?dw3cl3kOqI-=9M`$WD6i)EbVj;s)2fvh(_)xc+c#%> zU*CM|{nC3*8-C3$J=JR!cl*{X-n(m~qxqMsG#vCh9{2p0`L<gRo7YN5TW?s(^(G)~ z_x5*dl6LHQ)#m&6@7K*gjQFPQGkDafGk^b9@0l|1LVW@k&+lG)yfEfV#B0IS8VidL zg-@>^-tYcL^3QvPy5-LVUSHO<S$N1I>4SXs+pN3qGLC=WSW#B4>drn%xbT{}b*Y#! zukrlF{5jhk?+ETcXz{5<dWj!Hc-|wy9@|=*pG=3|RR^&sC*5t1n6aqo*wJlU<(y@z zqQ7fDb~e90js4~J@^d#g9<}aLeq*z-GHYM{{7G|9<<C{p`(|C=<+1#!ll?pYw>%=Z z%T1SAW?qz;8D4qhtKiK=wIWryv!!Hnm1M$r?c58hzD&$a5D2KNpZqZPO7o*7%K!5w zZhh5u>{`r^itOaq%O_krp2=B~&~vF_+xul9bAsLUmG8BGn-hQK0oQ>?Ju=g#uD4a# zzeSf{Y!&;<`RDhVRLqd__NslpaAD>7U4K7>-gditNlSCuil>YMs;P-;ldSxmWqWu0 zH^^hG&t|l_v`bf&QGH5NqR`(*ul77t4}0!fw8f^r@N(ZX)=9p4YjdY}UnmpUXjWm$ z_h_nxVEbdW|K>4jJsvk!c|N)>ocV84={4<_5`2$8bNNIYoISE^bL}+gl5|7!$@kyr zW<9!96{<I5;&&gNUtyKz=PvzFwz>Sn?90qcQu0ojdyoH^eeHAS$)g4wJ3Ht5$DA;7 zTO;vvUbW<sKh<mNgeITvv{o@Qotwv`>7o_Rv1*C2>`!4C;X{W0ek|<wo^Cs}#LLXy zM`pv7V~6t}U-oP`_(aR&(fhNNa<f~yW_36h|EimN@#XX%Q~ahs|2@-het%JN^WnzD zE6#Io33#Rw`QkpG-HV$Fhmy+PPrkA=e%rL>wz}ia>rPp}{lu1ZaoUO%S7$p<x_Wo| zF3l%PFI&&NcWmpuM~mD3C<w_l?A5Du{G@5S%2D}rddAW0lTVFmlAUL{tyzCEUUb{E zxfxHBcRZgX+huU)UeKBz*YrQiZuySPk9cw>3JWd%*yC$@YQs5=;*9DPp`sRr6y{B_ zFTxT$J}mlrO;0js*Mi)GPYwurs$60AVQ;_CH{WQ%+eZPLKfVeOKHU0qcOS#@T<?SD zz9bj3HcZ|eDXVS#|5wnd{pWH|d_8|Lv9L_#*}02)oP1wmHZ3}HSkJ`jg3-}CFL#M6 zoxFHn?f<C~-~EpBe1r_TRZQz&?K@V#)X?&mNY(_Cn(LqRw?-XaXe75L;6?qd2IC4D z!AIN7L{^6V5AMCzCi`j5vai0ezKZ2$Nlg_$iav^dIg_(Y<663bz#r${^T#GHUhm&` z^yVGs=4Ewe$1jB@XQw|tn0dEx=Jj)H?yhLO(LL>`gk+vzT8d0`dd7!t`6_>#E^`gP zpe6c~dG;yZU2yYjZw`N~=jYbR3+tI2o~P{j{Z*9p%_hgqD_mdNDI3>L`Z=K`LgYeS zcC5bC{T~lr&)zAWf9~@8vz1E%t=K+&xuRJX$LZhute-pK!zYVr{T&*AT_t`t9H|vf z_IR)Gso-j_wechgN$Dj%*X!%`_Jtq)D_>Z=&MEm~^P9C#cU?cxzj^27_s^ei2sSuc zzF@LUgjcL`dd~Vazo!H>&3ZBAk;JjL=0bwv%-c1N^Sk{!$hzWe!0E-YKNDUb7cE-p zUTMdabjv(oW!HpGi>{g<UPf#CmGaD9cX(ECef{}3=ih6=Z(&P*AAB(D%bzp%WRL#5 zt=2msKFYG_*gw8G`;|=VEzjxq3WOiYWn(+8CcmI;sX-O{1lOH*9}Cxh6})nlJ=$OM z&ji2A5jKl@+`9$N+q+)Uzw}E^=hDs99rj9L{Hl_EoH51wW(TD)dMPN$I%^+@Gmu=k z{GRvs@BaP&3T<3IGUkgciL<glwkTQm<dYYRL|Rw5&A7*5S@kO6<DH4UQ*69;eUMGN z)FS9{={u_``*(-LRm(rS`G-mEWa^$_p5M8SW!?W}xs21N`}NP0`|merNl|~#f5UyJ zran`CF#ButPYW?KrM;6X;%D#QCS|ih$TaQkjDT6fD{Hlz&%WC9Vea$albF`rIUH5q z*J;pZxc&a-8Pd19_HQgx2?&h6{yRO<ojt&q`_cTL3l8j9kg@2X*<<-XOpnF3_6lC+ zNt(3&SlOaXYmZw!2|)+8h;Gz0O1pgIm_)RdZf0<D(xkk!%>NFT`zEoP*Imk)e3p^z z+4p<)&PSFkw_U!x;@_XAd&}=vf4^IPzqY*6=|`xlpMGU;f4=$-w>@5JLT@~^CoS+f z!?HnIHD@!I?c?GX!m3Snd<*NHFFt+QG{wrll`rPzwvIVLrYXLT|6jI7w8vizKUz?F zX?6Z@kyY>C#G2o6|9W@kiuVk0ul_kVYj3lTT~fPX+79uP>n!3+8^Spk|9bduL9xy3 zm9G?UI&M%}`e2@VsenaB@~s&`zO#?KtXp)So%MiGnD4%C%crT#FmyD^pW9%N@3hJ! z|E$yc!mz#WOZ(RPFPOvlCTt;N-`ZODcQ;nm@mtN?tzoSC>rlV{`LJvbUX{i2`BoW) zX{ig3`*v?WJcCt|JLnFZ$ISJm%XgGqf3_o&_npAh6M?NdJ5H{9!u5TQ?q<atC!6_m zg}+~~VSaz*`#G2Ug*sX%m8ZN+TQk+>D3`{>=^OV*^-o#kTq*dsDA^>q$TjxqkDV$f z|CB1|3I8oPP>>X0pS3((X|J<O{LI2E<9j<Y%;)!PUe0)3Oykm*MQ6l5&k0a^DER20 z+ef#FHOD*I%cCR@YxFGt&)w4>B2h2N{P^wp#F%H+0(BZ<%dc}!e)OfwhG*g8`6e4G z_UF4iw7B}uDfMwCyKv_H<6E5fUEJcEoG|I{{=ZtsKCGN*_~(~ama)i8mD<08bwMXs ztv23Tp=+JrlC=2Bss8En9$a?T-pGIJ=bFOh$Dgz+sbzet@YDI^GLiX<#>vpzYfRiE zJ*JBq=3bSx&@Xv)TWL-Es|FX_`KwA_9#qd0JbsYnOS)@iq!x?xnPcDV7Eft-?xJ{x zQF~vhrp|=iN1OibT%X-Pf#>l8=N-$1yJRj|{P%UZ#dhwg__3cegL0+McuZ25pE`5r zuMfG*{fhUsR{s~Z-@M#skMLWY{#jeN&8OKvTKo0Zo@~~PxxBwV9AbQ=Aoa3pA&Z}$ zXYyAG)8${I_wHfH{T%4uyYKI*wQ<W*(k;*Y$==|!BPiN?YrR(frmVu}E1mbuld{y5 z*tkBqkXz>4j(a=jYO+Q@{$`((o|fSpS-a~Ob4?k)veDA-lGV&x<=)O=|KZ;p{Xk8) zV5-_%Ch<q&X)4}57GnSEwzx%2(LUDq&Fyw&`Qqr#Jxfk8ro>C|^JH)EW8!$<k+n93 z`=DX}raUpOZTFwq^;Fic6_~DA#VB~FG*GO#M&0XaXI=28t|d%M+7?X^UbBdG<-^p+ zR{A2(6?J_$YkB)5x5lqDaXeV`-l%_Tox1(T_Qu&ZF2!uD8@aw*S-oO$;EL%coc40P zPK&L5vLkzLtz>>=A5hY}WbOU4=U+zhMSZk(dmH{&ZPn{r3GDx-vG~R<Vx2KnbMAU| z-6d=HHJ^VQ$!_a5TgrZ!?(UPth1OALRMzdAD1Sd$STm2qAg|++l}*gwz_{y&JNcE; zwpX(ioO|1`H1zEDWjiljjAP39@4rq<`R$@#-@a`S`+IV7jMdk-Zwltrd4HJIfBkSp zWv|QO?$?($gqz&{(^XxqcuDu6Y?qjq-<xh{rX#0rT_~Ed?%RtEnhmuxHBCR9c7Cz4 z@rTX!IJ0dZT!lokn^bE9Y{V}wQ@?ahd0q4bscn_lD;o~K5c@GTeYbn(omDxjt{?E* z=b%&{zNOMT#d4S8vV#}z?V0<fi&_0rg2TOcx}WDvmYmHQJYDNiS=--;doF+1F5)=z zo^N^B-M0Kp(c+Em^Ac;XhQ%aLy1LzW$M2f*CtkmlertdI``vBPR+$qF8%#^|R<-Xn zYl#<H9J@pBj+`?0J=QbM`&O+IWqrQ-+U*;a!Eu%Eelu=3KXDsJzTdW;kG=_oCJAn- zJrjP9U&Hv5>bc!s8eey`<P@51S$OnF$i=Y3H;fL&%kP_QeE58kc~x$oS>t1M)@){O z#>IW-&U`m2p6aA#am1=&fx*LuMQ1F8_goTAn(AO6zQUkXbanPMPRWNa51UW_eoFIm z!=n({<iAE2Hg99FePZ!;@|@#*Yn>9On&k3No4;+(*}~W$=BVVp>k*9`r#i45lM3NH zAo+aG=MPNJEn9wWJ~~yxGEt|ndQCw5;^5-gu3MI8g>7fFUov&SC8Js(Q@w2NT){f) zU3_aDqz&HgiMqu#!%KDJ{q#kbuNL_oR5IGeE;DPfYQdssC3$W?uD+ORqj9l6@UDVa z9Ipi9^s+0LN<`m?OZ95Mon;>8xBJ|mn1t;w6Km=!UX`EmXPxoq<hsd>##^{$)(H8t z-U`{dX>FQ*)z{CJb-~+LnqQC&P?9^UYH)m2efsx6Z$67K?$_A~&nz+%<GPOMT)EMu zu=vqM2e%!HT$lA(XRfysZJ7CRL2!h+QH;#9SF<*5y6Ks?WpC8=8#eP)ztk@1o_Q)P z>SFb~d}W=iBzduRW&2=>Z25cqns1g(?5GsD`9f{wg0qIonWx#pWI9tWieJ>-X1Og# zqI1c^+iZd7FWsItYq9B+-DeB8v~kLJT`WG<Wp=#gMo{x6)~Iyxq>{7eKkO5E-=4Jf zQFCAZHJ$`%O||Y@9=Sy`I+m#~IDW3nN$pF3VDT)ai8Gj{+z#^yF7F6e-)iZ{=EwTu zPW;s!MV#3p)@kk8u59krkKY^BNZtM>6~lk{;liqqjK{ZU-}^J?8;?cUF7?l|!$e*Q zY*J(S-Le0%&myx0&n4be&WQFbOw~EYuKDqY!lsjdT~D~a+Ol~6K9k(p6|&nFaDAT7 zBeUL8bj8`^b+tEdB=l@g;op|hH)G5EqMU+j*Vi!FZhP|LLRrqq?^!2qnUwil_%`Rf z<Flfb3A1lp@U*ata<1O3d+6m!nL~-*21X|i-{`w0Fh#AU=s=-$-}-bOo++=VrR~f~ zV)rU%yUw;Jo#ps$zDKsI9CvnbowJp(>=Rlp){q-N=?#;1mUh6gwMXweuV|eww)n?| ziZkD4TdTKr|GDk=rsCVNdFwwi^!eysn6;GqerK7=C*3Ox>y27?)J;y@%(%QFIo@1w z{;2~t^87WH=bMv1y*PBW`N!2%ndIeOMGMT_@<oibOnb!2U)_|PcIK|e^Q^AP%?9@h z4yE}jS&KNml6>;Pa-ZJ*F0=2MD;eG^-sw$i>Ami?$0s>u-QyX@yYK&NyKcAV(XU6p zS!S@sYSzx-IC_1B)e_Bj)q&AR?2dP>h~Fi?xZnP|-o~?A&x+5EH!)tHdupwj-GTTC z?;d`x&N|wB_U$3BblzK6j1N6-JCMe(?q`m1@GJf|&%^bijx4v{F?WuKz!|NaJArE7 zrcd9`_<QD>2Ql62PfPT+XJ4{e>7bkHzh#BOMWx@*b$2bDnZ0gXM%?7tGqbCF6ZR|2 z&97_N-o|Hky(_->UdAbo|AiB71^;gScBO8mEwlQuI>v88+m5Y`$?N`GpL04i`PL)p zp6iU;{>S9+d-QS^%gh9(OJZNNTpyfVYRMb(|J?DiU53XlEk1RtujP*a`GjDl$x}|B ze|_9W-owWD#~SI+F{aOUy4HqeUO2YnOh)dHIMEI3tP(`;G{0NNT<!JYsnxM{{L4hL z{kK<`t_%4hxb)AI{zO}EkGA;|b0T)`Iu|g#>z`MY`i9??6KvGOswJyuE!oJ=)_Aw$ z4ohuVl8UfFPQ<<EZ@;}#j5a=abM5s#+Z5NHHI%e;G5O^GG;hwrFn7f*>aQ03JYEpR zA5t;xi{js~%FBB*4wt_BCbdh)YV+sR^{Sf3EBCLJzO^CjFsH85&&f`oZCqO&pI(l= zx@xb)ysNjDO)+TLY@a!|I>T?ZF>lbCzK@yb8gE+5rr(*hN~>M+dW-Fj^U~`Z8vW*Y ztUa_-f0E72pr4B-mIXgCpA)k1uz7Q}`K!q%>t7iE)QfxS{3?<&q_4u!c{%3-i%_p3 z!|H{;%rY+m(|*1ZSo-*%gx$o6?>72tihZ$ml3aGhbo;61s9l#<?OeBW$7Hhud0&q- zSbBTMvj4b}w=8GV(+Do(_Y!9emhQQ<?}_J~mwb=+Wmk#1Dv5_}?cCe5UZi~gHl^^3 zmma0cZeP3mY|ZVN(es~N-lgfZFCgiSag)xHGoebX&HkU}f4ed5=CpY(p6>+(pH6N( ze&^zew}u)f3(fs*U+_rzZXjHjcVN?%Px;yPJlWspC~*E>+&E?D`V$}CRPGe44gYwj zlj}>a?~T**t4*c4@9q_F%gxN5u>aCh4KC)yV;fCA@(Fy;Uz%<n_gOb1_;|K%+~fM* zJzR^!N*^wCoGbt4<fMNcf-}N6zVl}ZE|%vLato|GvZw!X>y}>K9SdxJ{`@@ql<_pf z-_d`Jv={alJ~{S%d*SS3E)M!v71<*8%ua5v6~9`mbJjYFG3bC&nquh1Ig(SWZ?P_Z zof4j%)NbKvE9)pd=R!H-`^ZaT6O}ahKTdq0So14n7Vqb)cb~WC$4v8;nD(sAW=qtH zdw2HzID0`W@%^(^M}5kFKbqjO<!j$6?{6#j#e28xPta-pye{QLizmakY?Tx2V&xwB zJ3ifF?atoMaQUs!DIfFHRUgmpZG1HQQdhA`+PlPmi?6?bx;6id+4RoVW8YMd`@G0~ z*85y*ckz{Ufj9420@=%t%{mdPn6V~R$#{D$CwKmd)bhX1*Ob^Y$|mVP+rIP3;riG^ z?eXUBoo~7>njc!dYV{MZT|v_mkCX-}8n_o7{qkX_L}s<*|6>Oj<FrMctX_plOk4D- zlW*OZ_~mxnxOTppx6bj#q}8srQ}y;#c<>w4n*9pe#=Z0ObERpYmzbQ>&j{&}R$cVj zF|(TK{d~6WM8*v}j+b#J)XRTodd(ts?oMHqQL^>U7OyYt;mKZZ0cUonU%cI@y|lvi z+Q+Un>pl48`)V8h>P9iKNwptmF$k!hILlyd?9-!P{EDuMZ8~<#X|kktfz=(`zb=W5 zD%y+mWiM$L@Vsc;cyZ6q#z{|39W_(&+{#%mmUYo#!nabpf88G>MDJbGeqd{TqNlO^ zbA6-u@`pMMPo8JQ3aoa$<9^Jo*2ev-$4mo82^rM~2hu|KvUqRw^H&OAmi7MhM5&8v zGj6rV8Bda|;(YGd#Xn(!`7Fk+MF-<H9{;<?TFLoh`lN$@JKuQUnDsyQH%I-Hb>|${ zysy#OH`|{}K5WBx;~5H9{dd@z8)+Ob^tEBMJS6x`<nk()a|@@;`qZ=T@(z~cDVp53 zKDerC<)2Z#XZY)BY3nbK`vtW;`(3TRujAR29nC3x=CM~wQqLcY8BVzc-3e=ycTV5F zs9*b)UGc?oiOcSfER>|gKkgD<Z?KhV=g|`kA`|XaC#~n*?N%r7`{&0MmA4P4w;Y() zwkv<t!$TY*Syf+!4ysqqOIo#RO^Wx0P@nME7WOjp!}t3gNRP=DTweIcVPaU(z19cK zx2(nQzKlHdB<tql^T)0~cw%0%;l>Fj<LT!ZswT<1-1GT7X=9eQ&Wh6y3YM;)(fRTD z=Ztx&&wOi==V%wtiab-IYxY$l|4D4Ok=E*m()SbATD?!SiwyEF<}gwfzSIACKI>ui zNAJT|ZcOvNGOa~+jmuU0l>LoYX3c+<v@c2Q_65FaO{yRJREu1G&zft&e^D!}<9Uh# zFYhVeR}s&hW@Rf$1b*w|n{>YSSXb1n6T6uW=FW?(+1F7O#QW)${ep9oPEAR;eO_t% z#oY(eK3>`pu}8z8*h^)}ieiD^+lBNCG79Y{Jh94N8Z$-wxu2_P{K`Nj{iJiIGtzUF z<dc;<3L{n=eCDqBkLmMT|0jj#msBRk+`8atRV`K-S@om(@RPst{WH?60?bu5o;b^N z_<+&Fxy(nNZefkC{B_MFhGR?k!YSt%yH4t~-E_#0W&X9NeChX;Q$OWy)=gOF{`hK| ze(sw)nmztk)M^%POU=stnw1;M@p-k7Piy4O_4QlNt1kGHnsjJB&kq*gA2T(c{&;%8 z<H?Lq8-A~e)~KI0zpiaxFVCC}84n8O?rE@T*vVgM;a^?(m-)+SC7;DE{_h`LZhgRU zOOdbZ`N>5IcU6~!r%1<k%Q-~8kUv=49dEt%Ewgk1``zbvuV@|KQ08+-=4)rIisUi{ zbLqYh%Fa3wwGL$)o-9pR`e&hr$fV^v)oQ$_+&g@+kwx#=y6fgH!oOae%*Z~#ZP}R} zuHKhpVQtoG8qVkb>Eh)CE^8S}^BU22PwLHhEZnTNtedK_L~#Bc>Gd<C_`Z4W^@v=X zkQ#OI7fZvWBd2GW3zo*LaI9Obe7+#t=vvMD6DwqMlrJ4jKYhR<cX!A4qO1DtN!qhQ zekn_q=E<GA*~O`9lKyh%1m#l~5C8m{kgj^gmu-H!`mUOQ*U7a<u6{B8<aAT?c)~`` z9m)4=RKl+xpR(+y$>!oWkC)c3<7Zv)L#Qfm5wGl@gp#-kkta5ZP0Ki3&foTAdW8I! zQwP2&?R)pQ(f2B2z}zi)3;N{U`zB_r^@u%n!(xGP<`>nACl+5+`EoT<MAkM^t+Ut7 zYSEK$r{~8mNE#lw{Ka8b(UtHO0UhDKF$Zs);yC5cdFtGXDz{U1$FdwU?4=e>eZ-eu z_2bF}KBFtaSten!PWM(_TYRlIf4kdhhh*j!$F28d-cECWt#bEx#M~MDTi;rR-9EM@ z>zkXhKOcYO?1^SpZO;n4GMO(;yZV*+1Go8<$7!dg+L&goiOaF@Ej-EIa#iC0+8LR9 z|7&o(xw0=v;KJiIu?;ijJ&F%%o@w@b=$9_{;@6xPh4qZG!uO`HF_2&Qov&1BdDEi) z=7^@X?%_`Mds37BaQPHw|EbJdTmNbL-(}$`&F>#AaEe(HG`VNTjpZ3@8usosU$)Vx zBEKUuMoj-A`$wU`r>c?*+C`R}6?cpHGk3*?2{D#Jk+RaA8izgCy}W<yGeb<?*D0(Q zYYSCR&hNh7(D>%0-IBc~(=&tr^lUi2FJzkU;%cAyyN)kOh+gD)D&8zj?r)aB<Jbvq zR*}apw3kO&M|f&KyJmmrd7ISHLebq9>Uz`NB#e)Gwan9%eZs5Q^Ec6|XSHkF-LuBa zFRrR%dM~u0xu~yV%6<{4DKC4h{z$KX)z78w^>PvG*GG}Ix=E|D=NEX@T%3`V^2|7n zJ2=|!weBnZsI3q0yJb#Qjc3-HZJoNtW@h83C%+E*m4(b(vc<P^ON~!-UuMeZAN98; zc?qn`Ex0nxC131__*LU;(@G+r-_%<od-m(H<d{OC7*>^9{b^qwP5b3+!}9*c=F59` zuUj9n#`Si?QI~0q`^Dc#H!~L6C9#@ra65F|s@&_iNY8t}w-%3=8NHL!S{Nnlb8FMB zPkiUC`fqMtx{o>YSJp`uvkDpA$SwUE({c*-25@Y-AEldfv##KyNoVWnYVO`0>*bc! zt36e?QfV8>@zqX|@3UL}>oSd|gaYduk3Kx_4Ee6VduoSFwCWMn{idhh-d=yyGWgTp zi5^!w?EIB4?(v##^e3U-bJm-m#=rFLF8ZZ6Re9Yz$qi1O65S=PC*9&#^l3iK`!&U4 z?Oq)z4K_hr{vd@~;jQt~Z;G3zp5sh8DrKm3fBuBlYv)%Uxs@-~@wl!xYTmK>+N3{w zP5v=YQB%9ru=|YdpF@k+vGv6N_#L(B_x}yXwdXxj+OkgWUwU2n*!hjgcHjTaQoq+{ zu`5#RkR-$1f^Yv$-R{{hvOf8paGv&j{cD|t{EgE0c7&}FzkJ(Wsa|H;Rla48j;HQj z+4ffHV1%m5xs9_MZyh^i&uYB>fzZ_^*Ta_L4T9euXNq}NPm12I8dZ3+Tu;)FD}CSn z=~pJcInOkC@^mlr#=ll4w@NHYxbN}gs)mT_*C4I62`dsgw|=|ZSNyc>de|II!%LMa zQLH*!wH1VWogXe#SP&!HJx8``2K&o{cCU_dPAt+;I@9o=|HB>LZm;F#Uu%_^vJDMW z#n#8?7G|F9e;PF9!g0^nulPT`y!7OkdZoqP8|fnE4%=29T(P%o{dAkWX`!xbPRE?q zmMK0_|Fgt)TZq-6dhHO_)jd<Pd!K)O`!Q-&m7UnkR!eikrIzv0x>K&jblUFrsr|?N z?dP+Epz2Tmru2o>Z>#*iXv()Me?6-w-=1V0^)ps6*I;Eb|F*|@mYMZM>_-jXPYCDU zW!9$6m^(Wyp3lJEm-$Dh(8l9&6Td&UYc1+FdiY)JXO-jiQxS&g+Vjjl1fNRnvDNio zR}`^)$FdNg<8n8q7-g@^P72lY65M%e$tv5h&8I^W4@~Lw^1E6awm5syFEhWB4s|9M zQ&*fgzCESJI^%3%Z}4RY&y`giwl<fqZa)|?hyQYo#Od>11^OTFO|ghqoaa;WM`Pdp zcJYr}{q{)jx-{)lo~QoOuqBbas>&I=m)|_pc(7}p<it&mYp1ea5$3B`Snpcd^6KZk zuL%cc{90ErrG@e5>o$p{foEn-JnNE`A@8^TN+Vl`QBHHoBxze)lb&t-Usonqn0?vF z`EFvOSjJz)8IwcogSwaey>~>bCn08c_j%V>Nk{)`3z|3oXo-2WSn=0ggDdSd3o3sk z{@E+8s1Ungdyd!D`62r!P3@SRfAmYJ{^a=1UuwtPZu?mj_VhnKbRaJC`fQ#9KMTU% zzMHc_ezAE==WkR0EgX~kmQ+>mn|;UYn*616eRD%+sej`P-f^oacDA>}tqf=V`P;G% zvSoY{dUM0t_}y`_N&8%4*IrAIN!7nKH<RtdA+4!q+O2DL^lh6k-Ne7-KJQUY$L?b< zeD)``U4EnMm~FRVp=#8DT7@On+^QNza{|kor#<dgJ1A1oU_N(VM{(Jr>`7MX_vIPi zsaC3dx~A}PS%1}hqkDT^Wd5tYV_Np<KhME6+pC`+3Qt)7hvAp#yT|9->?SwXI)?e5 zpE7xsOp0)T=Cn8e!!KP;t&)22$W^vRP@naYccbpt+&^1|M8dtwYJ{pp^zLpHTReyB zXzZaEUQ@LTXMamx_c7DU;h|68XQd5K?jO_f_%8Q+b5o=i>s$v(L)#g-dsm(6xcFAO zP+q$Gj&0KID^0f;6SCJ|s9XGO_p{)cx3|oeU+?7Vy(Q{@{O;fl?wRXEwz}tivG9=G z#~#kSrBuPiYW<_v%2)Jni3jgrQU5tJ_Fvqc|2o_Yvcs4ApQyO-L}#K?xawivzSapm z=GGEN68HUV?-t{{eRqG!^52)goiEH^KQq=?=wZm7=c+bO&#YR0EA+)mvyIaqn&iG* z7ihKcb8z4BL+>V^oBX(RZs+Fo&y0WL8($xs`p)pq>^+;Mc+PjHs4l9tdYdli_O{EJ z@!g*2yXSlQ4%;RlS6q3CO$T%bV^31%73p80bMmj~zY?v~;c=BaRC{Sw!lf(kKTKS` z&a5{3qW%f-axEX}P8)NFzcVgGGjR+3%elF}fBFhZWx>l2GP>&z8Xr9T$92i-?(``g z+za>W&(!L0_nFS{`}7vyqO%9(ra#=H;qH54_TG|L=Z%?O6^CERx7!dQURCv3|L44S z%-zig*R=epyvc6qKGj~FQ!Vsg%EkX$oIjWI9yhF?@$6g98~(HTmr~cI3;*-Fv2Rx6 z|2ONu*tY(eY9}kTNpjbtd#^Gds&ahQZ9TVq))pV;=p#G|Z?&tQ-&or@FJ&j!M)j8s zKiy{RDO}%Q%vk;SnY?1o|FmUKEY`ohm$B~TZhqyGuRAs;&R4cw8}>DOhwis+J$AYm zFPa5cfAop?`0K32Hjlp<Q@P)|O0ZWt=>N_t{_|v_<IGR7_tqa%@=DrYb!pax)};E) zv8Io9omJSj>TSl8nR0DY1J+;bn)T)IqMmEdj9<ltt}beNtdV&+^5XHzy)2vAstffW z?>l=}pZ$lw)ATF9O!Ah`{x+w74g28;`3nzE1Z&Ni6BokeFlTkjsu)#XcYD_4iC;u3 z-_5?uekXs&<1Gta<PQFQ>)PU67t~gnB~x5+@Ih&-fYRBck?Ym=h^7B*aJirU;QN)! z_K*G)oU@21yS91?<7&?L5*6-tua_>L&8Bzcd@5gi8$+$C$G+r4=^rW$eiUD0f9kiz zXV#X|lBm1xMvpq#zdh$T+o^tIj)~LUbk9H0R)1v5YeoH9LTBc9o2s2PbBeNP`R5d` zv-t&|mhrD#-DwMqWBsINe$c;gyl-FiuDW^uHLjg;x>RJ7top!N*7Ml{IXSb1cUDbk z`*MH!eA6FCKkZ6w6JnpXFZ)8SQ&pf%)~|+J@#Ty5GvBz+oBS)9L3rBp^VVrfZ|+(- z7{8Yi-r&FZ+oKswt$!~yM`$07vd>c5c{@>g_vy=VwpG>{2baC-iaS<wx8v^upL~C< z^$PcnZPUIw)&6@^Ab&Np&b352AEsT?d1Bh{F&F+fV=Z-P{xr4rO!)5|5`|yh?_18V zw(oJ|2Fn$Hm1@t%$u#a>%$2_4ljxOuh3D91j7^WG9lf>9>8;=GZ!4|48EbE(882-U z;%FD~iZqyg?pHwC;lDqByw!h^DR5kJ&jJmJ`8z}MolkI-mriN@v$IV|?ay>Zu?^=} z{9jz{zo@oQs{E?z!c^bn>kDdwnu`QQCe-Qr9p5H;e6K{g*qyh&x*DHTDvW)$-m9s$ ziqbb#biObAXNTOm>VrS_ZM;^kGa-M!%FBzJS6^H09I>@Dv#i-<{vYvVk<_rJum3oA zK8RoHe6NcCdF}lQoq~fuww<Y5+aMUG*W3Fibm3YSlRJxw)M|{M)kaB~=NJCm=#Zb3 z6BqRI&{^Mxob_@=G6yz&d-Gt;)2*eKUp-r}cFUQY2bZ&6)W2Zo>&3V6+iDf<Z7f~; zv{s5G{Wh?(R`Cr~IkEFZRmrvL6SG$_UV9R9zBm28v*dn(%c)!1COnnA5%1UMy3g{& zhWtdXcFpuApMyGYPAk4=)!(cTKl$~XXEUnZ=PJt=##k80dC#5Hm6*)6f&0L-4(Hl9 zzh@m>!K-H!bRXK_uWZ(lmw)_u{K_xPKg<`)@Ra=TzUAKau_k!x#dVR-g#W!f+n{;j z(C%hg#z#W(61+S3s~6Rntr1c9(`Cf{+SD`pmB??ECpp4P`hC|P3jB0xSJlr)K7Z_v z-)<D*fBM#WO`XshvAi{lx78}#-mt`P(<FJ8WoLpdzdf9|_@48MjcK1EC8RYogU;Vz zpXN15{j`tH$GCz+MxVTDMCSi)HhA4sV)HV_;J-HCLymK<l`hk-YfrqZ{BNFUwXfZ) zyJzQ5Q;46$c~1WEU;jU?Lg(MF+)`O?R~2UQZ$g#!nb?hYL(aPNUby-$G2-IJYt2?S zk4;$qc(>g{8v|pnC6X&rD<#VR?QTgwb=OJR%}VO7!Cn`wl30gVt3*$ozP@|?<8`z5 z-e0NNmY`Z7dfzPb=-M-Pmr3^qnm^9-(&F@6Szsl$a{1x6Pj+6or?UC-@yHL`<&^Jj z`qdMDZG&PQ^Up&9Q>x0RY0rA_cjolhcRp1Ae0`0_bf5I!>+IJa7#}TvT$h+|Jt?8Q zF>xuMzPugt-H%KmJJ)Yqcvp12$R4L1_a?>(J}-6Ue<L)*a_iIIcbDIN9M~^;?0vOk z_(ZXP#}s}}3);he@Tcve&lg)a9EyD_<M~^}e9x{`>tD-f*Zxf15O~<~!s<1}Qu8$z z>RsM-hxN@a({!8DS`+o!Yqz<xOwV3_tfsqB`>{Hk=DuRC{Sxo@R{XcRr#nlt#`i<! z*PfNyxiz6pH+LSms`X=g(4G&GnT_0Bf0&xTblp0*a=+-Z2EJs?{mk##Z%BrF#y@3W zlJ)RlbQt&c<uavtE!=Lqvz49a%(jW-S3IuIZS=YBagF^4SqDq*>^P->=y}st%nM`8 zsmxfp{0A#rq2nAIp|3ZKVsA!$*8O<RZr+KNn~lu8-gipn2**tEs;y9%xXORYKRNI8 zU7I97>sA-=*KBwysK4O?n~d;3pRa3ct3Q|*sjmB0+82@Xm%-uMso2hq&6Czl_1#wS zW`W*`2v6(X5<mZ5)+l~_BgDsHW;IK#M@9_)g&TGA#INkxqGvbx#O(FY_I~%S{OY)< zMP<%f$%?X5#hlT%Vobkp54cw$a{E*2k1Q3&;<UvNkG$X5!sk6@wd%fg470Zu<<!mh zZ8l_2H@kGp|F7h4ze>(HM}b4vdD9Anr@y-Cyxn(Aj~h=jUrs1r(85%P^j)u>9y|6S z@AJdSs>@vDx(sEu3o0-A`rQ28!%M3gY}?h%yfg~+wkOSzeHVD`kzBgUq|RD}Ica$; z%nz?B7#eJ=eR=PditmM|S8p>ueiXfjr|<6s8U4w8S9YCA@Va|x*YrIn!&WEf7p-b5 zd?$PVoon?qj%K6F_l1AlUGeSz`;FR#twuJt@;nz$V@+Eid*iOo>w*KVS5m}h$nbat zJ)GLi@_Z(X-20Gd*^alrnC`uQ){`Pxwq$YN^N>~i;!N#^D=!_i=())g!FWA!%ejJE ztAbZveYP#ye!@zdhu@1VZ@p)D-VnU9yJuIImky^{?$d5L4tePx9G`{zL|c!w-kRI_ zR_;aCjkh@$4_3^Wa=Y=@%snyj2ZI^+Kb>=3zCu1r`k7^B`i|ufB#h6Wj94x6+(vrO z6Ypl5*typy&o$s)B57sy^x2*t(Q}%M55)dEvFyr+`N{2O7dx+PpB8O0d2V}lR`iQE z*WE5&P8BS52+Q(5#`d21SMtn&HT+Q}Z|?JL-IHx|#bDq0MYBKLs@y1<D0=wt>;P^# zJBjY)vbREVtwM@3z6VY@*|<7aq4J||*Wr~)(Oy|^<bU)ex1NvcDtutjXDxqz=YiiP zdoudgT?+go`{|ltoo%K!|B6ZeSwG$z%G<3?nxq|cI7nye>d^B?<fWVaOctMu_N!jL zdEv%|8;><_d*>$DC7~I<#cF|t_ot`v4LZwv&-n=Fu1Gx^tRr(G_sQx1Qm$5Sf8^cv zTfgqn(<?gdd|xeOv)z?WCwqki)_Lb1t?d^sWDSdVoaZs`*-@{)Z0+QovG2dAKmU{K zd|FYz*C$`AS!`9|Ive)0lY^eK2|k}PyEVx{n)%d`t-1;S1Cm1ShOGKzuzdBatLF<} zeAKy9p7N@Dk;eW5uXP`65a;#LyuV;?vHGv$cIzkPH~-Vy^n3Oax0Woy!aA+3i(J>V zP1!FPv(_bGe#nA`V-GL9bNe?rVb3z2r_4X|@|K4OFI{P1>8AADZH2w!oA5h+-?u+( zsgL;~VyF6e-ljc%(doq#+;4Wr+0S$F7g~DFZeq^-Zz7y8_i2dFmyMBre<0(K_og() zxeI2lbo;q=)%|<kHQdDq!akMQ?MN=Od8#{8Nzi=C`X}L!qCLX4FbD)sDG=`!dvf14 zcV>9M*unJ&`uBX6iGCRLD(UjY^{G`K>p3_>X7PQJZ+lU5Woc!U!)ldn&5rNpb+$#u zFSxa%-T&3eH^!B+ucDdf*ZgwJuL|6?MEjRXh16SVdDfY&;!LMXdQ(2dO=;8(OxB4r zRzJAWfve=htasM4w$JKkt-Je0WnRnv{`m#J`kqNW{`%~h1LK*z2FY0oVe^kZa<`xR z;${ErwC>e&m-nnpH2$P|zEj6Lytw#5`ycDO;whhEdCIpgeItDBsp`V*pYAazeB+tG zcT+p>)3d7d46Zrsd(Ql+iEaE`x?X?6e3QGD*Vk(Q)%~A1;o#@_vwEZQnjeUr;nRJk ze&QU5%x8<s)1>wpocZB>S7fr^#zV=E3#F`QxAZ7W`p$I!q;qn@t6HrBj^B?n_DR{E z@i!@5xcxS>P0PN!&vW%mq|WX;;4|a?h7C^xzX-0M=vDmwc|NbLL<P_HkJ7sRk8G=| zR-DW;Y_Q*O?Irgck!Riax4jX{Gps$k^H`<MhK+MHcPai*sK1=4`&>Nch5eOhCe5NU zPVEa^q(puNX+E*I^kcT_+_krJPTZBQXew_%a7!Q|D*udiTApwm*Bjw$Q=)y;nU6D_ znRu^(H<{y-&2y$RIg^Ubxz1c<cG|ju;qRJhPjYp_nHr|F&pP<E<k<h22jspyO;~4{ z>QuSp@S8SC<0jRDr96`-SMT3*?UT=D{SDpi^W;zPerkSE>XduunGdgZ+wZ5jepR=- z=iPKY6<svdA%Eq=ONs3b{{oX(i*`vKw*ACp^Ln{N@QLMLM0Xl|Z;)c&%747fd7jm# z%bS;WHrQ0V?mAJUs^9zh&MQl?6Q?)ySiiA+fAOsC!TL3QEB$3J_gXBAN%ArLFDP|+ zVa5~h$19z^&$|2w-ki(6#e|!^#eLShmo<71oX<X3^kD0=y^Zn@ZtR-9`Qu8}#=EKu ztC{Yb%+IdUGLWz95nRkC^H|O9)?DV59{cr{&p-EC<h|*{kl&@xy`Bd%##<(z=l?fh zzUZwtYeXK+xUqUq_9u3^N2V`Udw))J-hBTBzsRAVbHi^{oHzYD!Td{(Y5m!mJnp9w zv()xz{GYJj(51jkx$e8md4+Ymp5!ZiwN(|Ky2dYn^XY;amu621wb*xE+3wO$FVEvY z&n}Cpe-QrX(S>&hREybzrm`k0ZpmH!F-5^@;p>$RoA=zlA)6t*r9XQQPt_eE*)`EU z7oW<wt(W;*Te<tep*<DHcSQ(ZI4>sf`0nfY0L^8hE4fxK6;W-NDR4*k{K07p)<y3O zk89oHrCeXSMd-SB*d96eeJZ=0(~g!uxw&)y!Ht?PFFndUv+qyMS;xAV6$iI-nR4m> z3VUw)jwMg@|0BO+YwsU>f5oil*iQTVYcg-<eoLM^D{tS;et%wHwo+H~XTJ=7{W_YK zVK__wcv8LP{`D`P%qVfb{(kn%X~&lFTHO17aZQ-}K3Vr01&{7e&3#_mEwd;6B=^}~ z-?nwv9N67r_om#ty2pG&|Meg}o2^@w7i4yP{wqFftFG0XiSozqTPJ0oG*nt!)5v6D zn$MY8#J%Ec@7#Y3ZxZVc1+7t-micFU>WTJ=rwrn?ia*#->)ft+Z&9Q&TZ`k?S0Nl< z{?AqDms}XZ5zkPp{^&{E0jWBn69@mje`vZ~P|8j==hcI=lVt0fJ~!U8p0IvycGATB z`6kO2o&PAd#KPw4*OEPXZMOR_7dJ&2-}pQ8%)5p|n-6+#V!W=Z8zgizT=L3A)j1c< z+4lSX{UcqVuf%F%7OH$cW_tKp^EV~$RN@QLr2ozniObn{@rKNe-oLpy$L{B)f7Yz2 zuTx)|8T~I->asw8^8euCpwsV})OGed`Tdmk(aoQiXeoB1H9JIWT_Ef7xo4mE+TPgB zbiphm`VV8&@*Dedxckh$eP{Ue<)SI~5qqiWyKfgvwMn0sw{ga$8ol_*v%{wQ)ZBXO zcAoXL?b(*e0p<O3UdBE9xA3=f<rd!Ev-~3Z*qJ)RIL;p5AnLzJ_2QqOvv%;m_PR2A z#p>qk?Rqm->q>Ucsyg%1?!k(6j5GZn7wjxwEU)r%L(%F<jGw-9Tu6;fi_H6e$Y*v* z!}hOp%)cwWpWjtHeNW5Gon`M?V{Y2L(QCP?A-inKlD2pW9hPR_jmsW?HvVzu(Pq~9 z^QC&;Keem~zBlKC*^Aa&pRzuhT<fiym*01%r+SK4!rG?|cCBx%IqrYyE7Y*|OOiSD z^!rw8xAUPAzU4ih{%a3q?2)~Ca(zGh?teWKPv2`?{(Hha)%mQ8_*ExaTWB2r{3>Qu zy~wghyPT~Bm)vLF-jw*}d()BcUVq}w8iro_Rk8P~Oya3+I+FKd`D0Z+_qz4R9CN$5 zAXU>kvh$BxTHL>Tx(3186WJf$?&^5nDp1F{d9uLf$wD(smD2Pdo8IxgweLIoi|^|g z*WCVg-gNy5nLoknTF)vyJikB8?M<XW^~ZlEXS*N27d)c+Ho2;B|9qX7F$>r366#qh zk+@@P-{cd^HQq<WFMH<qCGp6f%}ej^tlNG?|3&}F=+g#Phg{TWC;hHB4SMFw#I`oq zptx(x(b-A=6~1^+Ia7VjPGv%>(=<8v{QioW-HwMoZe{*B>ASkuyx{$_*b<&aAH1@0 zwfL!DuBB(Tm>kdgQLI%pTcX!s|C9cE>2vG9{JFS#Z`->Dsb$yp{SN<9C!h9Gb@uk& z_ILa2_IGUz*iicO*)FH|fg6iYE;h=FD>JwzqrQD@&*hEJuWh$Dzt(d5zJs1cr*4=Z zvA(V7@IzcVZ}#4EZwkbhd-gqwUUF~Ay}};Zrt@Di-^6jgnZ49WKSFd%{LeM5aa%U> z=1krxyZ7XW?fIw5cQF*_g>B8-esan#MYe~#-QJY8Z@a5=ION>!N>{i0%{7VV)w8@E ze;u`amUXV0^LpruIK9Jb3O0z?`5h2`A|)#4zlU$-%msQO3*(vt*2}L93--Qx%j*g6 zqp~@U|9<c|^|$2Zr2n3@|5Txm!;iL!HkGcdB6cc{KeUw-Vl`E49aR?!EYYc)e@4me z{qYwI<=MAiS$gX|x2|8$(su1z6VJWp`e#`>-C&=|-9X;jV?VX;JXH@p<NviR=`{cM zpE~NyEGtD7FIe8Zu5<myH;((OiaD-3HBWZD5k7zE-u2OT{Tq*c_O9N$Oa0Huy^l?c zi)yr4d8e1K9I}_M+d4mKs(Hs=hl{7K?C$^l*-SF^ci+b{i?gSni9YY$Yn?F7PqwhU z-@fr^Wl>&hrDaR=;VbL?k1SC?;m^M0_^-R$JQLQRE}l_2A?MSyU0aOU6n&=|9?Oxq zzoCu&ypmd<LS0+^mG~!ppJ#LK;9q9>xrSHb0eAgp!?%fh?j6|ku`Kr0|JAqF=?5!$ z<bR*Ps)93mTei<>F=bVOzj;&rzt=PCNoF7Q&T!wkb<PvHmG(MiCzxV#OCE>MSC|rf zZmZGKy$zYmpDr%-nJt-BUb5iZjxzSEffds}UjEBp+cW=H&~Dxf@}*J#cl+|x{f(^W zI@d7Osn7T&N4w_p#m`*4+?AH<PW<#eBW-`%)^`_V-=4TT_sX10*7FW-W=}trZ=QMC zk8Q<r>)*Gvtrw)e^>1BrT=5LwdXc^>N0p?LrCOYg-~8>~YF*<0U`ACK7f-L|t6%5h z_xLZpe5-De8Sj^h=!;zw-t{E^y?!zM_xr%h;m0q3R@kveKKk|2E5{e@f1#fxcd&Sd zY2|#jpLM*?PTTEvJ{v!+f&J)u*5_aQUH&-VoWnM$Zvxvs%Ujp}pI7@-m5{bj=uU@S z;B}Y1b#sFM*&TZFuRC#$;QsD9rA5o$cTPPKpE+N)L+{DC^~Yy^kNSMnf4_;*t$(kd z{49=QU3CBNQ@w@a4_o7+HID=we=1Z_lV2RhX**BuePMe4^VG`RdnXTgq?{G_$r-=r z#g|3u?2q=mSNiq*5O?Xy>swOSp7J{WS!=W8FZs9}>$J0Zg+hGsU(6KhistA`ndVCU zFO+kt{w)!`SNz+u+ocCri09soI~wu+s^XUA`dNPrwq9?#*mNkL^<1^+C$ZwD?H6>` zh`rHX)#A$Z)nI8r@hw%8Pn&n?7ti@CzBV+VhOyFb{~lShjw81J5^eP2CajEa-FVnT z){CW$KfikG{CzsdCiYbo&*{;9wXph1akI}AA^EqSa$6?z?5$?}<3HJaM?+z>kV2~8 zv<Bzh3HR@BH(Yw*qIAY%^^*N9)~(HMne9P8I=_7FHo2Z*cX3bAW7gz<5gM(m2e_vR zeYqK6@qSWKPUU&oqMJvx6z^^oPfq<Wb>-K>x1yGzOS^Z6>{{X6wWB_OS^nE%m5rX2 z!WQ=HI!yL+E?a*3rK-1GmFA7pORr2gmgoMLQ+m(0_$9HN712kx+J(QKs(bs>B$sKT z?%i`MPAc8L$?Gz4j%QA*D!2C|hU<k4GXq{7(3Z&Po_xVfZOc|&^&3G#3XF0`bUYiT zG1aDKa<gazO`CMYaH_bc?i8g3M|b}{w=;axT!!~wYxVCx_t;fF&Dc2o+?=21XBvl3 zSukzGCy~2Wi;qk#UwFFUJ!k3t%+{L)?~mWFzL2?t`PmXSuL9TT$L7tv*Ec<L{3XiA za4fsBaEEo!gI_<YU(A-S-d+4br)uAmuqF3?KYyQFzU<z_s{Gl)YgU$PoO%7uV}JQ} zW7*TcHKu*5Zq9e*Nvhr7eRaCRwQ{o$$2$%M73t5g^?RqeZ^sipyIGb++I`>b_fOyF zn;E;E_n8X&8jsd<`LoX1+O`G0d3k-`fo{P?ul_w;u6*gUH{0x^>gBxkLYGUkF8VvO zmXxubiQ=Btw^4Sxk#T{4YX0uJ+Y$G#ZM^Z<y5!b>Nz=Ke!ojl|`s+;2L~4c|U32Tz zt(h~vy)yjdrC@uz%{tlZeDsC*Jz=3r)vI<*bN{L3x-FvbWsY$9oefnw)m9m|ccyQ8 zB@lk}Q>D)S-j5g6+vlE%TD@(Wv2e)sbGN=NDG<JveC&_#_n#hxQ(j$M9ooGmmD#m# z#nx?xTNa=Fv?<GFV=z-}DetScDT_0<u1RQr#lt5$Z{8uPcSkMi7c1Sf*Ssc|$g{Yj zO<;mP|JAvd3t0Ee|Gw;cQor7-tM>0L?jD?}B*<&`bNZF`CBn~a3R<$CN2T<BQnOvc zWM3~lukshedp)7^D;LRDnMVa}O%T}IpKU0#CuBEc_WxV?VtXfE<Exj{eqVRGdKOEy z)6XcEnfI>h>s75^=Ul7iYI8X%ymR6j5wUY$<j(E=p0)IMh}x$NwWo~1?X&D%Ej8Bv znRDn<++6oF%6-<i{%-j;TcL6**S3^>i%(wEpC^CFX8yuAi+6i8msXxjSj+oT>%hDp z;SHO=B)pq<Yo1l5VeO@z{r|l!O_cZVo@4R1tMJ$Tm6NwrudH9$mvv!{-MW`o?fXo> zOi;03`&)Njyws$`PL=)@XG(NFu0HX9!gG<Ql80>ywRS9(Gd#cja)7-b^WFI?Sr2i1 zT(@Z9@3ThTH{UV&R<39Jc+}@r{;S*HSJ?bIa_!>sciZcCyIxZNby3)nGi<|jnGB1| z0Vy7aW-^<fACCO3W4+E|zjaxCB2!Yn*pHRY5A{WBXFTtFxYNzMe#yN*!98ueMC5k& zKD*=H{B_2w%^vG-eCG_;ILNl=Xx`;VyZ_6u>}h9O^WN&d@5$!%+Zvw6zH8O(NLF5V zSNqb0(xdZl)I^+o^ZE71C5KE567Q)LE;Hq6`g%ROYTN(6^S)J|xR+<TE{<_W)D7{f z{=FMy)6{>wyyrDz`YZK0YfE$fJXyL^ElfFb{{5#P{$0JOaZ19f{DyX4b4_R)>zOiX z`M-A;_$_HJewn{2R<eG5%-PP80Is$WnOm2d%}iF-UOt#Nw|UOh%`aomTApp@JG4EK zZ|<dYlXYI*sIsnlYipVDS58FlTeL&kG4-QswNIXY@XzV$O!s`{{Lf4V$^U(%w>;QA znYaIL*v!a2iCf9hetGtdKbkM?&*}T4;~F{JR;(kyQ%k3_dn!xi$-3QJUrTN1Si9v` zLsaGC7uh#Xg$HcgFT-ejcJg%g+<^RJrU?^_ZPokE-<+MfzjfNGBD*TFw|(8(89WO1 zxA$AkJ{<k{B)h7r`O{Oqf3#<Bl3j6qiP(+c#K4Km8m#lR{aVcn>Wes5UKXtryKs}i ze{%8`-oFVcZaRGL3*zrFO#NxJZhBYDmz#(Dt#04EpDz6PfnML;Ztr=F36tEd+fTe( zR-no-?--M<L&!z{mvXTVFRxiB{*wR8)uW`&zOQ6)blz7hQSV}|WpgGvS2cd(`S~MP zWKYwMc(c!{b2h}B(E9P}O_`1U%;tMnN}}K1SN@^)>mI{AUgmXP@tgLna{r<j62C64 zcg0q}&cFb^gUhccu0JQo@!_KV_sh4Oo-f<3v-sn+xOICUty>eHXm#SD{esWC{gYxY z*&VUDI{owgPs_e-|5$wU<LB#-ZaQ9AoHt!2`}PrI*Dv2L{xCjN7=EP2ev(2V<J{YG zt&SJDwHJT7s_?+(^3zvqje;L^t^dMy<H@t>+a7TI4HpnhGQVqb`EA{q+L#QXfOjv< zcZfSTO@3E+&%9$!j<rBY^mprrUk)E!F6f_g@KT-OjsEBL9Cz!tou13kI88x{;rz97 zUALGon!dF+g>FlKc&)wd<xkc3yXA{t{QVepEp4fYgZjJKT>mQk`V3iqK1d6D`_00< z>pb^|pW4r>43CF5Ce4UHEH2zzuG|~?&MckTyXDiGDK#(l?0((1>XFuo`d4?9MSU$+ zm&QJ?ICpEw?Oc1t+jq{+>^!ITeXi5?4>K+(?a?oICc8_mT3YF7Cts>VUS`R(=0nq7 zNI0!BSY_?iy*Ty#X4#Iw`Q`TeoMcb9Yb{v3W3_m_<AF<0C6<3U?RPHZ{3@fV=VrIK z-&Hi<|AGHdaMRq{#(!(9o@+hyKcwGs^g^wui{l&f$bf9t;FSdnr!Kg+=gcjJvS97s zaZmO{r#a8Bug^@`v-jV8SBuYc^E#iYU%2&g(d=LACd#_G6vm3Zi?k|dUHd?1^{NLp zp?dtEH<@fXS-a|am*R#cuYYmfN>5WwJ9&^fx0`WMG5gaEvVj>KHNCr6&b4T|_&_S` z9ov299NuN6oH5c#Pi|b(-mN9bxO~d%-7!7ct4%7tb}Z!1%4S_`y+mQcy`!^Z*EIg* z$xXfRtYqr+pFC69b}eR@CFZR5L&9ahT!GX|9r5bB3hk$i9P;yz+`T(z=cb&w0SCi2 zCNotC&*6LMDif>yO~3E2WbyP{OJa8&*4$ya`_hzGYlP%3uNNxg{PFJ1pLJZ@r2Zbb zzM(vSDMx+wjq2Ig4bEOOyE3c3G1qg=z24uQH6G>5tnyE-Ib>Mjc|%J<&A?&t2A!mI z`Brl^4X!-<*^Nv03i`DA9-Zo{-XMN{rR?SHQ$mf`&)%_+wfdlR$tKei`A@Y|(r4e* z)&9k#e)so{x$m^f0$vEo3Hfm@KfHdkvA4j>hYWvyWV-L1vWWS?M}6h|w>Q69h<{_t zKmO^H(CgFt`imFpomp(_6kE0L%<*$mEjQX<lHIYJcRioqynNet%@t9%yQi@K?)>zw zK=IGi=iWt!=7gS@(-#vSow~Xz_=cjyfuk$f#ht~AZtqTd_5Dzsua=HxT#s&c*Pa&w ze~wtHe7%+`TXw=v=y^`BfV<3F_RHN5y_T%smm?fBU4B~CBJS@EcIMk>oZDs7vsc00 z`qJEYch6b37G*f^tF+|#*>%7>v2|(dROj-@Mac*1MR(h+(Plhv{g7?$nv(6cv#kX$ z?^b>g&9iQkPU=!+ZO=#D{=X*b|A}v9tbP>#@GC28I#1`y4}Txso_J4n;^Avv8Koj~ zUh3qg)*p>q?Yzs%`SpbS1K#PJ=8s>ld45<*^~Ze9=I^fC7x!p;737KilU$c_V(ua1 zhgaXoKYV&fU#b1<(-)to6+e@i78hP)K5bsZ?g?QvpPVQ8-TJjjKJn)H_5-JXMj7bG zNA<?=$Sr#P(qOK`lWviV=55zDir<}jqdC7-_>}yS;_SFwtv@S%v`561S6um%Jm>KD z$1?Y1rMCXLafc`UQ2DOyk8W*<<8;`?@K<#|M+H;Jy>%7&yJvqc2t2=m$N%{0{udu* z=gtnF`grEovU{@i`-?5=s_gWhm+zQ*alwmp>FGbeJW;N3djIlF`C&o1Ee+{8>>_W2 z1C$irT{#n(GVj~kQ*P&$Wdxd^mY!c2{3mej*57QqRBtu}8QiVR`2Fm*aLmhZuV(K& zykx!hBJOt1d_RHr6MQ#ZtbO+73xD%n!LFx<ZRIPDWFFYvd+gC`zN6+L3)N0Ei!Ppa zMy^oGbN0d){LcTJT)v-<*<p6{QEJNJDx2r_ch@$=u2{YB?1B6HMExKBOzki#{QTgJ zoRiTxQ+Cy=cTxuVtu^=jt<>hpeY(7Pec=2}VT=7jLv=HB+w%-otg}j8@3CF}mfr00 z-uc=4r+QZQ_sV2VNS01qchz4|?rf58Yuzd4d&v@?o0M9D^b0<xtT=qxoP9ILG_8A& ztjmh09<;lAe_>pe)S7ZjK2HCz#>^-Iz8eWE-j_FvoV?cdlixHzPwRV1!>cX4brK8D z-)yc9oNT4xGiRUK^$VY`Ij*u*c6%Glc;w5`s*R>hr#=g<PFVYB&DGGm6V+K2&IiUz zS07yX>Gj5I>}=~3Lf%I+o^x4xL)P)*pOe1@rJ8-?dwW0XPg?%{pK?IJm5qnBs!y?7 zZ$CY2hnB_(ht-1HMb<huE#`XLmXJ07p(*3@#utYzly?^IUK_@^#^}!fr7V`Ow=cbI zIWO;*;N9#$*)l~h@>a(vaAlldQG4;*rIPD)GLa|5v+Iws-#F$byzXMsTW>Ade$LQP z+uOcz#n!z7Q>$XvTsh>qwLW^+rV6VyciXm}K61-4c%j2q@6RdAtESD*TRF2cYW5u+ zZmA3AZF%dRIYm#DB-i}E%Ku8<rGL(phD9ou=SC?0eRMRw=FN5Sx&y}drxa@}Fi&7n zesQQ!M#cK)ix(NT|7PcSS3K?z`=Q2vxpI<}=tb+cr+Kz7Y)kBFvmP&O)0z5d%T~9i zjZS(D7w`ApytP&%UP1l(<j0=J^CjnL>L%D8&pGe=Ii*Udp!JN?tM#9rcfHJ)jy<1p z@Xn#2|2Zqx?LNuT`gh0v|929;KaR9jyk5Tj!o*J1pCK=P&UqXtE;jGExZ00z8?P70 zdVdJHF1S43v`X??@sB5WOT>39n`y%!JiGL$?wPPX-GV0)Ph}qZTAwW&p2BeX((8iM zJJ<exdV01%Vq?InwU_^w9jTg;@0}IuCc7iukK@L?YW+#wTQB*k{!2S(@cy%D$f_Ne zB|;Mw7MA{G-F2?H<H}EopKgVLzYip@%bXV;TCi$&bnex+!RPNk-_r1}Vw3t(*Xuf) z`5x8YIGL*%Cs%S#vu^gy3X82}%(EZH1kaZFvXNc#Y0U#^OUu=Kx38TrnrBzHec9DS z7oVNG?`>k4HRqL@mM^!Y--rLZX8WCY-jX>Z;7I>&i^(!xZ=?F(Mrtg1zT9n#U2phP z$0fh#tdd-lDK|-~v`+Nc)X>U*%&*zkm_Od|@-O?%le-i7dV}81IJWzo$NiecCEJ2! z|300d+<i{A;6?8Ai}womZ`(O_?vdYlJY^0m*JKCUulcy7l4)Y(xg%ETF5BO?amk(b zcB}LFc)}~qqW5jvFRRm~da<WX`q_0k&Q7e@-FyF1a>8A~ga3NJzWY}<ce?$$>^fF= zrbXUv>_^WpyI381N3-K!jmg3674`aSZkvCOJo?)%EP#7j&$r_8;%n?P*SS8usKhH& zYP9-R_6Bo9$!)Q1x%CY7&)*r}ke+EY;YDzzyx{?x7kf6g-(v4LpDHsiQMGro%Y!xL zT$Xluby`KKdE6gWOWwVCD1OQFsmlJ1dtD}UYNm)U`C+)MU{jTg<^0#zer(zJ>Hod8 z-%2$eepz}q>ONDV{NkGEQznmpzMAm(>OQZnpT4m8nt#1eE_JZP<HNQMwU2TdZa$EI z%eMOMPMLo0uiI?yg#St}vWk{v=&zal*!z3Y=X?`6&Bq1Pxh|d-V2)9^qnTjKzxsLM zT!Fu)No7^~+fOL?e6^JLDY1U`mu<N-#Pd7SbrzR;Meq7<r@Z~jag%v!Zo5O482viz z*!g|UVZN|)CU$uTUv1JnB;}aJIrZba6RX{Li{`9*!f~37efGt9dMUpGUJIJs$kM!f z-s-V&-znz(#&dR`|8|F8c~2=@(PTp#!^;72{l3qpy<Fhj+n{nz?8c$>rF-6<Vm2<y ze%;_Q-QY~*y(1mkmo9rJUx~BzdCSQC$@NQ$&eP<@Ca>16nY31C$-XR!+LxcIUMruI zpX&E)!7A>INV{duT%~c39<7tx8XEhiv`F>0#LGKY=dH?TSs$Hz$0xmMclDA>rgpa) zRmuZTp1da#ueCz{+!4z)FD`YMEu3sJ>wMORV{;6i-13S)uy;1&GbVoh2K~)K|JF?J zHafd)3cK$?`}31Zyzf+t?rvPzWBvK_g_Ktz$y0j-%KSNWjOXjFnfi=n>$7zQdv9#M z&%d+BZdydRg4eUX$!rcKDJz$~l(~JtM8mi>Kx@x|Yf8Kcw>TqzdF}9<A6MRMD4gTn z<v98O`OUMADJ{4ayYPrrYwE1Ytrp%%vQbBUPdi)XC(V6X@knmY+2RGso-e}OlRn>9 zo)b}QxNP~vdEGC4m$`)rd@_9H9jG*CpSjA}?~YU7T-p2McDc_a<(QLq#h1MP*H;ql zr02G^=j*ZG%uKBld%hW$KX(;+ohKY^ZLw#jZ}Gpy<wgB#C1aI5KVCjoaq`FC&v`n( zuiW4Lc&R`4O8JK$Y?LFnpDS10zHH0Nwc8HwKX`NTEo)u{3;tD+tx<XZmH*qtzxflm zZLJG?>(;al7W+ALTD51sawtmny4<kq#g?@N^X{ij)%9J!b?a}QsQzCMH7B$$RsS9I z?O;w%Z74_jz1N#;tEZf8eNwCWd#6IAqtJx>mnw^;&L1e8ezU7P`{1mEiSyRHZ?~-H z&q%8;QroGTdY)-V)6HAjn^!z}82733_n&{t8uD?6_j{EEE6(|EVqz%#?c3zHuTQRP z=$<V<y<(@X%JfIYl`jqU7g(JV>36=j@Y}?*)#3g3roYy8e5rVH<Jm<rryK4(tC*)c zL;Y@fvYFS$&+{&<7PZ`WCGD=wti)3f#g-XAwiWAHwCHuw<ZmC@r#SA5*xqw5*yMSr zk9+!_mes9y)U@=wiWYJBEa=(Q8TNnAy*t}v=D#h_Fw)aJAKt=u?A45$o=;!vgr@ec zX^d3JoNu!t`k4NevzN=KZB|OOyewL*dYh&5n!byqORB!;;)^|B3lHx~-5ICz-}3IB z4?lT4zJ5y!>Pvc<r>OTZ{<Y%HbNW+W`EkGfQ-5`B2VcKu>3-8M`>*fa-W^}DEqv0P zt{3sgGQRw(ez~Ne&;QlI3m<w{ugHJyl$Cs`j#Ys7#{SRCN?-Y0*(`Y|bmP3gK}#A; zeugKDyiwpfa_{Qd?m6)cQ8ToH3Ke<hmwo2Wmt3A$uk(JI;-vdqAD^F{bbh_?{QnEe zJ=aWMGgnyI-ZA>)DsK0=8QM&*=Dt6AYGyrSZm^^D;x~=<$6i?3J6_%uA;)}e@5<@g zTYg;apOAW8NbTqBq+h(%6Md}{s;4!F{NCnkd__{~-KEHLe{T8sD(N&XozS`Yo7c2E za~>_6Sz^3+r^&VQvlD(zjGUHo|IG4S)!o;N!`7-V{`-69?-{=y&OUYQR~TQSPMb;3 z#)i*1Rnkum|J1$va-ZacXVpg-=gKcmcTGy~TW>!3*{LSay*FEb9TIpIV*Dm^-~N<~ zyY63AJ!}4=Vz>8uU9n}4Zq>I>c<frcaHjULnzLC)#I7gpE6I<#&B>g#+`{~FZDvRQ zR-;RwgRCysq^AD<V14%d>{Caqj%WYbx?<s<qn2%@byHYRn7)v;zal6tZxMe-cK+g; z*{(7xV|@f&?Bd+=b?-h^k{9Q+pK;{mY02KJhZhI!zi*)Nv5>>I`bsV*U)8r;7nmOQ z&6w9{QgYJEMDDKBp3<a_FPe)UURIpDgG-!${~M#jB_3a2h`mU&643OnS~96K=#kLf z9E<pSy>o(0Tz5QUvRfw6cm3F_^Kw%xRAoAgU0mPzzEUWB9C81VqUX9~oqk8pXR8ZL z1LvG`s=RNgdvx+$?b=1lZh1$UKiMIpd)m`~uJSv_sGDzszO0tnBbBRrobAz8pYE%l zJ~phiEssB^y!OYoB8`93`uF}VxO97|^X4^XpU)g_{3@g`s2<7YX?OXp)~XkG1SeJ6 zzc-9DH##&s^sJQr!$s=5!XJ4}X|Zxuonm!$9?yM|7~2PTmfn@z=N>8T%)M>-q`N(t ze`0z5|6kz!G`eyA_tM$7Md!UK+nHXqo2NAStlftKT|bxJNl~d6@BY1UzJUAOl)bi_ zjoU9YeJ`7SGkoUMcQfC4e_m0e%`ME7xv$u*vi;a=*MEB!N2@)`u}$54R`TuCU%WbJ zXGiX~tFH21D0+QUaZKNuCxwS)ijO_q`s+&+Z(nSZ|FMTbf&1+a%}cv^fc1G3lh7HF z$s6l`u;1La=uedJzcANqw^ixx=YxB6^UZ##IUfsNDxr8T>{8*HRd0%>#r;-DTB>SW zJkeiqM%?s|AxUqU*Ie;h&UEtk-}pxFwR~<CH)2jdGwQioIAdRW)ur1;(ZY?70wf$> zKP;Fw@7=tvOLP2!FPw9`t@Aebl1+K}Lq2B<!`#IU*S7qVym`S=IYuC?+CO3al$ND4 zx8G)bF8k1}O!w8g<XU64lUf<?ra%1uj`8b{npLlMRm29c$ET~PKPrB8YF++1{)<0; zHGHe<%#V99JuNi<NS<HT(a$@a_xS6-Se?OJvG;b~)4i`h%<(R?ztn3Ie@#Dg`utYQ zIhpfY9>@G>kI3Zz`q*oK|Gk^Hy60!7ng~D2jO$psb9?+O-P>$R_gBd~EEl}4d}6=d zfrsm~?#_GXYMr03=DhWS?-T0^KH9Yx&Dhn|sK3vw<Mr*jnEPTr)7n&6-$_fn{#{h# zc2{n3ilhC-kFS2j+>)uDC%<?@lFjj}8_nISl%Ew|JzG@dx>#bb(DmGYuG%I4M6UeG zm|pRwXo}U}`@XL~DqQ6HS@3S#x-VvXZnxy_OjvGwZF_x#{yeY6b`G{P`T94yEo0r+ zQs%bu_jQh4tide3<)x7^S<~GnJnuF=`^V|kM{BkW+1=(wm42u6XH1Uy(i^CncSm&Q zwnMxBT&~?)b*pu))8Eim!*gpKwy&94Yi1m!=$~UUYqoLr*?qMY->*Hf<Zhg^L4*5G zYsc>F3B}%TU;0HYe6_p7Iq$94=Zk!bQ-7##u+{Li*pOwjSYpA4us4h4d1_{x1@%>5 zTVDP6(}bi|ifk*hl6B8;U9D(J;5)V8y3@zPOo>H>l5cls<?QNrdv@{T)nDx!&ChLo znfvA0`9#rmYm1eZEcDVXP3ro^aPgh7&-XtCF{|!NoVE-;<0)jH|L5+k8`gg%rdF1& zKNfz_Oj3VJT?}`{q^P+)-D=7D;YP1k%Pzb*bG7oNbH1;d&n9Q?`?BqB->E*wIluSw zNi8@$lS}rp(cA42p}x1$<X20rFU?wW?Ofn0)3xEPs%PZhGnc-3JKybc?PbB%4^lbj zbzd&sRieAaKg3?=t##&g&$XArmY6;Eky{kY<K`nX!S4Ob>2~p=_U^yqq*eDW7Jquu z_=kIuYgOIj8B^Z9{<m^p$&`Z36)Up~)2rf_cRUpM>ap9VXsL5}iq-aYHd{Tzr|?*P z)>9KVExL3%K<(^vuVu$7=3Tp05iKV@<<_HP)4a0R3VVCxzCNqss~5T>tmAd+tHPU~ zH%H9VPO7}t&Z+2oVB0RY=d*IdGUv`{_vrJ_pPj!ZG{V?+=faiyOqR^cu<x)w8B{%s z{g0*MO5Rn^oF8hQ*#1*i*t#-!xn!joceHQ%%ZiLd{wcX>x1I&KbgOQal5xxZ+^=+5 z%S&PFP6eLUPYqj~{}ooOdT+Iut+-V=b9(<b-oB%izf)Y=rm$3J)~|5f5>VFn;#x&a z>8@wIFS@@R7d*Rff6LZuD*3x6gm}GuDY>w)Lh^sy5qr+`*n{f?3a{N=GgDIW=wcS% z#WufgGYV!NwdtC;ve&@9@r0e?B!P;h%O^eD`}7&Fxk>Tv{-xF?jV$VJItlmQKHXmb z#A{1_!n)bE$9Z18x?J(Tm{;V^3-gE%dm<8h|KGlN)555_@29}>wIYI19BbZ9Gr0BL z-MmxcZRuo#TV5`{iUGG`f3DSddn$jy7J(CQk9}5{To7f~cG=9(DeGWM;HKg?o6Cf~ zqUUffQ@y^>wBGOf<LTxOXG{01urR6KyYH&^aM7}ZUTGVCNUiX#o-i$?`#qaR&YKN~ zZbh7GJJ{mZanH!9WZ%pD<B=U<AyLf7RBF<XZ+N>iU0GUS`o|*yN4GVy7jEwlbG&oc zU9j0l(tYZdc}u2EdB)|U>Azz6{A=4(J9n(LYrFmG*0n2M>Q923tj@d_^p5!5D`b() zwY5TQ;r2Zp_sW#2qR(;cJ!+KvB6q>;Emp4mEm!S&)8%7*^8Dr8^Gz3@wEM^OMeLcQ z!$sAF+b=Br%y8{>;<E1>=O@3&Et%54aQlA=<u75ahK-M3tmRQX9{+B+<m5X(#cE5B z9=#I5roU*rURvq4h34;@xU0OZ0~%LwZ@qCeXpfy>>DQi^j`F1)72%WGmvEKyz13F^ z;qMR0`up`7*OiE?XQT2bNt92}*xb9~BHNO$steb7y|po1rTOGs(vxWyBgJxa;$5c{ zUQ6+hk>97Dq<xm<MCnH59P8O!Hcy&QZI(8B;r;4V;?B7K*DG^BhFo~^_j69t<W;$% zuOf~__9*7h<!n*k{&H#E+#Sc}a>RA?sa9WOd3~|n@bb-uzXc{f+YatOKc(R6mtCuS zSJ}2qE4+A<*`xF5ww8Q72Hv7~|2{lD@%r|}O<@P3rC(_+3_5?%^q57^vFa{IzMi#C zvES1le%W<;=Ak)HYGz$+k6jb;=JW4kFPj}&JHpoXTsWb1Z~jl6#9LPVF3Dcpfs)c& z>!q)*`(YmV_Wl3$E6UDVtlGO{_IK6er|!!-Z@vH0YhFv%=f^+S{SpiLed@i-R(>VE zS&tQWrd0QRnUuUR=Dw%e$wRlRlZvI&ckf<4^=|qT!T7qK)R-mNA0O`$dl+zTVopYC zjA8$;YbheL<lPs}f8R4bTI=1GJ9oF_*~@u~Pdt@=LHJI}t+VsEmTp;kedayiJCiTD z?0B|#p_F^l<t-fM=ZyK2Pkq^Sx1-UlJ>$=h@7fY;pLk}lFSNW8sCd)q+|Hm2Voui< z`a2g|Zu<1a{HZ{MwUhJ=^|nB(V?hN^6<=P_iE_Lru`WUVNPe-K){Usbyl1@=Tvcpc z?kw5twaIHr@$&hco;x-B|A;JAzY?;jPy6Tj{3k!Yu6*xzze7Vi-%q5nyecCp&#@$@ zq)2<2^C?z|zjcC(!`=RCeEW1z?%X9Q=ND5mWS69`wJi(@lAQWjSnKorMK%|Is+9b@ zbHaJLcTnqxpDBl)&(74l66bLIy_<Z8_m9gbg>{d|hkx(LwcNT){hm~*hHV>9IM4LW zvm@;Ko^Fieeb>^@d#l<|OJi}ctAAU{i=8WSeVxvf%YPGixKHc6pxVQI`Jcj9tiBnd zey-&AZyUw^ty|3$o|sErFjHIT62;XM+ZpsS_G^qweY(F>eWsf~qv@rCogs7NCw6}N zzd%FXvuN3jxPRswR?WWYbtQk2%NDOmLh|2V)wFy)wM(t)Yv8Nj2i#+)$8DJYSUqts ze}D2`F2UDN{hq!%%@^PE?bGB7aW87tq%*yKdU&&1;@;WG5$jo{X6TjM1|Ks}sVXn{ zktEXjZFky&nHAS3nEX23_W1W*&L!W!1{AGnTRJ!BrIj~xRPDvtJ!RJx+??K4oxQ1b z;+uIrwUhg5LgkiE7Py&tzwyMg?ir7p6d#?Kw2srptf?Z0F{XFcZS(JrSBg(1PU<T3 z`El;TZ9^^Y{movLAMP)F%ze@5TjhuQi<zzJTX%nCUAV)=+HoiIYiISF?FYMcn+yK! zT6eO{@kPnEn(3heR-dc(WeWRz`|#MzQS}$Mz|yC&D&0T1b(>Oz-_~6{(SMtHdds7T zul2nDJ&vqepSZHOeI}F1@5db<uH?I}?skcvG5cuT%*)1&?Ek<1x$47x{Koc$S3OV6 z|NiyZ@06)CzOxHX`eZLzU$yebm#~j7-`#til$`!*3&Y2?CSfj@XMN(X{C2u<o@tkA z%dW@Dt|qc6lJ^g+czyi!ly1wMi083;->#YDX~$kMFY8Crd}dDHb@N-){uj#lKGS!a zZ2y~W)}Q`Dlb=7kFQn87&5HS1?=bl%_k}0->$zvGk(uYPKkvmn9aa;iZ?2yW`f6kU zt*!VZCFp<8%%QeKLFa3xMVngl|BW9~bbfjrnN%t0?I-oj^-Ojke`H9dztN-J((I3a ze9GX7*OU5pBUSSF^tm1S>h_DcKB>0o1zY_W*zOT-6T5@)<wB`_64wPkxmK-HtdiTf zwf*>a>B~o-i!Nf7zBp;&k6DMiS1%U|Ox0a<($nMYHOH6I<y`qZ@<(JHc_NR6+PCSP zpXqv{=sLsNfGLl|nXeo7Ot<^sJLkvdMhm|+JyL8-O|PU}tyG;eL%i^jzU!PH;&->? zg*7pL{b&*N#wqu8;Ixk%-<tXh9`OmP+X)};+$;X@NDa^AsIEJGVY>w9`XB1-|GMMG z8y~BF@f{qR*N#j`igW3zzq$7FNw3m*H=mj4D<0jo?d#2%TkrP@pO-n_nSLO+hx=Uj z!Xu|LG9I`;*4SuNbyi{F5#bjfv~RZXukUzx_|X3j{_yF4RkQW}?dLZ=9DS-yT~ zYl%eFvR{*qUwrtau%zO;N=e1y4nBP@>!cSOvW2Yn81|^=94@rG*dcbNRgtsu>G6rz z7dHoSRc@*833}4jG5Ok8FKgp<7JK;~H-3A}rMzf*b>Qt~e-GR_EqGf}LuP(vcxmnL zDC5N4nt%D`%nXyR{35#X-E`-|+q_!~w!FV=czd(^jhGAXymy@tTifF&JtL=knfgiQ z!sspAR5^1m7WTFnntm$swm)0Txw>onkGhT5(yJbuP5fT{IRBl%eH){H&vxFMmwz>8 z!ROBk3onGnv^edr6y!SVf9rgPt4LL-LELrKq*&9vmw4_OePD_fusY)9biXyIT43or zxsK=a^q#GIv2>3)-_iNYI{l~jPXBrL%AZ7;^nFjQ3!bGXS$r;Kt~9vx{inc9iDh3d zbA7(k`r@Oj@z)0dGPeIdT2$?km}Z>1W$pj_uKm1;flfbsA95XwynO4@+dbij`lDU{ z{E!p0_v?FjT=(%0!}kY^?UT!ur$6JV+kUOc^qt`Rx4ozBdd}H;Xnf+C(W7K9-SvH? zb(-^SW0l0CpFIBfroK75PLVUdZpZYJj6L(S0$MW;`6ga!TslqqXk>-?yL%Oa{`-uT z)=F(}&G5U{b3IgNnuoHK`}F5M*QW_rZ+F|07q55Cv@4Le@_x_{vni3y8paQ74ZJRN z)<*See1637Hg8FtS7+jxZfh-xlN0{$;z;$&yH>eQV!f@2($#rpDj%n1MYJx>IId|g zTdglW>%h$P?_M{0I#d#R7cb6K+Ew%U0*jT-FWtG{*^YlqTw`jhwD9EB#X__Gc=43> z^-bCveP~XmpLf1{(v2@mnS)kMO%~d<=h=Oi>5p}P^ha>ZN%t&1{q4QO^v#Dp+DIo? z)`^|otk|YE`RTvi7gAF@E<CQ3{aE{K&AG@E>)(I(o?-meWA2vI+n1X*?%!|TXZ4;d zzC%ylyk5|=Z{g{aXU$!fb-ehLasT2*9-a3e|5?=Um+yRh_T;?Tu6t%4FS1hB%>A?b zkHw}l)z_{rHCef5aqaeAfloDSrr*CVt9H|}QFC&6iPZ`1l6NcyhcoW8AAaF1zq{Kp z&1g;CA|GyE-rIBYw$)Z&eLK@PmN!4={i=<PyH>sm^PT)KGb704>g@Zhk&`!Zo>{d_ z>dF0YiK*MZ-3bd6pE`frahpS*A3VRtcOyRR_iZV+i`|#m4DYR-e|Y!Ne{SW;d=uqs zl}?;aJ+OOw@|mBphlQW-5_rs5^)311O(t<y#_PMcGE^G<_xob9y({j|yyTg$?p%H* zbz=Tw`{mF4C$m?U^3KqbZC`aFSx&h%`bEx*XS14_To3-YQuukQzSBgg_0FU7N+QBG zao27Jr-!yK*S;#b{EX?IsX;#s&c!Nx&~ST{(^h40quiqJ_tF=Kx!w3pXJp^&nvh@T zbjCdX;d1jz=McG{&!0b-DZF7;_A1uRAD(v{>za4##roU=xjT8~GMxd@j}4ckCz!mJ zF~9z)f^U00_nDgv#aw^4?@T{4uX<jJ?u=Evn|}5m4qKSzYqROgx=8;+#WUmAJrwKJ zt?DhDmVPQPk^SxIJH0Pfw%yA*#Ju@k`}%7qJ~cHuZP+}2de2meJ00HK=}LF%-W_<# zeN0Rz;&bB*>w2q6&HENiK7Ted`-!Q&<)XIOHv*4xa}V+qw>?!n7W>Iz=HfR3zeFG9 z^32mI7yZ0R$o%?|sVPjyerDt)cV*n_5b9eWQ8y`@`OAvhIk86%<g|p(IKy52^YP8D z)?2sd>ThsPogFc)Y<00(T%SVu`RnHbbS~dp@17I4@Z!CEjYI!8Z<*SrDmnGnX_1+d z+*>2Ngw+3A{jll#tiH+d-C>WsciECA&W&aVDn*xeSkDP$6<vBqRj$W=>dUr2b^ldE zPv1<M;QHQqW$tSR?d=Z&zwsC|U02KYEt!4KP~*~;%$b`-EpKgEqw_W=H!RG}Ei7%; zp&1j~zAm-?X<qm0#}k(4y3RGrTV)TKwx06ksR_@mEJ&PU*5zy=7_7(qVw=FbZGYX% zHvD1k5_>9l;`$HE)sM~gOq6+SP<T<kw?Wk3Id|rC-sfC_$K$wE56zEdv(7r$xbrU8 z{G$1CXB<`sIwdDfR;rRJKld`iN$yr3*AdZ@`t#N6nEo7{ddl|GwU^=n$r;aWBHwcU z7W&?NoT=3$uEQ&S+Lp<U_G@oH$WD#4OOG_$^X!*bzEHWfcKh2MkLH_fxfNfgxhMYR z`J1JFt|iJ<toygj+U+yBa~tbvZavp8=7;q|E<FEoBmL?Irkn{ZTs_S-OCD+1UA*Y) zZu0lT&8Qmh_y0^-roH7^bLn#AjcG3bwcOrwA9Skzn%H&VSyE)1*|QY(P48Ud`NU^; zMdieoJ7p)`w*0WOrt0IpbsGIU6+hH%FS#uh!TB&)G3!F8+r2Fl^KKn?JRW^l)aU8r z*|ls_)8{I4Uf!~Crk$R9bLzi!(UBUjTVz~c`keQfA9Li2iSmv`rDwlrp77r{d(XDC zpAK(k9zJ|o@$TY}7b@1?Hp=C*eJ%M^r)!ee1?M(h(H)PL%lu8hzL7WDpvvuvtxkT6 zjn-%W#jj`F$-c4Z<HGg&*M48to59;SH?~ImNucJni6WbM@`_Y%_&4~k_cGnJzPw)b z-Me_1u!^a6vBg@iSh@Jm_<qjcHEHuS3!y(;^Er12wW`a%P*Zg+IV|w?L#$Pu;F+VB zkFH&rYjW>JzWI`DpIonR7jq+b)vo+~uxO|EtJ-oN^Xfzw$A9I{R{5*?H|RWL>Q<^c ze}QW{m)(`g;T&5ZGQ6AmRj$|n;lfR#7x(jO)ksz^x7lM@J+XVmy_R%?sRmb#*SZSc zwQ^C`Us|1%v8sGlf8L^t+fLoi;kL8hc1z=HR}G6#@hQ=ZSDhvAX+{)3o^U6e=W@1p zqehs^Uqk;lmnJ4@uo|2_u*H5}$fwsEzjH3;n%~lH#(#QmT1Mg}TkGJ7;zqVpJAMW4 z_TR*FzBwmQK%we?*%jw5QHIPP><gq>U&Mz!{Zsd~{@<G;o5b%4mOZ!qaXi)eyG>DO z)y<Qsl|Se3z2IkbV^}Qv;A>*T1EbDm{S%k{biQ&~_=}8G;E%q|+eBR^CQInl_kI1o z&T+$>l8YKQ6FC2^llNg1t((Ss?J*ArPtxh6e4%y=?T6}5_PR_Il|2*ST^gWYHdS-c z?v2a-e_Ed=X}9U@tJ)>)c?m~~uk$cwt-N;2X1=1D>_1T>uJ~4q*WVx3%}Y7Wt@rfs zqLPolo!w(A@11_~vgy!v1H;=Z`9(aEdv9Ga*4x>xueh?vDnz4xkCOJq2Q^%`H}*?j zu)2PVVX@TmN;an?*?%qbnrHm`DiE>NqW{G6N^gmxYlg--Lg`ND7wq{M$UZeke&I}m z)kin9rcGND(){h2h`-p>qIdj`_h$FpxFmfrzDs6ld49q9PZxDlC6+#v`IvaC^27a$ z%+q2uVt27+q-iX&mv4zQ5dOrmd&bkr?_Zbv+Z<i!@RQ?ifZJZrh}lZFY!)2JH)i{& z`K&TKVbS{aayl$KuZK;FJFPrD$p4W}>sL2Ef91xfVryQ`WSq3`%J&!R6(6asRx0|! zt!nq!>$X65@Pes-0?X!P+VmS<wfp*Si9*D>!*lk_od3z!SFpe1*Ol)NJdVBkSHSRo zqTG$n_kKJcHYL|pPW^Cv)a3Qd!ES<^-QH{c<@Ypdu0LLpU9)=TbVc!FLH1@2xszAu zNG{O0BW(LY>#EEToj;ndT;{i|-n{&}q{F>sd_~^3j|2wt`L8r)3g4A-ZvP*da~EE2 zm2ce|r?KO*{blbP@5^jv7S)zbS}!|Mvb=nfe&%^~wiCHp!CNzH-b*hCxVW)DbKxqT zh-F!i&X_!sbk^Eo_9De(o%=3Nv(*J|pIQPH+xG;kow{#)`od=U%4Lz;N|w1_w$WCL zEL?K-<-FI<cXqg_TiWr~|K1exW69K|ZE@+BYR+uDT;n&B^@IG1*F}dVZcE!Awd9s8 z^LygnRrT++!TY(YeG$9bZPqVSW=iHL-1+N*<dZwE;(C_tif^?D4^qE6?LubjCeaI( z+q|E?HJxLyVwNmVxXZK_n~V?HM=P&hU@b10>l(mt<=(D^y*<oRfBc>4Xxgz^@c94G zGn);$|CE<`{@uiV(bY8J-??iKeB_@LwRZd~zi2lzY0XyF^cizftE?+SXRe84W8GJ~ z<#@(b>5zRgf9>vAhCJ>}o$B5yqG4@r&>Rte`hwpS(Jw7YS{EnZb<Xk-OHZ3tlJ>;r zx@(B?ch<_lsDiMa<-(sO>kcn_kW<%~DHq6o)?o+F)BPn0j2a8(1m?^?&z`&Oc5mfY z?Njs0Yuf%z4c{a!@kB1kEx<G{Va|-YyBCCRbk5J`2~AI*r26I0LA@s%!bFQAv|kze zmoD}CGxh)0`P!$}#426lWfp0Eoxt%-<FEe1&MP$^U+(|aedN6UukS5A%VY&7yI%CV z#Zk#p9H6-Eeec1UEA9o~S1obO%k15Agx&eq>pL-D#F?+;PZiuC)_7%F|F6r1VFB`g zw%%?uo|4~o(@Vy@JL2^9W-W_T8cZh}^?JkmWSYL+4?215Or+=yceZNHIVsv7cP^{k zc|+Np|CHnH3~j~w;xD<Kn-pC*Cv1AXVNb7f{?2j(zSp}|9L$gD$VD9%>HV^7Vf@3n zFTKmNIJh}u?$^%0=>2uxZkE#Cmwvqe0&Q$t`A_r<1YW&#i{;2W&cvz5T2I}$#vjJI zZ8gWb<nT2fUl;dXj6WCh`2Ff%>r-z>R=4b1|I+=J?R(b(-vi6FZk&_roRG8c(Viom z-(9CAXiD(bJLsLVpW3eSph~%r{mHVf{H4{C7d)<+@%>@M<C7(aKCQT)_C34ST5@Wz zoagaRC%9uCTT1$U@|q*>y7JrP4Lr}M?OC#T`nSI(`l7jB`bYQv&$N)e^yI;P!Flpe zE>!1EYv*46`vr@HXS|lF@fMaT7Igw|r4LUO%gj`ZI+yM2dSdsVe_xM%iOORv5_+hT z9Np{jHRc2R;qTw9W}2=M@a}9|>9%s6{~=k?3A6ibcNwj5>K3j%R<LMlR^*RgYqnj` z4BvFOAp7asC8?(tZ!+8&dc{eAS3`PH>D$Kvv!*}#_Lcp<u(HpJJ!?}ZnLAzj$Md9F zR*^M{>%WAmu9sY{T&?g{4a;Mf!w*WY<NunVIQMC}-l2aUX_Lhi#NWSS{QqlR)n>QS z`TJ&+q}J@>pMUP#<yG6ZPfv<m=`!WVEQ5q8Uwz%yU72S8V!xfwUI%5j$F1)J!tTjU zDp;xCye0cWWl(fV*rNH)N1n+X{t>w^?21H<&cW$B{2vBxv)H)Y%xG6+%XitNkiJ9P z<qXYZ(ybpG|9-}pnKoZ)!M^#OH9J{S?}xwOj}CE~6!|okq3xFTjVT|@%==ij#ZTmI z?2UB|2wJTBNouxZ_GI_DD^zDUp4y$0V7>al#Yo+C2_ifHTo8y<eR8o;aHs#nrFQp^ z2Nmkhj9Z;?igld=clbl=m@R!LKgP*inekzBtxMy7eK}tiNxSWgN&6RX`^j}b=Lts? z<89f!jEh&OHl=cZtNf+$&2rhVm@jG-`X0$F%cM^|y_lVpzvqkE23;mc<&bpgS2?WB zb%E;-{foBVav{s%iNEB|9s5I)>UA~myefYnm(2JechL>;{XC(YoO5hH8^zUZ6WaNU z>lt6?9N8ZxI%lU};&{LJ$Wh&^=Cc`eOx~3$KayJ+dVSKa_QP@2=`5v8HFdW+BAz8` z_w}4vs}T9k+qU<WYV)4_yrXLFT~jTtWxa2h{AiztT&(@1$zFdsHotx$wkz_^nU~Yg zA6end`flxyGFG?tr((GmKXNC03uiofc*)0wQ{)%Oytr!<Fy(ah^6QiMdG7r*+i~Po z0(V2y)*~@<=L#yV+oSVFr262=bBWgGlB#kl=Q@4_E-H099Iy1v<+ahvv#MMToO>+~ z>#e=%7`T4fMT`E;fm_&H?YUm>y?Qg|;}@${zjrR={9D#~<M!2?M|2m}-IU~<xaNlZ zq&n84@hXlbik;8v%@lg)-7&v*-C&7A@0RaEG4AHy=9y&|q)lVqziNH{ZG(Oxu8rU7 z41!q_B;VGYO8t>`y1@3-YOz1cdmjl)Hnd#NSbIEwMf$wts1qUabzJWcJ-qbs7-vsn zK!Nvj;q8a!q@LhBeKW*7L8O&s;p%5|oGgxZez&mQdMR_wNBOLZN7vTP^4j{UWb5zJ z=2GpS@4x2M-feiy5;Uu;K{$|a?ap6ppDxVlGu*XI><WumXQ1$bDBXzcHBFOeZcpQ$ zoa}r<^6p0G8^T8x37=onxbtsaclELj>fSDgnUti=+zbD0KH>CNhWX6T=yXL9=kVUS zcZ*)1);6@dSGl{@ST<{eH3#GCj*@)VE5~dnUKYIkeO`x5){HKbhSbdoD^FULW$bo+ z5wNG|R>|elg1fd(vDj^BBx`$onV8z|#~u&zm1Y%r&Ci&AN&d)}{-i2{RPMKeoZY|u zj~ssCC-zb9Sm7N1=80Oj@)?AWMo&xP(K|dNT|oBj|DYb$bE(>Yyu@7}y*TJ0Q#5_i z93_{P?Z1y!aI|FqeZhR8vGbkU#Hr3D0X>SB7+T5$OB|2oth*jxwfa}8_LCF3c0c}x zc1;p}XTJWC_q{9HUibHSv2tb0-6{K=^U&;}<ip^^va7kF=M!>x4DyvK&2kDO*L~S^ z=&acF=d*9$xOO(}dV1*F+3`imN2F&w{I#xTbKCVqIq_xXo6ehW&;PgPRs1`iaJd?- zBSkS&>{5e%eLFknYw?+nPG4P84qv`;Y@)!6Z!M0~`|C}AENA4q<iK|2+pXz$EJbg= zo_jK(?Z1Z9p^7P|a(GX%aGzjR%gFWTe3xW!da<nYrM=C@0{L^_g)tueqVZvW&R53B zzU{l_7b<Tnxg}9@{<)X2f7aRA6U~1!PsncKx$bNJoXeckpTpKE@2YR8f6wK*5{>P@ zmc5$2&1U1#meliQi?2OB-)cP3#$ikS8Tr5&xenjgYH#}7qR$+a-T9%j!@Wr1Xyn9h z<ypFY(zeSt-rgDdeUi%h9*b8Z$<Ge$@2oj^&|;a)0lQfhby<IYvez^1nH<KgCGqO_ z`NYdp*DF0!I<66abKT9zCub*3wzzvVc9Qb_=K<wSH``VUxy6-+r)^WZ<-Nbo(r3GN znB|M#CpKL6_};kp)x623M=SSEXnH;M;M|F+M>-6?^A<1jR|?{+m##ay_wt0GABF1i z>k4o4o+^raaKSonZh@84$0>IHj1q_UZ{jle`LTRX_|%4t2Aj=)wi_&4BKbo#eAiBy zn5{bPbKbw0S-t+V#_pe8$?s%W-2S5waZu(EUoH3UBNOF43ir?cx?s2R=83s!*LPKV zbI(q#-}pvUET*vc|Bl)3YWKI+s^qx6{g#-h+uZbpA-!;F?TY$d+Xr#gOAr2(npTnj zp|m`p!ePaMl9x?J6>F=fJr3S~ac9&7Zc$OWJx}*F%SYc@B^|x%aNO&63^PCTJ#=`+ z{mx!-S7nHW_LIcj>}_flWx-8J-!2*dHc^W(s^7R){8{>^=`tm!)3;jaeU5)xck|{e zfyI6g&k8QT^PZbOiDz>|fgRK5b$okXmQB67yZ4-Vt6SpM5BEY}bjFl%y8ZJhFqbIX zS^Mj8Ue)19o^xD^+aIl%&{mjIUw*9Xv-V|QL*aVilQY)Z?XD|(CYij5bD#bHvNeCp z1%-2F#dqE}_%wfO+;-vH3deu==DY0Lke2oNx5P)S*blCJv)_DRaJy#TU-|mk{a#DC zZk4r*)PHYL`*HD){G-X&PGp?x_w9G~c6l}bSBHqYwnX>TQY|s<?j#l8eg3x|->YPi z+Ir!{f)CaI?((wTS)R|WcBMmbX)|Ap|DGRD*blyn)?|9+t#=|fIo8x5ebs&ez2iUf z-DA8NqyB1px?A_|&YNE?=~c1!;K`^~(SKPng&FHVUO%Apo!=lWy1eDx&jq*b@=6xZ z7kjw$^S`I@T%0?cr@GG<-PmN$dfo8cH+N^wJ*Nu9i>@8_$@BIt^<C^-_-#S;{(Z9L z$Il-0`ctn^ad~Za=d5eX!?ZR({4?)CY~-BIva-EOs_m!Wo!@15`s6q62ls_pF1K!c zaE776NH_4yeCY$z9%(t}+TIngT)xhlb(&gOekR+Dr-}YMeDh{(KevD4QtOQRni+q^ zURK%N$gpI5*|)Q<_$=39W1kfdzgZ~wzW2YmaJ})mtDLE4*9g8pb?abCz{-~3^X$PJ zk2&_7?cc%{$5|9t+-vhI^#4LO#_;V`g|1PjE#mX8#(!PE!CR2soOAYSzK3r#j_=#K z`~QUBzt*U?cu!PXT^&0!bb**%tXOvZgXw~cJ_RtJ$>tZ?{l3iHu<qgGiKc59w(j8l z8@63i%Xlr*mPJ=1kF3j9N}0YWbo#5Kx1E&|Y)>7T@pbd2#+o0Wm9H2to%rKL%^m&9 z#=Gff+LZR}ty-RZ>tvS9-Ei5L>0L41jmJ)H%i>-3=2iT0tr?d+m5VR0^;gW_b9rUU z@6Gc%0`|vtt#Q@$Iwlr*XKG}&F+ZmmBiDaH1Llj{C0<$!?XZ6>KGFMPS8=^dm6iJv zE88NCO%vBTdLMe8EG_ws;}M6%!IQC_e;EZcT3_r6d=vZs7{?p)>l5~T?+w_Z(f`?g zTAHl3K%LaZD8`AdS=D<pI)ACZ>^_|Q{eJ&8$34?t{WJVi9l59cAbbAnhf8C5J}^Bj z`Ct3)`km|P+5WOw54b|pCmY&_D}A2*;OkT^^>x0}>nf8ZKb=_4DD7btP_Ogu+Ud=& zZoW@Qjcktab6Yb<Wur{#8kwE*AF=Eg)_%#oaf$ziB^5DOR;(>ky<7NZKabBw|E_$_ zn-g+szqjpmU&ipn|K*OUCogbIekzd-<bLiwdFk!RTCaS!#NT-lv3-xr0qMsJ0vPhN zjwP_gd^QLYiu7CCaB<E*$<Do|7yrr&sLahMKisFRb)m_Bt(~o<+ccif!CTfF_RQza z6)`Roc;9`r%24mR$o256?NUBWk9h8_NuIsh;{C$6%d|Gl6jhpD+G+DVv~1p_Xd6FG zrf`KxId69zWZU#2aY?M$0+IUO6Gsgn8@OKExQ^qc)RM(}>!dR?IscVaa0^DA@cwxE z4jbc|Pph`K+`2zYmuoX;W@W9)j@CR&*30(Fcg{S2Q|^<`=2!Fi5XaHPIK@99FM1vJ zoqAtX{c!E=6U!zmq;PH3{(V&9(rropuM)?Dqm7vl%t@TQd#BPSrMSmuF0CuBo4eEF z_Qah5hR)t*PVs90e>r#f9<;f4|DD|vhc9`%`0cJPey{Z^xbm^`j;njSat-<xUT1X` zn%!2F`tXNbsMz16678TzNwP}1tcOYxS!c(b+u3o4b=veZn?mEi$NKK$sa)axNY3q% zq3DZ=ak?MOdMnvXl*DHoH+fNfCh}kmXH4Mg<QFzCt<8HbzLnl{KJsW{zvawj1*a-| zMGL3?)DF)OtnNwalQhsXz2POSWA@-#|JS>=-=wPMAHBW6@%7c@ig`QNtSL~s%5>*o zk8R`1Qxf$jUv1jFB6pAQ!o6qayJWe$KiYE2aT%+yNI}Kz1?SQ{o-ysw^-lA6$ix*b z_WY>-%(LtP8m}MZOl|l$FMQUK>ar*Adb8wo-!2P|+xpZbedUv<O?-?0q-q^t`WZ1R zEZipTTuDOZ(MZmjSvu=2yf3%S-;^X@AEs-4R5V#`f6R-{hNawwd-uE4M6{i`B)CxH zjLf@zOegl1?DvnHx`)eF_>4=vrNCeIV=w1#SUqWNmDa6QlM|%&bliKcI-x1JnoDA# z%I2wiU+p{oHiq%}4yB$FL#=F;l}~xo7W`BG+{o%*W<2F~K;$&eqAmPy;}q=`^Mm(X zeI{WS%q3Y7*7-RlLcZNBt#xt5<*?A1t9fkr7rMF^7bP3GTbnP~P$l_;DOLS+jP|tz zpVY<H;fC(NTjeJP8h`KL{b8?Z_eF_m!a9ZQa=u%$HXE70yu3C0W?1^HYs<G^n6DJ9 z9XaRep=|A{^E)CYCX_tS`1{Xm%D>2Wvv0C3W8d=Oy?;aHZinjbV##}z6P8Bwq@J4l zXZ9cV)psIqWvRD^efIimG>3oYt@a2lo97(!J;fi1>^sqMEd9KI-JCm}9NsGr^0Llq zXg+yylCN1#WJ9#qEt^kk&NrG$t<u|)em_BNpS<>>i5Av1hWAge6)CrpG*Y;`PvgT5 zz2p7b4|5IDHIF*YyLv3m@=BxbE}wciuP&YaLTQ%2{;&q9+<UuBzIkWlj(EGm+jCcR z|6<syaW}f;sMEFuOfzI>sZ?_-#Gf%VdzDnVB3$$0p4Cmlg1)TbUf<oCM87vGYyDW? zv1-nxxpJ;&)43z2Du~A|wB9iBS*}sT$&armCB$mIdyrKo7uo)2!^s=(o=Git+9~}$ z@70qotwi~A5q#J8%<sub|MX_+zpXlpS-6C(t{X5naO&?%l5~BVdS^DjRU7l`Q(Re} z77C_C7<F~MwaL04FyZz7nKO0HM)vM_cIS}Lo%J`m=XPzEIrHz`{I|Ph{##Af6^N_! z*mE*p)Hr0~mxndNm!3P>dVXB@Xl-oY{&`dFexLi|a?V$3`V!B_lN#(~M8r2=ogkLc z*2604`t}!_t@xe(?SfifqTW64SjxHkoVf3WAB&8hJLhcM>m??u*NOgC-MVbUGsbC* z<`M_urO!08ZOKg+vHqI9aZ1?nFs;;=Jmsr?Pml0=dQxipfe$SIK9o&ax&0S+_CJj` z$!imi{+q#SccXL1&!;>^MqNf?Z}qBo>LeeGd2s)!or-=>kB{WP`U?qHPHnYqI~ga@ z#rpEx;WaK5m99_Dyc4~AUhQ$uq(5c`Q@=6g_uB8-pj5?n@!`=kAGH647x3Qtca`xI zM@DMbX|Fr`kKeDY6TjVKyQj-{-_+d#J7(@oXkivS;%SwzOnj-@)+f)Cytim{YDH9u zMqE#{IpwyQ>-R3kDL1ZP=R29Kaq;?#v*s7yA2n(a314RGx@V&BC(*eHj^3szi{|K* zXDpkbYG4~*xbGfIQQc0NeH|$}4}EU_G^$!ubzHA`zZ-|K@|-pDwVN`^G_#Dv?E0)# zUiZ9w_iOqm1=bV4uUjM;sY^`b;;j5Rx3l|Zm!$fV7hC(4#cY|M&pbH4<DT%+fP-~O z_L=8(=D#~ru6F4B8}r3;F2^Mm{eGMEJZMo)P2EAA7=C8Wr!)9o&SDRqrXuw($zLZw z+4}?MnWPz;Wv)+)e8>MbILCft{41S?er5ZO%A1V3Kh=m#d{ekpKXJ`VWtG<Bzy6sm zIkoRn{?z=&HAi$kjjniKJ9Y8=HRj@FtUHz$^zjwjO@8Ya!@l#*B&`{9ADbthUs<!` z^EK&K){d(yYpV{jEqS>^@{Qwf{;c_8_S^5L=r-syU!TWUzoB{h?aA-<Y<{(L)!LiC zrx$aJC3rq(I+^6@G&9blsCL!&gW<nkXC3?Xs(t_Qm9@n@ms=+beklC?{z$|#lXa_# zMEjmzJ9zyj`-=L1oc}-EH<G%}V%f0e-2^|U?NM)%HZ9+7-1XGoV)NXSANl(B7-l?~ zb!z4^H#Yu_Pk-#}4!!uct*z*tqFVmct(iQ#Z@fRfO5%xnshXCx@pHyYy0_9&FY>dg zzuWg<YE1MZ##xr<?UkOaH`n#Q%&Ast8F8h<^~9p>Jcr)Y?RgmS@RzNGvF|&r@_Lm# zc2yfw*{qM#u3ed>yYkMTo=I#KGG;GCXYMY1rhV|=yubXpeG83w+cdqUD%P!FeDjN4 z=F{ecr}6a+;dY1WQy5HlO*iTaUvBrx!*aW@VCwp0t8?X-K8yTYxlvSEw_*F&xmW&v z6WCXO<zwV?9^v%=NAgQ%Kal;cXU#t6rQ)98t=dk4zYn^6pEN;Seyw0(iT>4k4#B0) zOn2{;Z8-M$LRn3z4x{0I!^u~3H|Lu~wY<3%wdcB{?KjUOOs<RW-;H<sFY4L-F!)x) zn>+c_rl?GtQV{4_BJF<t#r<Qaf1Q0{?>c9~HRee*D&Jq-^zTziua;o>CvoS9&~yH8 zZ>48h-L7?;zId}-)I+<?96wUO?|3>*<;LSRr=Q5(JNIp|=^oV|zqxkrzNwo(#WZ}) z0_md`-o}#`u1#*=+`6}a-n{I)M(jUkHy3s9*?KXuA-h@p^UK}WHnF%DIpoE?sylk2 zXQf=pt1qXGcP=wKzNxtVYs}{B8~@y4d$Q=@zGrolJd880AF|jIxlmnt%fmH~r-x0i zlo62N6FYO_phr#eL8a|7mp<Np-+Xj}=9<EMfe(7J3qAJyfAU6Ss%d=(|D%;I%T0Gb zopbG#gG>9Lg<%`Huh)pLPLRE!)pgW&<LULH^&h)mm_OH^v2op+-oW0tH5)~;uPitp zJbT00+OQLcmLG3+zq?DQE^%2w`|R8M11+BI<5`zF<8sw{YyHy+{wIy+XcpYl4oO&j zd9G;AT!$&HZ2g<Um2AFUJ$K?s+{*4HkJdR}_b)rEI#Y5+-1|QZH+V(7e%7tAUG{VT zx4TwVc0%tTsx8~RWr4|?sEyz56dn=M`e=8vnz!illejvLiQM5Wx5V<*^XFz<_um*R zzCG*rlCZ$pE7FaO!*{%y(e_z#lZEy}zwDL1Ws8etZ>#Wp`<qeV+j3awMO^F8^sYwz zhu!_Vx|LiV<hsJY#<Sh|mwi)KaNX7;M^m?P>WS&6@BFRdeWd8rhWs7N4(@x+mhPSr zQm1_Bc4%494$kT?SvjBcBUIg<|M&S{a#J*7ozAS=>$_x1^TqcST-N0~`7i0h)E8ad zS^N0pOVh(@AKnX?8a&~N{;G@9Ux=OS6uDlYuv)9_mQ?LWtv&Z2X84xx*l{d+>$Kd} zhErKq^<8@*F0~=XwxHtL6ZMImMo%^xz3YmZ^RK!kwW~V0H=1*TzumRJ$(4()f4nC+ z$vAAz@h7_5E^j>Z|5~m|cVgOYwp+YecTK{}`(|urXPSR+Sww{W_tOq)7dBVBead&v zz3PAey-ekuD9-xbd>`h$+*$DR(8gAG*^hh7duKfKbm7n5C+@#Dvqi<V>Hp=ml^1qR z3dlX>`ToVbcef<ue7>kXpLYL*>-;5iJ=(ukM^?S|tyo>&?6YMr&xE;;K5sNMxF}bu zb%tSW>UZ8Khm&cUJ08xNWWRLf31%-(F;~4?=04l^E-<ezxvKGY`DESxyB{Lg^mOi; z)@RkL)l*xrVPR0uv0S0-CrPG3QFpyt^cV1pR=K#VzszirEb8^VaD?G)|K&S-ek+zs zE=qjMD<n59{;@&DjNNK|ZC90~%3>oIceGtKmb@}Mj(unHM0?R4*Bb2@-)?JJ`}BIj z#oNbjNq<Vti1=NmZhX+qZ1*dU+5Fe1=C1uD`KhJsVB-&d@xL`&?&hA+DzR6#IL*as z8}Q{1bEICG!-gN;ckSJJCdPl!P`17@xo@%hv%`YdWEJP$vRrh+PVm9Er`Kl`)W}I) zi(1<xtNGj~B$<`D=iocRYn-1HB0f&fyz6>v!?jb2bs}8?aVC+=>%Vc_=kT@LwtL~s zK$cfWr1ZoZe=SQ)uI^%A^ICFV{AY>z{$Dg~!VH-@H))6a9BeCglsj`&T{D(DA^YxI zw<|Kts*!7Z-rV&on?K>zZkF4fKWjBwy-OZ>&bg?t-{WENqWurUHg4&knDqAH<l7q4 zJdF>3%r{Gv5e_aC-YovV{o^?+14q3xIVpGkRGfLaICj5&zS#Twmm@dN)n9SJSv%t7 z6|vIJ<DF8scCSj?nr{AB=j6d3zxnq)wVfb;_451N%N5r;&10WD;M}Jaqq;*aboDM@ zzD~an>1FGk;}!-lf0CUdlI$QoUw7ka+f%lC=AYwU_OQ}1_qWl<JqwEZ?}#VF-ErN% zaA{rgw)D#AnLNMeCb^yXV<c!^$56j~o79_GX*T!8HPVgVn~HR7`&{!q=z`t%ueQ=X zHHJUe6d7+lze>Ddn|G@`_sZT~YNdAHVz#e&Vsztp3Ab>fRLI7pgcF*c|DJpca!i|g z^PRN+&Fj9JJCycC6fck~e0qNOy2MX^%Toh=UGKh-y&a-;;$uilfLo<T`-QWefhrS} z?tf+5<oUhibd6q4ceiGep^Avy$DB0th|&|B$DXfDXFIggV%wLu+if3o&)@J?HfYPa zoelq0)?IMf$F*Fh%}ma6*13NzOvj%8J}fO+f9LSNBN>~^I|>C(B=deXKY!=M_Pq~3 z^jZd;-8A=_)vl9{AMbrC3N?<X@wuB*ezI%1)nxwV*VL<0rlkmS{>$tSIb~@0?9KEa z`!}(BTdTefOfYG;P1HW7-f-ZL+}zYvpZ{*~*7-iy;OUyfbB@^FOR!Pv?q6G6ed^Mk ztbVT^`#%-ix9xpA&w|}lfnBy>62GEX$6k^8AO9r&>%3rG{V`HsdEd|79>upd+Z~J4 z{O2Kkuf4uTdhfw)Z@+F5_}2br$5y{<D#vtQ-Vj_@aAH>Y!t4BjW%8H2_l1|YTTa&e zZhy#c;=Nl1evHez=bzkuEmU&nGNvxCYsm~JHtO1**y1p;eLesBbn6?6Cr%x?yUT84 z-qeXna>b7g``0H;nUo|KulMbM{jSC&1-DBEle}}LP21ABwn8guZE!;WR0Ug!aQpIk zGydh6pS9R{-7mkhBf0(lmb+K(&w8gLv%fDh%U@I}YFkj`W=5?@tv4wN3$2-L9vsy; zll{=KR&7zmHdQslecfwjevWewv^w%>{>yLSDrWM*x`!)#vNrFMC>6fL@h)YRTIuF9 zpID=6j1HMpPo40j#i8g%npfSd^`%$+N<ZCrz3KawcFm$mn_fQIR+?lpLwi@|9lMu7 z@8VA%@Tq!tTPdzSdAqUqyM-H{ew*}t*Yu@bU&G7gMPL8FyOP)E<GZ|XtlQrGT$g)e zSNg6GhD8f^Nv=&|f3fVkY^>3r|A!SWF5VV&M@QLh>jN8!Y$iU#uI$3rU*GpkmVKUX z72KE<eMC80#bU8Ue$$?con|(#k4>pwm$F-O>$~rc(tXE0rk~xVzI(&98*!Z>Mb%TQ z@A1SQO!+;3@z2^g;cE~7U*26Fs_|Xj<h4$3j^-Jrd5;uh+Lj-B=J)ze;JVFAxlT_^ zzdqrJ!1?COYgFbpMz8q$@63jGo34b-Jzo)FZeH|HXo_kEr>oVDN!L#a?fF`<Z^N5h zP4$v@?{A&)*frtFuGYJ%mp(XlWLR7(^*-w8W}@-ke3JxgcSqA%QLEcQ2OCB1{O09K z>k^s6c~qlfp2m#?oz|}r_VGgNZS`LMlQiil%44f=Dm=MJ#QR67#@4G96^~v%5a@lg zc;PpJ-gCLJcNk^l|L@^A8{QTETcdiSs+_?;{XmCxDXBfz_@B<Jc&~kATijLC-7>m< zzMCC(#&dt%cT9piZEkOp&XMY0r_Wi~9(UosH|>Ip|Nqc8nNQ`il*2cPsMhc4KmTCX z&;ENA=WLVCO;wz$zqPd4@b`v~KM#H^w->&zJM&B4lJLlNpH)p>K6_I3D(zFh3ftd} z6|%dzEMv9*z0`A!dhYW!M@u~_xHVgE!PIv*?x{?hC37iOYH{hg`19&pZcg+%J=;*~ zy!)}t2*qXZUi;?0ee;wr;J?$usf@k{pQfiphV0uCkrSV{{!Z{!ZBG`9t%fe2S=R6! zfA{pt{$iKR#UBf%RqnmC$4f5Wa#_dI{dc`{uT(4v+xF$0i`98v&12_#>}{90=;{`R z+{@s&eU`a)H(P?uwCBQ(yG4&g%(GuEGh<ifiH`IQ^2x=FdoSu+wVrjo&hKZ}>gylV z{4w~((FJ!-&k#&LyCUjJ^^<v5dv1H*5nKLkzsvvcx8gcyAO9uPzB+Ka;!0m-N&l;Q z%XaN6Pr7qqcUHu^z{D?lQ$zdWB6HUqSo-D9-td=8cRi6?_4Mt+k`pUEGWHqU*!^o> zdgHn1#2s%AZDv;4|AOUDfZDPz?OWf@y<K-<wQWsRbaux-f3Azd-9P?%ef)jyp4haQ zi5#3~_f+hgyyx&T-pg9AQa^s4T(Wvad!fYStt{t1d`t?l^HO(@nfjya-2CtTx8-8C zv&Uy8WxWZWzvxMcRn|^9bCGjyEf#0*p2%Q-ky!oH$NtHQraOPsWi#uxWII3Dbu@sX z;#S(3%s*NVR(hE`CJTCAnrCjb^QYtT^8p8Km^@eJ9ntq^IUv&4^QHCphj+GXwCj@p zuD`&ZHkV<U;>SHVj~mMV_^DjvvRET2p@}_E`bcz2lFOR)hU;Xm-#U}IHvf)-EBlni zIp<h@zrFW1f7ge3!MjCd1^i^4S64*!u9>-qe;%ioA(P^V)d^+0`<EvDzwa@Pw`cK` zCxJ&xUW7MK;<L?FS?6poy(gl*F6zp{%dWDw7-rl*u0Ls^+}yU$zPCNiG!Gc3u590F zX4&^=m7$@X>j$@GPH&?`FR!a_yH)y0<!#i*{aM$qm)V<m?)LjIiS5hg8EjL!ZW-TS z^HIfQVwvs7y4SAn4^Fz^qTy-u>iVR-Eq2RdPtW=h=IgUtuRqiMd)KW}qpa&@yElET za#L@rGhFlKr)%sizs(c%?nW(py=WTW_rEq}SsJNF8pM({s}$!NJgf=&<7Dx?BY?%( zi#PCe$0|cxjjtK8PqM!3U3M|_$K$`>&S;pg+uqh5y7sf)h3KD;InN6JQrFK~Cgq>} zWcGQ>ntu)|Wv`EZP!;uDA#h;j>)ltLvE;`DKb&oHma})#vZ891YNcf>cPN`p)?2nR zr%&a_B>vg=CMV8ZvfN`MdpK{g>KDsei*+mST-2Y-xx4Vj%%xvc9@peM-;Ld7?l|YY z`7x6xCS8Vs=j7G7OeHjRZ?DWgzh?d;uM9sY-paC`d%cG_<FW)_o;Wy9|L8smsa?)J zRoBdyINAQ3utGh!R@r%pW_$81qq#GeMb!C=`rVnRG<BxE&c|c74{|F@sdWhQz6@dP z4GHac*?C0umE5HTmFw9|GiI)E>_1ZRB!7it{P{gTFMk@%d2qI3n*F>#CNGz~U+8wL z%c?CXXKRlByXK_8-zkfh|6=}OE&Dw>bKlAdH}+h-aVTM((S|vie0Nme?e5w=-NESH z?jK5}!e_2NjPr^O(t7YJ<?zhwGt}JPy?h_EeW^3o2iKU5Qi0hg%zu=Av<<hpTKQtx zRM-2$&sSGnEWRbbZ{pIQKK{$M=b5aUEp+s5gxtGhQ*wj;elOLmozAsIxO@7PE1pl! zyy=_1*;D7a<dyi#(O2bW?(i-)XwBch!+Un$^VpMluTxgt(DQw|@QZJ3!qHi_`Ry;R zpS68l{Pl}cXZgq5jDh;!7sj1?thMH&PESD8HQ@;r-@hb3Y%x2!o6~p6(_gzhPv^eP zvvd3CW_tE_((eiH1l~IT6Pi@UEUTDl{vlA~V7K**$6d=>(rz8DkyurrG3z7C&d@ut ztxIB0zjxjeJh9Vy>ZI;6t^Is|cUw>W&*S?hq~sybt(6mwDDQK~`>Ewq&Fi{(%|)J+ z);pY4I%oN;_BNJDdY?_|>~f2I-S4bi`%W>{LoMrl{-SSo_x+8hlzcCJWBNpQ>2tR= zp<N!^qu!=S`f+Eyt?zPOV(cg=viR9K^Q>7Z>{C|kT<;!#kll5!?Tu9JGoQVqs#RAX z`KfjLH+LZa-@xrWUoSjneDw2mWY<gAE6%C>>b6c%FKlOTa@8$awxl)ar=jkao{3YY z+6w8PmQC`x_>DX8`?v02|NVEZ)|%EJR{B2j!jUNlYmb#YiNBk=YiH!#sVi#L6{f`~ z=9qZdeBXJZ`0GK7^N}vRzxo1Z`Ikply;f6p`#<}3@jUm=e-^u0f)*_FdF^bwC*|tx zt32KUU-$oiwaDnn;~MTH$?(>7iOZH>u6d=FDt)$5dgh7m&&#_)+;)jQ<ZE0p<-M}j zUbiDJ#096eol7e04`}?S{{7M!hurxqOeWtE`_5Sx$Zg_j5_HldS^v@w{_D4{AA8w- z{$V}K>KP{W`H9+x=Cr0A|L8I2+Tlm{9xVIdpg*1Y8t<EH9Tx1nAHCn36g&Tm-<c=U zHxn|HFK=BwS;S#W@8%h|uFfk7u;0Y;duGsw#7i5u7F)~}{J&yr`))fe_bKe(IbPXD ztw>t+pe`%laI5*|;^x5Vt2d`|gddNReyhUmHm8YKiPitR*V?`JI!e#;cK&WnpHXGM zbz8`aG<&h6#TP62%6X)Fdlem`AG&>Wbb02Ty(VP6+;kajYeB)!ODao?AN)BR>mJ*0 zxYpe~_--0Y>W9R|jTKLW?#k3IKez4N3ej~PQ-8BwGAW+3Ol0CR>FSMBye~(uSJj&- zY`1^b%Gp=q)}Eg?Q*UdlQpeo<<B_vW=6&`Kyj}Wb*>*djM`?|z%+=PPd@Z-hKUX@- zt+D07yMrye+3!skyls1-%YDV{ocF$|DV9^W{Hpkw&v$ImcAn)wGxlWU<fS}Sym@cB zWWB>@j#m<no7^U~`J1_Rgz*<oztzR<!aIN7g;^Y*0}jvseNwV+{j-NteP(4>xE~0J z`rNz1f4$tKC2DhS-R~|^+E%`>($am3eQt-tBP|1!lczV@9W|J{F8)b>aqr8YrA=p! zOl>>tGWW>D|1VVImse=#^=y6gQ!$IR@JH|?z4TQTi(T22`h(;H_;<9Qnt7x=d=r0l z=;PfB%GrF|uX^aGSMD|E|Mk19PgDB%uYXo9tMx?0*gModY;S$MvahQ$Q2Wq{3#YEV zJXFfmzHy@O+n2pr=U?v?ww``sfzdYez^W;Br=PA}QLR#;_cBy@mBrnqUt`QxhT6YA zdg4<1)uU`W*~+)(Eis>y8N2?CgImg`XPf#olXr_scpdx8ardp`eEqL#-PTi|eDkX* zE9$WO{>5uQA75d_{r&*{g*)AT_o-ap>bCZ|Y2o`tpDxq|zRh;*_3M4f_vlo~M?1BJ zk!`<c$nz)t>rUEt;pM#l>1V`qPVZ*^UwvkJ;+MBOEuL}zG*R*0#JKxUdlnz3h~d(g z5sRwW?ul`>x^1~#SLc(t-u!CuoMg3maVu9@W@Z$hdH2LiuDIA+PWYO{*+W}yoi&Zy zQXrFcpkwiJ;b%{NPZYl}d4|oK!y3!eSsyJ8c=<KvvSBvwa|_`KmaFsZci8S!I=JuW zvsF^vv%TyJ@A0_2f4#UQ>DHrXYmO@)u6^Gt+v#yW{>XFruD2ETN-x_czmGo7k^1=i zfl0ly+d~+-v$nb#9I*e*$5a1V?*{k#?$(TN54JB|xM|DHJ@)s)T_5dTYjKKkMrLzV zPPW{oZ>uNHiw<?TRUgh9xlKWTdGjC7^m)5J+>7w4&g(hH7P^qtSMi@+<Nnp#c_!O0 z`g-Bp!+pNV>KpEc_j!KZ^ZY-<UNe5vJ5Nsp%{^#gJ>{`^vbwVH_xpC{_ulQuKXOj_ z>zc-gKiuM9KmYW^LVV|?i%z#AwF}PYYpqQ1ZaAkAYr24G`Nj+W+4m<|od{)Lo44sw z`lFM3r^{USyHi|yXWsv%8Rwr{34OBXj&OOuzW-v_w@e3Cvl%-gzj0j?KR9cieRYnf zuKDNl6D{oj&Hcl*cKMOtb-jG92VUgd-1o0+b@AP^$+iAnTb9=xp6*~?=xp$8L5A(@ zeE;&W`#yHeVluDUFNS&8e!TTUePZYC`m2v3mUS)One$-L#Umy6Wj_C8zHj#|c+=Fn zTuatjJC@JiQy?66`J`l>X{4XxuiBb#TjN9LwcpSFP<=)JC+GQNmGh>beVO+9<DOZe zVS$|gd`raCDl}*4J-KRMtG?dp%jtjli%+&KUUf@-zf4qBaaw*w$x@m3F3XC_WftCW z518=d{+rnJ92HZMZ#p}jGQ8iPn9_3hage1|i?>+|cMR9fmcD0d#`oSFcyq=;^``5T z1_!2=7fg*W7B#!LH@uiD@8D3<sIjP-;i7fTw~EcJEe=gb=G)wzoo;WxKi%H`cE0-T z(=7kvU9X*Azfo)6^LlH^`&Vy<?`+ih$(FBE_eVqRpVhng@2o#lwW1AcyqB1@etFiq zwrXEM*1WhsXC6FzzI>YQ{feYV->&D!@4I=8duqs^*3J3*JEmt(33<!?@y0U4pxsrv zuMAa1s}=WsTlPaV?t5dm^}Tr=_qV^SUH(XYE?23%!k33remm&wcZ<smi~8{PcxU&= zwMT+t9si#0<opuC(82YIukLhJuc-R{Ur!EN3rvbJa6Gy8$Jsru!lv7uZkwIr4gA|K z&hamO`Q?vu->kRq`m@(8iR*sdsePN@M*W^!^ICgPdD2A}-M|xPq<-vjV88Zk?%OGH z?{dR`%u@NdcZTZ5>mpIFcm1BH_y5%ge|f=Qhuzs9-wXT}e{ZAYKJ&A+Kdx8t_+Js= z58nE};`-rO`$zg*@oo3#DKR`fccW|a?kT^+-+IecEtq=Y(=S))kZb;Hvh4F7pV}1^ z9J${pEOLL^*;BtXzfS#{E*^UAd*tp-`%0(oEnWSjebp`h+Z#9iJ5x3F>-@0wQt_ex z4~0$rnlg3Y!q%x@Z(m!rrab)R?JcL~^M{<A9s0>xI_z5ijfI=)zWfUPx8~Dz%M0!* zSAK3ex8Tvv>e%A!FAl8?mloz`usT)E>ELTS^SrfrMxwjwhfNFByO*3ccGX<Vx=_9H zcV^j&O4dt9+iU|FzGTds$C_Jid-+jm$2;*`Jgx!WC$_XJFO+u>FJ_)5ohDaNTlL^W z(0b#jl!<=J{HJA$JuK!dV16KWfTcjP!2bbPg8her1&mu7^bGiA*ynNC$X9TFs7fgF zF|7^VZeo1A=g0=hAKsetR%J@-%vV{W`T9x3<Z0R_JLeUvTxQ;{x#g_d-IF_c>kj4{ zoK?GjW~W&8he&~4zUx+6`$nEMK4#Ky%DK1K>KKppq9*mr2Hf{AU+p>Gw=B0h(2sNG zZe4f#Q_qhrnlwu`JLB^V`Cq+t4O2g5+WM}2<NbDiSg`i@@XPH>t~S<Qa?Uihy<ume zqW!Yg>T2J+gC=no|FTCt*snPIX{=AHq)Cv6@B0@~mTsZtZ+a|+s&b0X%*u`M5oPN< zv@p%l*O&L&{^fIDWo(^!l=<eDm1&he##|xmWEDHaqtw_q`vY@BjCFHwB&l2ybhtL# zt@(w%>#Az?SF_5`s=q9_a<ltHgiD+A{sWm0WY2Og3O~{FW7?AA9L?V%TwLaNOgD}7 zo1t5_XogM5yRG6^ozEwiIrQ63+q9=|Z=%&Uj*ufwoa`SBSFxSWSSYHpq@d`Xp-HCq zkvC_i$)1-n%sm_Q^upxS+6D2hXSr&Nr--tiy0!6G<KwAO948}Y%@3XHb8NYFz+Fzm z|F+*3{k^-=ZfkaGbye%EcXlQ6TOUt2SbM2>&hiZ^&pJ4^T$KK8n;<v8Gh@-$uOT7^ z%rb11mvswm&dMcfeKwizYjjcjNbvP9I<xosok=-zx#)7n+}3+qtXCgT-;?!wQo6;e zdBz+J&-Y0^xw<A<^3{_~5mp(@xpRxp%v@^~#^f((csMGfB1+-e?x4*#Lw;|uyuawP z@1%&NTXhq1va>TepUeHWm@ZX1r<!duQ}4E|ff>F+JGbw!4CQ^R5y5NvW#;ll?DrR> zDlLt0o86Jq@zBO7x9*1V)$MZ}&L$cCxsk8daFOBo=_hJ4&hZ@F!Jrs+kJrZ3Bdp9j zN%2&4_p!B$N)vB9PtrYUb>F7Va%PKs#X`9YD^n+XGR>Ymd+Q^aN6lLf%Y4f?eNJU@ zq*7mj(~knxV`oIGZbbxUHm#ohsOG`O_6Q?~LLm#Wa~+8-ivAKsw*n`NX3YMjGSTiD zkF%7XX@}s3Il+24w+d1fwyt`xYFegz=q14i3&NS*b%baAQP}0*6@97PH1^1n6q7BH zXXH3HU1YqvyzKijcJ{WQ=DW3fvsUG=C@*;T@x?5@M}ns^xqZK1aGBfqG<w>cNB15Z zosD5r3ci!MXXgF8J<kdRW|*zscl*hlD|4R7t9}!G)Th5h*U3fZTGGGvM2}Y-lTQXR zZG9r>!G3CYx3$O9B1w+U%`%@PkI%M=VaS;FI`~mq8*j15ZYD$3KK;Pf;_{r_d8_4h zx$As(^vSOXxTVxnAg#*x=FOxhYdlw8%hD`p5n-IN*(<6-CjCmxH;Hq;J+J(x+&4{h zd(j$rAUDl{Ax@!q|Jp*1GnRe})&}aoZ28!DP{jY7)o%Wf>ZnB}ep|%fc3<g!|G+l$ zeL(-LckkbYx_X&E-}r-dHb2{hGT+&^XX-^d$NUO<qTeZ%A5hsX^O0+%T$G8vdFT{j zp+|oVb7h~mJ?{9ua(8*b^VBT=-v^851}7(9p180!Bsid8=KUG1x)T+;j!3BM`FBJ+ z?Rq}%;)@;e&-Z<AWqo+!g6W3ht6eVz9Rfpo*En(Z8Su|8p0;iE^Btz&_X~g8E0-Je z?Dyt*;e0!lRvce+<3uatY31c2r?a!f-YF{w#+ztF9krXC#S#7Z-X#Ia9Y-GYI33vW zznn+We(!p<v#VWuFC5fo7EC^o?vu?WnI`>IXlm7#3GvE%?kwt?=@=%u_|e9PEVE3j z?Gs;Ja(CRf(04~pkvT_w!FJ1JGk<QLQjvYeLQWwcCT)^`%$YQ0)!(`CHf>j2@2tGo z)sc5`j&Jpo^=}))J5nxe-_`!*(iSUkp-t;ggssl?&^uuA<6*b@HX|Xm?F)66KMlQY zIK$rh{;n8qC+P<73q}v@<H}6u?Ou3@|M4a^86(bGeVf{U1s^?v9vUBic&S*jIpY4> zyE^;5j`j%6**nGS>d7{<`!d@$Fd3h6ZB{pv4*pvp@%pgDGR42DM;A1IpW0bHH_+Q- zrq>kLU&?86g)Y1I%ro7saOtYoJjG2*JgQ_<|1^~z|Gy*GG&S?^+dqZJooqh5_e;Ha zcy+9(^-sa4o$kq7pKQGG(p#>7?!TkLr*2JovqtA$?7{pj{gsVd_sRbFT$FIu`r{3; z?rXP~n%<nS=60g_qBUam=KF3<>lQQ9^EERud$-A4apR9)kGGyIY?kor*xgjc^KL0` z?v};t^9}Z%_u4dp=gac<f4-fnHVb`Jo9Hl?=WODgN39`#n-BLaV_ztqddv3hUgy}i zD-SMgtYy2>`0rih{QPxGSx*#xSk`_#_(19R?fg7W>8m>=w{NYCH2%JEb)V7s=Qr1T zEUYMy?|qxKQRbRq)S{bx4_{1Z{Zym-s+hTd&J3lG!41zD<QeX9t28V%5x%9g{dVk; zt<RM0pM~!7ox7j+>;t2;WA99ul`On9l_n|Hz4~J%Z+PX9dgQl>hn=p7@vn;feeton zi{F_=WhW=879{1DcP$F>&T^Guzrr7T{UcM_1P%QK7Y}s4v6}gK$C=YJ8};qdJ5Btq zJuIC6bkSv(Pif|1^AmS2w~xNKrt5*o_ZhA_YIf#Z&)hPvOX%QdVc<W%HEa3ywX2fn zJ^N(4PT5z%MeN9G={q?u6pp2*P2BZp#=-zzvzd3S?ei8MX&2Z(<@Od%!BowVN0*l= z<s1H*E3N<aeu}s1xysiQh4QUGbUjVGS@$ldwlPrLslKA?N)OLc>s4*$bLV>{&puGW zW^!LPZC?0-ziNzM4)ZOS<>TKJlFs#%ap%0(nkwH?eIo0sl*JqalU8fCtdWyeS@8I{ zZd~(`BtwI&3vEtko8EGSisdX9SemvwBIjTkcju;zgPp5&)jnR$UeLk*Z4v9n8%2J8 zOpg8~|C=8)u;?5+|I>`|-c3gh)>tl)eXDmV#~wc@wq}=R`s?_eoUe7bw<la%@*~pG zPV%nnu4MLEnZGZ#hHUD}?rgPt{9Wi{Q=8euX^W0E&x?2Z)Vt6pymEin8~-Qy7g>`} z#F?Ew{oDJxPPT>DdXD#+Tc<y7-P2r=`=D)yRp}RR1^ZL8ly5F|b@hC?e*ZZoDSMSA zb^kY<@CxngJ@bzvuiaee;H1pMCdo=~9S;=g)qj<>xUyZMSTko9+vDw%(x&eXoVZ@| z+k%3H6?510Wu`ft<<YfJJlk65pz@)6_RSMVmYsc_w(tJI3Bg=PxmP`!`POiH<{y`U z#r_sg>-5*ozMwmObCZ78Qoq#X(5F!y8>dcc*V@Z*<3KUjQ=5##N0wwAdf3n5CopyY zN5`A54Q7c58pxy>%@B#$GS7^EI|s+)8rRv+EBGXLEp(e+^D*64Vv5@RI+ayx)PI&8 zHC$TujepDc4*wMm3m;kA-?A-W$US%cX?ExIr{S?C4x(N&b9eBiEj@IUkEd|+il+1S z=F?xby)159k<4Jj;9|2#Z<582Y@TY>lFm1W-}^+SwMnn&JN@QUm7MeQof%A<1HK;E zoUwO?<MDv$v!rAqR+jOujhQ)THh=1*mPH>P-j7sbcy?-jdSB+!?cAyF1%hVnt##OV zexZHJl=BT%X5Z$wElHnpF{z&ELB4Ltvs0!@PhK}1*)FO2(Po2ag++nygRhFG4(K+l zf8zP4?!kGDc-5Eh7tBBP$&K~P^ryywd<~Hbub941wwbd0sA|UkAk~le8%~C*{1f{i z==&sJX@17y%{At1oJ+cIObxU<SeX>={m)?k=L@Tn>_7D@UVrcM;^y;-KiZ$WRjktR z@0Gi?X;ZD}3%5;s%wD`*VEnNCzd$&{dwcgOs%wu}pRVxtH@>HR>c{Lk|Ig>{FBj{q zub0~%eMmomJwGUI<CSvjl=G~&4(LqyY&QAJBV+GR%o>-qGS)S{yQi0QOY+j~d)_%` z)z0d!wbr|x`8>Al?%KV|t@|^)7*yw(t$92}EPbJDl$hT3yX)0I&dOGfQ9Tv>xGrOJ z%I}#6{7%Mm)qI*IDY)rB&uqoruh;^oZ4qKWUGa5OOz-_^XCFVFbf%}m{6kja_7-vO zIM1}%(#pRSa$?wISg)P_xwov;g@4MF$A?y@#~qGaJH6z#WZe@nmpaXJMX%a-ottrx z=bUqt^;7%Vy^+rfgae+-vsc{YknzoV#CpKD@%TiJclK|$a_857oMc<R=iRUA+yCyX z-oAI;?`@yAm#)j)`{j`Fy!e{?iKUv))08)Uco}8%@0?!i@ms;tx4GZ#dOh#+u6@5V z-}{HXzP)vM>FH<l!+PeHyqL%TQ+?0X?TH>NHCxMFwnxidbXMB+XHCbvUlA_-e*!Oj zoGg9Ya&Cmb_?IW)`XW<of9os{*{gJo@z=)}U9lE>U;Q~-wBWS;jwL^}E^OXj_2*x> z!}P25<yU5{d}MJ_bp70-3!5&ARPHKQ`F_GzbJKOp)%Waw+`aP2_}!`e%F}Ig|Hkk8 ze(Lw^xA!aGowntk|37Qb=ih(t)oNWU2!B3z`o1`ir}l6Ei0?bQQ%*R4^WO6we|S6H zi>!G0n3CtaKb_zB-20zJ!SnO!E+_sOulXy!X?m@V>Hi-_|CaxEx^MI#dw$p_HM_M> zY_(2LZ;WHLe!QUa<nF**Rx8i^n>hdcp8UFhjYs_d86I-;TYk{Dp)fLzCuj20xsBmx zTY}2cTHf&gkNI{zf7!GBk;m%a#lPU*r~Z+*;pv|F`&U1y?Xp_V-#jVbFz!OPYJR|_ z@>6e)@1I@C`|J0myEc)zDh-}1S=fJxTbRainod@be9JUNQz7fUfWT~~3T@T@_J4j{ zdatgrK)B-i4z+uV5eIBOBs|bcP%lvZ5dL89k2`+P66LU?hyLFlI52>~iT_&#Lqbu& zjb>&>kd(sz>uv!kGU%KeTR(kRu}Zt{-lQ`sGiRJ++pIF#+}mjqBMZ}%(0hBVcb+`c z;N{@(NNAhX(rt}lt1nG!T+rs*=)lYQsBLX%w5Dp=#VaAv(OYhrv*bE;%w?PzE`Dpv zEuj?8^R>cB0dKx-t^cC^{`a9f<@fhK|8wsByy|m1!}V>a&+|UN^!cUYmpi}2ROunO zKjmwBralXM$oFBH+o5+)8WbbuP6_}0diBvwZci6;JQsU)CiiW~r^Y8A8zn6aW=H=N z2)`C`@YhCvr9QRz8@k$86DID~-MvC$)yLb};wRp|6MOT}dD^U9T){IY`$k*r+-~}& zZgQNfrtj8{34CwY>N;&UT6sBWit(Z~2L)$bxeyX~ZA05L-Yst$4Scs;3tD|oe9=jU zxYb@7740jFKitm|?J~alZ?f*+{i`z8bL{q7a9P(;bbZ*HwJ+>{y42tM9R0%Ym&V&% zZi`^2l?ShQExcZJsy)~FLc`lP!Ea3*7*B~agiK`)U}8`^_s8zvUyWYl{6qWqUE7{v zIoE&vlEm^YrsA6f{<{5opSb<SjpEWbksWt?ZY+O&!~0>BmLt>mGygJ~cg$Z@o4fL$ zRC<=iTBGzi7k<agSKQIC@cR94-+7bvTQ$yoIM14;x^MS((}R`9vCg`@Ns-mr!h3n% z@GfSyybxm8E_L9N!wU0+{DgeZU(uca#FiE8^luF`7I<EA<mb7a@}V|?j6wfBH_E%+ zx>~lJyGOY~bApMi*}X~n(Nj!B-IlGm`K@IA70E^4taoH)&VPPqcgC6bY!XxDPO3fl zTifEydHmeg#dGIAw~Le4cpG|o-w9vM)u-9=7R}zX_~43WttqQsu}2jdyz${v4HsK{ zHu&6an~e9DnZJG8W@LST$?MGOY@-O7GE@0a4dv#6`*Orv1I4a#A2X7-jkJ!`43H20 zwA&)RBQL>X`TqrKkG?bYn7AGI?U%x_YGUmxp*e=3mEM0Hb<K5mpX0q_p<n6WJh8s7 zBr7?})xbLFYRQd+hjWi-tvw}qwVK`h;l^3&QzuVM-g=eoBk#qZ5xT#NtdjhCeuUUR zFVmO1eC>9WWBhT^j0IvG+ndUFyt?r5z0)6S&7N~%rv?5i{c=B&@BC+)p3_e4d8;&? z?^t&Hb~$pS;Pndsm5jgSPT4KBGws;bv!{Q>eW@Rxmi<y+JNMt~IUhOCN&RCzcPQ^c zdqLRp;%UpyHJ9u-Z*?MyxqnUV`{ZjeJ+il#M@qj*Uvo84=9m7bV-w=1m|wm7ev|t3 ztwnzKCP&URJ-w}`-|YUbFu{=9YiFKX=@ENd-rnH;=1-Bg*IH)WZc6>cEig4M;lAJM zv)k=DmEZk5aA(4gD%(2SHY3@u{xz20w*H(Q@_j~_#uoMF=f8fQ3|#oFl|OHf{rWWC zzUgrfvIF1EntDF%deirwQ~Nl|*L~Y}f9e(`L%tZZ+9xy2+BU8ewb58^kiXBcYvU$s zL$&|Lsh#hpKeJu7M_94^)7F^C?{<Z(kqf=2p7|y7p(*OR8jHGR>x76*$>ZPae#ThW zR!gMsllm|AU_QgMu!N%PYip*hZ@t90bKSGbfLYggRVB4NR+@fuT=P0$)lT2iRMqsW zMU!%m&NrFx@5GN%PKF>cqnvruk3YG)_fzC`^(U(3>qA{cy*8E1Y<qFYT335VA^Z2j zONT@QW-Y2)^EB^D&~>&;@g|Bp0*>2pZhRisA^Z6F=@6C`XIa@Dv_<+uLbu!AjN?|G zwL<gNrKP;<SGq?YH4yu8PdI(y4WWq=yM9eQU$iw~lEd>o#igCsmIhq!IwDh$_G+_* zr;Gh-R~dQ5zTG7<#e(ina+usNGxXWr>6Fy?zjgBrRoR_)<#!&~%d5s{vC#af34i8< z)Yx~`0fuEo6W@9TsaLeVGrUm$Y2m+pX8XP$-F${GgEv_CRK+VDkwqr$J8!eb-AIdl zdVA%PM|*U;7@w<_p5F35rFMTG_w#p_zdiZXl-Lap&HJ<aXM>@l@~`BhtJKzfx_Cx0 z=1xnDh2Ejo7cnOMUVXB0HOn_oTYI)cw42@L)QkryJil74PH?;ZI(shVOkTW0+^O?i z2W8JKnXq7gY+;#(dpQ5Y%ulWryWTE7|15L!xyvuOE2RGUf7p^VLH%=N@#~}INm=Rp zqkkNUn-XvEc;3&xefQF~EP3r?9cv}?`C5bSd{ysPD&?E3+GpR|+rNfkz2n}1bvxJI zKf3<G*L`moedV*-9(<q6mSVtf`qomJ<-1bzqJQ5WG{l8opM60-uc5Y7^zD_NiI3!u zOI-}DXRf&a`r)!`?e@9Kk1sPm5KFW$QQW+2MYR0l3rG0oEUEUoDygwe)#m9tZkwaB zyBWRuz86fE=iJ@?E@p~t$@49jKfkv7duI9dzvqJI?|pav#p}4Lv=_T>pa1i?G+!pB z{IX>6>!XpL-#(a|X&+M--_%sNxmWwQN%)*E>AuhR9JxBTXS2ChUta9HUH+$Hh3~D9 z*wyNP<n+S#K62gJB?fBs&r7VQezquHKG(SW2e)3*ofS1pojq=@xN}2sNnXewS*KfW zOLsUM<c3_b{uQfPbIm_u_WKj3ydF+p`DXQ2=0%z-^%J{aSA=G45B>S->o>Q(zF*2b z^0}+5ee?HES=Imi>&L3<#rM>zte0#TWRzaNJ>L39P?ufv<@6VCd#h%@cst>q+mjr& z<=F<W9y`kCUpf9dchPp|s@v(!%`$60&CHB--G6Lr6U*L{wKmUOG%Q!%TX!|oVE%Va zH_P)UcfL&$KF2b-a+7Un{!%IR+reMLx-4eaU#Xd!ll=H?<<FmdHC$|RYaS~H%#v-K z^d#>chlu)Wg{{K#C-%3^)jX*n`R()6JIb3{?<;M|ef$2s__ymp>!#*6#og9imumj> z`>c8CMF(eh78wQbxh$9wez3AZ;`5ChJ45Nh^ZOG1z1X+#b9Hp_(ZFRq4-!oF_*@SZ zDE3M4G7L28zB0kpWm}(lrOt(4JCsUVRcG=C&)<KcWOb_G-f4GSk99Dvc4wKK5}AMT zugrHt>(^5*Z_n5=b?)VDiMb*B%NH9hD;Bxt5FY&E?Hg@I6M+TW7q35a&1LCI-7Rk} zI9auuo#N7E`1ZOXeTwGX^BMv>m7{#W-?&}#p!M)}SH^PfoX1j@-<@QR)`|XUJ@)8D z)Kl}==lf?x9XP$R()9Xu2jT6(H>@k<oNBnH-qGErRTc5=Vh+b8-cJP%YoF}7HlN>1 z@kH+Qs#_Z_WhhTsXA~z^>-A8nUu)Sp+imQ%bDnIx_ljA)y!E)zY4*jFuP&crU-D4; zwd`H-#96B~Bl6vz%*)f)SyFdPar&V^Oa4`vdJWsR?B*ytof^O*`epei3y#}mzY@5& ze^q>I`1I$ws$NCb^lsjdIZwA0t~+eB{jHpC<9-p1+-Y||G`?AWGiAjU=XTL5OOJO- z6%KhD_p1808hx52_dRa8sL7pOQ_TXm>0QwND*3=DL2&(~Uj{+7CFhcFzcJpn!Q=D} z?<-qtb2}rHT^4+InQzk8FZFrB_wTi7Z{&AflT2VOP)~ki=KMEq$DM*5Jj)n+b~ygr z)?Xa1?YpCzr=9bynwpF<gN3+8|BqvbOCq|Tx65m9FS&Q*4|Cz4Rr}}pv56JOzgoYn z?6%%r=V|g$4(XRoi+FvRzs=@4uX$msQP+RBcRfay*Mqj{1u(Vm7h+ZSh!ITw991>{ zOl`5?)2?@u#RGq+O}Vq8O!AqezOuR0M)B*nL~7Zte~p&dIdlHTuaDK<Z;a`mH0f&k zlzV!4M&BOZZq2q@U2W3Svi*tbmyVv=d)d2=AJ&VRxb#ajbGD|-cP;B(4ovEwRRTp1 zm?V5{mD@QZ?9r@q%c2YR?n+5X(|+TkeR9FnxwB2u_&2lZYE*h0FZB4m?~~*6s9eFR zT{{G~-<~mVvXS&*+k*AmDh_zhda87y?dTWZN)?L}m22)>p4sQ$@OH&UcEjqE$+zq! zPwVKUbugVT{&C>I<P)8eOP6T#wkS1PqzEsNUHsHTZ^rU|ugY0{kLE2%w0Bv4$aib& zR`Y8aTYsAFU#;12Jp1hY>J7(i=1uvpxv3{@hp$}TAq~BRv(rwmwd{(%Tk`hu=A)gv z-yAv-Jh#bx&aI>;r=kw1&fg%j;Y_i^N=H_6m%ATMm0o|k*Sg$%UXM_q2Ir0I_fB}` z&Qs>RcRlAr_}@LVSiZI`uoB<@^Xm2QoC-UBXqY$7Hrv~*Egd_3?HAXUiPOu!?hbky zV>f+D*G`q>CoSs)6XqEzKjq4^FKysGBW(Zv{Mwz%(%jEVn?5W2UEt?7@#N9kJhpI^ z@@RW@z0@65t_L?C`@5n2mV$o$%J`~}fi{g?a(Rz7Ur3s(cKC$K*8}@(R&VXozTKLB z@!qzN9~Mq)p0jsBZ-d6X!uZ?a`4a2TInF7Yy8p4~n%NhBX_%WXZ{C}_@{R=O`CU!l zjn)_keHC>3s>&^&s>`_lnzFFM)x_R(uWvJqQq>JRk7@h1tT$y5JH1&q`eek@2$wlp zeS&-B%j7O@S}6RJ^YP{ScXxIksWQ`8wyt-Yn(9-9!-^}`$9#VjllSUnGiRHzm+xH8 zY5#w%G__b5`+|M3{Zsb16YYXqpK-F9nlCi3+5JuN3&-al_pip>;Wx5B%s)eX$CKw@ zP3z>Y|7g!>Zm>@Oy72$|RZoAt(3V`lCUTHRc9W4i+jYHDPkJxSJn_onan$*RUvHR| zu6e#KH7}%xdB4&>zrgLOP9?Rc>bX*{AM}45)8w)GY}zSByAOw?8JDh0;#_;}W6|0- z(+aL-?&D2fXT|e+ZRwRc+h^o0y0%AEWYOC#3q-3<|5`Z1n&n))CTnh5&HrDPb1aXo z+0K1)d*0r<X%X|1YRj%&FHXGg{Cvav6Row@5%(V+wENrl+Se=7svzND^z(-gM8%f1 z8ErbLy<zI7L*fV7Lsz~}ud!90erKMXNB;Q;@A=FAZn(6K&p0?(#OvXSSsJU)&Fhup zxYJ&%ot&6%$QGg;>8?K2={)a7ra#~L4LxV^oX)sWwq9o9`)QX?rtCQNG5Nmlm+eKI zFSoJ3G~M=o%KGoDQ?k~~<k<ST;KlVor`11Sg?#JNadSI%qw{dtH0H-CCqsE!!fu+K zTD2!qj3euvq}=ZF`;7WCf0y|bMJ1T5*`7O1`ic2dzMpBw)9y<&Mefq*)G=SOLNaf? zPSxa){C~lx%4@f4`TzK=xUjVPOXG!8d(yT%Ik=+#9miaQsHY|?ytpJ*{S->_U+s0? z>y%o)^qnIdVG>pD-dA|bLRL*XmUhX8X`)BYx@PTGkAoL~Mfw}1^(9&L86KN8!O->Z zu5;HPzG$tPYOt^Gj`V4lZA(tBKN+-g#i>h5yRK~uJtvW%JNHJis)1zb7Ps`*R`a^< z2JIAE`nG#1)5Sc#JJY7GYxp%=<M3q(?ts;O>4HZsUm4cKCs-sr@z}mmW7dStq0=WX z(YvtpPJd9{65sa7e~~-Xy#M%`EHL@O`Luh&Li2mwMd3Q;4OMg9URWP%ZSyhW+tuqh z=Vi!Sr%<8CFSw-=O3OEgaRr|^n<enowWqx|aeJ(R(CnlD?*}c0@q$WAFXXQ=@ljHF zoF33SV~vV*(80EjP5o`LkxphCxl<jhXT>*P3TV3DA+~o<5$~cqg52H;TrC^jO7vg5 z>7Q=bzIgiGvC#Pr>y~^!kz8;&@Oa#Py?P<b#N6PhnyXx!Ul>Kmma^n;Pd)AXMgL>c zn&W<Rj@cS)TfoxyN9`T!<0Vy+T>QtxFKem<r~iHV<M^Jtt65(-<)kP5j*hBYpm)Bb z#(w$dxyA>+=XRO~?Kf<Bub;&8-kjmf_x11W+xIj6npG<pYw+MV?-b^l%Wg<zaDDot z`(?k-oc&gPF;!{V`{(@Ri28dv<HlpbyBS~aD4%&2@2={vdadouyY`E(j;9Lh#`&mE zIB)&!x7CJyIx7D(HY<tmdy?__;VixvS)bHx?k%ddKjM35ElWtNo$#YMW|q=<hRaUx zTyi=fH)qkyl*l_wtl?i4>2s}mb0;Bt%4g2ofgP(?bgE69{Bi&DwW=!0a!0J}<fmE7 zeW|_sk7wP%q^Pwe5B%nLzfR}~590pxwfV)>UHZ$9o4x-1^rHrUTCR+N|EJ@s&sFZ6 zKmFqGj{BiM{f__Lr(!gB!;g!(ch|KxM;9FXeetBg2li9j7oHE()SV{heBgwRM_b7! zi=>Rrwu{%e-(|cKyEeOD=6}<}DHlEO8Fzh9=-V*ywo=aYCoYFh?2N6D`+aZ2<5w>> zM}3Kmx%j=0J(I<D{@Q=rAA7&h%sIdG&D)2H)BYLFW9FN%?C8X)Dxu$Oy7n0IM!(cK zwa;InJmZb*m8Tz{b{y)`I8?Z-cHOCzxb%WWE`rbESax#6T>SLdd86s=RXNcaV)pNP zyL;oxWmNeT_8HZkipYKtFx&lmUeDu?pTDVmTfzH!t<*2>I}4Li^mJQ;-I6v;3OLqy z(ALUm-iNdOea+UQ2M+T`6@*<6>3uvsK=ARQ4;J0Z-X-fVKR(fL{i{rPhF^#FrjyYx z^805?22YOjGf-XoS0wnH#rofkXL63k{wWOkb+E9Y=%9&)bzNONukH4=3q2Erv=XIt z8+L!My7c7Bb>js;qQ2e>m^^R)wDdi^l`OepcW21Ha#ml^+9ZAcOI^kswKYwvSE{eI z+H23e$9!cutF&l$Rk*{+8!q>ceU9Mc+&%5b<|E;`mP=aqaVShZsI_xuTSlAsu7471 zxwjlx%`LYmo-6cX>=oC(p9@8<$X;Z4dN*v-Jf-YQg}rZcHP$TprebcHaYF5ALhBN4 zzkoN@r7v2<7V#*%TysxUaam-@`QhJNk>lrfO#XcL>NW;b=jl0fw(xzvs#E*s?x#1W zGM)D7CJLMIZGGP8A)2(yEp=1e#nii}-mx!#vfDDjoa5NZ_NTr@d@B!Gv&3gK?r$wr z%9V3abnnqHtke>@w)oEMt+gUi74OSK7(bUh3p{swg&&7r$~U>0V#zxn-QFnd=Cpg~ z6Y~#$<dU-G%4Azw{{=2gd%90~#>vTI66+pM?oiM5`z3qJ|Ha`qTlPN{c*lS6>>q~- zt6qdk6z^nwX0bBJSg~o!O8(%s1rfqCTi=PDn(C-%;&meX#$}&{2DVQG*Ihc4C%=_D z?8|E#Rm(~4Hi!HJoQqCOes=kgoRcln>)Y;@Z)TbZEZ%AS_wUiij*ou*`h9uh-^PZ2 zNB{l$DAIWU@6&>U2%fjS8>Jg!OH59zct7L*+2=9S+}|vldqr1l#-<+(M}JRaKR0*J zD;fUsi6(_>G<$v~Hcz@Xb;k6h-e2aLNzd6@->)h+d05T7?&;3S^R1^V<t<7+dOmoa z<<TVqjK?17Y}7t_%J=RPhxD|Zy}k=KSbJ}oXcWvi!#7&v{tVqd;r5xw8t-nIz;Qpu zRbyu}kGZXX^cwF!yKm}-Uwr$gF6wdljAIdPon?iKGPjFvet9r9u){{+?>yV1*H*RE zZb~}B)qnHYgg-xZuFp}^N?D`HDN)3H*r0Z@l0w?L*LlY)kL1tYE0NUP_v6otDjD53 zarx5hi;vVCvVS5fc_}nST-PjcQtqw(jgR<>6ffx<nb}$qt&=_F318gPJ3pU%wOGv= z->bi==Hf?=NB4zO!(<$^cP$cr&~i-l-l~FgU$=RxUNAO3x9Qib48~7)bCfHBRi}2W zny=?9e^*a@QnZY94cqkT3(i-5N|nC#*Tdv6tK4jzX`3_>Pv>8I-L_r#=7U2wO6#Xw zE?;YXZ<WLGpxz6ud>J=gr~l-B;8?rlZq<QJo->O!I7VKIT%5NsR4Q%Dy7I>@`%)tk zV)9BR2)C6#o_gZuzPfGA#mBuKe-c=%E4Qfg6mve`<L7>MZG7p?cM31fu({)%{HS<k zq1L?eC!8N$Sh**zst}6$Dv~9t9-^(@<NGh6X7Z=*6UJWE*Tt-SZa2*Pls9MNx})CB zM|V8uxT|P>YX78}SL?I{^nY&Mb76z;*#g6AX{Fg)IU8bDDe}&e{<z&~^O60_-@JNM zn%_EY#r()$8|UU9FJ}L?EB^7Fjyv;(;?p8dRbSfG`;+BPbl>5;x?f&5mhX8Gz1C;* zvWUdnubs<eZ@1pJ;5&Qv)NWbf2hVSbDm6IE+{k8Y`21hC&ibxbu2a~o)UfK;J|_gW zU2L7elW3*fJ9*kN`4cO=-k+<8@(jHxd$4TJ=UMUd*44$#_iyKXqH-_)AM4|LMp0h> zL>?}QpZZ^MQ?TbTi641SxQy5$=5`21S}jxkvPs8C{&NS1SjRR#=G_VY(&pOE9Ebe8 z68P_S?^+#DY&x%dUWnI+zAKBIGBZ=8Dtq*Tr~N!|+CA-(l95wu;LeGrUK>w&-$_|~ z##c(}e)`3WPm1<D{l|Rna(Zu-d+Q_N4*#%wN454$@R;cK)K+wl?XE3{C+4l4)x>fy z@2l_HNKe~ErSYM1FHKe}Jbdq{(YeyC!dLkell=Q>qTH{lBOeFe^1gNc^ldB0UzI=o z`S*P<&yo2((=2UKuVu#Lr_MQNE(WH$3C(C*{Y>NVoYonimCkG{+2Sj+MOU^`!t4aI zOXbU^nDCmQ?Z2IQ_q=~qwDrXMi^rbKTX;?8_`LE9&)%I&x%*6R%TI}0cUr%>mi*?E z{nMRy|3cJ)&RH!2D#^M9@8hPi);C9f;LhStEA6-=9J)a$LDJUyjAHD;_yc9TSh5+W znMZ3Z<SON0H(q5}pSMuBP;d9ndfD`6tJlB&%J3%U(SPlnMTY|p>8;_Mme3u_qLHY+ z@Xifi6Nm7Jy>)J!CAG@Gk}_;#c0Z_#YTcbF!&n;kW+#J4u2V1Lnbgi#4bzjP&gIDP z?+ox?t@(bh<N0;+M=bPLOq19V!SX0-)1;Usw-c0)PT*|ge%0pWp(OC}Xhhq8y|f?2 z>if&S)oe{@%eoyggJDh7i$kAxbiP@)X8YXj-{o{Uxdg-G&b&yfIIvl?Iy^H}<f2<p z@*9z|>Kq=gImO>5n;x$HWUx1_VcJ*5ZeNBp(Z>(<dLPCL*Tn3;W8x)~`pIdTCimiB zGHcW}EtCkGICsmWkYBG?`dnu4$$rVSt1IU1bLs0-)XPmTZ`eKSzGwW$^9N<rXWW=| z!}Y+OgL$_*<8yQl*Sv1+oN<0%kI?A=xz$J3shbNqt^XM9v#B(9=Y^w7OfLWYr*gUa z+7dUX&w`vCo3>tfB51oz&|v-@r)?L4W@Ke8bKKPN<Im>5U;ni=&h!oWcwXSLkFk&D zBgWSp8BV<Ms@Es#PkMba<jVfzR+rcRXqCMmbfod)(;vsSpAlI7mv6=KJ+H(*?zv)g zIHd9F>$lT>Z|Gb5;q<AJ)52Q>SKs9QqWa%iLiO;|#Q7JBB#xh1xM@?Ap+NsiL4Q-} z4Q=xhZ71n%yL0UM<f!9!_gQZ7;?!9Agw?zC|N57!e{!ZM+V?&YvN<L9D{@M)+POk^ z-km8cH)?D+!LRzc>dSBb@Rd4AYh!2qUsCsf<CR(5$1OhgZn!LH!(jPIslKjYHIuDe z?#72Lg_`mnr;gsznene^PW1!#!s37lH~w)f+OGD>IOgMzgwn7ho?i<mch`C|J+m}F zB79ZSB&qaS=EBd9p1)olwPt-puIZL_NmHdoel^D|cHg1jckzJPN{Om>o#G<l-$i!Z z30Qh&+g`0`M=h}{D-RxRmfRx})Om0w--DA=ji+Xr9_F0q6R9(EaoV%|&}~0gO|hL8 zQt)}9xkc^!D@Sfds{4Be%62IRxqV`BDn2+ltYg;dM{m9<vTvTO{lfFH97mGgJ4;&= z@%7#3FBgBztF*2AefH(T$UmokRNRRS*x@%%IK8yd|1{T*go*VgIn&Hf=)c|`_}D}9 z=T4jBA9Nn2Xw2`ciT6%9+k7mBY26t|78xavUiGX?pLcG|H(1vxv329OW|PFiV^cpw zxs|?3*<;GNM2@w-ZSo$AV(q(bw;$?pT)usI^@dONB8%_-(|Eqqv#xJj;%>!V_qVkt z^;m4`zx&L!PB53ZPWZR^rr+X*lXb4;FO|FaKD<qKs@seQthYZK@$+9^`o;ZI;7$Kx z4*qcKYrnEyoKF!?d_KW<oBJur`?}5Lm4}nX?>((mR7-wq{Lh5{nC7HlCa3GSBYZc- zig9GUpDF))S*>dv<F&l?$5f`Xb}cxyE%u($e!cx#`eixtJ5CFq6#A=oe(n9IJ3q?@ zfBP{_i~sj$g@s?sFK+#Hmd(Y_T~vy1Z*EGtwDzP`AN0<*mRB}@nX*K<B1l&;P2yMm zR5gjn3x|K)kd0mV+0fK%O8<P<o4R+44TU{|`A+IZcrBf{NUMKF;{S~~Dv7U_cgxJK zv3&A7kVk(>NNP-fkoeg<&fkAeU-ahnmA7SA8n?Ud+!$#x-{Hy98%FHy6K|D#nWg=G z@xFaGE`KrF)BgD5?ISa|cWAzOeR`vI`a8|`6YUq@maH+`(Umn%OlAu2#QhtKpBWa4 zCNj*wd9(7(!Huj(rWThuF4^|GtWnN8_Upk%Vj64Rg^wmAH##}K6tmotWfHM^<wqqs z&tA9JGu7k_Z)GhGdoB8!x7YNTcJ$Pv)?5E2Zq53ec8{HV+q|{MlI{PVJu}<<{p^|f z&t`xB<@mdbXKVkQjhoXhIvW{nD&A1ix7BEmj?f&>d({=`f=dqayS$vUr)JYd3qz&w zVxDV8B6fzKRusxuuK#fIRpi6I6W5P*zZ3c{^>yuby-Cj3uIY8LO8xr0dEt5UWUVU3 z;*5Kmx~1DKZ#_I-Zsy|We>1PxVa>x8Gc23y<}k|Zg*@KRc&z?cL~O3?o5^YBE*b|` zx2q}joOf*5sN2fp-)#QC?ZVf_OH%{uuW}wM@K))+TD-F?si!Ttb4zh@uJQ{;UWv<H zZ#T?(ZC4Y$CgvFLo<7e)^PkTxOV1scF@2SxehbG_NrR;PiVaU>qdB$PIG$#23+kxT zX*54+yzQ5W`;R9*Z&P+_`6?Uj+RppvPT8}TA5Z#z**w4fQTA*96D!4OJ2ds~Z_%&G zR(!{`(|uj9`0R~GCcS=S_GOCb$LUhlpZ6N<`+c!(w)>NeSr?j?`)_*iG`aKB<>daA zCn6r6JE&ZHO)|@L`X24;MHXs(F>)WD>UKSuEZ_UPCsN>d&4C%d-=r=c^1Z76>>Q7N z)4WX=_1l%wpPf_wtbF^kLK4fjeL{N<bN^*~#Io<cxZkUdVs%ROubaf4nqQgCd!I9Z z^^AnF9ai(W4G-RR;}g7mbHhVh$)t}z6JO3=QZen*xu%Wr-}&-?Oup#Wq4s3*wnNdY z)>gj0s#h&}u19slWjl#j5lt3rdx6&hbswGI91@=2uygsFI}$rB`K0#FtX%noO}Ujv zvgrFY5x&svt88tOS`J++*!=tTk5g`yx88PKy=u1m^_ls4JMQ}$hWHq;|M@g^N6(2h zVbxb8BwKbq-?(NYtLFI|MTfnW^l#5=-*IEsov$C>RalDq8Jlj3b{D?()66dKa@rn$ zZ~gft|KC+4)t&wL%|lV}cwHvP2d2j!@%Q$&{joeKE702V`$4X_@2j6vEvo)4+2#FB zp7+c4j4L@GH@#ihd2tTsclqFp2R4_#`G029#g=oWA3rYl53%K2sD48KVR?=~{rZiK z>QAnGn7DSs_uNG7iE<YwePmo2UL0fkvBotfQnD&u+_3hh*AvM(((5~yB+t>ezQ<T- zQFzCE8SjHHl@(pQP7iYzU!Jl*tjDi+^5HWNM1s;=Fa0~Y;?_px??>!qeR~=zGHb<7 z9!sw_E1VQH{Zx^M?a9=$OIXhJ`1~l_&+=@^RpG)^Ug?z$ljGmbnWr0ahUdNP&EDrN z%`9fArg~~+$2#wNx)k5~)?=N$=6&jw*r?=6{p5oitT&_vNc6N_ezonH*wmZ%yw_HX z)$Kp%IV<al|FgSKP8&u){(LO<!_*StE9W@g%l)1x7?jXzd2orA;(4ZhH+JX8pH~Z- zX8h;P!}GhROPo)gGEx4)`!t{I6K6`NJl%7;!;f$Eo~s37yNl<Wixta%KFAZ%GsVMS zb!lZy+powFhDB|*(Q^)-4v`MhihkR)^F%)Db+zn;*+1Iz^=?hysKCF)uloASuM^JP z5q!L%q1p7aY1<aAUeDdnKd#xp5W7w{?h(&AvssmD%Br9Kg(olY=4`#cFG_f!zs_9$ zd8@3Ncc{g`Uop4p@0T+xug6YYc|H7$>be;Ui}<#=Y8v>@_<59R{YN>5(q~_vyK=5; z$}X1_oVeI0tHDjB!Xz$vr{MejmbM3F1N@grggHNL)^cB{qBzYn)okUS^JmPimR|al zt&~#de?)G{*X-w$b)&gDPP1-*;~@2bVU7b=z}|)v(ZRc{*k5luA@ll@*sQ0!rG-mv zH=i}kx0u%<&Cs;zpvRQhhCqi{rU{!PE<3bzFLBb`wmxIe-Yd;T&J#M`H>QRLeCHSK zs;qjt`un+4F@pd9)bf4v@d}#ssr-c9gp<!7L>Gj4B%L^ZLNA5i>DkO10^*O{Sc2ME zCMYB+l%DYP5Z)y6(xqxb=m~{QVv<hR6kku|J<)t3Ek%11ucX^OCz#GY!;Ol1M|wGy z@Ng<P9&vazVe$mE6wOPWUldkPa7@uPYFXoaO<8&Z`^2*+!cwG-diJy)nb1Em_JmwZ zi%(7mccC(qrZba=fZ+tICn`%gBfCnJY)@#V2t;=CD88QX^#t1!#}wmDqBq-kl=Br0 zpCqS<Z(>(GK8rNh9(r>9>HWI@ZrY{3=~q-wJIa@yWlGysKf5;ArEYtOKHv50ljBA9 z{I5=tQeG#_^JrJ0X<=_vN4JWqrl+S@(4<LImSAW8>0a_n!z1cebkuGR-3F!kn{RBN zkg-ye`>o04S-$*>+l|f7F8zG?VdbJVHQ)AV#k(%pbE^EDPJF_GQiWUg0d}z=FGZ_% zPWbw?vFqldHQV>@-n(>t?XHY<cBu>ZFD-9ff9m?J+d{doMfSdZUiP(gZBJL%&f@g& zP+djguI3dxF0o5BSE*+4oZ$`eyS8J`+Oy&|4cksR9KEBOvi8@}g;E~6CHYlS2kVpA z7VLUw|KR`K*tMs3hkyHevQX&KwcGL+#1Ato+%f7F6qjCl<?%<EqjrkBo_p|b?tbLe zfBf~w4JC}Mk)K4WZ<M>7sGiqw|1obw%!T6RQr=ItA8%URF!Sf_FgNR6(`Gw2uKLv1 zm=PVHWK+IW=%C!Tz_2{YC0}&-y+!4?S<j}+{Mu)>+%aByZph2`wqJhDpYUtF-|~6P zT}K&fb?i^XMOP=p|2{W&v(m-a-#3MCnEN*7W_Nt4>;GBnvMw)N{d(c*$IHsT3QUcy z{pr3-X@80Hv|WpG?=qjh^*#IX|F!J=8$1F+7j8efv1Hqq(r??hyqbH&siWlKx_x3h z5}vt6pKqwVDEhYhmxE_~z4w;=`HL7u)^N7YJ*6_IDe#)d;ybBJ=cJ~lew5K_4c2Xb zE>dijY@;haOHV^IB;&(;uML75BUUbRJ|&g1h|~CK+|=~bAs?J(R#x<#;i_15X3w*! zyB5zgoO-|_Wm>M;r4K>Pfh%mhw{A3W%3S-jeot2ZlGDZNuIr@M95y+(#q^Bh!V|wV zuSaBcEYCRp(WLj)KP8Q-lt2f?18=2T@8}obe8Kgu!R-#$T2tNC99(r87cRVFyQaKj zGVcqghB7nv=~w4uAJ^jLnH8w3?Xq*OX=%f}^GoD1?yo$Z7m?@@w>V16DL`xD_wI)$ zS?_3?zPzKF@=D{`o`&07issEbYWh{cI{x{#oU1*Kd!0`|+QTvHhp?|!%Dedz>-p}c z={%UV=EDb`6&!_Y9ogTmaV~gUaj+;)l$X~&d-1s~r$6wP2C(-=<;2X+6Bj(AJzXvO zmj|<d{0i;nrwy^J=dV=mI=6EA^7At0%3C8A-tKd*Uy?t;xzfIO)%GRw_j*Ldw3h#= zFPppelG^&)9}i4!pYb=yuY1Q`<=|ygPlP6mH%Lz{;(I-rZMXhYlXGX*u2~hN;NQHa zV|iuEE@snDE6w$@9_Uze#{}kjt@x&OUf9ZN;VNf!lUPla1tp5*4w-ji|4hC!!Mg8x z6r+izTRWFVds7o*YstCOJ3i0gTwZjrP2b+5d{XG;CD+qsPH$D5J6F%?6T=L}O{Oy* zhEMU6VKK<G{Oz{0m38~(e!W){E?3w7(cpObO5?)SCpTCXKO9z@cKPB(hE>jD)(f{h zzmWfPwNYon_T?Aj|FlIex%Vyg3xCZ-x7+8N=lyY*y?=eZ<dY-z7p`k-UlE)3+i;iB zt#^~>zpeYa(&nM?ziW-_-leWMByRWhitxF3)4EVjUFP5|kAwg1`~3Ugoyi-%|Gphw z`gOJ*OLOeCdx=#SX8wKteaqtdFWa`e|2~`a{nWP2XD3-2KQ&*Gvg!7nt+RGS6#Qvb z-f>v?(UtXmldV!O{`tSg^>);*gI?_Efm<HAWghM7yuQtOp5=sBOgSs#nB=vh->Lnt zh@K>RN^5WZA)U8-_g<WuR;X}`wSSdS)C<wfg|>O6HtD-(#?D=>t#MxKVc9grC$q0~ zs|#%Ap5{1na*)OC8w^j&VxP~kZ2iTtbeE5Y%C`wVCZQs$G&U#&ip`Nzvj~@;$*Q$f zi&yp3D%I<$ivp*1olNz;{&cHrZ1k08%~=7Op)2#QMd-9#N-X^l`y+jNrE7Tn?f3C1 zmoAFFy_G-r!oAe#O?!)di<?(ouB_{<nVTWf`|zRrgXupW8o5hze%^g&dFTP-#`!mP zb3Mq&(x|D<-1c_s-l8|6x-sv%yt`gMGC1(4?!*I`cSjfU9KBmwz&8D$EL*wsox5!Z z*`#ImeOKLGepFM>-Z^g4S=YFG)s>U(vi%g$u4v4zdewgIi~5Df`i{~oH?nd%a&LS# z`^c>CM^4>2HamaoT{Gz$Up*Gi|F`mXTdef2jk(cb+j1{W%U!+Xc9_A<bG|+ig-=)A z-sEL*xo4L>&x%R^nx0wBP<#-%_vHRRckcZ8KH<~4$zh%KQ*y4nJow#ZpU0nqms`R- zbuYb<vDoLl!S?fhncMpxzdX2YZO8sNf%-=~9R9QfewLs5`z({~LM`)>1!kMwHnnvX z&gA;kWZdfd!NuZq#jeY*f8TBS{F-moTkh8#1)MS-e;W<ml5blnUpeq<c6pHP(g+U0 zDX$F{yy3axx%+sOCtq_*OQRn578!lpb3U=<J1;A{T@srtsLo-2CAP)lK1)=5>}A#X zvqo!w=cEY>TwBpu-p>6h?tsVJgh0vPZlC`oERIa6*g98Q#s6}B(yV_;YulTqtCo5m zJEHJd@SMYz3oj?6a@$l3d-7b*-n1rlr(Wg+)pr}`i6<02a5><zE1cn%Hm8Y(Pz#Gh zO4@c=hnG9f$-G{)T=|l1QP|2&Q#*MQk3RJX6Wg5mykeJrN!KBZg;LiA#ET2gMjtt# zfBg=taZZh4V#DIPL$h+!tmZlL%>Af+B9uLsp`O#A>Esue6J5bNv*P@vqoy3~(0V=3 z^Xr!hs}of&Yg=F0V=BXK8>+1l(kgMEo9S}H&XTVNw(7I5E61i>X1p*zVv=lD^}EAg z3Qya8S#?s_Hh)DK%PzG?eP0&MdmDE)lE>{<6YKOzx4wwHcMN?N&{NvKt2R8~_m4hJ zrS`3pUTvz_G*{3#!e7@k_|?j*elKo1&yf_iDEhkNW$)4=wwaATB1<xbMA&bntdh97 zG}W--_U2U<EBUgo+)3JBz4|pL<MCe8x;KGaTIx-lm+XEL=~^CIt7Z0+hmYM@!qfCy ziA=~DgSB$?T(;-7xZM6RFZZHv&fSchCC{%v{xUh~<PFoimMe3dOxDX6D8?$p^a;;A z^J0@=7t^ex*W8WP&lX>}{e*DjzbA64-W7sIoAuXgJ#l^g^I(lYtFe!kAKRP*S2y@? zXAXQ(%^-SFK{sXQOXb6DM=TT;G<&5qc1}@uiVT|Wud>yHXXnaiL3T16xzqgGq?T+{ zVN~U8i+sZT^4_L$ow(YW(u*c!htCZwUoG47q=z+dg|5^>!=|hAJP$c0d%VBwF6ldY z{T0{U>MJxRGP18_<KOO{D5}AIT8V%4Oq(l<m{;G6Xt?@#rFgk_$Nc3*$2J~c`}4r* zsg*mlCkLc;m>0{HT{y~@C%^5GOgk%YmGLdbuI0|3wQjjCyu~;tX4=;YlYiT&Z}(rK zy!^e7X6>;RbLK0pH(62b82g3uTh`ihH||RLynT4Lr!Z-QJog#)Gcy8e_eL+~ce$a> zV%~h~=8H;)P6aE0M=JMK?e7||pZqBHm9f_@xzjG?8}lZ*cy%f~c=B*zPw=V-6U&ra zv=%K`QW`3*?ZL`xJo&oyfxm7B7cw2}vmPlp&$Bquz3^6Xxw53^v4dW!>%}s61lfgb z=i%@CyjoXjT2<T9)r}TwqRnqls+zO8H_1~<%Gk6tAuUh%xoOD6qc81k-W{JhdH(g5 z>yi13d$-?kC=vQDB6ZqKI)CHC`~Jx{bG&E#m+px?do$tl*KM~lb-bRkIp?LUGVzrS zeqLm~X8T2}+dJ0eAKK%r@Hviomv>B}ar3ee!vkgg>dVhA6Owz;UAq7AYEBjt6-!AO zgQ@d4*dw=^brv|Qw7zUDRaz(*uuDrt&5SM7_(3Ftg@(V{%4V_dRopC@S7uEUDnBq` zlhyNU2hRjd4(q+Rpp7j<V)343j_r@5XC2x-aR#5%;$^?pFP+t&-+N`9x^>T)e07Bh zhvHovqFoghtUOZklKJl!&c8YQoU6EQc)pr_Cq;AR+oUUxPpnudwdtnpU00il$$4hW zcdU5(LO}1<$C4w<ZDQ4P(y9-A{II+G%Mq1zulgPR`@|kgX7{?@{q|1s_lvED$5?HT zg={R?vWUaFOzlrrcIBpZM>*RME$L%;z9iB5<NoVcgceCKv)1097MoK)BP6(4?nsxG zF;}(z#O<f@9qt{A{?}W$T{I$Tg`wH<16H?lUPu*BT$^*^kH+h%H7{&}Hl8WT_|?08 zhWYf<du*G2biRChaoL+WY_<YRHV4f1QQj0JeUNXpxpVa6b1RxX1&U=ZsI6Iet9_f* z@<0FhKfk@P=kLzBpZ{fVFW#+qYM<eo=jZcf#P6TdYd^W}?o942oieYEUu>Pl_lz^$ z^RC_FOK+REOnc|Igj>}_G2i#Z<iex%AJcNIm(4wK;m(b^_FOZ$NsqOEq*@;lURT<! zH%)h!t-8`#L!UxBgC0G;3A&3m$%L5RwN|JW`Ko-h`Q(=!MRi|zJ$joKiCkoEoTFzs z!zlAbm!m)w%g@CPr^1X)HnQ}-lYC_rFtzPsS0VEYx0a0?UWI&>FOt6GxP#rY^wUNm z_Q2ofYJIua@1|Wg{P5C$H%q!D!*1KX#j}FHvHsmvY~*=-zKmAW8_~7fFT6@P*6>b4 z;P4tI9$%|>>o04bSQx#ce(R1FzMX$}-R^z(<9Dh1y!&%^y*c;UGLOIY>5kPe6M}5> zdUZninCdH5vKotZ9p)^(k(B3u+-pmCt3}7O2U~k4L{I;v9D1fYJvU67apJsyhK!B6 zTZ@c-y}A(IZhXP!xvs#Wn;twz-Cm_K&$;Rx+N+vw!QZ{cRoLC?bn0c<_NSE@9#hxo zOw@DUq2fJxnW5jA`e|=&xr--+i0Y@$o^HZ=HFwVUqn9QuzrIek_QYnFc|Hk|8GY9M zlZ{?&x+~ncaN-rOL-XuTJ)9nJsQa(gg2|zCH&rjX+P3)Gy>-{brbgeL)ja!%b@(w= znJbeSudSJPVS&mj+iYfAR)wWYETonhZ>pHZ9nrPRFYUha->AC}W8@k)ez_+0;?<3l zU6nhFoLHY~72WyuKdSHcqwm)&HW!?nG4=dwewKKtO{$00ZLMP3{QM@&*?+_ByK!bk z)%(TVY+tW1X{}Q!w~u@!nowiHa>Yj?<*DDH6H~R<MdbeURL#Er%ett1N^6*rC+~{P z&Q)`TZ0~)k>kD$cp~;*$Vb#w*Gnu}3EZOgrt8?c5xN%aUQ{?L^d$l;FV+qGyO=P?d zrAYo4@^10|bA3Wc%ORKg4GX%YPWN7kNc-bo!E4-hjK%zRLbu_D&)-Y0uI6WwKj)Os z6KiOFv9DR&?a7m*Otyl!L+9%5svh@Gx4peg?@jWjy_1r76biU5>=F6O_$@LwsU(qY z?sEU5cRyIv)Z9FH`Ez~x!`B&4`oDip)C_u=@+$w^=ibCKF?qj_^~;H!SiAXdn)BL_ zX-{uQnI;Fx6fd@E`_+DavcO#ryT69J|MblgH<Rs2JZ*W|?A4r;Y+SRizFo{~^<#dU zSyJ~Kp6tn{`FjqsNt<l@)#oVw@59AZKDN^`OI`0hJ^WVUbx17ZrOuYdYy3jCjjzmi z9e!05S{~x@hG(vl@YJKvEg6LxIF^1?*J{@0<6-J5;fi4k-X)zX$Not<%k1)s*X;`* zuee<k>)H0ab3vZmwBy!E9->Eg`Nzscq{usc7Wn@5ufEG#ZG|~(+ijD-Joa|!-M08$ z@{N5<)Yo`PL{-XaZdoLJ%3JapTVk_d@x|)fEN;7+j~)nLzw-1tos|>qf}Bg)B3E@V zDPJ{xQXp31x87Pp^KDQ#tJ_<J&$S_k^8a3Vu#TVSRl7u2m0;uB!oAJg^j5vM>YP7k zwnxJ+MZNbkFKp;}-k=!uoOPP2WPCVF2hXhx7ZIne{|jXQP7zqv{d(Q<cLj2u8>Mx6 z7T;#Qc1c@w*4*{8<Yw=)@sB#^ce<-SDEC^h;@x9i2PPl1D*PR-)V!)+E4$~7h@Hjx z-`6ts#;CZpl_slKO$xX>*?Y^u%{M(2>}oU}VmI!-dfB)<-_I?o>(yIc>%(mfzqa`5 zC!bfYSj_*sV5hKxnO2a^hId|G(rFj{IIg=k>8!n+TDt!9neLUY3!WWO;4t1-Qv6Xb zW2s$`SoF7?b5|Q!)Thg><5|Pw&NOMaf%r4Wn#nKM)y-5ayM9)qt7fs|$tf8VzA%ZY zT@?0P#a%M7L8-u)S#g=#zh@i6j@|H4lT_Yrvfu`T_p7}Aql|H)_Uv0OXHIi^yvnh7 zjZ?3%f?cH8(IqQxs~vV|T2el>v*nuKjhm5``B~1F6@4;9L_LmuF6=(EE5tDAUiZdc z2OH4~%bl;WO_EaEWc0y5>9y0e)bsYIKKh?f`j`;g9F*O>FO9iu_mLL|RZcE5^gKQJ z;~kS5AB8S$<mkxU@c!=`zn^7Qhput{InlIg-}17?2X<oN-Hsa*s_Q>5F=Q%p3YA!w z)!S&Ox%XP^^T25;Yo;FY5Mt<`T>Rt4_A7IBy4GD+yp-g3*G|Bz{bAxd_7{7sUhB!t zWl7=M!V<b?v$5v+g86HBueR^B`qgYB8nj#{t3vE;L*@M^m$-x4ea^nrUH$pnM8T+u zSr-nLD16*qZd|lltzT-@+E?f9GA*oJt9M@7c~{JecPp#Z7A{IT(k)&&zj?y<uKVYY zPw8--ys`Fo&WlQS#TS|<|Lu}#KBVoo<j2O{QL~pYo%fYLwv*wf;`I5a=9c*GI)0NW zx29{|eu-@xJwDIayeICu?QVV5Bk|W{Ckv%(EV*H<w4m^(bL{T!lLf1$E%}<irGk@1 zJXp<YO16myZ_SL=3s=s%bVXON<?15I&quPZm+WGYTjmmTaLJwcZk1i(jPu*FqRmBS zH#i<#{&upW_uI{1%jcZA64BK8bS-0P<m}(QFBi}8c)vR{Thq{BWqw=z9@c<A68AQ} z%o6fTIwWbCdT(Zgn_T4f{pl-q35Uzxco>xJzj49NnCGb)%%0nrpFI9{qT|pS@yiSE zFDTnyySHwB7t`u>5uV<6_Uw#ZDjCZ8`S|z4QG#AIQhEM{e#z%A%{ro`tG4CjgpP(z zUis~-&$cC<$vAey-#wRUS%I+B@=_;WF-tSX+aJ!n%9Sm1_H=XD;*jvpfM@pIt%nx4 zA6aC{lR9br)T@_Qb_v8Q^+_uUE%QiaxV<q!Hco%TvdYi4CpOJZRMHfltokWtr}npJ z29wT&u_?VOyioUG{qtzgnJSCx*))@MZhw>$cGtY3Y8a_>{9w?o+^92G6z;PNt&#t> zyHrl?*!*WLrE0r;=WgDesj{tf#xo9kTOXawPlpe;Og2olTe*8xRK+I4SN~#cjHX?D z^Wx$X-|$7IQ?78Ah<{yBXPPh6EF^wDqrhykk!$_x51STq)c=Y<#MZnn;-gQY#Ebg6 zIJMW$XZGD$)o?l4CM)r+(xNNrJ62qKu5aDO?JgAI`C{SJC3>AFg%sB9EO!*%f2qtV zWunu5u?FRN4nm>}%TJy-sT7cML&)sePW!JK-wK{5Gdt{zJaRAhOtje~VYQU0x31Kz zS38&WWATjQe=Bbm@0aO3QqDN##|Dv<n;mmqI#txXE8gqy=^Gr2Wt8>r*LE;i!8PFn zn{(v$wLc52mO0jDJW=0q<DZ52{5MmSCY)DNb6L0~PI_CZkW<{;ZL>?0_M9tjQtDuT ztFvpifo}eC?sYmV6CX|aEBWQgtEqR5vi7L<%rsQyJI8u9X;Fae_G;&l0`J7{*Vg^} z;Zl5Rua$12&6EqBET1m^dDq|^yWn1k!S!E@if;biQScyFDeZJmSoW0To?8xuUYxY~ zhuD<IZhaT_mRw(=as39HR?Si;?>=+?iL;NNeef*SAkyOJ=HI<rq+Qgb53T-oI{WPE zC)=A=UhuiQfqNU9>U?qc*}GQp#!g$znYp%i{nsN=Keq>27o-{XwO&2_MXlRJ^!QF+ zXQt_@&FL3JR%ms8Z=b%cWaX;RMb^^}IIl{n5nO1nm+^}1<=yWJl5Po@R#>SvT)Z5$ z#4IymO6#1a%71zvUK#J6YajOPVIt33zuIl9AM(2P1amjHUASjkDIE3qoY+<I7b_c^ z1$1nMyiadV)GRNKcoQwK|CjKWJkKxoF7LHMroR!{aXnUT(^(5|h8+$2kFVp)S^av| zmKk0i5p#E07i?%b>)|u=gWla|8NW{5eXWo+^N)(zvbBGc)t7OvdGV3;h|=jfEQagu z8(A4Jy`D5fhx13yiQYX`43%^H_N<-Sc>C_;I586?``r;Yy_mE6pH_d?@aJq|Imxpy ztn}lts|SDH;C+8S_jXkt`@ID-JQi$MP?{w;X@<_hjrot*SOvGZHR`a4ctz^@OtJ_$ z9X&TZowY41D#`tXgx8B*YYuzv<jlQSkat)(#b|ovM~;jYA%?X+{N5U2Enc7Btuue{ zAR}#3jbh=WmYoJdy%w(5+ZLCqnao==aiu-0_~8KYC&s5Qtt$R}=oNF|jJMaaU$Jl3 z?&;;cdU1Esw0-k$-xf-IVr3~LnXGw=sk4}MiKl<~YcEg#m3ECYjrQ#dIqLLvwb7qD zvc=cuN%7s-@jmj6nRunofkw6Y5*9P=aL!{3jQ(WUHeti7EuZ|pKIm)PZpa^Aw0gHN zyY$W?&L}?d4aE~asaKw6<a)I<mU;HIxRpG{*QI{4SM3TvqyE+9+@i<YWsN&#Sem`8 z7k^MM%T%pZ7HH?fqP;?a%ix=hnCzap+mG@6{jf2q-p$hHX10#~lD5Fyi7aPJSjF>n zYMFm?6&5ZvRF=B8F_a-%B3okBj!f}WGnTHk7QCufC>FVl$11yg)<VzjwU+V?Rf^)5 z4IY}69+o}eDy5xa<<+PZchB_MYKB%-R_(uRH|_d1%*#35x%+yc?eyi6rPKQ6#umTw zTlr^>&JmaGO}*RJ3GVzKks-?{vpZR#S<(CCsqZ%*bN(+s_5b~p|Lm4ezgydup5k|` z(EV7uevie|xBBI$R{OU+(+t)1HP8@Do#wu2`-P_7xpBvWC1rKhT^&OGj=kE`zBX&A z=$#*bFI~2{Uw-Sj{p&6AGOI7w?Tdf1MST5V(?*{k_Yw=&#K=bcdcC&z#%!_nT92pC zOJcrXIG$wbcfI%WZ<E!mv-G8ZZ`d&F>xTC~zwsMOu*dD)rucrH|GvlT&d<rZ@<jb_ zX<T)@oX_c*#j$!t`H%Ow?!TBTZ+`dN$@h=8wToYlmYW<X`a|=$?Sn}(@85G`eKeEX zzv)Z)g>_=b*OtDknkRTKF}I-YY1^f)pRA0%@}HB`F0II@kj^p@J2EqJ`SX*%^e@l3 zl+>u-*LlYI`ZKxRQqs5OKj)TRSdngM`qTH>%QuQW9bxhriWzyz%T(&lZ+I9p&pElU z^4#KSGKndPF}sZ1D{W@;oo~@d*v;3#^|x)$M}_(4H*V;7tFipKP}J(>#WNCw-||km zB5S$r_9>&NgEM#b-8vQ2@bRSI?|OrpiGSqx{rLHzwe%r3hkxlezl=5WI289Z?w@NE z>D?+Bs$b#nko-k9+F<792(w>>-K^5@d>2;MM?QFTc5cqAvu=Xf|61z`f?oKT6)$|v zxp1cUT2*^7wvy{AXA`80mAuaSyWCdzW0uQhe|pAj?wzJbthH~N)||;TU088Tg1OJ) zs$JvRXBNuJ3cCM3Zc(>*?7mg%t?P8J2sY1ccBhu`7dtPM_<Q%+?}>9VLR6l&H(NxV z|ID3aA@lpop9>n|`#U#l_gZ-_IlB16|DHZRl^*lv47*!r4GxDWF_ph+P-N_W`Td-R zVPnK=-F?!08k<gRaOhrdtWq#_a$i})F0aR4&vw5H2wS$WQMt~*q`~s7h12{u9fHf( z{G2>zQ;OQ9Q_MRndK8;OC5=4llu`;d{oN|q{Glmr!vnqBhVS%?U-mD#_x^`EGu!HV z^#p^Yx9_k2=ReAmk)4-v`NbQdvoCT!ZN7N(iTk3>lguh6ZFkFXcZqLSKV+gK_B8Bk z_nY?%-|M`ceoV6_l=qh6W0BtZ@{?!$`DxLr^6=z8w$4|Ey5%0fR2r}MAGp3fMth?` z%MOOSKkO$cG`1YCFI9N>M4m@QB~oGGnmp-kdUEfMyeV~@<0e{n<Ztl*mn)q1-jfP- z5IB8Y_}k5^-V=_MKjP&6_o>3k({@(BV5mjO^j$4{^R9f9aAsfqx8OxW-P*#&bTu}C zGv!PiD`LK}KV}!r$t=xLWa%~wHcjSOE6DQM`D4o~iN~B#xt}gSY&o=mU-<>!61G-> zn+88l792`kbl>;q?>6B(l94=zvV;HsG%6LC_<4SH>*D0R&&+%!RTq4Fekp(E$hjRa z-K?<M;}265w=&P$g09>5O;^+}E9KvJYG>)Jg)<6v6{v({UpX$a<U|wS>xe|N=K7WL zHvc}ZVAakQ+a;078_RI}?TkHtYZnQ)to+^M=lpB0RtBf}mH$l{%s<Xm-MaP8oJIQ4 zMmK4nOFZUFN=k(e^JacX3~FZjz-%9&5ZK;a-ak9Aop<vJX61xUL2d^cZY57WnI!P% zulM1YE22N2Om|bNQDFLTTuJbHU!Thj`F@uP%Kq}p@}Jzf8*6h&<<P<lpA9#^KPs2h zX&Z4&!!PZWh0CAg#}&CYMC^1;FTYZ6#Iw-w^IYaO$*9FV2mVU$tSBi_%Ix$jY54NS zpH;EpYkryMB@1Thz0-bwT+zb!QFq=i{#N-ZzpS?KxUPQ`SGlv~_rx!vwu=j!*i7%* z_H9&g+}BX2Twy%F&VVUf``jYtt;SIz%MFV93O|3|lFJdfZ0n8H70xr>_e@|`XVZxc zGn6)d{iCSuBTM8ux6RAgJU)HiAHPaR*vsZ$nZXfx))fjV7d|ALJ^!$E%CG%jdpEtU ze=mOO*blLrZr2aIw)gz@_kn!<SJ_iFmuiybS|W_q{$BdvU87vLvHo@3+lGwuWzm1@ z*56Kh|L^aa+1uMs-n(+-9&f{E&jX*C-@Uh1a8BbCUy{<HF!|(*ET_k+e|%crR(#*; z@gj~*XN6uy(kI28MW26X99*LmeW0z1>;3-a)9$s2F*&fY9^%|%xp}ka{vZ=M$6ssh z9qPDsY7^@`y-$eP>j@-nVlqr*T=w+sib$J~xf|;(%PRfW7f+a#Hv3kV##ixH-S@oL zFMn^l&0_Jqf5vnjBfW>GQX50V*Zf$%@5PtKw`=6uEl=47+E-mX_w$M71iNJpv!2EO zww<;0+OKB2z<oEj{;QVO`n3MU+m76r2zH^(+3kTT(ILWDGv|gTF1e6@`PIoIw>eL5 zi|=PwOr6-Z=|ppj*PCsHk^WvxMe9qx9lx~XzLBYi=R8yYWvumw5|8%^CI`*YuX$c= z!(eiJ;fks?54k7lPf2~e|7UgnpZQ{^{@W`3*!i`6Tg-F*?jyf1{NiUn8vXd~%l9|R zR_B^UoDY0!bvtkOK{MwydAzf#v;KLks5EM`3thNS(S>>I)`fg0{mZ`f>Wl0vRahvt za&CAH-^C@ShBpqsTCz)enRWE#FDG?=2{c}pI$|`-vnE#Ac,Lb9>v-DZg^U(8H1 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⁣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	e?Yhe(%)-94qRl-HV>G&szPf?DQ3K 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�aC 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	HX{wD8cp@6oX<wIjYBl<80U6&$TpA)!%mbT|Lg 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
^7p{vCI#f4n+2`e-MA$bkWLe<s-62)^Ay~<{ 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%0D;C|YE6x6S_ZE{y@Kx9SoB`2gL5I$llo$P5 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	!=7xr!zhsxc?cV>nE6YDj-`+BJ!~fkE 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%0AhmMxQ*(HNrX$=^j$AD&x{x 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�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 literal 0 HcmV?d00001 diff --git a/simple-setup/O1_working.elf b/simple-setup/O1_working.elf deleted file mode 100755 index 853d226e411c71523b69f0f05ac39296342d249d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 789452 zcmb<-^>JflWMqH=CI$@#5bq@;gMbMG1H%_K9tH*`238XW1qK!d4F-7zIgosTjy@BE zjy|IR2y-wnFn}-%0|NsHgY+|iR536JFfcF(#OO0JfG|7Q5=OAh0S0D<0}KobG5U-G z8*CUDKp0uRz?Olbz?MM)ghASFa5FHlff!)jV8$ph8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*AwW&A)yP{>AtGT$29sik z^NfTW2@;7BiF)1)iZc_K6eANE6+bA=4AAzJOkh-;nP95G@WJH=lhOnykqc~!l4%Sd zOnyk_F@jhM5@}Lt3?FoUNalecs{+FZ{U3~q98Nzkg3OZkluTeyj7*U7l=ff*oAp{z zGHn4!=Lex5AQfVsB2XE|Jq#KQ7Z}`yJcK<t5|~dkeCFujaA)2+GmAxm(dqXEMg>Nv z9~YVTGHsPelSupj{nLMmJc&G}y$lRY4h#$o5)2IN3=GWi42nt&3||-+B$N~w7BDa} z2ynb*cz_&qC7b-J7!+6(zB4ii9A;z?ILgQ%a1akZjwE-IkwM@zBZI)%0mcmbkl+XJ z9|9H(`#!zyC^XS$6o}Dh6fj|85SXx7>N$ggq9;cJ+lj`{932Ag@*WHs3>x|ud6)2= zVbEl{!0<un$Is_dp3+_n3Jebz4^DLYb5YW>!ySeh_Wga%c#`qZET`X>3*15G9$;Wl zNU>#5;K^YWU|?WT0AVm&fJK1;gc%qZ3f#Fp7(VR#!QlS>Gi$?vO$F`@4A3~ZP+-fT z;Ni)j(Cfq?u#%ZUAk>LLAUuqL;m6hkZa?;L?3w3Q;LhT~>MgLf*@^iAi#LNd!-W~{ z0((Jrf-oo^**w@iIi<P<PV%3W5ZLM|fJ>dgR(2od3I=V?i~ql0{m<&npv`oF#e?Ai z!+u6(<pP1dH|!V`K;~UwXA}V0$e_)9fyI**tm6OoGyetl9&iK6-?3v*0I6|Mn#43q zYLZ)l`vEsmkjpL#de3$H|NZlS2E}eSem6l6Auk~*fe$Bt@_=M7%y8$1(hLd=iYyGg z4BQ?ZA9#Lnd`S4Az@W*%@Il}Q^M{oG3=A9~Yam#GMFAE@k}V7Z0$W)=eEiAnqnr_u z!Jy2f#GuIW;plJWj2Up=zTeCrzWx58z`(@(VZ$E=1%bT_j2RRJwlXq^C`)v(7)y76 z!Vkn3Q<mspg7OQtGHCK&U}5NFaFbwERmk}N{n>xUBhGR&937lk9kw`qy{N%Zu$NKw z_j3jYX74#}i7uTCj0yWc$M+YwJ1{Vq2yA6xU{qlGu=f`ug95|<?{EJL>;;K2XRvxr zaZ7fYA;9!u?k`5=XeZ?aa5(<|uV1jWZ3DkAi}K~L*$mN<3~E#2S*Nh8h=j9DVN($a zXP&~UA`;Ftg-JyuoY7_pgO22rOvWjfDuOmKOk(!p_+a&iZ9~D{B^-<bH`o~k7?nA_ zgcHEnlToQVLx5q1^Y4r7-i%6836c!|jkq&}o&H=XaA$bH;K1;K!GYlb2(vi6|18i@ zw2j$IID<j^&jpBobQl@HEGBOTC8>ml&jK9<?jW(#9EW1ql_eb*6*?RQ96(_MO3OdC zvNG^6h%x;Ce)Iohj`tF;V%QZG9T=6n9fX}&E($wa7ySQz<NuGniVOw}%pa8hf7p7? zjbUrk1~vx9i6RX04FA9H{omrY$4U9dV~!6JA7j{+l^qzBW;t*<@m*k7p6SM@%4o9O zN#yb)jtvqUW4zsz9kdugvY#(<IWrX`xc&dW@;`$P=WPWBrVT86Cc1st3lf|EpHU^n ziE%cA_NNORGnhX-|5pHZ=l}0*{~vR_1G|#Pfl+xe$dwmnIU5!H|K9q)U@wz5vzLw` zvj_7BrGFnd7zH9Y83hD583mjfq$OrEu!H0BfYKyJVdn-VAx5c$1_owt2Bkv*pgh3P zz~J!3jzQta)_ZQ@ZhmgAZV$GyGIY6#GsrP;&7SAvciEV4rkfcP*DMBQ0|rkwfe$f1 z8r*UiQY4o!n0n7~OL0lgXm(<_l#rk;e|ytxH%4vin+KF<Gb%&vTFs#AH8X-ill4MC zroe}?AB+Z!7Jn})Wz;iPIXqAocTi+#P>yC)c9u_wa%0pozS*EWn~@u;*V!#OVJ(A` z8_Z_;A5z{Cfs6_^dnUNebX(-M+U>_)F>i4%T}5#Z<_}B$2D>q8AGipyomojLfyrud zhLqEv3n1IV9UdslBiW{q5#$!&z^ugNAeF$V9OO3HVG%gB?R$Q}4HhODoQwh)T#N!W zoQwhnTbnn?cpXu`67iUw`3i%M{zc{u274J**EmafOJ_1nW>8{KWL5b8J^H_}_w9UH zC;kf!%F#?hUcw0=%;$YO|28}C6<+VzSq$3uFU)Yi`<&N{O_A4I!05jrj|cMy*T0-z zZHnC90!E$;93IRcZ2xk4Fn@UV7v`3V1q==q8yFlw?m5B<aT5m@qd))`#BDqZOdq0u zGk=i(&7i@3LC;%~LBmkji{)^))1Ql4-a1}UNg(%Xdow7_N@x1;?6)R3m#KRN=P+vj zxv1_93NK}^$=M(tlM2HWR%2x^Mnz>0#t#*L8K$r*D|#_1Dta(}DEzDF4e~9MB8$TR z?@#{8`7%t^W?)ca1pEHZKLH<xDas6>&|p{i|NY887>`5Y|M#>1xV#xALu5G>{(nFE z52BYrkxk+M_kI7?K0n|FN{b9RcbKHNGcbVsZnJ^G!C(V}1A~4>Btrv}1B1mJ8HNK) z4h+)U85|;u*&7%by$?hbxP$b8*pdMdHmDrq^K4KGV(88kcKUOX$6F%vmtrRa{|A%* z9NrQMTuM@j3`$W6j8?M}ViF}81dX~gL1~52`$nb%r@-C@Xuc5G%IQ5LiPKY1f#JjM ze;hu0lo^#C1u!at_;dd?D@QXdP6w5ZAp3LK83aIX7T7AP!FxemL-vA%hU^7q21)A} zxy6prPE0C`on;u9O&A_9sCY6qC`&U+IwvzoOU`Cs_gUhW>>`;U#1xglp~&!|?x(<B zMwK_unN(gu)8mJ&%^O%4I2gnj<QaIpr6pCA=EiU{h*?KD1v|c#0O?8jsVskc6N4h7 z(kv%WM~3Of3|in)UFaY4h7Wr|=>}APFnKY1{QqA67v$y{T#N!09t;WvTUq3|FEFSw zs<A%MVEF(2^?ydw6b_~fYEHi{e0yH77o?BT<Nx;^e+Bk})H7^t-oVJf;>|FbTbV%# zWM2MX<_!#c_dv~qsdt2`2l1Ian7x<`{(pCZirwL26o80>M7zQ6L72_z!RpO0nOT`Z z2_)+PHvNDbNd6CsJ^{GC4@l)#|AvDZ-JG-B_?73l1-m7=2|LVmJIz1Ct(%`wf!SfU zn=e1B10Nro!+ECte5bgQ-J~3NC-rc#I0U#cJ278iRPc72;n3*DsKCs??Z7qJn}gYb zb22ykZ2mcJ%nV6xlN~rFb8|8~uut~plyG31;O)jbnPm#^Z05;K(;25ROpSJPa%1&i z{}A_|e*>bV`mpzan*=wb0F(FZ3;}}%22h%1c+2phU@NFi@&2<wThX@v-#`3c;lz4@ z%X@|s&t(wFd5IIG-ed{G(*RIC*9NNB_Og1jc^N9Qc`$#_`h9?rLEsD{g8;~^8g51b z2OdU&1Kgmn<@KKF#DAH`d!`f5rT3o&nv1q^c})V_-3T_T`LjTWz+N^lc5ekEE3j$I zzYn+}n+GzB2Wnoy){YG<3@mFI)L5o*g37uT{2$E!GJx5PEBHSc{`FSYF5p$lbkktq z|FG*1gR&GumP=6OqYy@84(%ToIW`pRZDL^ep5vC}0xIK$ogI{<5)Lphdmo5sU_QVP zs*6|-Fgh?eFggfqZD!yA*IF_e4oXQ52UJ8H8kB+<g`H)<I_9_~xHu*V?1iZZnF11X z&X8A-a42vGnbE+&=?xO|mYeB#k|9`bmg6J_<_tmSNCzGzK?hKsBjL=LP~Z+S;{e!Q z2`<bToa~Vf2b5>CN+PK^;Kt&>=zye#1+0b%uNo$>8V0;-n89ioG1V|=a$bPB9~4#+ z&P>Y82?g#A3@l(jfoeF2*q7%Z_k-$lkY61#8rVT0$#8(tp@D%7td=>$+ksIL%?_|U zs709I;+(+<2{W)5Ob;hxq=SJnvMw}x*c$i?+(Gs*F&yS#R}gS$U}$u(F`mu9=rt44 zu5e&<__39pftNvy;exU>n@mQs+#JVbCj%832X1h?;s5uC|9^ALW_TjOu3+KNz|iWz zpvQ6n<X;(Q)r22=LB0gBem-Y#1f>ZXhX3EM{Rf#Pl`)Bd)%!{St0%7l!-o&Q85KeF zwcnsJO~rvhL6)CE;K$Z;ZtiXkTS4mOGK%HqITkw^sL45qdCzf6b74?nSLat1@t)zv z^nlSsPDkd#V-61E*$lHItr(OXCNW%g&|;8snCK?!^!|b%xD@RM+bo?io59I#b_9d= z;|rc{3Jf#c??2}Ow?=+|`WcRl4j}srwz4tsFo-hz|6cI_GskQOPH<XgS1@pBU}$k* z&}F&M0B()RBoyq0w98}?em+0omf*<ffEo7=SmGWe28nxtt&Gae4i}V!*d`}UPGnX5 z|2^TKz+O<hkwJw~jqL%XU7yRrXriFQbV1MQ=Y_A}68(Y75@wLxE3m($vZgrSNdko* zayi<*ft`VAlE5mF3f3utbA@J2bYse3P`Hq0l@XX=mBFZZF^zFDgLctf2IX09%##_^ z7?oojSf)5Wu&i`@knJW><Nkm_&*-9cMpU+=o1hc>MF!n(7d+fnxU(^^I6v9+;dz77 ztO({w3|g!g8FW}LUUp@_pvEBcAUc;(r9pW%!wfg>2duLhv>7j`F$g}8VfgYKViK2= z`b7raA7GO}<}he{y1>T3pksKEQF)HrBNxWm!LBA37-utD&vs)_40dDC-gcpri9zAA z>y`^v8BDW7+@xc<ogJ8%orMz_R0Nb~xNUkaop<j!lXA4vEI0875Ly^Y^FILfe`dLH zKLGiX;{k)-w~NfP8ML2YxW)eRiZuJ{tE{uF3j^HPQObJcP;B17$}riDXO&0=;}qU` ze6uD%Ls2UuFhL6(inH7pv~BJ(fcgzeAr1^v6dveQYCK?=rS*V8$M~XF#>9LEP2P)I z85bi%a+BnyI6m3Lp!e~DgWCpoW^hQpelC<5>E_|a6~d@A#qFWXDOZ^bL2dzZni*dC z0$P7AFsOLBF=$=6u!M<0$;0*1g&-y+=LQ7_1}0~�K?C&p|dbKZuf>?8sz2(~WVq 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�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	tH*lYfuOjDS<Tdo|R=__`_VnQO(Q1z?Yk!$G}|1 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 P-4s?Hh6I=-Qk((+lqP1K diff --git a/simple-setup/O2_not_working.elf b/simple-setup/O2_not_working.elf deleted file mode 100755 index 8bfc22b24e7623401e4fa53ac1cf0aac6b260bc1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 797916 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�a1r%8KnL&ZY&H@UoNI_6w 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¨6cM6hTe6NdwXxyna~ja$KD0a$JHf~vWRTaD=?s2Vdy ztY$C>vT$&L?gJ2HU;yO<aCHFfv?_>0D>QWm4$u$?DB*+U`5DAPau!QKNtTxpJSzYi zC>LP_m9R@C7#Os{(@DIH;1bp`iIKrJ30lJPG4g>**o-7bh6IopIPdZ^Du8q?Phw=4 zpTx)jnS2mr6avjzK2Ks~xD664XJ8a!1P>fIBr`IYBr`JTfb+R9BRE@6O=e{11ql`~ zFp4mOhih&mGcue?W@Io<Eh=JQOkiZJdCnkU@_?Ozp-+N=L8lmWw!1o`FsP?(pTfvs zoWjVUD+Ahoq`?RtB%74N$j}86bOi|-Km>23FftrVVPr7>^9&Meevll;JTU~6p_nQd z7|c1IGYDLeU|`6ANP)9S5NKP7dDe3VfjgiC0FeP{Vlb_E&LHp-A^=_oXKM7EK>)Pt z%ZxFQsfq!Vhd~Qc1zA7^oTaK70|N+)%5qvhQD$HOVNp#^E6}D85av;1<gf&t83)3m z@|;$n?O!0wqsho&1zKJQ!aN#`Y?h!MCLk=Tz{#*k9yA4Fl7le?BJ+tsz=4;6LF3}+ z6bQ@c6bNY8WpoMzv{P$z3IsG{Iywac8txvQ0udXX0%0AU0%2fa7@YzEbs#lHr$9!h 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 diff --git a/simple-setup/O2_working_with_gunoi.elf b/simple-setup/O2_working_with_gunoi.elf deleted file mode 100755 index 46615444b24f9219f0c817be505a8d3a57e4addd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 797976 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�H6j_}4TU6kvFf7HFv!0|SEtiv!4S3=L2k%z-ZfVPIfj0*gQhW(Wl) z|AR?}tsWVShJ9`f?geg~7L1-9?hJeP$}$KDFfcH1GB7akGB7Z3F)%Q2GcYi)GcYhj zdNY8eAbLS0BLhPxRO~90W?*DsQ1ykV+v@|NL1G1_5I3)|XHb}84`G9hSmA(RgA9+5 zWfZWGWfTDUqQ#3rK>)NuhvC70d5~fT28I<-b3oiF77Pl1EEp70ED>ga#0L`w`2*x0 zKI5~iO@wlvy}8E<4o{HSC>{-g(GZ|*2>k#5|37j$c*BxG0fZk|GAMxX3rhwC5dL7v zpa8-@EEyC)n8Auc0fafM7!*KQz=}Zuge9yP6hK(Pia`N{HLMsEK-j>FK>>s<tQZtP z*ujcH0farQ7!*J_z=}Zugd?mN6hJt^ia`N{GpraCK)Aq)K>>s-tQZtPxWS4+0falO z7!*Kwf)#@T2+y!$PypctRtyRtyuyk>0faYLF(`oW4l4!)5I$hVpa8-rtQZtP_<|LK z0tnx*Vo(6#2UZLUApF9LK>>t6STQJo@DD2n1rTPiW>5fO4r>Ml5EigzPyk^GYX$`n zR<LGJ0AUSl1_cl{ux3yIVGC;p1rT<yW>5fO4{HVm5Du_rPypcwYX$`nPOxTB0O1U4 z1_cl<ux3yI;R<U81rTnqW>5g(4r>Ml5T0Popa8-%tQizQc!4#80tm0LW>5g(4b}__ zAiTqxK>>shSTiVq@Cj=M1rWYq&7c6nH>?>HK=^?*g8~S@ux3yI;Sbgf3LyN$nn3}C z8EhC7K$ydZK>>sXY#0<kSi*)u0fZH77!*KQ!-hctgbi#M6hPR*hCu;@9c&mBK-j~E zK>>sVY#0<kIKqZO0fZB57!*J_!-hctgbQpK6hOGbhCu;@8*CU9K)Az(K>>s(*f1!7 z@C+LU1rT0f!=M1dD{L4PKzM@<g8~TeuwhUD;R7}d3Lt#KhCu;@FW4|Bfbb0)1_cm) zV8fsQ!Y^zX6hQcc4TAy*|FB_D0AU7O1_co2uw_sHVF6nP1rV07Wl#WN1zQFM5Z16| zPyk^ATLuLXwy<ST0AUAP1_coIuw_sH;Q(6(1rUy~Wl#X&1X~6L5YDh=PypcqTLuLX zuCQfL0O1B(1_coAuw_sH;R&`33LregmO%l87uYf=fba@i1_cn_V9THY!aHmk6hQcZ zErS9GpRi?60O1R^3<@CZOrW?K>hfz@7zG@e89_}ch5%hg0UupP0T&6v7*tLoFarZ4 zgJZC>rzf7!A|#K{D#*+r5bMAou(pXo;3*TdO^A>lWsQcwXb6mkz-S1JhQMeDjE2By z2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2CV4gp7X1_p-2)WoDr z21Z#11_oBMU|nAZHXe3gPDUXX5k^r)ab^idDMoi^XDbB_LsKhDT_XcSOWi^fU4zo3 z(!7#VLrn!sJtI9s1(3L*fsv_#Mp0@`YGQG!rb4u1kgtAXQLe6~Zc<TVUUG&)QEFLc zab|v=f|0qosikEs1KeN>sKLg%hMEc%dd5%_4a^OUkxfibPS&-+Vw$mmk$Egb2Ll5G zGlLUoDG}puK3)ds5i^Vo42*hu`dCp;W>R`iesM9#oeT`gMI{D$!JrjD3=FJHCd>>1 z%ug8^6%`fLnO`#KDXJ<mb1EnsD=I1}Dl+pa7%PHVipq-2zZeuia*77}ib@7d0t}3d z8DO`#5$6_=E0UA-lk@Y^GSeYW$;nJIOe@VxE=IU#2@it;^JWf4W<#b1M#d~fW*!Aa zCPoHE#u)0`wS$*Ifq4rzBiQ^R>YKj@WPUFnC~Orm0TUMkBV#&+wk8!MCS~fDndKrv z@DIq=21Z7XGLW76AOh?`8d&AR$DqJGnURsh4rB|$s!fcbH2RK|bisg`a-j)EPftHH zFFB_)B^5)BetL2;hM=B4LSs5+f=f?MHquK5CI5`X;*65SB)tsKqC8L*&MZ#U%K)9p z1mYwYltMU}dBu6U$@zK3C5d?@#SpQ?qFlWU1{MYeh*d^<86X20SQ!~unOZ=BvV?_^ zm04I=m{kmvKN(pW+4xz-lvx?IVWgn~o1OwAqXMG>n*y5xn1Cu`U}9lp(_>&_VfF$M zYzh#PRS8UsfJg;aIS{4DDh8rtS$RN|5`+hqf#?An!pO=Dk`;j{VuNzolvx=;!fe7I zl97p-fsxULX#~gG6;P~gW(UO@D<hjAD>GXQGZ!e{m`fO0*_e53SlQX^Sb5nP_4MUg z+1V69Oa)eUHUm~pHbz!<HhmBcQq;-H#m1<|%ED&H%El%v&&tB4&&tNeXw&4yT%f?p z&0MOdpuoz^#%!hs5@uy(vjyp7WoFZ7Wn>e!VPxfGj!0u=XL}7Yhn1T-Ll0yPvz!f> z4>6We!G@KEO@)n-m0OvWna!J(n~jl`RgYCb0Yq{sv$D#va<Cb)@(F|OU}0mf)MMok z0V`u>Gi2pr6J}+VXXRkiM<_7@Db<I&S5HrYmEW6{4J4q*%Fo8AXT!?orKiWr#hj+V z%4V;?EH+QU%L`2nxJ+vWmuW=SP>>9SQY(PVG)NYO<ft401_fp%P}GQk@`x8JpRXP` zz{J=XZ4_9A^jP`ySQ(XA`E<adjBLV;Oe_qHjA>wpP_=qm0dmScUPf>&sjsM{Xap`> zTSs!%IRFZi^PHgg5f%nT5G!XhE2BIsry_`CW>W#h8gmsRE1McCE1NzmFPktcdpIjI zIEOHTh1l5`S$XwY+2vVz6+yYfjuj-r$i{rF){B){L>QD6*+AKfolOax^Az-8nGnQ) zWkPUPvH|6nYEW(gWfD*>WJDxun<iE+dsa4CR(3XJkP=oFHUm(?S72pfb6{m-<6~vj zVCA-kXDR_bRxU#dvlA#23W9Pyzbz}<1U=?R1shNSpsgUn#>mF}k&zMP0B}LT&c+Dx zy$`4)P+;X`eo~tT^4@u{OSzddY(P9_IXw{HhPldymCZhaSu8Ehi<RHjhKZAbk+FdK zNxnyjL4kQ8FV<EJIKTUWYkLhw1_mZ#TcmlZ<vE#2po%(KzqlkNCo_pbzqGgrBmk<@ zL9IjGy!^aWT~M=KAKX-iHv;sNN;7j(^dUy*I){b1R#w1x#(Ktj22c*juw<An{o=}E z2C{TAFeH|wR%Dhy3Z&wal$6voNRuJHq_Q9t+8`)OP0cHTv<-6dld~Z#h|eGm1*joN z?Swr|3<As+pj-p0a1>a%6m3`;^})r72RKA!hHZ!@C+6hjCsP=rkh<XvC=`ugp~%Vw zE_1jP^%Ov1391AhgTwL@acxmZBNURfAn6AZhxACD47uP?DIz0SQj3c6@*!!iG%vHb zBn85TgwPXE2>p-%1(C3b1T!bNQIpHaDy+iF$;__+s!5fgB@i>G0y94&GdCk6D>oZ+ zDI+VVo*pYJGq(b`5y}W^Pcnj<jhr?NOe~yiU?!-k$qAN+3P9Nktc;=xtgN8sC7Udm z1Sw}`18HRjYh?zjWCfYZ3Kn362*B8EdU_zknZSG|uts*U3U;svJGha|&ZfY`#K6dS z0bKA^lN-&snZ?P(M>0cNW?m*{JVC<Sp_xH|Sqc)|tc+}YtTHN~>IBq60|$d5t0b6a zWEBU|&@fVfG}Cq2j93}j3>cZ%7#JDvgZ*?9o1f@VT0-&yCW)Loz{MT|1H4pZWMF`o zicAa)U};EU2`v?w7#K2h3rdSp^^!pyEruUpFVZX8GV`#N<B({}07aV|Qnbm#qKyk0 zMQn<!(x4b)lZPa0MM#v%vl$t(%77Xt%xwB>jI4x|voabmg6rxmaLF`$>rF^`hM7&^ zDTEo3LYNsCpeckIoSbqpLH%+T256xOsY4+VwFVSXix@#M1*$mVMLwv+XY*ra1~owi zS((8V0ka}V6x<n@$pPx!8V}n#6%yK1tUX|vmjyIt3L4nB0t)y!LX51;lEMf8ZrtZE zvPv?Gq_HwG=jbVbn4o5?A*%>zxPi^dh>cHym6gpz4BXQNbpd!lr6HRGD+jpm?7}Jx zroCA?nPnIi6ckt$6<9fiS=rf`l^E^hSk>9|S=oj4S^3x)!DS~S^W1tHaOPuVGh}50 z5125rf<{IdLA99^xGT%b%Eqh^0qXKHFtIR!Y8@6EaK4pbOK0U~U}BMAV`Sw7(Rxr} zC00QY7vwY$4eCZ1z+DDX4eESwu`#mpusMNx#H_;1<)8++4OEdWD>g+YAnTb+A(k+K z!i8BH()AZmU}Xb^iw~<H$WAtIRxvPb01g)LpaY!A1*#<(K?6dJpgNHeTn|E+U>UXu zP$+<ESa1amkx^i^V_;%Y)dL5WsuU|fh{whV_NJ-=gsT7!KUI)BjKTJ@vl+4qLAqny z;E@htP=||EoLNK<6r?43tn4DfAn$_)I}BMl#aKl_0ja0QD!|4pqyP>J3$UN_Y{22m zq`=C}X2&WH8m(Zn1(lSn+-yqV$mC@+U=vng6_;n_WmDAGV`LMSXH#HRRbb^6W)qeN z4T=ftvTC#GvGNLoI#D95ymG9%Y>KRG!l2$FD0Q*2F~6#_VdY_CRFr3BWm9BjWMh8M z$f%IU%FVo^4itsVxe>x(%UIczSvlE2JxLDcGH^WT+JM_Vka*x{R`p`FV`Hw+V`Y{C z#|S?-ewf*qpD^fwk}@c5*@AU|lbSBLHegf)g$kbyD=+iW8b(%Tad6HM5r%}CATzff zD=%{?$T}5PO;FgYvuZL|DzLIaX=XNk39y-<fgl++Mpk|skYWRn3qa#6tb($v%xubF zB^sc9qaWBa%xq;~AwD@)HYJb?IBlS@7tJck#>gsU!^+BL4{|jtE1Ne|%0L*D9ax3r zS-BOVB&bhrz{Us~IWkZHk*sWntO9I|tOnYw;%ck{+N_{p1H~OE+j6im+JI95rwv#U zs{^Zm3@a;i5R6rcl~WEB3Bq<z3!On7RaSPkK(Iqp6j((-F`~$72g=a$Z2GKr;CycY zrNKRNFOc_D!JY%T92CjSY{pQ2Bq(`-LV@`_6QeMjfgEU%fmxnSkxi799TZTCtjdb4 z%)<I0i$Ouae7O#kUznJcK@<nL5y=HA47fmiDKK9OoSCH9K)Fi_l$#X5xk(91f)px) z+nNwk1*}{JWQYnQxFlg^V|M+-z{J7<(#!>l2<ATwC7?vf%FfKG$I8Q8t^i^w=&|y$ zG3TYRDJXzKl~<NcA5_?>DzNGbBhoY|Uoo$%_hJ)f6$EEMeLYrHJyv#MHbr?heKrwL zd8i044?zuVc4mH%YuNQz#h4$|dV#~|CW8XFFkwE-#0V`{Y{9VtYKt?1iY+@^a7qFd zh3w2n>-0dGV*+CucyN&2o0U_Cm4i)@m7PtPjk(;0l~V-lA5cyP<#%p2TUK@{P;7wO zJL;gq$A*=g%>h&}unOw4^2@Vwvw_A9`B_<+7uV}4u!=EXs#Q>c6oWEs%<Gsyg_R7O z0vq$c+B8vC12%q8f-_*QQed@JU=>hi6*puRkVQ{^th{!RQk<LlC%B~J1%)}U9ylJj znO#9~$m<0fUYS={0`?y$rzo;1v9g1TI0H~oAjrz9$jT?r%Blzo24hf8W9490^-=(Z z0H=Z?D>Jh+BRudx1LS;c%+2+nbifB91Z=>z@iDumF)*<R*swCOF(0Zc0gd*v2!lh3 zw+>{KvJG2=9>leR%-6uK6$ZtVFsN{HRfu3^WwutZVPa)qWb_1&AI>19aiXV(GR~2k zn4FQBmkJs=fldMzmlS2@r4!$&A!~GmjB%Bm{N%)(RB{Jna#M4Y3o6NJRHl|dY=*QY zA^m#23<g#PhVtZ$#3Be2u7nlT3<U)sL>$ueJOLUCGiGFEX69oQ78Vu*)i&9n=>bt2 zRvAzp&|{SVQJ{3eIFFT^O@md6O;}!0NfwkFgh3o#R&F+1P;-Zuxk`bV%S*vV0aQO4 zuu6gJM^FcXS2n^+ft8P$TY;5RfjJJ;1!rScRsg3gPHR?1V^&V)NE=o@W+jjURz4e6 zPUbiTR$gXtJ#bgJ7Mz%RNJ&h{eLDK38_d2XL<G|{pd_6P8g2tIAaO)N0xC`=Yc!7v z38+ArL4jEV)O8UR78Vu-rJpiJRxV~Pa7=<`lRzzF5RbXkhLww%Q$bIOm7Prw)EWlO z@$f0Ia)PQkGjM$<0BTmUvoZ7OiGfREK1l5fs{f%(UN$jSZnkx-(%{6Uh>Hd__n4~` z^q4sn6!i2I^jNvs%HV2w+4%KrK%>#z3ZNQQ5mdD*uyV??G8(b+G8ckmlJr0|951sR zBmr82JGRo~C%{2IAe;;Cs)FZ`;UgbRNFyJ(`n8ZQ8l?Pz6etOu3<AuWjI7L{UX%!U z7WOna@WLqwyv+Q;SLnlL@EHn<GV@B($SJ=|QWA^OA%jW9B`KMp@lF;{Aq`3_kT69a z`veyfkZE}v(1byWZf2exc%2e>l0E|z@Y0}+D9oxL0vR;mwPEEnVFk4&!TnTbHhs`g zf-oC1PXuHxA2f+CWXQ@WtH3Ix%&Neq1kneY+Tv8l)X2onz{uDMj!wH_8=a*k;L4Nq z%mA-|Sr`~_L>y8yL$b>XP^=wiU}RMgh6KF;E0+>0qb-{Wge%A@1RnMgQe;(v#f~s5 zmmn*nEjVvUf@{W*VH_F7<mD__Zb~aFFUl-Qh2$HeVhGwqf)5g%07cPJ22ha(%02w7 zeD<u2vaEcdbqe~z!XluGN{N+U85C2(GOR+1%B;*PtU{prLsXenSca9EO;K1FJOaVY zrU-7EgG8X2lnp$fq{zs~rpG4CC=BXCFoGLfpk4qYqc?b{!XSc`ky$<sGNR7J#vBJ~ zv@@~UfNEO}P*%nmHUtk4HiC1iD!GXRJX|)23*O?SqHJ<T2a)q8*pHC17Lp--x)=nQ zb-~4`2)NK>lwsvmVP%wI6;}l{5kOH08a!arV`VgC1P@0s%Cee*+Q^{pm_96iL2U|f z4$Wf*jnWR=;<7lkq%5hF%<2!8Nr}jpkk}~z#m+rYUK9r9MFCc!C{{)}Rv{&DCKF)< z&jeO6vNAh?A_Sa;Y}h2hO-tx#533GH20Wm^Wy2`!4PKT39<<a4Nq~CW%r@Y4XDpCW zMiyc42rUa}9)y931t!X-2p$Rq34?}fLBebX(C#^Sg$64#n;AGU@TIXbvq47LnAuFh zZeeC)Rs@gKfkuXyxj=)bdTh2})y!;xU?m{uf<~=CT0tEtLC{#8A}br42&<3+tDqb! zGaF=%lby{3l-9t@K0pm>VMSJM$Py>e7%Uev52y*vyslmk(vfFoQ(<Kn0hdNxUZC-4 z2|X|eVXrNCaFvO9b3G_9n80I0OrW4-0-N-OfsvJqO^lUKhLsUK$jUsw-iwtv9mVhL z%n6_-H}hcz1@KS}XmABI1k25)&k9=PrKHCy3F;&&f`|6F+4LD%)fid1A*CcI8?%lA zcr*^wU0`KlW8MvNJuhfvO^=m>4Lsz*2wpD(TKL7t%E4Tz2kKsid4U@!+rc?5h1_Bf zTt^S)VlR){El#A#b|P{jw#Mg`ZUzBn1#qb;3~KoEva<QJf(AKxptFeJRKO2P?ux9s zpspJzv+1*Hf+%_L;1eTc?I)u=coZMBY6v99rU;P))sj#?XoiE4O&FX?L2I%=!ipdQ zQav)tgV@mQ2^#bQEf!^D1LtmG@YDcE5R|<@`2(~_krh0M%v|ZkDyGW{bt5Pzfr@%g zkVT+{UkYfgVNkt|YzQNpC^&l*dV$&l;N_EiptVnoY|Jt?;Knwnz~W;SG6K~lLZF#g zNdAR}5@<qwqy-Y6BC9ZXJQ!4VfLkp4z%3R-QnK!l9W{h^Ad5?ia#HiiYUZN1RWI}~ z2r!#~@}VerD5jE;l~WzOrk9J2(F4W+FZ=~f`*F&!a)YWL&Is_DMNo#|mS^Sk!r(E3 z=KvTX4In#Ebg?ojvT`zKDX?-Gurfgw4}({DOcVz-cNQ^`zjTiFoqg!YGI`@|;PGL| zs2(PXI?k7pnGYJ>gOsTt7Pt#f?m#i7Z4ePWb}}%OrQxhBQc}|rOLIz)*Dk=>EDZ3K zE}$&|koA9{u?eIRL-2Sq<_HEG14BHh3I#77WMN<cjd6mO6oPbv*G1}OFt8y;sM(PE z$`Gp(b0D2HNMJ!!gV}l+pc8^oI&`^-B^eMEusVzd<mb%P)YP;Bh%u1CUx*@XRhLCC zg8=gsR#2tD#8wKP>tyBzjfG2rdRHloUaS(#G7795daNRftQ_*-#4ZA=)tJ~6g+)MP zo)Tb9qQb%=!s1dQteni<jG!5HMpkgG1fERcNfQBO8U?U!P_s^pc~6}Js{r#6Mu-?F z>oI{_bj%0q7+JNLD->8cn1yXvMVU7+>alV#U#L@HWn(T-fa(A>>$rqj1)2F6!E^ND zpcyq##h1n^$_ARY7i5)G1WiLj7RNKPvVj)xD}r`r=;<-CrGaP6S=kg=Ss0jDScO?R zKon>)7fi>2mmWZuuz@OVL(pV3BP%nT0m!eQSvT;Ke<fB9Hhu+GPF+?G@JuN;^L9oB z&=LX;<}0A-HyKtg<~@v{Jpv`*si+5aHsHo4H=80`1ZYYt(F@#mWz&N=gpo~=tppSx z%(ubKPDVB_RxSo67B;pBRwfV)nx<wGX9ZR9pbD5VqY2a?WbUksVC7;HWEIr6iGY~I z!)D9C#KI#2Zlv?D39zz*xJqDuF+!&77}+A>Z41zxBO{wFj1LM(aO6SOMKQ90Ip8&V zjG%SZ%tfGiPezbsocgT1pqW8tQE-zLG-ap;ifZsAHK-NA!WIZx_ra(KvD=GPmW}xo zgBL4kGSeJn5oiJpG<^wTGjFZeW7P$-PBVaP@?`@xZ}(P#`Vh<ySoI+Bz`|w=3ODc= z_C(N{0B|3bU51r~O%Jjpg@sKG+_Pa}V?N3NYUeY8dZz)P$xIN#j+L8Dn3Y4`OF@B^ zM;tWZy`kERm7VzuGiW=+9R`Sq0xO3qsQJB(5xhQ|m4!`_4YU?!Et3K(mkKMl49JC` zW;`P+3!AO5Fvv}y-60@`Ah<)q&nC#qCCe%)2O8DlS7zmuVP#QOU}MfkgrBV*C}lF| zfE)>0-tGr>Hz%79cy<UhVXh2nFEX#Fvti{_@YQ2wQB+`K&QV}xWfou*W@Qlpwchwx zSyVt4F|#qhV^$Cb%~j5-Vg&c{Ua%^F$57b3K<)=Sk(tdN97SvqAR+LKIX{~XD`-%K zAF`W>UliO@<OfGNKUf0fSA8}GHZQ#hP_hK2L{R<#wJup9?MhZQa5(5e6o6LVz!gA@ z11n%)V&P}=Mzstq21*AYXMm=&Va^bPIfIpj%^PGeD;pcLmW={<ZjP0W8LEy|608nv zKASBL4}sD!Kd27{vMmDKeCB71vaw<1W@HrvElOZzV@_*g<zTY`bxkAn6ciX)K~u%7 z5fH<{Y%l@p7qWtu=YV~|%E%VMstPVQY@jN^xenxcb~X-SRt`2xR(54Jkb!IyAV#to zgI6d)I3SO+A_(vhm<`(mP|AB-1x|UOuvcW$(_>@)%n-rK!N$y!21@GSawrXK5+fUj zKDZEL1V<U;8c-errF2jc#mLGT4O&scqX0@Ppq!w{%B91~$$YXFR5tBk0x47kC7R>4 zjG#2n%DjaMG_%jb#_S9#SwQh>1WH9-O|as{4pO3kk|rDT2PPXfMg;{{@S-rt-X(T3 zR&M4BP=ZzmXMa`^8!uLNdC)ou=IJ$hdS2j?myt~o;(TH7W;ReI1S+T)A#>~?Sx~_Y z66OVYNFSofhLxN7cb%RMs5G|$=bk;R5#VgY!sZJ~{35Iza^Nrnalj=ODC2U<v9c(! zG4HBY0ObO(JhKnD_piVT8YKXQg}N7LgA}(SE1SFms}OUP0xK7@x<UkKiHssBLn^Sc zL)f5oZrnPoTs9F3Ad{Gb!G?lzzmhO$c2Ay_MUjoU7%U1}62ii!!pg<Q$I7k(-bls; z4lfoqs6LPpikhtKYzj84T#7c#n^_=w6huLx4oVx~^=_=7JzSi&pfc)z9c~q@Y|K|{ zy+A92z~-{)>3J!z8G=#^WX*&>ND4G5$il|Fm^lJcTyd}&fd*g@c7bvRvk0hV%*?02 z%FkBL$_`p(#SdyQvwDD2Iw*p`@g)rDw6Za>@`2(>5yF*+@xYO14G~m85tIifBak^@ zjckk%a~0Xjz=MyV-H@QV0ldeEQID0IIjaOz1W1FbQ$|*H=A056R(@tfNXBDiW6sip z<N{$<0gyvr4oZV?p>``k)Ubi-EYJ!%Q2GK5Vlk$J^fZAIE%Q}|3E&h3Du6+8&Biv# z2GnvW0as(7ybaR9Dh$o)jNl<NMo=N{ZDW%LDiYMdMS=p@gOH5Q1{y_TwXs<PUIh<b z`3}nN5GE&hy%Hy=bm0UQxex**&kTwcW;TThp!j4iP++sMxu(FT0Lkl|U}HH!W+Ul^ zXk(k8pa)h5lH~%oDY!rd7kI4{gaEZ_d|6qv*%Vko0~n%g3N{fFsAf2u7sw}!%%>T^ zG{|no2v!#674-^fUV7-(VD&nhA3#CD1yTrcKFC-uMyNGxDxe4idy~;C0wl%Aro=W+ zL4o-!gH01Twt>S9VH+q^xxH9fnGe>j0d1%#(qoljw)3)KWoPz;r$IAFoHGi8Ybj9T z0;hjHl!UK~!o!gb^dXAmp_yU=D>t(Pcrlp_q)umNi)7_x(^X()2e-o5K}8hvPlgik z0#49kM>ZE>(8LPJ11un~uz(_f1r#t4f)SkLpa}!yIWBPJ30|8j31&(%vVs=CNJ6T3 zNl^VK$t=tW&dZ=>382v^Nl+>0t!D#n7=VVf5ZMEi2N>Bv6FSUbt5_f_NLkpJL91*) z<H?{*2r`6)IUBNal?6!z5~d&#kW#RNSU}Fi>3WbSA*%tsY)&vRu?T__gCIx`geeR* zL>Lqz!k}<~5FmM88@4qH3XmnBVyr@-l%xPEYq%m56ciZQyg<8lL91ZdKqKf(Y>W{l zO$<ydkgUrNG62Ga=3<aTAQ>2B3nxe(mW$^>2I{!km|Ydv<|(iWGC!@;i(myM5+>$_ zwIH3WdU~L?8D!HWsBzB2W&*AuL5oQs{8DhwfCpUN^MLH&Q2>`kJO-?)%#Uj!A;-wZ zd<g7eMmB{eP|jgwvtpaTD#gY;qdpDP1lI!>cCTt+)hF{IaJd%&?g=ol`LIfXy$osq zIDl$RRu(oNRz~I*%#5r|qQW8~koGvM9xG=SXwjS@sB&av6#%W*a|Tr>pw5gFsJa1F zp)IW3a;%_U9;l(lX3HuM>P><+VuN~wOl-E`_9OGbYDP8%&>%l({Vb^H1vNDpL2WW` zaGk)y7R1U5YEv*DW?|F=wS)IogBD{RW`VLn`>vU{voNwUi3m#ygW6x>tgO=Djl}Gr z?t~&}S1L1`A{$6I6Pt=KE66=8)(UB$iAzCHe@~8;1>96(<@90&FWO=iRAgoLV&(8= zWo836$yh-f5x8^}SeX@BIdnnOFKmo9HmrJVAnlB->I$sP3ar|Ctjr2}UTLgMY|fD7 zhpVeWvj?CpvZdhqm<`nFVq?^cVC7)`Sp#Z^F&}33VpU>eOarC8Q%s;k1t4_`vnV60 zCYv`an=m6=6KLHI^YS`yKO59uWj@4c^8`<N2PG<`L=Q@i(DcsC#=NnT5wwU~k5x*K z6+X`bsuvtVQ3z@|cC$pVg2Ibc1GHU+c|pA%E0?z(q*!8OKE$lRb^_cq<7Q*tRv!UM z)NE|bvU=beGYwab2}-m~df+`%OrTON5>kRFK+F|kW0nP}5CIigB48Gn06ATRtpt=k z*_fjl*+6w70}~538*{N9$YOANgpHXW%wc6?URSLLib@4m4ta3!o@UY$W>sfnj9_JF zE&&ZPaDGWRmsK&)ql)Z2Q<^)|>(P}c;M8Tc8&GW?*DkRRkWX!i)zt6*e{P_O|N zc3f=C>LAy0fjJ=UkU|N}V)OE{VPg)`V`XAq1{xe-V^r|cYXWBsW>C5oVP%s8B`8oD zWCxA3uz(i3f@T1~10;;Be3L-Sy*WX%T>9Wt#H|Nf{mKc-Y>>6yOyGS>ENqC(#KOi5 zp6>!BJrIjcm<_T*4IGf*h7Y36#KOj`0y?n(q}Usj?Lm`o%xjq7Jxe|2l}w<lt_*7H zf*L|1Y|KxYK|aQaE;btl1vciXHJ}ZM;LRM&M_If;85uMH0zP9wK@VJ%F@ol~7{O&Q z$V5gq<|Gi0Rh{`;tpck!^Co5+P^ymv?>pduY@EJX2Wc>h-T~F}pdQmS@J>fYRcTfx zHdRQ$1Im6%;FQb^%0A$LR0OrZLB0I*6`&Q&Y|ImxL94ns89^fitZZ!F;GV-8a0+K* zWB$ejN=~58z{46wNcv=BW8Mb#F&o=11rT6mXFd(;J~3Zs&|~Ff-dgR&%3*Ay0E253 zY{1pYEM~|U5T`9@!9E-0m<c^r9$P(DcIG!sdJ1}=v<<0CP^uMB7Dj5|fdU(~S^+8G z0yhRR+IXN00;=-3*%aon$}=Bl&;ySRv@_~~5*a7>&;`(R4+kh%K<mFb6hPbC+1Z#6 zRD;VHKRrl|$eabPML<@8I%#ao%j!WRP>f!nyanxR+Jkzi_Ze)!T^DfX;_(6nzaA@( z0;m#Yp2Doa#{8(p2E2!W%Li1@$$*A~L_ukhIT;i!bLt~l+1RW=5va$?%)E@%22|3s zF)yfum7gkX3anfOtU}C53ZQcTDyV-AN&wR<7(teSMr1&`nLuaq*hr2J%ELE5j}FQY z{z3T#i(rHDC9F(r-k?EeVU$sM(4f2?@q_Zr-$18|fwC94d|-@V6J`_vRYr`UHY{Wp z8e=B79Rw<Sne<qh*aE>^CN^dfFLDR(*_aFTKm+zRtfDfY=AnQBD;L_JJ-9f*J7^CY zbW{L!y-6Lkw}&)N2@KlHv2ru-WCS$?PS=43R(61g8A=quyJsHMDIg8lgMx;cc~QL= zE9-PtCN@w7$Os;|1CO*uF|vX;8-q$6(Ad7|1W?V%iafSIK|ujjHoj#kfezPup%2%C zS}&kBKBz~;BL{A2@DMv{4;e{g(+9WRA!7rK;NS)ABq#z8Q-QmU6b#$jfcgxq;9+}E zbpjfi0VOK(hwWL|Kotb2d!Yhq6M)7ya1PwFva<QW$L;l4xfK;a&Hfej3ZM$3r$&#J z!x%gmxQ!89M}W-I2OY%4e1HKI-r#XS2T-MyhHDhl3$$W^4^*FkLJ`~@flXd;Ggp9W zB+yPzPS7AS+kB8otdJhKrvfXxEqG|Nu|`1;G$aWM70j_s@L;AsxFg31?ear*qJsv& zK>a^P@abKUV;LYLt&n}6&}igl1C4vKfd+q>_pp|L2dGFK^0a04X#x#of;w32paC_c z5l_T`C%8J-2dm@IXXTNHj2kMla<hSs&(Vv34i3WyJ-u03nQt+Gr$S)Co(39DJ;nfz zkpj?}69SCj7zQ;I6j@ooiwi-WPmrN9Sf?*Qok-@<=?l;d3%@9MG8N18g&t)3f>nZz zd3hyhAJcU<P~puys}fPxg4Sy?u`%C=js$@EBuHy)y}+dm7aMa1s7Z;v#{wGU26cE? z+3dij3}ieLlq$jHAA|tcC(wzD7nPuV4Ia$~HOjQWXPrSttO<>S+cF#Jfw~o-{*5B5 zB=baOP?7>Ir(<O0QfB3r1vTy9lWn%((QA+j16J&_ZLGY^*@(hVFG7J8G=k2;#+;MJ z1|H65VT%FhBu=&{aEfPTi)2-1V+18m<~GRGA6UO3D93|}J;+$R4QTq&7M#BSgK7?N z)0u@0tO^t|2vsa>%%^L?Grb^p+JeiZ&kQAOpiVyzNC@17R)EjsK&GRiCHNXv(0*Xh zI0(ul4lAoIF>^Sez+c2v0uCfr=n%hx4Je|)OBz|dK(m6(S871BN{o<P4xSzGVg=1N zGqEv$sRb(r52G=GCSH!Sf_jC_e0ppVto(+cIRP71);w@W2~>)KDlkT2$hajNbXovD z)(NUW8KIK{au79&;BhZT_^LN>DF_`vWmANx0grJpLPiG}71<_%$`Qzz2q=+(jvoU} zX|pj`G=axtn-oBUvI=w>lm(UaY2dVSjsY}^0SX<+_H5#(3?ji(242vi2Z-+>Sq$7< zW3{oF2kLQQ=@f#JBlb=q+Zs^Hf=m{i(Blw7AN>Xyh@=ygd6{k4nqcz<pcD)p7X}S- zAP=^)GP6aaO&B!kVT|RIZ$5M|A7#z})bnS~0Ob?VXcwC|XfhQNLSEpc2VsMYC{U1~ z%+7k@n4JZUO@l@`=A+EeHi6b+Fz>EcNYm5P10CZD$%oKc7LegMhILD@1RY2@a?nA& zhB8k9nIU0QVw(V&r$|GODUcx;b|PYmfr$m$>jx=>*anJCZV;E7Z60`Vg^i7wR{@-- z*+9doY@n_-8zXpvf{hU>j<l>qkClgwd2>CeUCszv63RBBClapV8CV4cGGq<`R8E5T zukhM{2ctkI3o)WhBzVCm5=5Af)agOy!@=Y0%)7xYb?~eLj^Q6rE`&_-fh>Zg2T(La zXB8qMkY^PpfDR@Anatc)1Imc3Ha4I}Bl3KL6Sx@)>T3|3PY`6j!eqm$%G_Ta0h&6v z!3ypMkTG=-g?;M4ft6K;mD32+Lo@_650NJjSee)YKs_pq`2%?y(BU9tO(B5lYz@R5 z0xK&sd<Fs3_DAp_GN3a^$eK@JWzJ&7JDtF#51mF}<xl{Px-l!V>4FDz!Lt)MrV}QB z+IQ;IolXE%Vr<NOjBLBWjX_2>X8#D#$U1oZ9I|SJmBShoIBd+Q1L&ZRGiVzz8}no) zn>Bi%#0HsY!<=&i$zjex%!8PEsFo2j!@$nG40JLr6({wVf-GiaWB$tk9_(OKC;?S& zjBGk=O>E3D5#&u$z@|GA^+5B};PGEj>qdl)8Qi+U7zSrxVi5r!KOzEkO*A7Lv>OVU zx|jf7J};_AommLbq|G77F*=|sj(IyH(sV<_0L(V9a)NsL;B;0BBFUU=fJ|$WG25U3 z>P^C?8$dC|$i_Uk9z4MST4Bk^#w@1*o_pYCK3&JCz^cyNTW^Dybx4QLIzVQ?4puXQ zXTaFmn5Q#CTBguB2yW(wb)fMK=B-TNB{)RQM6hx)pRWLQk63ZcMC<~$a^N!&pn)o! zGZCyD%!}&4V<Ri;L8~XPGbnf|faXt`uhcPuhqF-T9&A8!4|?Evig{oXJP%<*`*{d1 z=H->(iKXQn5qPH|SlO7bR55}IM$pQ9_$&iE8}oAp@JUgK*$Gf}3>iKFAKJqOS!W6A zCNN`8La=f&|F8B!%rmgFF+XL%JuAV=#{8fbvK)?;4Q2X)nfV{+XiHXB=5R&@(6Z@G zWlf+xFRYAg0t&1=2B4#?c?7@*bArzVXJg)1XT!<_T09L>UB$@CXTr(|I<JA1PYpDS zXA7Q&VuCDtVg=Elu0IE8)iXb6))KVi0CaX56PqFUR0ly&od7uuLJ+jzS`oZ`jET)a z3>0b*5zr(zZ1Np65eCuk3)-$E>;;|ODF?MJ81=xbJ3xbb`U>E~Y*v7`r9_ajEd^s$ z{vh5_R)%wr0BrF-uJa#?sd|J#!%hYPW?9hg70`ZW1<;0SMtKm4zV)4rnb!-kV_t!k zOGyEIDkA7sjfdbJ@u2gD$vwN7_8U+rIJ&vKIJKm-fUM0zSWlRM?VDgm+J^x-x)Qbz z1G4jW1t@MnC)SIC_SniQure#NfwDS3E3-1FKGS1!0uT2K>#?$dGdi;*Xu21)iUM+Y zAv>EXc+oZJVgb;pfLx%{fW$xt$%%lLj6lvuV>AT~AAq*bt3d`mY{0E_7D(Hkg-r?E znPXv-09OYrprf^*rxb~S9l;7a>yMocauyh9@Q{g(*$33<U;+;&FtJI14Pjz~EN^Cl zOlN~Pw;F)G0NYW^&c@6MnX6`I3j%M-<<w_oWh-T6VJ;{El`Ej}A~wj*LQuKO904Ab zVbKG(jaVRqKcEf5pgk6#OA|l`lY#i49w-ZBV<U?^L@{)qBS@Bo4Ri>O0C@CWA6yP{ zD}qiR1Dn9c2riJmf(s-q3JRpbeL#79JoI#N%1+^c8iI60dCM*a0p{b74djq5autlM z>@KW~pba<d8lcN2Ky?FXa|tsW=%hQ)z$17~6SE9xn>HvtGpm4BK#8#m$*_un?`jYO zC153RMFMWb7Tbuh%7G_IAO~Q|*nkwu=z&QE5D7}2N?;Y>jU3<_P5?B33R;H-8himC zo+YNhDy6_GrpL<1%&VsW-XM8j1T>TXe{e@U-S*dkPTbei(+BSkBX?UJLrO`0B9`)$ zI@{wQr~a~mPW{EQQw?@Z8yonn;KUrzF(n|i1x2aJdf-%>SX`W11UiPFje!AqCmW<t z=Go04z^npVVav+QmBz}Z%F4)G2;P~cC=A+;CMphUUKN7Qa|7>dwgb%w3(G07vdgow zDax_(D1wSG@M$EVm4Tqm&>)&kj+I>re6poHXww_30xP>VtB5iyE4W~Xl+?WTtbDq9 zkX2%gY<A#Mj8PQYduD`iLEAz>#WEY@U~o`_3dDt!kD$SF(9J#|*Fy)rLFFPN<R&0S z$RIFi&Jv^rzMWebTy`@;N==XvV6AM7tl$G1^;kihXCPCC3NRs1=?hW`9*+`+xJ($l zt`lxGbZ?ddWae0o6}*gE38ECb_e%sO2R4RH5h4j1aD|MI!aN7s9l+%cTIK^<pTowe zU<fKUK)GBHG+x6c56aJ=J8wWEPoQH^!2u3hHxD{JLKw8ekR5bh4Cq)#&{6j6VDB42 ztP=&VaAjl@gM_mTL=@seuu~ueWJ&=MDBv)HgbXB5lwlent9{{t0#*pAc%{Ls78zAx z-li}}xD8m@*>oWb5d{=LYf3>k4so$D+JRaLc!CGCO_@<qft81OWqlf`!NJ@DIvapl znNdU-1i{A*Fb9J6LKro%GBW#tJAV3ltm142pd*w(B{}F6IxRL~R%LlsEk#yE$d+?8 zaPh0C&ngRE5NFTI20jJE6g1ezDg@fy#tJ$s19WNy8@QJyVFR9bVe?|;)B|m&WM}h% zHfX?eaEzdZD&ToEK3i5s=6&E3L70zLH-W`uH?XpUP6AQ^w<Flun058QtF$;l1-=n0 z2b(Z>X(^*8c%G9{0m4&&@f<;^K!Md7LZR}&lj@*jO_jj2ccAtaALx`2@JX^lV9$aQ z6R75b>`WB(V%79wwU1!cRA9ANU}bA!WoF9&FLq(m2VJ5BS_lWeng%pT&KLpd3_%7S z7(wfQBSEDID8>4Kn@gg4tX!ZTRw*kp=&)Z~RxV>!HXT-G88&5*LXf?n?c<P$2m)yV z-!}z5&=yo(LXY2rooB+U1X=zGE~`NIP=O8(76#A3v+1)kL(U;y1v<He7gP;{jpu6; z1~1HDw((+Rl?UI0BgpD0&njcU%B*9<rpzi0UgE>#1wP6J)bfM03qgBCnMA;QVL^hR zVG$-h@GKM~Xe!GAyzU6(Vg>NJZ%~_z9egJhy8`I!2X^oZRM3)DMpm9$NS<Qm0W~#2 zYa~Hs7C31^Mx8+?&&q=rVY9I@MkufffObzRu$e#_l5EU8O(2WF^EhD3nK^fX*9S_K zunK#F_Lzb)4Ct6m5Dm%|>}<^36WAhH1vrdtSh=KGS=gq6d%cQYti1l91+t)hsfw(M zphhyN?Z^SztPD=w9Bdhob|q-HUkgZRUK(gS6bBoVssKbLjg^B9EW-*?4C*TLq_gsY z24|tGBG{PAB0!TQT%f}q%RtL|Y(dFSk5#ytmDh`v+m@9_2Xq}5Xn6yp7x)Bd<_AnR z-r)4l1=?Q*Ug8V#2&mctr4G<mBM_gRjd@-*c;JFnP?1&0l$96UIAc>}6=IWQ6$G6% z&CI3_9>`$>B_JnoHk2`B<pW)U1iHsegcY<w1SAJJAjTw=RnUZ$U5<@e8q}Z{R+I-F zULXT1Rgyre6oo;X|6~|hg_u*oV<j>QtbA;0tel{*V`qb88+JBk2S|!Dac31|?gL%a z#mroxz{V`;1x|hntkTM?3ZTO*!3oX_e6|fgXx2`WSpw8VR1^W7mK?{(%AwCHpvNi* zT0+mv#{7i=w10#Vv}pvq8w-^5d_jpJ5|nwt`2@U39JE-K%?^^>z@@n!IOQ@zW&jyI z!CfUr1&E*`Xy$tzc-sIYD+@ThS=bbruh&6#j`4slKLgF$+JYwa^;kL5^jP^p?Oiqn z(0mssXjmI`6g(*Bf)5vGVPob571f}jJy2l-qL~Htz(LRM1-h<`UGEe45;suLfvRsC zupr0|<`hs;VPpj_+<{vNvM-I56Ko#`sLKbk0<`K3l-a;m=z+$t>_EwiRWO~EN0*h4 zO&?rpf_?7=-YCs9fq{vI2~>)L_Gf@jNe7*p9th5O%v^e)BaA_53v|^TC~dK@G4p{& zyg<&^2batoY<}Qu!wo(xoLfl_bVxL4Uok5;n+Pkr6)PKa3TP@_MuE*qSQr#qpoQDa zKWY^qr5nFHsK8@qW9Cu-FUrtiWdpYXKxvklO@oz}4ZNP6*M*e}lyZ61SveG0xj?cU z8m#<kpp|kW3gGkuT3xWO9(-E3I%vUyhyti2WM>Nmr3F?{mjSeEl9iWPj02<ybc`yq zuow8a8E`eCFAOT@nSa)SmiBLB0xh=&t)pjFgTxzngCQt&+kxvbb~f<Jc5rQ|53&xl zffZH=BZA8Z8c3kl2_q|SB%}}kWirqSOdM>AY<g_qB+3R^V$KVyD^0+f*t|jQOlWPw z%FN~n2{2wz+Y{t%2^&^Z*r{3(tX7~MP72`W9SdYY8ML1TbgVi!E+OZogWSalTBOF# zrYHe+w4%J79O&XSVbF=ApqK{jngOj)V`fVSmo-p6DAGX3XMyVrZb%Yfh9?GA=F1Ev ztZdBl>p^R&A2NW~vdymtE!%p?09v#S8aQNQWAtKWVsi(Vki1?Bptdt;Ad;006coJ7 z3+q6Ow3*qMpMjD;8)GD>xCbX>XtA#cswN#+S=kgKAO$+e`^;=+kU|mUH&7A<mjR&h zOnp{%Z?*`?UT-GmmKw;mO(v)SoX5(>yqgK!HnCx4GiK!k?etNB2DLSK^BN<wBzRmi z0&-3rs6oms4<0!7Vr4U8<v}z|SeYwrKnMA=f|4pb8?!j1WC9Jqf;z(NY&oDnSFmA~ zV&-pR)ldd4-(&+F_yBS^N1BQj=n_Y8jmD!7YRa;(fwtr^>aj|JSJ8pEpc?_CAbx-h zR72PKvFU?n;~7EsGlH5qpzZ3Qjs<KVE9i<LM$j@U(C!UhHa%AGu#*jBE2{yhwBrZ0 zNkAE!nH#*p0<;+!oDe~Kwm{Ao%3$S?18w<d6#`w@XANEu#K#7@Ob>K0JRf)m69=;g zr~p!DQ(yxfVa?CV#>T7%sx=t(Kob<8ZT*bQtHEcdgBqfsvx>p#jERl;5`z~sZLqQ^ zu<}9{SAk*@lwFt?)`5Ek%wHkv1X;O2OONcp?Jf>QP`e9UNrU#gu-n4I4%9hdW^;sD zu%{lhD~eGeg4KlicZ~wLQe$K8Vg?;?&!`7!%-euhdoU`1$D$ZPTQ-{NY;0HsnYV+s zxr46F1dVG!Dl%{odO<1|@TxdyM+j6(xPZ%DP(`2!I`#*&L7Yty9JQbZ2s85s21Zc2 z)dQW?y&62-!p1BQNiNb}dY~&W#1vQs4On@lSy@!s9KjL6r^Lz*iU4rQ3kqe>;oxkb zeSn}M3Dk&SzEKA{F;1A33v`($IPrMtgP4$JhahvD4M-pJE=E08UGP#4X!Xa$Ty6uY z5Wuw<s8V1qhgK2H;MD@)5kAnV_poLaFDShzg3C`(qnSknv{jCgl|3D_R|+ZdM1kGT z#(bDz9xIOm<dzXe=E<;(2x{*!fmSClDL{Lb%-}=y;k`>x@ylFc1M2*ME=B~+Z7{E> z@dCA;K)XcvLFE|_b503p8!hN+4ljsGb~bNeHqgDO9Bj<*K$q$&uyTX;ze6vl&|~GY z1w{<FR|&cwgH0d2?UmD(mEVh%gUudPRe@R>yrAF%?f++CV-8nf<zfW873^xz7$Yd8 zz^iVVz}r+oSsgSX2)&~Wlq#4&g$EP3BA-?VUd9J%U~*}Kg9y~B1Rb^ws;WVja4WD% zX|i&#m9a{(fzPt#V1qRb)1i%09&j@f;z`hgN>HPg1C)fzz(?8erZquJ0wqY-19X`O zs6>E<JjgYWk^>gury0P$0gb^jf!x8o4=K1f*i677A*=wZc!lLb`4UuZDL{7kD1%O` zmj?v`^QKx*(t=cYENniIZIP&1GZNh52OXfu!6v{eqNK+v<ppk@>w@YaXi@?tDM1BR z5#}5{R(>T`5m1U(0?TnIunOye+E*NUtlZv^Ob*HdJj|Ikpe7<4=;Q=&bqDG$3x|W7 z$e;lSCN@y*%>*ebA@QLX!N&ZJ!An?}6|`HDjrj`rq6<b=R((+3VFe%6!p3~G)&`Vj z6+kP;nCCEoE@lRu&JPMD&>1j{;1fI;nFTn~z_-?c*K9%(Ga{9MRtrGv^kNlccCrCg zk(D;Ag3d68DJu{2(^?xZkg3eApjDD=pbb$VhcmJ<e*mwbWCTzCGwQLLFyE~Mt<zn= z2szt_k&XE<*jh$5FYsn1Cl=5U=dhi?NlVKqEzZC);7G(=8|=JPq)8jd;bM>zY)g@D zN(7IILdFmwV}&MX7zCJKKt{fWA)_W$jI5ka;I;`P8*?QiE1x<mBdFqM105M>0`6dO zfjR&}pmQ(4EnIL*6tw@FSr0st1YVkKASMCs1_*%fAOY3!ppLSz5~~0t<+DS^&$&U1 z>KH+31l%WNW9E$jYvX4#f*gFvrVqAK5PW_WsH8Ll)uy0w2hxZFrzbsD@Ti0rsAK~- z5kM*17?Qi#>_8eoy-pY{0xs)$6j?>Ug&?S_3-T{`H7_G{IXI|1VFphPfwne-@)@%f zD<iWk=rjm6=2TFV1Kc+Q9n=V#L*`Ov1vihF+0=zuwIHKqHn4UpXj}m_O$FM&0-DTW zXLA8nZQ#;@lZ_G7%>j)@fewaZXG;eMCpVh`*#AO`tYYBVPBD2_&^f7~ktfi7icHLN z>cLfrKm@2D1J{zekXxzv?etlNK^J2ifbXvY^;}?H1cv~~YmCg1dXRbvv|q;#QpbS` zJkW?G8#tChi=UY#8Nq?bucV0ANKQ89I6Yx-O(P)BDyj$ye$f37;6j`YRJVcV2bqn% zSeb>Hg%}|x^5%kCO3cEbQW{!vgE~c^d&l%a$IURa88U);;Gnj-HzO--23Qz!784U2 zGk97awBd-6jhSB$G_1$SCa3_a`9LG6;M>U=K~r<Gpf(HS+TcP~P$?2e!9>ZRo(4|K z%u7k5%`|XHW-e$R0^cF_=*LdJILjcwe3l73bI%Iyi7~PXE3h&Ds#5?Z10F_ZZg8r| z01XyND1gqlXXf`}WrhluGO`MQ+U$&=*<b<CyfCOA3ObTX)R0vKG@xP#NpPSBrYLhF zcq|2+XGB1~P0;nxjLh3XwTcKUBXbZVE3+7A<PJ3Vv5%3Fm7n=wodPSj8mj=PYXq7Z z0WFiSU{q9O<yT}CQdR^FGl9CP+@OJ81<)1ppq2ZeD@^!6B_F?m2B^EvXTmA~%D>EP ziXxB#kC{zL9CYFJ4Mxb8TShi!(5Ze9Z!tT=-N6SwsEZqH7HC9CKoL~2gN7!!*_a8s z!vM56hF^)5PY%g`5wOKK5f+~Y1+^F}BlE6$xV@nLAlz!K{MhXjQo-SIu!Vxmk3s8T znCF9!DFk2lrYIr-vGxu)SBtU=@`FyH2Cdj&WMfWYWMjTk#{tUspqWs9R!tRF6$Q{3 zGouVEs|xsra99T%GE~5<47mypG_D8A`k;0bBV@s-qBr=$a5gj0Dk5PK=DCcF%unkW z!KnaTMTsJ+D$uR#pzbGVJf0skAgG|nY6fc1L8g$HK<kM>g#)N(=*`N^%*7}SDJ_{n z%Zd0vXH@ZnB1B09d~l-_^H*?60;M2OXO~w=o|O+2|ANe13W}_dxQhZ0LxIu^=-@_7 zS_$lY&>(dp<d!2Y1y&7BR!PvscCxID%r`;xun6;M21e%X^^BlXufW}0=2i8eCC!Xp zkbNJ}UNUGHL4_H#v0s|`707MiQ7BM72ChFq4JZc4B>>C`pj!%<Vfjr0bT|iS)X9sL zQHqV3GYym(p>~41l#H^VTiY0!jlIBg-QbHxh1r<3K#RASLl~L$K)DvQ!UME8m(iOo z3tIGo%?0H`ALam%5@til^}coBrrYR^q~NnpA**Ph7pEh&*pORk7}pPQTwoAj{wN75 zNkKEXpq#{90jfRC*dQZtJfITKmQ@WjPGF)3+8Sjm$La)%3&?TOtl*dg-HrqrPFDq; z_X4W-nJe_b-7r>0W^Dz~tO|3A0%&|1)YFHodf{Ya7Sdz0VbcdUnV3NR7Clx;Hbqt@ zVOCCk@DM2{8*{E6t31eRPBwk;<&Q$3;bd?(ofXuM0iEqG208;%A9Ozg8}pi~UC4K< zg1wUmI@$$vuO>5_vH^Jb12zF5&IT^~ML=m2w5SU-{0Yiips^be4a()9+zwg`2x(J_ zco~3HgM4TJs{28AHG+HVptb=Q8|WN7@b)o~P7ctxdbu7Wn*y62tCS5Zvna?OR!|R= z13dKyT96?I?w+x;#VIf<u!2@Oi7D!{N-^gufRuxV71<O(2Y7Pnu`-M4E3!hTYrwrz z5CQH&GlCnF;M?&atsQVPOo2IC&lXfAX)-c`_Yg9%1%uB|0(GyXz`Y~zRgF?0)e7LY zsS^0eC?#-fRT*rk3P=)4uu3uKAo&8+W0Yd$0F_jrRKYF*N;ROFVi}N=6<C?Y6ct%n znf*ZRN6;cG$TCt;V-z&I0~*r-d5@h<kqtcf!p^1$3IfoHFQ5YxL7oFQylq**gYRsR zgWnk82c$yA;lOjMwrmQZ8{R<IM>4B{9Lx=B_<^rA1n;ht0ee;k>@69PybNd#hPl*B z7?idp6<OIqo{(kJ69rY|kOLC=z?0kppf0{3XiNfn?I1WZDs8}#!NkYF$Y{z2YW5`! z+h!m1HXE{*MZtQH$X!Mp<q}fw5#_vP_!1QO?Kmx$7zCJ&pyd^`Us=J(%9aOSQl-Gk z=EBO%W(3ZYpt>1UFN2O=@db-8v*|O7fqHt3HmnlNF`yHUK}$-Q6F@A`o>Ne=(*ak8 zpuQOk=<p@TL2S(6AuDFc@GmoDIS8m|04<jQO+$lLSje%7va)G|$9q8~h@28=Ko&HH z%feg%N_NoofS?)|e03*u$P1h<A>$noCL8ll@acUJMWE~oy%Yl~4eHW@cfGQ5utkD4 zae!QH1D<MTgw5cCgg~Q9%AgTcNSBriGzP7}Dghc&f^=}%K&o`X+t3(6OZ6c`upDgQ zDKJnc4cu`C4Rv#Y?j{D!GJwo<X2t4LRvzYEb$YCf%x4)vN4bJShIv~ZDEENR?ST+_ z_TUq}AOp>c(AWSS(jWvX#u-^9n7u#;^PFVRV|LYJwuX#AF<PO;2_#~`R)A_8HXm?( z!L0!4tb;Z$`Utav&hh0`U{wH3Br3|Ya)NR>E1L!=#6U|b6!byEnF`?1W>E1BiZjr- zEO>krCcw#N51Q!*jqgKh9Zoi5Z*Yyp%Em01#wrY2`5+IvRsf^})P-g@U=>qj<pJHh z3Ta@nvMGYELID+oA|l?Pjxwkd3%c4BMBB2mFpDrE2dNxr9uRb>0rSRsNbG~kGe~Lx zCm!$^028>#hKRC(%w~Scpuncb2HKX*2wG{y4;q4i3}bWKfbsydJY@Qm3p{QDssusR z6d$ucD8S#;DX{W0Pi9nLm0-RPI^r302q`E7FfvbPgj~wW%w_{#a{xLt3lst1khcSk z5r9&pJ~&)K%c7WUz{^OOKvgw!1b7sN6?BI;qYY%C6Uf)hyx<9U$QE1{=rkO3@vS0c za6=wk#Dj)+co>*iK!Y2gl_xB0-mK7dtsqfQ_^^O|Ujk|Pa<JKggIG~s5#)bRD1&w~ zKvFVvL<e-hB6xuY_#6>XgB&!a21<md86eK(290PlS9l47&4Nw{fSLiEpc9zDhiQXm zz#uDN*w~D~?HEwgT*wY|R}LGS5_o8djZKj`4|1Xj8|a*5RvzZn^^8nB42+Bx;AP|P z!?xlmPt3`tY|xRkY6CLpxa2D0UKr3l<)8%42#R1XP=aG*F4j|E6;=Wb1c3HEf_Abi zu!5EwLZ+0#L(+_(NmKAtHE7WlDBUv2LE2A{MN&+<te`<RCIwbT69qPBaEB3O6(bvS zF=)7f*NYWqqXLMfM~a0u;EaODLhz#8Q;eWSha0(R2VB{v4&wbG5C<mb=aoTI5YjCW zjG%R?DJiLGkb5lQH%Q>wF#=f=%YwKA0(S2Mbl3@!bWE->2uOfplZA=-9U~)iETb?B zXqbh0a~&hN7sIB)$}Gmh#Jq`-kvSbC36c>;QO(H4{Jf4)fz6SX86>e9ugZ6IjNsU` z2VWm`o!r<2-F=Zy=G7wbh0~?QMWFM_^wX1*LHA$l=H=(5>ZT?pW$Ih#8S5G9!|slu z*A3S&`xtT)vs2;My~U%ik!C_l49rN^$Ktw9Bpx)@SO(r`!U9sBnVVW%0ABixad8N^ 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�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 T(bU~n<6!`u*$R>aVVF7qzj)_H diff --git a/simple-setup/main.c b/simple-setup/main.c index 3dcd243..d191d41 100644 --- a/simple-setup/main.c +++ b/simple-setup/main.c @@ -11,9 +11,9 @@ int main() { ST7735_Init(); // Initialise the screen ST7735_FillScreen(ST7735_RED); - /*char name[21]; - printf("\n\n\n\nyour name? (max 20 chars):\n"); - scanf("%20s", name); + //char name[21]; + //printf("\n\n\n\nyour name? (max 20 chars):\n"); + //scanf("%20s", name); //fread(name, 1, 20, stdin); - doesn't seem to work properly // serial input sends stuff in real time to the pi, @@ -21,11 +21,11 @@ int main() { // and since you filled it with characters, the %d scanf's from the while (true) // loop will halt immediately because there's invalid data on the stdin buffer (???) - char ch; + /*char ch; do { ch = getchar(); printf("clearing buffer: %d\n", ch); - } while (true); + } while (true);*/ int opt = 0; int a = 0; @@ -33,7 +33,7 @@ int main() { int c = 0; while (true) { - printf("Hi %s!\nWhich variable would you want to change?\n1: a\n2: b\n3: c\n", name); + printf("Hi!\nWhich variable would you want to change?\n1: a\n2: b\n3: c\n"); scanf("%d", &opt); switch (opt) { @@ -55,5 +55,5 @@ int main() { printf("\nVariables are now: a=%d, b=%d, c=%d\n", a, b, c); } - return 0;*/ + return 0; } -- GitLab